TRIM 命令允许操作系统通知 SSD 哪些扇区包含数据,哪些扇区是空闲的。这允许磁盘在内部重复使用空闲扇区并改善磨损均衡。
现在,如果 SSD 通过 克隆到另一个dd,每个扇区都会复制到目标磁盘。但是,dd不知道扇区的内容实际上是数据还是未使用。也就是说,它不能向目标磁盘发送TRIM命令。据我了解,目标磁盘必须考虑每个已写入的扇区。
唯一的解决方法是,使用/空闲信息以某种方式存储在扇区本身中,因此被复制dd到新磁盘。
那么,它是如何做到的呢?有问题吗?
根据我在阅读有关固态驱动器和 raid 的案例时能够理解的内容,问题是 TRIM 不能在 raid 配置中用于它们,因此,导致磁盘随着时间的推移在删除文件时变慢.
我目前正在考虑的一个用例是在一个 raid 中使用 SSD:s 存储数据库而不删除,只执行读写操作。
这是否会绕过在运行raid SSD:s 时无法使用TRIM 的常见问题,或者其他(据说与数据库管理数据的方式有关)会浮出水面吗?
更新:值得一提的是,为什么我开始考虑这样做的可行性是因为这些堆栈交换站点似乎已经使用 SSD 存储一段时间了(http://blog.serverfault.com/发布/我们的存储决定/ )
我已阅读“添加 TRIM 支持”文章,但未能获得有关“ZFS 何时以及多久autotrim发生一次?”的线索。以及如何观察 的活动autotrim?
提前感谢您的评论。
我刚刚注意到,如果我进行time fstrim /<some ext4>; time fstrim /<some ext4>第二次通话,通常会0 bytes trimmed立即打印并完成。但是,如果我在 XFS 上做同样的事情,其中 2 个调用将花费完全相同的时间并打印完全相同数量的修剪字节。这让我想知道修剪真的有效吗?如果是,是否可以打开任何标志以使 XFS 不重新修剪已修剪的块?
我使用所有默认设置来挂载 xfs。