我使用 LVM 精简卷通过 iSCSI 网络启动一组计算机。我时不时地会释放这些机器上的空间。不幸的是,这些空间并没有在精简卷上释放。因此,我会partclone
时不时地清理分区,以释放空间。在虚拟化中,您可以使用将未使用空间清零的工具来释放空间。有没有类似或更好的方法使用 LVM 精简池/精简卷来回收空间?
提前致谢
答案1
LVM 精简支持 DISCARD,更广为人知的是 TRIM。理论上应该可以以某种方式使它与 iSCSI 配合使用(有一个等效的 UNMAP 命令),但我没有找到任何相关信息。
在托管这些卷的机器上,您可以使用fstrim
它来释放可用空间。手册页甚至明确提到了这一点:
fstrim 用于已挂载的文件系统,以丢弃(或“修剪”)文件系统未使用的块。这对于固态硬盘 (SSD) 和精简配置的存储非常有用。
为了实现这一点,Linux 需要支持文件系统,并且该支持需要包括 TRIM。如果您的网络启动计算机运行 Windows,则可能是 NTFS。显然 NTFS-3G 支持 TRIM。
fstrim
仅在已挂载的文件系统上运行。
它看上去会像这样:
更新:正如评论中所讨论的,Linux SCSI Target 在其块后端存储上提供了一个用于识别 SSD 的标志:is_nonrot
。它还支持 UNMAP SCSI 命令。Windows(至少是 Windows 10)可以正确检测 iSCSI 上的 SSD 并发出 UNMAP 命令,立即释放未使用的空间。