TRIM 命令允许操作系统通知 SSD 哪些扇区包含数据,哪些扇区是空闲的。这允许磁盘在内部重复使用空闲扇区并改善磨损均衡。
现在,如果通过 将一个 SSD 克隆到另一个 SSD dd
,则每个单个扇区都会复制到目标磁盘。但是,dd
不知道扇区的内容实际上是数据还是未使用的。也就是说,它无法向目标磁盘发送 TRIM 命令。据我了解,目标磁盘必须将每个写入的扇区视为已使用。
唯一的解决方法是,如果已使用/可用信息以某种方式存储在扇区本身中,然后将其复制dd
到新磁盘。
那么,怎么做呢?有问题吗?
答案1
使用 fstrim(曼弗里姆)克隆分区后。
示例:我有一个通过 BTRFS 克隆到 SSD 的系统,因此我启动它并运行:
λ sudo fstrim -v /
/: 190.4 GiB (204443279360 bytes) trimmed
答案2
TRIM 标准规定,读取经过修剪的块会产生未定义的结果。某些版本的 trim 会在您读取时模拟返回零块,其他版本可能会返回先前的数据或一些随机数据。