SSD 上的 DRAM 由操作系统还是固件管理?

SSD 上的 DRAM 由操作系统还是固件管理?

我正在使用通过 SATA 转 USB 桥接器连接到 Mac 的 SSD 来存档相对较大的文件。将其传输到 SSD 后,我将其卸载并拔下。

此 SSD 具有 DRAM 缓存。据我了解,此缓存既用于缓存写入,也用于存储文件映射的副本。如果我在未卸载的情况下将其拔出,或者在其当前正在写入时将其拔出,我认为很可能会丢失缓存在 DRAM 中的数据,甚至可能会丢失文件,因为指向映射中发生更改的任何数据的指针也会丢失。

我的问题是:如果我卸载驱动器并在成功卸载后立即拔下电源,是否有可能在 SSD 将 DRAM 中的内容写入磁盘之前切断 SSD 的电源?

OS/APFS 是否管理 DRAM 并确保在卸载之前刷新它,或者 SSD 中的固件是否执行此操作?

答案1

SSD 上的 DRAM 由固件管理,但操作系统可以使用“屏障”函数调用告诉固件将所有待处理数据刷新到稳定存储中。操作系统还可以告诉 SSD 是否应启用写入缓存。

如果您干净地卸载驱动器,操作系统将发出所需的函数调用,以确保所有数据都已完全写入。

如果您在写入过程中拔下电源而没有干净地卸载,那么所有结果都将无效,并且结果将取决于 SSD 固件、文件系统和其他各种因素。

答案2

主机中既有由操作系统控制的 DRAM,也有由 SSD 固件控制的 SSD 内部的 DRAM。

正如另一个答案所述,如果您正确弹出,所有这些都应该由明确定义的机制来处理,这些机制是 SATA 和 USB 协议的一部分,用于同步主机和 SSD 之间的操作。

如果你在写入过程中将其拔出,主机的 DRAM 和 SSD 中的数据很可能仍未写入,而且未写入的数据是在主机的 DRAM 中还是在 SSD 的 DRAM 中,这一点都无关紧要,因为无论哪种方式都会丢失。在这种情况下,甚至可能还有数据主机已发送但 SSD 尚未接收的总线。

相关内容