13.4. 仮想マシンへのストレージの接続
仮想マシン (VM) にストレージを追加するには、ストレージリソースを仮想ディスクとして仮想マシンに接続します。
仮想ディスクは、物理ストレージデバイスと同様に、接続されている仮想マシンから独立しており、他の仮想マシンに移動できます。
複数の種類のストレージリソースを使用して、仮想ディスクを仮想マシンに追加できます。
13.4.1. コマンドラインを使用してファイルベースの仮想ディスクを仮想マシンに接続する リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンにローカルストレージを提供する最も簡単な方法は、通常、.qcow2 または .raw 形式のファイルベースの仮想ディスクを接続することです。
コマンドラインでこれを行うには、次のいずれかの方法を使用できます。
libvirtによって管理されるディレクトリーベースのストレージプールに、ファイルベースのストレージボリュームを作成します。これには複数のステップが必要ですが、ハイパーバイザーとの統合が強化されます。RHEL 10 ホストで最初の仮想マシンを作成するときに、デフォルトのディレクトリーベースのストレージボリュームが自動的に作成されることに注意してください。このストレージプールの名前は、ディスクイメージを保存するディレクトリーの名前に基づいています。たとえば、
libvirtのsystemセッションでは、デフォルトでディスクイメージが/var/lib/libvirt/images/ディレクトリーに保存され、ストレージプールの名前がimagesになります。qemu-imgコマンドを使用して、ホストファイルシステム上のファイルとして仮想ディスクを作成します。これはより高速な方法ですが、libvirtとの統合は提供されません。そのため、
qemu-imgを使用して仮想ディスクを作成すると、作成後にディスクを管理するのが難しくなります。
コマンドラインで新しい仮想マシンを作成するときに、ファイルベースの仮想ディスクを作成して接続することもできます。これを行うには、virt-install ユーティリティーで --disk オプションを使用します。詳細な手順は、仮想マシンの作成 を参照してください。
手順
オプション: 仮想ディスクをストレージボリュームとして作成するが、ホスト上のデフォルトの
imagesストレージプールまたは別の既存のストレージプールを使用しない場合は、新しいディレクトリーベースのストレージプールを作成して設定します。ディレクトリータイプのストレージプールを設定します。たとえば、
/guest_imagesディレクトリーを使用するguest_images_dirという名前のストレージプールを作成するには、次のコマンドを実行します。# virsh pool-define-as guest_images_dir dir --target "/guest_images" Pool guest_images_dir defined以前に定義した設定に基づいて、ストレージプールのターゲットパスを作成します。
# virsh pool-build guest_images_dir Pool guest_images_dir builtストレージプールを起動します。
# virsh pool-start guest_images_dir Pool guest_images_dir startedオプション: ホストの起動時にストレージプールが起動するように設定します。
# virsh pool-autostart guest_images_dir Pool guest_images_dir marked as autostartedオプション: ストレージプールが
running状態であることを確認します。報告されるサイズが期待どおりであるか、また、自動開始が正しく設定されているかを確認してください。# virsh pool-info guest_images_dir Name: guest_images_dir UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB
ファイルベースの仮想ディスクを作成します。これを行うには、以下のいずれかの方法を使用します。
libvirtによって管理されないファイルベースの仮想マシンディスクをすばやく作成するには、qemu-imgユーティリティーを使用します。たとえば、次のコマンドは、サイズが 30 ギガバイトの test-image という名前の
qcow2ディスクイメージを作成します。# qemu-img create -f qcow2 test-image 30G Formatting 'test-image', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=32212254720 lazy_refcounts=off refcount_bits=16libvirtによって管理されるファイルベースの仮想マシンディスクを作成するには、既存のディレクトリーベースのストレージプールに基づいてディスクをストレージボリュームとして定義します。たとえば、次のコマンドは、
guest_images_dirストレージプールに基づいて、vm-disk1という名前の 20 GB のqcow2ボリュームを作成します。# virsh vol-create-as --pool guest_images_dir --name vm-disk1 --capacity 20GB --format qcow2 Vol vm-disk1 created
作成した仮想ディスクの場所を確認します。
-
qemu-imgで作成した仮想マシンディスクの場合、これは通常カレントディレクトリーです。 ストレージボリュームの場合は、ボリュームが属するストレージプールを調べます。
# virsh vol-list --pool guest_images_dir --details Name Path Type Capacity Allocation -------------------------------------------------------------------------- vm-disk1 /guest-images/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コマンドを使用してディスクを仮想マシンに接続します。仮想マシンで使用されていないターゲットデバイスを指定します。たとえば、次のコマンドは、以前に作成した
test-disk1をvdcデバイスとしてtestguest1仮想マシンに接続します。# virsh attach-disk testguest1 /guest-images/vm-disk1 vdc --persistent
検証
ディスクを接続した仮想マシンの XML 設定を調べて、設定が正しいかどうかを確認します。
# virsh dumpxml testguest1 ... <disk type='file' device='disk'> <driver name='qemu' type='qcow2' discard='unmap'/> <source file='/guest-images/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> ...- 仮想マシンのゲストオペレーティングシステムで、ディスクイメージが未フォーマットかつ未割り当てのディスクとして利用できるようになっていることを確認します。