以前はVirtualBoxユーザーだったので、最近KVM(QEMU/libvirtまたはそれと呼ばれるもの)に移動しました。 VirtualBoxで、VMに新しいストレージデバイスを追加すると、ソリッドステートドライブというラベルの付いたチェックボックスがあることを知っています。チェックすると、ゲストシステムは仮想ディスクをソリッドステートとして表示します端末。ゲストシステム(Windowsなど)にデフラグを無効にするよう通知できるため、これは非常に便利です。これはKVM=で可能かどうか、インターネット上で関連するものを見つけることができなかったためかどうかと思いますか?
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'/>
現在、QEMUには、SCSI、ATA、またはVirtioBlkディスクを非回転ストレージによってバックアップされているものとしてマークするメカニズムはありません。したがって、ゲストOSはそのままでは最適な設定を行いません。回避策として、Linuxの場合、SSDでバックアップされたディスクのsysfsでブロックデバイスの「回転」フラグを設定解除することで、これを上書きできます。この機能をQEMUに追加して、将来のリリースで「機能する」ようにすることが可能かどうかを知るために、私は人々と話し合っています。
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>