USB 记忆棒是否有板载控制器和磁盘缓存?

USB 记忆棒是否有板载控制器和磁盘缓存?

我很清楚旋转盘式硬盘具有板载控制器和板载磁盘缓存。

那么,4 GB 或 8 GB 的 USB 存储棒上是否也存在“磁盘”缓存?顺便问一下,固态硬盘呢?

(我的猜测是,由于固态硬盘比其所连接的计算机的 RAM 慢,因此在固态硬盘上配备板载磁盘缓存是有意义的。但由于 USB 棒的字节容量和物理尺寸相对于固态硬盘要小得多,前者可能没有板载磁盘缓存。)

背景:我正在尝试找出:

  1. /bin/sync如果 Linux 上操作系统报告写入操作完成后不久发生电源故障,是否有必要绝对保证不会发生数据丢失?

  2. 是否/bin/mount -o sync ...可以“有效地”禁用这种板载缓存(如果它存在的话)?

  3. 最后,如果操作系统是 Windows 而不是 Linux,以上所有问题的答案会如何?

答案1

是的,USB 闪存驱动器确实有控制器和一些板载缓存。没有其他方法可以匹配以不同速度运行的设备。没有其他方法可以执行诸如磨损均衡和流水线之类的操作。

如果在 Linux 上需要 /bin/sync 来绝对保证在操作系统报告写入操作完成后不久发生电源故障时不会发生数据丢失?

是的,但这与设备中的缓存无关。这与操作系统实现的软件缓存有关。

如果/bin/mount -o sync ... 会“有效地”禁用这样的板载缓存(如果它存在的话)?

不,它会禁用操作系统缓存。您不能禁用板载缓存,否则设备将停止工作。它会在哪里保存从闪存中读取的数据,直到操作系统准备好为止?它会在哪里保存操作系统写入的数据,直到闪存写入完成为止?

最后,如果操作系统是 Windows 而不是 Linux,以上所有问题的答案会如何?

答案相同。就像硬盘一样,其他充当硬盘的设备都有板载控制器和缓存。

答案2

那么,4 GB 或 8 GB 的 USB 存储棒上是否也存在“磁盘”缓存?顺便问一下,固态硬盘呢?

不,不。这些设备中的闪存比带有 R/W 磁头致动器的旋转盘片快得多,因此缓存并不经济。
但这些设备上没有“缓存”并不意味着没有本地缓冲。
仍然会有内存来缓冲 USB 或 SATA 接口和闪存之间的扇区数据。

如果在 Linux 上需要 /bin/sync 来绝对保证在操作系统报告写入操作完成后不久发生电源故障时不会发生数据丢失?

sync始终需要确保操作系统已将其所有缓冲区正确刷新到设备。
完成write()(取决于指定的同步)可能仅表示用户或文件数据已传输到系统缓冲区,或者写入操作实际上已完成。但除了文件中的数据外,还需要维护文件系统元数据(扇区分配表、文件长度的目录条目、修改时间等)。

sync仅靠这一点还不足以保证所有写入的数据都已由外围设备实际写入。 相关的系统调用是syncsyncfs这意味着这些仅用于文件系统级别,而不是设备级别。 有设备级别的同步操作以及文件系统级别的同步操作。Unmounteject操作应在释放设备之前执行这些最终同步确认。

如果/bin/mount -o sync ... 会“有效地”禁用这样的板载缓存(如果它存在的话)?

不,安装级别的这种“同步”不应影响任何设备级别的优化。如果外围设备的缓存能够被禁用,我希望它是由一个不太可能知道的人完成ioctl()mount

最后,如果操作系统是 Windows 而不是 Linux,以上所有问题的答案会如何?

无明显差异。

相关内容