每当我使用 Nautilus 卸载 USB 驱动器并将其插入 Windows 机器时,我都会收到驱动器需要修复的警告。
(与此截图中的消息相同)
使用 Windows 已有 10 多年,我从未遇到过损坏的 USB 驱动器,但在过去的两年中,我的三个 USB 驱动器都无法运行,因此我无法证明这一点,但很明显这与 Ubuntu 的(卸载)安装行为有关。
一位朋友告诉我,我可以使用 udisks 和 sync 来防止此类损坏,但我希望这不是在 2016 年使用 shell 命令安装驱动器的方法。
答案1
不用担心,Ubuntu 没有损坏您的 USB 驱动器。但是我们不使用 FAT32、FAT16 或 NTFS 文件系统中记录不全的位标志。在 Windows 上,当我们未正确卸载驱动器或发生 I/O 错误时,这些标志表示文件系统可能已损坏。
这些位位于 FAT 分区表的保留条目中。根据2004 年微软内部论文这些位的用途是:
ClnShutBitMask
:
如果位为 1,则卷为“干净”。可以挂载该卷以供访问。如果位为 0,则卷为“脏”,表示 FAT 文件系统驱动程序无法正确卸载该卷(在之前的挂载操作中)。应扫描卷内容以检查文件系统元数据是否受损。HrdErrBitMask
:
如果此位为 1,则表示未遇到磁盘读/写错误。如果此位为 0,则表示文件系统驱动程序实现在上次挂载卷时遇到了磁盘 I/O 错误,这表明某些扇区可能已损坏。应使用磁盘修复实用程序扫描卷内容,该实用程序对其进行表面分析以查找新的坏扇区。
几年前,我们曾与内核文件系统开发人员讨论过如何克服这个问题,但我无法跟进结果。显然,这个问题没有出现在最近的内核中。
由于只涉及一个位标志,但通常我们的数据应该是完好无损的,我们可以忽略我们以前在 Ubuntu 中使用的那些驱动器上的 Windows 警告问题。
答案2
这主要是 Windows 的问题。它认为自己是世界上唯一的操作系统,一旦检测到无法理解的东西,就会采取行动。
仅仅因为 Windows 说您必须修复驱动器并不意味着这是真的。
我用于 Ubuntu 的任何驱动器都会从 Windows 收到此消息,我只是说no
它们在 Windows 上运行良好。
简而言之,驱动器没有任何问题,只是上面有一些 Windows 无法理解的东西,它的反应是销毁它。
不要使用repair
该驱动器,它会在没有通知您的情况下对其进行格式化,并且您将丢失驱动器上的所有数据。
答案3
正如您在评论中提到的,这可能与 Ubuntu 在移除闪存驱动器之前未完成写入过程有关。Ubuntu 在复制过程中将文件写入 RAM,并在复制对话框关闭后在后台将这些文件从缓冲区写入 USB 驱动器。另一个答案这表明这对于具有大量内存的机器来说尤其成问题,但很可能您在后台写入完成之前就移除了驱动器。当您弹出驱动器时,这会强制将缓冲区写入磁盘,但很难判断写入何时真正完成。较新版本(肯定是 15.10,可能是 15.04)中有一个弹出窗口旨在解决此问题 - 写入完成后,一段时间(通常很短)后会出现紫色警报,内容类似于“[驱动器]现在可以移除”。
这可能是你朋友建议同步的原因。sync
在终端中运行会强制将所有缓冲数据写入磁盘,并且只有在写入完成后才应返回(请参阅这个答案)。 看这个答案寻找一个可以帮助您确定这是否确实是问题所在实用程序。
答案4
这与操作系统关系不大。这是一个文件系统错误,在大多数情况下表示驱动器未正确卸载(用户错误)。它不是损坏的绝对迹象,它只是表示可能性损坏。如果存在,损坏通常仅限于最后写入的文件。在这种情况下,Windows“修复”命令会扫描驱动器中标记为“已占用”但未分配给任何文件的扇区,然后将这些碎片分配给新文件。
如果您在写入过程中未先卸载驱动器而直接将其拔出(在 Windows 中,“弹出”执行卸载),则在 Windows 上也会出现此错误。
看到此消息意味着驱动器未正确卸载。
您可以自行验证文件系统是否真的损坏,或者只是误报:如果运行“修复”后出现一个名为“found000”的新文件夹,其中包含一些文件,则意味着确实有一个未完成的写入被中断。您的部分数据已丢失,这是一个值得关注的问题。