如何在循环设备上执行 fstrim?

如何在循环设备上执行 fstrim?

我的 LVM 启用了精简配置。我有两个几乎相同的精简逻辑卷,其 ext4 文件系统略有不同。第一个卷完全用于存储文件系统。在第二卷上,文件系统以较小的偏移量存储。它是通过-o offset=1048576选项安装的。

第一个卷可以使用该命令清理fstrim,但第二个卷则不能。它给出了错误:

fstrim: second: the discard operation is not supported

我相信这是因为偏移安装。接收偏移选项安装命令会创建临时循环设备并安装它。所以主要嫌疑人是循环设备。

是否可以以某种方式清理已偏移到卷起始块地址的文件系统?

答案1

看来不可能。我试图找出原因 - 这是来自的评论loop.c

        /*
         * If the backing device is a block device, mirror its zeroing
         * capability. Set the discard sectors to the block device's zeroing
         * capabilities because loop discards result in blkdev_issue_zeroout(),
         * not blkdev_issue_discard(). This maintains consistent behavior with
         * file-backed loop devices: discarded regions read back as zero.
         */

LVM 精简设备不报告清零功能 (write_zeroes_max_bytes0)。我特意去查了一下,dm-thin.c确认了一下。

相关内容