如何在 KVM 中添加虚拟存储作为 SSD

zyp*_*510 8 virtualization virtual-machines libvirt qemu kvm-virtualization

作为以前的 VirtualBox 用户,我最近转移到 KVM(QEMU/libvirt 或其他任何名称)。我知道在 VirtualBox 中,当您向 VM 添加新存储设备时,会有一个标记为Solid-state Drive的复选框,如果选中,来宾系统会将虚拟磁盘视为固态设备。这非常有用,因为它可以通知来宾系统(即 Windows)禁用碎片整理。我想知道这在 KVM 中是否可行,因为我在互联网上找不到任何相关内容?

Dan*_*elB 5

目前,QEMU 中没有任何机制可以将 SCSI、ATA 或 VirtioBlk 磁盘标记为由非旋转存储支持。因此,来宾操作系统不会立即进行最佳设置。作为解决方法,对于 Linux,您可以通过取消设置 sysfs 中 SSD 支持的任何磁盘的块设备的“旋转”标志来覆盖此问题。我正在与人们交谈,了解是否可以将此功能添加到 QEMU 中,使其在未来的版本中“正常工作”。

  • 我发布了补丁来报告旋转速度,这是指示磁盘是 SSD 的间接方式 https://lists.gnu.org/archive/html/qemu-devel/2017-10/msg00698.html (3认同)

小智 4

您无需关心 Windows 中的碎片整理,因为如果相信某些来源, Windows 中的碎片整理不会在 SSD 驱动器上完全关闭:

如果完全禁用碎片整理,您将面临文件系统元数据可能达到最大碎片并给您带来潜在麻烦的风险。

真正重要的是在虚拟机内启用 TRIM 支持。您可以使用virtio-scsi支持 TRIM 命令来实现此目的。

更改您的虚拟机配置以将控制器模型设置为virtio-scsi

<controller type='scsi' index='0' model='virtio-scsi'>
Run Code Online (Sandbox Code Playgroud)

并更改每个磁盘以启用unmap选项:

<disk type='file' device='disk'>
 <driver name='qemu' type='qcow2' discard='unmap'/>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢(你的)信息。但是,我认为告知客户操作系统存储由固态驱动器支持这一事实仍然非常重要,以便它可以对其进行优化。现在,即使在应用了您建议的更改(启用 TRIM 支持)之后,我的虚拟存储在 Windows 的_优化驱动器_ 工具中仍然被识别为“硬盘驱动器”。我感到非常不舒服的是,Windows 可能会像在旋转存储上一样频繁地运行碎片整理。 (2认同)