第5章 KVM 準仮想化 (virtio) ドライバー
準仮想化ドライバーはゲストのパフォーマンスを向上し、ゲスト I/O レイテンシーを下げ、ベアメタルレベルまでスループットを増加させます。I/O 負荷の高いタスクおよびアプリケーションを実行する完全に仮想化されたゲストには、準仮想化ドライバーを使用することが推奨されます。
Virtio ドライバーは、KVM ホストで実行しているゲスト仮想マシンで利用可能な、KVM の準仮想化デバイスドライバーです。これらのドライバーは、
virtio
パッケージに同梱されています。virtio パッケージは、ブロック (ストレージ) デバイスおよびネットワークインターフェイスコントローラーに対応しています。
注記
PCI デバイスは、仮想システムのアーキテクチャーにより制限されます。割り当てられたデバイスを使用する場合の追加の制限は、16章ゲスト仮想マシンのデバイス設定 を参照してください。
5.1. 既存のストレージデバイスへの KVM virtio ドライバーの使用
ゲストに接続されている既存のハードディスクデバイスを変更して、仮想 IDE ドライバーの代わりに
virtio
ドライバーを使用できます。このセクションの例では、libvirt 設定ファイルを編集します。これらの手順を実行するためにゲスト仮想マシンをシャットダウンする必要はありませんが、ゲストが完全にシャットダウンされて再起動されるまで、変更は適用されないことに注意してください。
手順5.1 既存のデバイスへの KVM virtio ドライバーの使用
- この手順を続行する前に、適切なドライバー (
viostor
) がインストールされていることを確認してください。 - root で virsh edit guestname コマンドを実行し、使用しているデバイスの XML 設定ファイルを編集します。たとえば、virsh edit guest1 です。設定ファイルは、
/etc/libvirt/qemu/
ディレクトリーにあります。 - 以下は、仮想化 IDE ドライバーを使用したファイルベースのブロックデバイスです。これは、virtio ドライバーを使用しない仮想マシンの一般的なエントリーです。
<disk type='file' device='disk'> ... <source file='/var/lib/libvirt/images/disk1.img'/> <target dev='hda' bus='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk>
- bus= エントリーを virtio に変更して、virtio デバイスを使用するエントリーを変更します。ディスクが以前 IDE だった場合は、
hda
、hdb
、またはhdc
のようなターゲットがあることに注意してください。bus=virtio に変更する場合は、それに応じてターゲットをvda
、vdb
、またはvdc
に変更する必要があります。<disk type='file' device='disk'> ... <source file='/var/lib/libvirt/images/disk1.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk>
- ディスク タグ内の アドレス タグを削除します。これは、この手順が機能するために必ず行う必要があります。libvirt は、仮想マシンが次に起動したときに、アドレス タグを適切に再生成します。
あるいは、virt-manager、virsh attach-disk、または virsh attach-interface は、virtio ドライバーを使用して新しいデバイスを追加できます。
Virtio の使用方法は、libvirt の Web サイトを参照してください。 http://www.linux-kvm.org/page/Virtio