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

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

我以前是 VirtualBox 用户,最近我转到了 KVM(QEMU/libvirt 或任何其他名称)。我知道在 VirtualBox 中,当你向虚拟机添加新的存储设备时,会有一个标记为固态硬盘如果选中,客户系统将把虚拟磁盘视为固态设备。这非常有用,因为它可以通知客户系统(即 Windows)禁用碎片整理。我想知道这在 KVM 中是否可行,因为我在互联网上找不到任何相关信息?

答案1

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

答案2

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

如果您完全禁用碎片整理,则文件系统元数据可能会达到最大碎片化程度,并可能给您带来麻烦。

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

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

<controller type='scsi' index='0' model='virtio-scsi'>

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

<disk type='file' device='disk'>
 <driver name='qemu' type='qcow2' discard='unmap'/>

答案3

您无需对当前版本的 qemu 执行任何操作。如果虚拟磁盘是 QCOW2 映像,或者位于精简配置介质(如 SAN 存储或稀疏 LVM 或 ZFS 卷)上,则它将被适当地显示为 Windows 的精简配置卷。

该磁盘位于本地 SSD 存储上的 QCOW2 磁盘映像上。

精简配置卷

这将导致 Windows仅有的发出 TRIM 命令,而不是尝试对驱动器进行碎片整理。

点击“优化”将导致:

优化修剪磁盘

答案4

QEMU 的最新版本(我尝试了 2.12.0)支持一个rotation_rate参数。如果您将其设置为 1,则客户机应将磁盘视为 SSD。目前,libvirt 不直接以 XML 格式支持此参数,因此您必须将其作为参数传入qemu:commandline

以下是我为 OSX 客户机使用的 libvirt 配置的相关部分:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <devices>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native' discard='unmap'/>
      <source dev='/dev/vg1/osx'/>
      <target dev='sda' bus='sata'/>
      <boot order='2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.sata0-0-0.rotation_rate=1'/>
  </qemu:commandline>
</domain>

相关内容