我怎样才能让 USB 驱动器永远不使用任何写入缓存?

我怎样才能让 USB 驱动器永远不使用任何写入缓存?

也就是说,我希望能够随时将它们取出而不必担心数据是否会丢失。我希望每次写入都能立即写入。

答案1

使用 flush 选项挂载它们。Ubuntu 默认这样做。

答案2

“flush”选项是一个折衷方案。与默认安装相比,它将提高您的成功率,但是仍然会有一些缓存。据我所知,它旨在为闪存驱动器提供平衡。

如果您想要更进一步,请使用选项“sync”和“dirsync”。不过,这些选项也有缺点。您可能会遭受巨大的性能损失,因为闪存驱动器必须擦除未使用的块,然后将旧块的数据和更改写入整个块。此擦除块大小取决于硬件,通常比 io 块大小大得多。您可能会遇到驱动器必须写入 4MB 才能替换一位的情况。

同步 io 不仅会影响性能,而且块擦除/写入周期的大幅增加也会大大缩短驱动器的寿命。

当您拉动驱动器时,没有什么可以保护您免受由应用程序打开且处于不一致状态(即未关闭)的文件中的数据丢失。

最后,驱动器可能在硬件中具有缓存。将其设置为直写也可能取决于硬件。如果大量 USB 闪存驱动器具有缓存,甚至不向 Linux 报告,我不会感到惊讶。

一个与缓存无关的选项可以提高写入速度,即“丢弃”。这会导致支持该选项的闪存驱动器在释放不再由文件或文件系统使用的块后立即擦除或“修剪”这些块。由于您希望快速从缓存中取出数据,因此这将确保您有足够的已擦除块可供写入,从而在需要时加快 io 速度。

干杯,乔恩

相关内容