我应该在拔下 USB 驱动器之前先卸载它吗?

sys*_*out 46 usb unmounting

当您在不卸载的情况下拔下 USB 驱动器时,您的操作系统会警告您这种操作对您的设备来说是多么可怕(我使用的是 OSX)。

我通常遵循建议,在拔下插头之前先卸载,但它发生了很多次(数千次),在我的任务结束时,我只是拔掉了(高清存储,手机等),我从来没有注意到我的数据损坏了设备。
我很幸运还是可以忽略这个烦人的警告?

Gil*_*il' 44

要么您很幸运从未损坏过数据,要么您很不幸从未注意到您的数据已损坏。

当您执行应该写入磁盘的操作时,大多数操作系统会将写入操作放入队列中。他们不时刷新队列。(我在这里称它为队列,但实际上操作可以乱序执行,操作系统会在速度更快并给出相同的最终结果时执行此操作。)这可以使写入操作更快,因为系统会尝试当它没有更好的事情要做时执行它们,因为它可以智能地将它们分组。

如果您碰巧在写入所有内容之前拔掉了设备,您可能会错过最新的数据。更糟糕的是,如果操作系统一直在无序地执行操作,您可能会使您的设备处于不一致的状态并丢失比最新数据更多的数据。

对于可移动设备,某些操作系统会进入更保守(但速度较慢)的模式,以降低与在卸载设备之前拔下设备插头相关的风险。

补充
乱序操作有时不仅仅是速度问题。廉价的闪存介质(不会在硬件级别重新分配扇区)对您可以写入任何给定扇区的次数有限制。如果您天真地在所有更改发生时写入,这可能会杀死包含 (V)FAT 文件系统(可移动驱动器的最常见情况)上的文件分配表或典型现代文件系统上的日志的扇区。(例如,请参阅Linux 内核邮件列表上的讨论sync。)在这里,每次写入文件时不更新 FAT 或日志不仅可以极大地提高性能,而且对硬件的生命周期也有好处。

直到最近,Linux 只能在sync(在所有更改发生时async写入)和(在方便时写入)之间做出选择。最近的版本引入了flushFAT 文件系统的选项,它介于两者之间(一旦磁盘变为非活动状态,立即刷新所有延迟写入);它在 Ubuntu 10.04 中默认开启。

另一方面,卸载可移动驱动器可确保没有应用程序打开文件。如果您在拔下插头之前不卸载,您将不会注意到是否有未保存的数据,直到为时已晚。在文件打开时卸载也会增加损坏的可能性,无论是在文件系统级别(操作系统可能已将某些操作排队直到文件关闭)和应用程序级别(例如,如果应用程序放置一个锁定文件,它不会t 被删除)。

  • 进行`sync`安装!:D (3认同)
  • 同意 - systempuntoout 到目前为止很幸运。在移除闪存驱动器之前没有卸载,我已经失去了很多工作。您可以在应用程序中保存您想要的所有内容,但如果写入被缓冲,则它不会发生在重要的地方。你只会被这个烧伤一次。 (2认同)

Jar*_*vin 5

您面临的主要风险是延迟写入。由于各种原因,系统在被告知时并不总是将数据写入磁盘并将其保存在内存中。当您卸载它时,它会确保所有内容都写入磁盘(并确保它当前未被使用)。您可能知道您当前是否正在写入磁盘,但您可能没有意识到您的操作系统没有写入您之前告诉它写入的所有内容。

频率取决于您的系统以及您对 USB 驱动器的操作。如果卸载通常很慢并且您可以听到来自驱动器的写入噪音,那么您可能应该继续卸载。如果卸载总是即时的,那么请随意跳过这一步,风险自负。

  • 不过,我相信大多数操作系统都禁用了对可移动驱动器的这种延迟写入。 (4认同)