我为来宾虚拟机使用稀疏原始映像文件,并在主机上使用 OCFS2(仅限本地,非集群)来实现该reflink
功能。我通过谷歌搜索了解到 OCFS2 是可以打孔的文件系统之一回到稀疏文件中。
如果我理解正确的话也许有可能(显然可以用XFS来实现)将此功能与来宾计算机中的 TRIM/discard 支持结合起来,这样当来宾计算机中的文件被删除时,主机上的空间就会自动回收。然而,尽管进行了大量实验,我仍无法证明这种方法有效。
这可能吗?如果它取决于内核和/或 QEMU 的版本,我需要的最低版本是多少?我还错过了配置的任何内容吗?我有:
discard
使用以下选项安装 (ext4) 来宾文件系统/etc/fstab
- 尝试了针对主机和来宾的 Debian Wheezy 的当前测试版,以及针对主机的 CentOS 6.2
- 尝试
fstrim
在来宾上运行(我明白了FITRIM ioctl failed: Operation not supported
,但我不能 100% 确定这是否相关) - 尝试过
bus=ide
(bus=virtio
使用 CentOS 6.2 主机)
答案1
您应该能够通过使用 virtio-scsi 设备并在磁盘的 libvirt 定义中指定discard=unmap 来恢复空间。
我还没有在 CentOS/RHEL 中尝试过这个,但我确实让它在 Fedora 的更高版本中工作。我写关于它的博客文章。
我想说尝试一下,看看是否有效。