8.2. ストレージデバイスをゲストに追加
このセクションでは、ストレージデバイスを仮想ゲストマシンに追加する方法を説明します。 追加のストレージはゲストが作成された後にのみ追加できます。サポートされているストレージデバイスとプロトコルを以下に示します:
- ローカルハードドライブのパーティション
- ローカルボリューム
- ファイバーチャンネル、又は ホストに直結の iSCSI
- ホストのファイルシステムに存在するファイルコンテナ
- 仮想マシンによって直接マウントされている NFS ファイルシステム
- ゲストにより直接アクセスされる iSCSI ストレージ
- クラスタファイルシステム (GFS).
ファイルベースストレージをゲストに追加
ファイルベースストレージ、又はファイルベースコンテナはホストファイルシステム上の ファイルであり、仮想化ゲストの為の仮想化ハードドライブとして動作します。ファイル ベースコンテナを追加するには、以下の手順を実行します:
- 空のコンテナファイルを作成するか、又は、既存のファイルコンテナ(ISO ファイルなど)を使用。
dd
コマンドを使用して Sparse ファイルを作成します。 Sparse ファイルは、データの整合性とパフォーマンス問題のために推奨できませんが、 Sparse ファイルは より速く作成できてテストに使用できます。但し実稼働環境では使用できません。# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
- 非 sparse の 事前割り当て済みのファイルがファイルベースストレージイメージ用に推奨されます。非 sparse ファイルを作成して、以下を実行します:
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
これらの両方のコマンドは、仮想化ゲスト用に追加のストレージとして使用される 400MB の ファイルを作成します。 - ゲスト用の設定をダンプします。この例では、ゲストは Guest1 と 言う名前であり、ファイルはユーザーのホームディレクトリに保存されます。
# virsh dumpxml Guest1 > ~/Guest1.xml
- テキストエディタで設定ファイル (この例では、Guest1.xml) を開きます。
<disk>
エレメントを見つけて下さい。 このエレメントはストレージデバイスを記述するものです。以下にディスクエレメントの 例を示します:<disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/var/lib/libvirt/images/Guest1.img'/> <target dev='xvda'/> </disk>
<disk>
エレメントの複製により、又は 新規の書き込みにより追加のストレージを追加します。仮想ブロックデバイス属性用のデバイス名を 指定することを確認して下さい。この属性はそれぞれのゲスト設定ファイルのために独自のもので なければなりません。以下の例では、FileName.img
と呼ばれる 追加のファイルベースストレージコンテナを含んでいる設定ファイルセクションを示しています。<disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/var/lib/libvirt/images/Guest1.img'/> <target dev='xvda'/> </disk> <disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/var/lib/libvirt/images/FileName.img'/> <target dev='hda'/> </disk>
- 更新された設定ファイルからゲストを再起動します。
# virsh create Guest1.xml
- 以下のステップは Linux ゲスト特有のものです。他のオペレーティングシステムは 別の方法で新規のストレージデバイスを処理します。Linux 以外のシステムではその オペレーティングシステムのドキュメントを参照して下さい。ゲストはこの時点で、ファイル
FileName.img
を/dev/hdb
と言う名のデバイスとして使用します。 このデバイスはゲストからのフォーマットを必要とします。ゲスト上では、 パーティション設定で全デバイスを 1つのプライマリパーティションに して、それからそのデバイスをフォーマットします。- 新規パーティション 用に
n
を押します。# fdisk /dev/hdb Command (m for help):
- プライマリパーティション用に
p
を押します。Command action e extended p primary partition (1-4)
- 利用可能なパーティションを1つ選択します。この例では、
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
です。Partition number (1-4):
1
- linux パーティションとして
83
を入力します。Hex code (type L to list codes):
83
- 変更をディスクに書き込んで退出します。
Command (m for help):
w
Command (m for help):q
ext3
ファイルシステムを 使用して新規パーティションをフォーマットします。# mke2fs -j /dev/hdb
- ゲストにディスクをマウントします。
# mount /dev/hdb1 /myfiles
これでゲストは追加の仮想化ファイルベースストレージデバイスを持つことになります。
ゲストへハードドライブと他のブロックデバイスを追加
システム管理者は追加のハードドライブを使用して、より多くのストレージ領域を提供したり、 ユーザーデータからシステムデータを分離することができるようになります。この手順、手順8.1「物理ブロックデバイスを仮想化ゲストに追加」 はホスト上のハードドライブを 仮想化ゲストに追加する方法を示しています。
この手順は、全ての物理ブロックデバイスに適用できます。それには、 CD-ROM、DVD 及び フロッピィディスクも含まれます。
手順8.1 物理ブロックデバイスを仮想化ゲストに追加
- ハードディスクデバイスを物理的にホストに取り付けます。デフォルトでドライブが アクセス不可の場合は、ホストを設定します。
multipath
の使用でデバイスを設定して、必要であれば ホスト上で永続化します。virsh attach
コマンドを使用します。myguest をご自分のゲスト名で、それから/dev/hdb1
を追加するデバイスで、そして hdc をゲスト上のデバイスの場所でそれぞれ入れ替えます。hdc は未使用のデバイス名とする必要があります。そして、 Windows ゲストにも hd* 表記を使用します。このゲストは デバイスを正しく認識するでしょう。--type hdd
パラメータを CD-ROM 又は DVD デバイス用のコマンドに追記します。--type floppy
パラメータを フロッピィデバイス用のコマンドに追記します。# virsh attach-disk myguest
/dev/hdb1
hdc --driver tap --mode readonly- これで、ゲストは Linux 上に
/dev/hdb
と言う名の新規ハードディスクデバイスを持ち、また、Windows 上ではD: drive
かその類似名のハードディスクデバイスを持ちます。 このデバイスはフォーマットが必要かも知れません。