据我了解,SSD 内部管理操作系统所需的带编号的“硬盘”扇区,将其分成内部页面,再将其分组为块。SSD 固件负责合并内部页面,以便空块可供重复使用。此过程很慢,因此在后台进行。当驱动器接近满时,用户会感觉驱动器很慢,因为固件必须工作以腾出可用空间,而操作系统必须等待它。
操作系统不了解驱动器的内部组织。它通过 TRIM 告知 SSD 文件系统扇区可用。然后 SSD 可以在内部指定代表该扇区的页面可供重复使用。
这让我有以下疑问:
在未启用 TRIM 的驱动器上(外部驱动器或 RAID 设置以及较旧的驱动器和操作系统经常出现这种情况),一旦驱动器接近满载,它如何知道何时删除了大量内容,以便提供大量内部页面?如果它不知道,它如何才能发挥最佳性能?
为什么操作系统不定期通过 TRIM 向 SSD 报告文件系统的所有可用扇区,以便 SSD 始终可以拥有尽可能多的可用内部页面/块?(据我了解,操作系统仅在文件系统扇区可用时报告它们,这意味着如果从一开始就未启用 TRIM,或者内部驱动器暂时被外部访问,则 SSD 页面可能在内部保持不可用状态。)
如果操作系统启用了全盘加密,性能怎么会不受到严重影响?从 SSD 的角度来看,不是每个内部页面都在使用吗?
出于安全和性能原因,为什么 SSD 制造商不提供工具将 SSD 恢复到其原始出厂状态(所有页面均停用)?(我知道的唯一方法是通过一个深奥的 Linux 实用程序,它可以向驱动器固件发出 ATA_SECURE_ERASE 命令,并且并非每个驱动器固件都可以信任能够正确或全面地执行它。)
任何见解都将不胜感激。
答案1
为什么操作系统不定期通过 TRIM 向 SSD 报告文件系统的所有可用扇区,以便 SSD 始终可以拥有尽可能多的可用内部页面/块?(据我了解,操作系统仅在文件系统扇区可用时报告它们,这意味着如果从一开始就未启用 TRIM,或者内部驱动器暂时被外部访问,则 SSD 页面可能在内部保持不可用状态。)
是的。这是通过 Windows 每周左右的自动维护完成的(通过磁盘碎片整理程序,它可以识别 SSD 和 HDD),以及fstrim.timer
Linux 每周的自动维护。
如果操作系统启用了全盘加密,性能怎么会不受到严重影响?从 SSD 的角度来看,不是每个内部页面都在使用吗?
这取决于加密系统是否通过 TRIM 信息。通常它是用户可配置的,可让您在性能和完全隐私之间进行选择。
(让 SSD 知道哪些页面是空的,会向外部透露同样的信息——我个人认为这不是问题,但有些人不想任何事物被泄露。)
出于安全和性能原因,为什么 SSD 制造商不提供工具将 SSD 恢复到其原始出厂状态(所有页面均停用)?(我知道的唯一方法是通过一个深奥的 Linux 实用程序,它可以向驱动器固件发出 ATA_SECURE_ERASE 命令,并且并非每个驱动器固件都可以信任能够正确或全面地执行它。)
SSD 制造商已经提供工具来实现这一点——这些工具使用 ATA_SECURE_ERASE。
没什么区别。如果你有供应商专用工具发送供应商专用命令,你就会仍然必须相信驱动器的固件能够正确、全面地实现它们。
这将是更差在主机端,因为你所拥有的只是一个深奥的视窗实用程序,它很快就会被遗忘,并且经常在下一个 Windows 版本中停止工作。(我仍然有几个可以低级格式化 USB 闪存驱动器的工具,它们都需要 Windows XP。)
同时,ATA_SECURE_ERASE 是相当标准的 - 有 Windows 程序可以调用它,有 Linux 程序,其中一些是图形化的,一些是命令行的,并且它们都可以工作,无论驱动器的品牌或型号如何。
答案2
我认为这是不可能的(通过标准命令),因为正如您所说,分页完全由固件完成(而分页方式是 SSD 供应商之间巨大差异的原因)。空闲簇和空闲页面之间的链接也由固件保留,因此您可以将 3 个“逻辑上连续”的扇区分布在不同的行上(请记住,SDD 必须删除整行才能删除单个页面)。这是我学到的,但当时 SSD 还不是主流,我想那是他们第一次谈论这个。