问题描述
每当我使用Nautilus卸载USB驱动器并将其插入Windows机器时,我收到一条警告,指出驱动器需要修复。
(与此截图中相同的消息)
对于使用Windows的10多年来,我从来没有损坏或损坏的USB驱动器,但在过去两年中,我的三个USB驱动器无法使用,所以我无法证明它,但很明显,这与Ubuntu的(未)安装行为。
一位朋友告诉我,我可以使用udisk和sync来防止这种损害,但我希望这不是办法,2016年使用shell命令安装驱动器。
最佳解决办法
不用担心Ubuntu不会损坏您的USB驱动器。但是我们不使用FAT32,FAT16或NTFS文件系统的记录不完整的位标志。在Windows上,当我们没有正确卸载驱动器或发生I /O错误时,这些标志指示可能损坏的文件系统。
这些位位于FAT分区表的保留项中。根据internal Microsoft paper of 2004,这些位的目的是:
ClnShutBitMask
:
If bit is 1, the volume is “clean”. The volume can be mounted for access. If bit is 0, the volume is “dirty” indicating that a FAT file system driver was unable to dismount the volume properly (during a prior mount operation). The volume contents should be scanned for any damage to file system metadata.HrdErrBitMask
:
If this bit is 1, no disk read/write errors were encountered. If this bit is 0, the file system driver implementation encountered a disk I/O error on the volume the last time it was mounted, which is an indicator that some sectors may have gone bad. The volume contents should be scanned with a disk repair utility that does surface analysis on it looking for new bad sectors.
几年前与内核文件系统开发人员就如何克服这个问题进行了一些讨论,但我无法跟踪结果。显然它没有把它变成最近的内核。
由于只涉及到一点标志,但通常我们的数据应该是完美的形状,所以我们可以忽略我们之前在Ubuntu中使用过的那些驱动器上的警告Windows问题。
次佳解决办法
这主要是Windows的一个问题。它认为它是世界上唯一的操作系统,如果它发现了一些它不了解的东西,就会表现出来。
仅仅因为Windows说你必须修复驱动器并不能实现。
我使用的任何驱动器都可以从Windows获得此消息,我只是说no
,它们可以在Windows中正常工作。
简而言之,驱动器没有任何问题,只是Windows中有某些东西不理解,而且它的响应会破坏它。
不要repair
驱动器,它将格式化它而不告诉你,你将失去驱动器上的所有数据。
第三种解决办法
正如您在评论中所建议的,这可能与Ubuntu在未删除闪存驱动器之前未完成写入过程有关。 Ubuntu在复制过程中将文件写入RAM,并在复制对话框关闭后将这些文件从缓冲区写入后台的USB驱动器。有another answer,这表明这对于具有大量内存的计算机尤其是问题,但很可能是在后台写入完成之前删除驱动器。当您弹出驱动器时,这会强制将缓冲区写入磁盘,但很难确定写入实际完成的时间。新版本中有一个pop-up(某些时候为15.10,可能为15.04),目的是为了弥补这一点 – 在一些(通常很短)的时间之后出现紫色警报,一旦写入“[驱动器]的行现在可以删除”完成。
这可能是你的朋友建议同步的原因。在终端中运行sync
会强制所有缓冲的数据写入磁盘,并且只有在写入完成后才返回(请参阅this answer)。请参阅this answer以获取帮助您确定问题是否确实存在的实用程序。
第四种办法
我看到很多USB驱动器,尤其是USB适配器中的闪存(SD等)卡,FAT文件系统(实际上每个USB驱动器都带有FAT32的pre-formatted)在使用Ubuntu& Ubuntu-derived发行。几乎每隔几个月的常规日常使用几乎是经常发生的。
如果是硬件问题,那么使用ext3(或4)格式化分区应该没有帮助,但ext3 /4使文件系统几乎无懈可击。 (ext2在我尝试使用的几个月内也损坏了;本来应该写的更少,所以闪存驱动器的寿命更长,主要来自没有期刊)。
因此,Ubuntu本身不应该对USB驱动器造成实质性的损害,但我仍然不会完全信任FAT文件系统。
我认为文件系统损坏最好的办法是
-
切勿直接拔出USB驱动器,直到它被卸载/
umount
/弹出。即使驱动器当前没有写入任何内容(如果它有一个指示灯不闪烁),即使您已经完成了sync
,文件系统仍可能仍然 -
在拔出
umount
/弹出卡片之前至少等待几秒钟。看起来,即使在umount
后,驱动器的活动指示灯有时会持续闪烁一段时间。其他用户like this guy表示可能会持续一分钟。 -
不仅仅只依赖
sync
,like this guy得到文件损坏。
相关(一般)链接:
-
Answer to “Should I unmount a USB drive before unplugging it?”
-
Is execution of sync(8) still required before shutting down linux?
-
How to remove a USB drive without worrying if its been unmounted?
第五种办法
这与任何操作系统无关。这是一个文件系统错误,在大多数情况下表示该驱动器未正确卸载(用户错误)。这不是绝对的损坏迹象,它只是表示可能造成的损害。如果存在,损害通常限于最后写入的文件。在这种情况下,Windows “Repair”命令会扫描标记为”occupied”但未分配给任何文件的扇区,然后将此碎片分配给新文件。
这个错误也可以在Windows上创建,如果您只是在写入时拔出驱动器而不先卸载它(在Windows中,”Eject”执行卸载)。
看到此消息意味着驱动器未正确卸载。
您可以自行验证文件系统是否真的被损坏,或者只是误报:如果在运行”Repair”之后出现一个名为”found000″的新文件夹,其中包含某些文件,则表示确实存在未完成的写入被中断。你的一些数据丢失了,这是一个问题。