修剪 ZFS 池的 '/sbin/fstrim' 和 '/sbin/zpool trim [pool]' 之间有什么区别?

修剪 ZFS 池的 '/sbin/fstrim' 和 '/sbin/zpool trim [pool]' 之间有什么区别?

我在 ZFS 上运行 Ubuntu 19.10,一切运行良好。我知道 Ubuntu 默认每周安排一次 fstrim,但 ZFS 还支持通过“/sbin/zpool trim [pool]”进行修剪。它们之间有什么区别?我应该安排两者来修剪我的 SSD 吗?

答案1

简而言之,它是fstrim一个在内核支持此功能的文件系统上运行 trim 的命令,例如ext4、等。btrfsf2fs

由于 ZFS 不仅仅是一个文件系统(它也是一个磁盘卷管理器),它有自己的修剪实用程序来修剪 Zpool(ZFS 存储系统的顶级组件),由命令运行zpool trim

这是必要的,因为 ZFS 系统上的挂载点不一定等同于磁盘(挂载点可以是池、子文件系统、快照等)。而且由于该fstrim命令不知道 ZFS 数据结构,因此它无法在 ZFS 上执行任何操作。

如果您实际尝试fstrim在 ZFS 挂载点上运行,这一点就非常明显,我在下面尝试过:

$ sudo fstrim -v /mnt/zfs/public
fstrim: /mnt/zfs/public: the discard operation is not supported

所以这行不通。相反,对于 ZFS,您应该使用命令设置常规修剪,或者在 Zpool 上zpool trim设置 ZFS 属性。autotrim=on

另请参阅此问答有关如何在 ZFS 池上配置 trim 的建议。

相关内容