13.2. パーティションベースのストレージプール

このセクションでは、フォーマット済みのブロックデバイス、つまりパーティションをストレージプールとして使用する方法を説明します。
以下の例では、ホスト物理マシンには 500GB のままの単独パーティション (/dev/sdc1) である 500GB のハードドライブ (/dev/sdc) があります。以下の手順を使用して、このハードドライブ用にストレージプールをセットアップします。

13.2.1. virt-manager を使用したパーティションベースのストレージプールの作成

以下の手順では、ストレージデバイスのパーティションを使用し、新規のストレージプールを作成します。

手順13.1 virt-manager を使用したパーティションベースのストレージプールの作成

  1. ファイルシステムを ext4 に設定します。

    コマンドウィンドウから以下のコマンドを入力し、ファイルシステムを ext4 に設定します。
    # mkfs.ext4 /dev/sdc1
  2. ストレージプールの設定を開きます。

    1. virt-manager グラフィカルインターフェースで、メインウィンドウからホスト物理マシンを選択します。
      編集 メニューを開いて、接続の詳細 を選択します。
    2. 接続の詳細 ウィンドウで ストレージ タブをクリックします。
      「ストレージ」タブ

      図13.1 「ストレージ」タブ

  3. 新規ストレージプールを作成します。

    1. 新規プールの追加 (パート1)

      + ボタン (ウィンドウの下部にある) を押します。新規ストレージプールを追加 ウィザードが表示されます。
      ストレージプールの 名前 を選択します。この例では、guest_images_fs という名前を使用しています。種類fs: 事前フォーマット済みブロックデバイス に変更します。
      ストレージプールの名前と種類

      図13.2 ストレージプールの名前と種類

      進む ボタンをクリックして次に進みます。
    2. 新規プールの追加 (パート2)

      ターゲットパス および ソースパス フィールドを変更します。
      ストレージプールのパス

      図13.3 ストレージプールのパス

      ターゲットパス
      ストレージプールのソースデバイスのマウント先となる場所を ターゲットパス フィールドに入力します。その場所がまだ存在していない場合は、virt-manager がそのディレクトリーを作成します。
      ソースパス
      ソースパス フィールドにデバイスを入力します。
      この例では、/dev/sdc1 デバイスを使用しています。
      詳細を確認して 完了 ボタンを押すと、ストレージプールが作成されます。
  4. 新規ストレージプールを確認します。

    数秒後に、左側のストレージ一覧に新規ストレージプールが表示されます。サイズが予想通りの値で報告されていることを確認します (この例では、2.88 GiB 空き)。状態 フィールドで新規ストレージが 動作中 と報告されていることを確認します。
    ストレージプールを選択します。自動起動 フィールドで、起動時 のチェックボックスをクリックします。これで libvirtd サービスの起動時にはストレージデバイスも常に起動されるようになります。
    ストレージ一覧の確認

    図13.4 ストレージ一覧の確認

    これでストレージプールが作成されました。接続の詳細 ウィンドウを閉じます。

13.2.2. virt-manager を使用したストレージプールの削除

以下の手順では、ストレージプールを削除する方法を説明します。
  1. 同じプールを使用する他のゲスト仮想マシンに関連した問題を避けるには、ストレージプールを停止し、そのストレージプールで使用中のリソースをすべて解放するのが最良の方法です。これを実行するには、停止するストレージプールを選択して、ストレージウィンドウの下部にある をクリックします。
  2. ストレージプールを削除するには、 をクリックします。このアイコンが使用できるのは、ストレージプールが停止している場合のみです。

13.2.3. virsh を使用したパーティションベースのストレージプールの作成

このセクションでは、virsh コマンドを使用したパーティションベースストレージプールの作成方法を説明します。

警告

ディスク全体をストレージプールとして割り当てる場合は、この手順を使用しないでください (例: /dev/sdb)。ブロックデバイスやディスク全体への書き込みアクセスをゲストに付与しないようにしてください。この方法はパーティション (例: /dev/sdb1) をストレージプールに割り当てる場合にのみ使用するようにしてください。

