MrC*_*vin 1 libvirt qemu kvm-virtualization
到目前为止,我已经使用 libvirt XML 命令在 QEMU 来宾上启用了丢弃功能
..
<driver name='qemu' type='qcow2' discard='unmap' />
..
Run Code Online (Sandbox Code Playgroud)
而且看起来效果很好。
现在我即将将我的存储从 转换virtio-scsi
为virtio-blk
因为它现在支持丢弃,我遇到了该选项detect_zeroes=off|on|unmap
(或 QEMU 等效项detect-zeroes
)
我也应该使用这个选项吗?为什么?我假设除了这些区域将被丢弃标记为“可用”之外,它们也被写入零,但它有什么值,特别是在 SSD 支持的存储上?
使用 qcow2 图像我看到写入零来标记稀疏的空白空间的意义,但如果没有此选项并且仅使用discard='unmap'
.
libvirt 文档说:
可选的 detector_zeroes 属性控制是否检测零写入请求。该值可以是“off”、“on”或“unmap”。前两个值分别关闭和打开检测。第三个值(“unmap”)打开检测,并根据上面的丢弃值尝试从图像中丢弃这些区域(如果丢弃设置为“忽略”,它将充当“打开”)。注意,启用检测是一项计算密集型操作,但可以节省慢速媒体上的文件空间和/或时间。从2.0.0开始
不幸的是,这并没有让我更接近使用或不使用的决定detect_zeroes
:-/
我的 QEMU 来宾的后备存储是 HDD 和 SSD 上的 qcow2 映像以及 SSD 上的 LVM 块设备。
现代操作系统能够向虚拟存储发送 TRIM/UNMAP 命令以释放空间,因此detect_zeroes
对于此类操作系统来说不是必需的。
我能想到使用的唯一原因detect_zeroes
是获得对不支持 TRIM/UNMAP 的古老操作系统的丢弃支持。detect_zeroes='unmap'
在这种情况下,当您设置而不是将零块写入磁盘时,零块将被取消映射。在虚拟客户操作系统中,您将运行一些实用程序,将零写入磁盘上的所有可用空间,并且 KVM 会将这些转换为 TRIM/UNMAP。但这可能是 CPU 密集型的。另外,我想不出有什么充分的理由不使用on
它unmap
。
PS 你说:“现在我要把我的存储从 转换virtio-scsi
为virtio-blk
”......你把这些向后了吗?通常您会从 转换virtio-blk
为virtio-scsi
。
归档时间: |
|
查看次数: |
4742 次 |
最近记录: |