13.4.7. コマンドラインを使用して仮想マシンに NFS ベースのストレージを接続する
仮想マシン (VM) にネットワークストレージを提供するには、ネットワークファイルシステム (NFS) サーバーに基づくストレージボリュームを使用します。
コマンドラインを使用して NFS ベースのストレージを仮想マシンに接続するには、次のいずれかの方法を使用します。
-
新しい仮想マシンを作成する場合は、
Create virtual machineダイアログのStorageオプションを使用して新しいディスクを作成し、接続します。詳細な手順は、Web コンソールを使用した仮想マシンの作成 を参照してください。 - 既存の仮想マシンの場合は、NFS ベースのストレージボリュームを作成し、それを仮想マシンに接続します。次の手順を参照してください。
前提条件
ハイパーバイザーが NFS ベースのストレージプールに対応していることを確認します。
# virsh pool-capabilities | grep "<value>nfs</value>"コマンドの出力が表示される場合には、NFS ベースのストレージプールはサポートの対象です。
- 使用できる NFS が必要です。詳細は、NFS 共有のマウント を参照してください。
手順
NFS ベースのストレージプールがまだない場合は、新しい NFS ベースのストレージプールを作成して設定します。
NFS タイプのストレージプールを定義および作成します。たとえば、ターゲットディレクトリー
/var/lib/libvirt/images/nfspoolを使用してサーバーディレクトリー/home/net_mountにマウントされ、IP が111.222.111.222の NFS サーバーを使用するストレージプールを、guest_images_netfsという名前で作成するには、以下を実行します。# virsh pool-define-as --name guest_images_netfs \ --type netfs --source-host='111.222.111.222' \ --source-path='/home/net_mount' --source-format='nfs' \ --target='/var/lib/libvirt/images/nfspool' Pool guest_images_netfs defined以前に定義した設定に基づいてストレージプールを作成します。
# virsh pool-build guest_images_netfs Pool guest_images_netfs builtオプション: プールが作成されたことを確認します。
# virsh pool-list --all Name State Autostart ------------------------------------------- default active yes guest_images_netfs inactive noストレージプールを起動します。
# virsh pool-start guest_images_netfs Pool guest_images_netfs startedオプション: 自動起動をオンにします。
デフォルトでは、
virshで定義したストレージプールは、仮想化サービスが起動するたびに自動的に起動するように設定されません。virsh pool-autostartコマンドを使用して、ストレージプールを自動的に起動するように設定します。# virsh pool-autostart guest_images_netfs Pool guest_images_netfs marked as autostarted
NFS ベースのストレージボリュームを作成します。たとえば、次のコマンドは、
guest_images_netfsストレージプールに基づいて、vm-disk1という名前の 20 GB のqcow2ボリュームを作成します。# virsh vol-create-as --pool guest_images_netfs --name vm-disk1 --capacity 20GB --format qcow2 Vol vm-disk1 createdストレージボリュームを仮想ディスクとして仮想マシンに接続します。
作成したストレージボリュームの場所を確認します。これを行うには、ボリュームが属するストレージプールを調べます。
# virsh vol-list --pool guest_images_netfs --details Name Path Type Capacity Allocation ------------------------------------------------------------------------------------- vm-disk1 /var/lib/libvirt/images/nfspool/vm-disk1 file 20.00 GiB 196.00 KiBディスクを接続する仮想マシンですでに使用されているターゲットデバイスを確認します。
# virsh domblklist --details <vm-name> Type Device Target Source ---------------------------------------------------------------- file disk *vda /home/VirtualMachines/vm-name.qcow2 file cdrom vdb -- オプション: データの破損やディスクの断片化の問題を回避するために、ディスクの整合性を確認します。手順は、仮想ディスクの整合性のチェック を参照してください。
virsh attach-diskコマンドを使用してディスクを仮想マシンに接続します。仮想マシンで使用されていないターゲットデバイスを指定します。たとえば、次のコマンドは、以前に作成した
vm-disk1をvdcデバイスとしてtestguest1仮想マシンに接続します。# virsh attach-disk testguest1 /var/lib/libvirt/images/nfspool/vm-disk1 vdc --persistent
検証
ディスクを接続した仮想マシンの XML 設定を調べて、設定が正しいかどうかを確認します。
# virsh dumpxml testguest1 ... <disk type='file' device='disk'> <driver name='qemu' type='qcow2' discard='unmap'/> <source file='/var/lib/libvirt/images/nfspool/vm-disk1' index='1'/> <backingStore/> <target dev='vdc' bus='virtio'/> <alias name='virtio-disk2'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> ...- 仮想マシンのゲストオペレーティングシステムで、ディスクイメージが未フォーマットかつ未割り当てのディスクとして利用できるようになっていることを確認します。