13.3. ゲストへのストレージデバイスの追加
このセクションでは、ゲストへのストレージデバイスの追加について説明します。追加のストレージは、必要な場合にのみ追加できます。
13.3.1. ゲストへのファイルベースストレージの追加
ファイルベースのストレージは、ゲストの仮想化ハードドライブとして機能するホスト物理マシンのファイルシステムに保存されるファイルのコレクションです。ファイルベースのストレージを追加するには、次の手順を実行します。
手順13.1 ファイルベースのストレージの追加
- ストレージファイルを作成するか、既存のファイル (IMG ファイルなど) を使用します。次のコマンドは両方とも、ゲストの追加ストレージとして使用できる 4GB のファイルを作成することに注意してください。
- ファイルベースのストレージイメージには、事前に割り当てられたファイルをお勧めします。次に示すように、次の dd コマンドを使用して、事前に割り当てられたファイルを作成します。
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
- または、事前に割り当てられたファイルの代わりにスパースファイルを作成します。スパースファイルははるかに高速に作成され、テストに使用できますが、データの整合性とパフォーマンスの問題があるため、実稼働環境にはお勧めしません。
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
- 新しいファイルに <disk> 要素を書き込んで、追加のストレージを作成します。この例では、このファイルは
NewStorage.xml
と呼ばれます。<disk>
要素は、ディスクのソースと仮想ブロックデバイスのデバイス名を記述します。デバイス名は、ゲスト内のすべてのデバイスで一意である必要があり、ゲストが仮想ブロックデバイスを見つけるバスを識別します。次の例では、ソースがFileName.img
という名前のファイルベースのストレージコンテナーである virtio ブロックデバイスを定義しています。<disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/FileName.img'/> <target dev='vdb'/> </disk>
デバイス名は hd または sd で始めることもでき、それぞれ IDE と SCSI ディスクを識別します。設定ファイルには、新しいデバイスのバス上の位置を指定する<address>
サブ要素を含めることもできます。virtio ブロックデバイスの場合、これは PCI アドレスである必要があります。<address>
サブ要素を省略すると、libvirt は次に使用可能な PCI スロットを見つけて割り当てることができます。 - 次のように CD-ROM を接続します。
<disk type='file' device='cdrom'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/FileName.img'/> <readonly/> <target dev='hdc'/> </disk >
NewStorage.xml
で定義されたデバイスをゲスト (Guest1
) とともに追加します。# virsh attach-device --config Guest1 ~/NewStorage.xml
注記この変更は、ゲストが破棄されて再起動された後にのみ適用されます。さらに、永続デバイスは、永続ドメイン、つまり virsh define コマンドで設定が保存されたドメインにのみ追加できます。ゲストが実行中で、ゲストが破棄されるまで新しいデバイスを一時的に追加する場合は、-config
オプションを省略します。# virsh attach-device Guest1 ~/NewStorage.xml
注記virsh コマンドを使用すると、XML ファイルを作成しなくても、より単純な構文で限られた数のパラメーターを設定できる attach-disk コマンドを使用できます。attach-disk コマンドは、次に示すように、前述の attach-device コマンドと同様の方法で使用されます。# virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img vdb --cache none --driver qemu --subdriver raw
virsh attach-disk コマンドは--config
オプションも受け入れることに注意してください。- ゲストマシンを起動します (現在実行されていない場合)。
# virsh start Guest1
注記次の手順は Linux ゲスト固有です。他のオペレーティングシステムは、さまざまな方法で新しいストレージデバイスを処理します。その他のシステムについては、そのオペレーティングシステムのドキュメントを参照してください。 ディスクドライブのパーティション分割
これで、ゲストには/dev/vdb
というハードディスクデバイスがあります。。必要に応じて、このディスクドライブをパーティションに分割し、パーティションをフォーマットします。追加したデバイスが表示されない場合は、ゲストのオペレーティングシステムのディスクホットプラグに問題があることを示しています。- 新しいデバイスの fdisk を起動します。
# fdisk /dev/vdb Command (m for help):
- 新しいパーティションのために、
n
と入力します。 - 次のように表示されます。
Command action e extended p primary partition (1-4)
プライマリーパーティションには、p
と入力します。 - 使用可能なパーティション番号を選択します。この例では、
1
を入力して、最初のパーティションを選択します。Partition number (1-4): 1
Enter
を押して、デフォルトの最初のシリンダーを入力します。First cylinder (1-400, default 1):
- パーティションのサイズを選択します。この例では、Enter を押してディスク全体を割り当てます。
Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
- t を入力して、パーティションタイプを設定します。
Command (m for help): t
- 前の手順で作成したパーティションを選択します。この例では、パーティションが 1 つしか作成されておらず、fdisk がパーティション 1 を自動的に選択したため、パーティション番号は 1 です。
Partition number (1-4): 1
- Linux パーティションの場合は 83 と入力します。
Hex code (type L to list codes): 83
- w と入力して変更を書き込み、終了します。
Command (m for help): w
ext3
ファイルシステムで新しいパーティションをフォーマットします。# mke2fs -j /dev/vdb1
- マウントディレクトリーを作成し、ゲストにディスクをマウントします。この例では、ディレクトリーは myfiles にあります。
# mkdir /myfiles # mount /dev/vdb1 /myfiles
これで、ゲストは追加の仮想化されたファイルベースのストレージデバイスを使用できます。ただし、ゲストの/etc/fstab
ファイルで定義されていない限り、このストレージは再起動後に永続的にマウントされないことに注意してください。/dev/vdb1 /myfiles ext3 defaults 0 0