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

Chr*_*ian 6 filesystem ssd trim zfs

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

Art*_*ild 3

简而言之,fstrim是在内核支持的文件系统上运行 trim 的命令,例如ext4btrfsf2fs

由于 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
Run Code Online (Sandbox Code Playgroud)

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

另请参阅此问答,了解有关如何在 ZFS 池上配置修剪的建议。