8.2. ストレージデバイスをゲストに追加

このセクションでは、ストレージデバイスを仮想ゲストマシンに追加する方法を説明します。 追加のストレージはゲストが作成された後にのみ追加できます。サポートされているストレージデバイスとプロトコルを以下に示します:
  • ローカルハードドライブのパーティション
  • ローカルボリューム
  • ファイバーチャンネル、又は ホストに直結の iSCSI
  • ホストのファイルシステムに存在するファイルコンテナ
  • 仮想マシンによって直接マウントされている NFS ファイルシステム
  • ゲストにより直接アクセスされる iSCSI ストレージ
  • クラスタファイルシステム (GFS).
ファイルベースストレージをゲストに追加

ファイルベースストレージ、又はファイルベースコンテナはホストファイルシステム上の ファイルであり、仮想化ゲストの為の仮想化ハードドライブとして動作します。ファイル ベースコンテナを追加するには、以下の手順を実行します:

  1. 空のコンテナファイルを作成するか、又は、既存のファイルコンテナ(ISO ファイルなど)を使用。
    1. dd コマンドを使用して Sparse ファイルを作成します。 Sparse ファイルは、データの整合性とパフォーマンス問題のために推奨できませんが、 Sparse ファイルは より速く作成できてテストに使用できます。但し実稼働環境では使用できません。
      # dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
      
    2. 非 sparse の 事前割り当て済みのファイルがファイルベースストレージイメージ用に推奨されます。非 sparse ファイルを作成して、以下を実行します:
      # dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
      
    これらの両方のコマンドは、仮想化ゲスト用に追加のストレージとして使用される 400MB の ファイルを作成します。
  2. ゲスト用の設定をダンプします。この例では、ゲストは Guest1 と 言う名前であり、ファイルはユーザーのホームディレクトリに保存されます。
    # virsh dumpxml Guest1 > ~/Guest1.xml
    
  3. テキストエディタで設定ファイル (この例では、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>
    
  4. <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>
    
  5. 更新された設定ファイルからゲストを再起動します。
    # virsh create Guest1.xml
    
  6. 以下のステップは Linux ゲスト特有のものです。他のオペレーティングシステムは 別の方法で新規のストレージデバイスを処理します。Linux 以外のシステムではその オペレーティングシステムのドキュメントを参照して下さい。
    ゲストはこの時点で、ファイル FileName.img/dev/hdb と言う名のデバイスとして使用します。 このデバイスはゲストからのフォーマットを必要とします。ゲスト上では、 パーティション設定で全デバイスを 1つのプライマリパーティションに して、それからそのデバイスをフォーマットします。
    1. 新規パーティション 用に n を押します。
      # fdisk /dev/hdb
      Command (m for help):
      
    2. プライマリパーティション用に p を押します。
      Command action
         e   extended
         p   primary partition (1-4)
      
    3. 利用可能なパーティションを1つ選択します。この例では、1 を 入力することにより、最初のパーティションが選択されます。
      Partition number (1-4): 1
    4. Enter を押すことでデフォルトの最初の シリンダを入力します。
      First cylinder (1-400, default 1):
      
    5. パーティションのサイズを選択します。この例では Enter を 押すことによりディスク全体が割り当てられます。
      Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
      
    6. t を押すことにより パーティションのタイプをセットします。
      Command (m for help): t
    7. 先のステップで作成したパーティションを選択します。この例では、 パーティション番号は 1 です。
      Partition number (1-4): 1
    8. linux パーティションとして 83 を入力します。
      Hex code (type L to list codes): 83
    9. 変更をディスクに書き込んで退出します。
      Command (m for help): w 
      Command (m for help): q
    10. ext3 ファイルシステムを 使用して新規パーティションをフォーマットします。
      # mke2fs -j /dev/hdb
      
  7. ゲストにディスクをマウントします。
    # mount /dev/hdb1 /myfiles
これでゲストは追加の仮想化ファイルベースストレージデバイスを持つことになります。
ゲストへハードドライブと他のブロックデバイスを追加

システム管理者は追加のハードドライブを使用して、より多くのストレージ領域を提供したり、 ユーザーデータからシステムデータを分離することができるようになります。この手順、手順8.1「物理ブロックデバイスを仮想化ゲストに追加」 はホスト上のハードドライブを 仮想化ゲストに追加する方法を示しています。

この手順は、全ての物理ブロックデバイスに適用できます。それには、 CD-ROM、DVD 及び フロッピィディスクも含まれます。

手順8.1 物理ブロックデバイスを仮想化ゲストに追加

  1. ハードディスクデバイスを物理的にホストに取り付けます。デフォルトでドライブが アクセス不可の場合は、ホストを設定します。
  2. multipath の使用でデバイスを設定して、必要であれば ホスト上で永続化します。
  3. 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
    
  4. これで、ゲストは Linux 上に /dev/hdb と言う名の新規ハードディスクデバイスを持ち、また、Windows 上では D: drive かその類似名のハードディスクデバイスを持ちます。 このデバイスはフォーマットが必要かも知れません。