手順13.2 virsh を使用したフォーマット済みのブロックデバイスのストレージプールの作成

  1. ストレージプールの定義を作成します。

    virsh pool-define-as コマンドを使用して 新規ストレージプールの定義を作成します。フォーマット済みディスクをストレージプールとして定義するために指定する必要のあるオプションには、以下の 3 つがあります。
    パーティション名
    name パラメーターはストレージプールの名前を指定します。この例では、guest_images_fs という名前を使用しています。
    デバイス
    path 属性を持つdevice パラメーターはストレージデバイスのデバイスパスを指定します。この例では、パーティション /dev/sdc1 を使用しています。
    マウントポイント
    フォーマット済みのデバイスをマウントするローカルファイルシステム上の mountpoint です。マウントポイントのディレクトリーが存在しない場合は、virsh コマンドがそのディレクトリーを作成します。
    この例では、/guest_images ディレクトリーを使用しています。
    # virsh pool-define-as guest_images_fs fs - - /dev/sdc1 - "/guest_images"
    Pool guest_images_fs defined
    これで、新規のプールが作成されました。
  2. 新規プールを確認します。

    現在のストレージプールを一覧表示します。
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    guest_images_fs      inactive   no
  3. マウントポイントを作成します。

    virsh pool-build コマンドを使用して、フォーマット済みファイルシステムのストレージプール用のマウントポイントを作成します。
    # virsh pool-build guest_images_fs
    Pool guest_images_fs built
    # ls -la /guest_images
    total 8
    drwx------.  2 root root 4096 May 31 19:38 .
    dr-xr-xr-x. 25 root root 4096 May 31 19:38 ..
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    guest_images_fs      inactive   no
  4. ストレージプールを起動します。

    virsh pool-start コマンドを使用して、ファイルシステムをマウントポイントにマウントし、プールを使用できるようにします。
    # virsh pool-start guest_images_fs
    Pool guest_images_fs started
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    guest_images_fs      active     no
  5. autostart をオンにします。

    デフォルトでは、virsh で定義したストレージプールは、libvirtd の起動時に自動的に起動するようには設定されません。virsh pool-autostart コマンドを使用して自動起動をオンにします。これで、libvirtd が起動するたびにストレージプールも自動的に起動するようになります。
    # virsh pool-autostart guest_images_fss
    Pool guest_images_fs marked as autostarted
    
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    guest_images_fs      active     yes
  6. ストレージプールを確認します。

    ストレージプールが正しく作成されたこと、およびサイズが予測される値で報告されていること、さらに状態が running として報告されていることを確認します。ファイルシステム上のマウントポイントに "lost+found" ディレクトリーがあることを確認します。このディレクトリーがあればデバイスはマウントされていることになります。
    # virsh pool-info guest_images_fs
    Name:           guest_images_fs
    UUID:           c7466869-e82a-a66c-2187-dc9d6f0877d0
    State:          running
    Persistent:     yes
    Autostart:      yes
    Capacity:       458.39 GB
    Allocation:     197.91 MB
    Available:      458.20 GB
    # mount | grep /guest_images
    /dev/sdc1 on /guest_images type ext4 (rw)
    # ls -la /guest_images
    total 24
    drwxr-xr-x.  3 root root  4096 May 31 19:47 .
    dr-xr-xr-x. 25 root root  4096 May 31 19:38 ..
    drwx------.  2 root root 16384 May 31 14:18 lost+found

13.2.4. virsh を使用したストレージプールの削除

  1. 同じプールを使用する他のゲスト仮想マシンに関連した問題を避けるには、ストレージプールを停止し、そのストレージプールで使用中のリソースすべてを解放するのが最良の方法です。
    # virsh pool-destroy guest_images_disk
  2. また、ストレージプールがあるディレクトリーを削除したい場合は、次のコマンドを使用します。
    # virsh pool-delete guest_images_disk
  3. ストレージプールの定義を削除します。
    # virsh pool-undefine guest_images_disk