web-dev-qa-db-ja.com

KVMで仮想ストレージをSSDとして追加する方法

以前はVirtualBoxユーザーだったので、最近KVM(QEMU/libvirtまたはそれと呼ばれるもの)に移動しました。 VirtualBoxで、VMに新しいストレージデバイスを追加すると、ソリッドステートドライブというラベルの付いたチェックボックスがあることを知っています。チェックすると、ゲストシステムは仮想ディスクをソリッドステートとして表示します端末。ゲストシステム(Windowsなど)にデフラグを無効にするよう通知できるため、これは非常に便利です。これはKVM=で可能かどうか、インターネット上で関連するものを見つけることができなかったためかどうかと思いますか?

5
zypA13510

Windowsでの一部の ソース のデフラグは、SSDドライブで完全にオフにならないため、Windowsでのデフラグを気にする必要はありません。

デフラグを完全に無効にすると、ファイルシステムのメタデータが最大のフラグメンテーションに達し、問題が発生する可能性があるというリスクを冒しています。

本当に重要なのは、VM内でTRIMサポートを有効にすることです。 TRIMコマンドをサポートするvirtio-scsiでこれを実現できます。

VM構成を変更して、コントローラーモデルをvirtio-scsiに設定します。

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

そして、各ディスクを変更してunmapオプションを有効にします。

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

現在、QEMUには、SCSI、ATA、またはVirtioBlkディスクを非回転ストレージによってバックアップされているものとしてマークするメカニズムはありません。したがって、ゲストOSはそのままでは最適な設定を行いません。回避策として、Linuxの場合、SSDでバックアップされたディスクのsysfsでブロックデバイスの「回転」フラグを設定解除することで、これを上書きできます。この機能をQEMUに追加して、将来のリリースで「機能する」ようにすることが可能かどうかを知るために、私は人々と話し合っています。

3
DanielB

現在のバージョンのqemuでは、何もする必要はありません。仮想ディスクがQCOW2イメージであるか、SANストレージまたはスパースLVMまたはZFSボリュームなどのシンプロビジョニングされたメディア上にある場合、そのディスクはシンプロビジョニングされたボリュームとしてWindowsに適切に提示されます。

このディスクは、ローカルSSDストレージのQCOW2ディスクイメージにあります。

Thin provisioned volume

これにより、WindowsはTRIMコマンドをonlyだけ発行し、ドライブの最適化を試みなくなります。

[最適化]をクリックすると、次の結果になります。

Optimize trims the disk

2
Michael Hampton

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>
0
saraedum