13.4.5. コマンドラインを使用して LVM ベースのストレージを仮想マシンに接続する
仮想マシン (VM) にローカルストレージを提供する場合、LVM ベースのストレージボリュームを使用できます。このタイプのディスクイメージは LVM ボリュームグループに基づいており、.qcow2 または .raw 形式を使用します。
コマンドラインを使用して LVM ベースのストレージを仮想マシンに接続するには、次のいずれかの方法を使用します。
-
新しい仮想マシンを作成する場合は、
Create virtual machineダイアログのStorageオプションを使用して新しいディスクを作成し、接続します。詳細な手順は、Web コンソールを使用した仮想マシンの作成 を参照してください。 - 既存の仮想マシンの場合は、LVM ベースのストレージボリュームを作成し、それを仮想マシンに接続します。次の手順を参照してください。
LVM ベースのストレージボリュームには次の制限があることに注意してください。
- LVM ベースのストレージプールは、LVM の柔軟性を完全には提供しません。
-
LVM ベースのストレージプールは、ボリュームグループです。
virshユーティリティーを使用してボリュームグループを作成できますが、この方法では、作成したボリュームグループには 1 つのデバイスしか作成できません。複数のデバイスを持つボリュームグループを作成する場合は、代わりに LVM ユーティリティーを使用します。詳細は、How to create a volume group in Linux with LVM を参照してください。 -
LVM ベースのストレージプールには、完全なディスクパーティションが必要です。
virshコマンドを使用して新しいパーティションまたはデバイスをアクティブにすると、パーティションがフォーマットされ、すべてのデータが消去されます。次の手順で説明しているように、ホストの既存のボリュームグループを使用している場合は、何も消去されません。
前提条件
ハイパーバイザーが LVM ベースのストレージプールをサポートしていることを確認する。
# virsh pool-capabilities | grep "'logical' supported='yes'"コマンドの出力が表示される場合には、LVM ベースのストレージプールはサポートの対象です。
- ホスト上に LVM ボリュームグループが存在することを確認します。作成手順は、LVM ボリュームグループの作成 を参照してください。
- ストレージプールを作成する前に、選択したストレージデバイス上のデータをバックアップする。ディスクパーティションをストレージプール専用にすると、ディスクデバイスに現在保存されているすべてのデータが再フォーマットされ、消去されます。
手順
LVM ベースのストレージプールがまだない場合は、新しい LVM ベースのストレージプールを作成して設定します。
LVM タイプのストレージプールを定義します。たとえば、次のコマンドは、
lvm_vgボリュームグループを使用し、/dev/lvm_vgディレクトリーにマウントされるguest_images_lvmという名前のストレージプールを定義します。# virsh pool-define-as guest_images_lvm logical --source-dev /dev/sdb --target /dev/lvm_vg Pool guest_images_lvm defined以前に定義した設定に基づいてストレージプールを作成します。
# virsh pool-build guest_images_lvm Pool guest_images_lvm builtオプション: プールが作成されたことを確認します。
# virsh pool-list --all Name State Autostart ------------------------------------------- default active yes guest_images_lvm inactive noストレージプールを起動します。
# virsh pool-start guest_images_lvm Pool guest_images_lvm started注記virsh pool-startコマンドは、永続ストレージプールにのみ必要です。一時的なストレージプールは、作成時に自動的に起動します。オプション: 自動起動をオンにします。
デフォルトでは、
virshで定義したストレージプールは、仮想化サービスが起動するたびに自動的に起動するように設定されません。virsh pool-autostartコマンドを使用して、ストレージプールを自動的に起動するように設定します。# virsh pool-autostart guest_images_lvm Pool guest_images_lvm marked as autostarted
LVM ベースのストレージボリュームを作成します。たとえば、次のコマンドは、
guest_images_lvmストレージプールに基づいて、vm-disk1という名前の 20 GB のqcow2ボリュームを作成します。# virsh vol-create-as --pool guest_images_lvm --name vm-disk1 --capacity 20GB --format qcow2 Vol vm-disk1 createdストレージボリュームを仮想ディスクとして仮想マシンに接続します。
作成したストレージボリュームの場所を確認します。これを行うには、ボリュームが属するストレージプールを調べます。
# virsh vol-list --pool guest_images_lvm --details Name Path Type Capacity Allocation ----------------------------------------------------------------------------- vm-disk1 /dev/guest_images_lvm/vm-disk1 block 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 /dev/guest_images_lvm/vm-disk1 vdc --persistent
検証
ディスクを接続した仮想マシンの XML 設定を調べて、設定が正しいかどうかを確認します。
# virsh dumpxml testguest1 ... <disk type="block" device="disk"> <driver name="qemu" type="raw"/> <source dev="/dev/guest_images_lvm/vm-disk1" index="3"/> <backingStore/> <target dev="vdc" bus="virtio"/> <alias name="virtio-disk2"/> <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/> </disk> ...- 仮想マシンのゲストオペレーティングシステムで、ディスクイメージが未フォーマットかつ未割り当てのディスクとして利用できるようになっていることを確認します。