Show Table of Contents
14.3. ゲストにストレージデバイスを追加する
このセクションでは、ゲストにストレージデバイスを追加する方法を説明します。必要なストレージのみを追加することができます。
14.3.1. ゲストにファイルベースのストレージを追加する
ファイルベースのストレージは、ホスト物理マシンのファイルシステム上に格納されるファイルの集合であり、ゲストに対して仮想化されたハードドライブとして動作します。ファイルベースのストレージを追加するには、次の手順を実行します。
手順14.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>
デバイス名は、IDE や SCSI ディスクを指定する「hd」や「sd」から始まる名前にすることもできます。設定ファイルには<address>
サブ要素を含め、バス上の新しいデバイスの位置を指定することもできます。virtio ブロックデバイスの場合に、これは PCI アドレスになるはずです。<address>
サブ要素を省略すると、livbirt により次に使用できる 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
コマンドではattach-disk
コマンドを使用することができます。このコマンドでは、より簡単な構文で限定された数のパラメーターを設定でき、XML ファイルを作成する必要がありません。以下に示すように、attach-disk
コマンドは前述のattach-device
コマンドと同じように使用されます。# virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img vdb --cache none
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
が入力され、1 番目のパーティションが選択されています。Partition number (1-4): 1
Enter
を押して、デフォルトとなる 1 番目のシリンダーを選択します。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
のパーティションを選択しています。この例で作成されたパーティションは 1 つのみのため、fdisk によって自動的にパーティション 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
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.