Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

13.2. ストレージプールの使用

本セクションでは、仮想マシンでストレージプールを使用する方法を説明します。概念的な情報 に加えて、virsh コマンドと Virtual Machine Manager を使用してストレージプールを 作成設定、および削除 するための詳細な手順を提供します。

13.2.1. ストレージプールの概念

ストレージプールは、仮想マシンにストレージを提供するために、libvirt が管理するファイル、ディレクトリー、またはストレージデバイスです。ストレージプールは、仮想マシンイメージを保存するストレージボリュームに分割されるか、追加のストレージとして仮想マシンに割り当てられます。複数のゲストで同じストレージプールを共有できるため、ストレージリソースの割り当てを改善できます。
ストレージプールは、ローカルまたはネットワークベース (共有) にできます。
ローカルストレージのプール
ローカルストレージプールは、ホストサーバーに直接割り当てることができます。これには、ローカルデバイスのローカルディレクトリー、直接接続したディスク、物理パーティション、および論理ボリューム管理 (LVM) ボリュームグループが含まれます。ローカルストレージプールは、移行や大量の仮想マシンを必要としない開発、テスト、および小規模なデプロイメントに役立ちます。ローカルストレージプールは、ライブマイグレーションに使用できないため、多くの実稼働環境には適していない場合があります。
ネットワーク (共有) ストレージプール
ネットワークストレージプールには、標準プロトコルを使用してネットワーク経由で共有されるストレージデバイスが含まれます。virt-manager を使用してホスト間で仮想マシンを移行する場合はネットワークストレージが必要ですが、virsh を使用して移行する場合は任意です。
仮想マシンの移行の詳細は、15章KVM の移行 を参照してください。
以下は、Red Hat Enterprise Linux が対応しているストレージプールのタイプのリストです。
  • ディレクトリーベースのストレージプール
  • ディスクベースのストレージプール
  • パーティションベースのストレージプール
  • GlusterFS ストレージプール
  • iSCSI ベースのストレージプール
  • LVM ベースのストレージプール
  • NFS ベースのストレージプール
  • SCSI デバイスを使用した vHBA ベースのストレージプール
以下は、Red Hat Enterprise Linux で対応していないlibvirtストレージプールタイプのリストです。
  • マルチパスベースのストレージプール
  • RBD ベースのストレージプール
  • sheepdog ベースのストレージプール
  • vstorage ベースのストレージプール
  • ZFS ベースのストレージプール
注記
対応していないストレージプールタイプの一部は、Virtual Machine Manager インターフェイスに表示されます。ただし、これを使用することはできません。

13.2.2. ストレージプールの作成

本セクションでは、virsh および Virtual Machine Manager を使用してストレージプールを作成する方法を説明します。virsh を使用すると、すべてのパラメーターを指定できますが、Virtual Machine Manager を使用すると、より単純なストレージプールを作成するためのグラフィックメソッドが提供されます。

13.2.2.1. virsh を使用したストレージプールの作成

注記
本セクションでは、例としてパーティションベースのストレージプールの作成を示します。

手順13.2 virsh を使用したストレージプールの作成

  1. 推奨事項を読み、前提条件がすべて満たされていることを確認します。

    ストレージプールによっては、このガイドでは特定の方法に従うことが推奨されます。また、一部のタイプのストレージプールには前提条件があります。推奨事項および前提条件 (存在する場合) を表示する場合は、「ストレージプール固有のもの」 を参照してください。
  2. ストレージプールの定義

    ストレージプールは永続的または一時的なものにできます。永続ストレージプールは、ホストマシンのシステムを再起動しても維持します。一時的なストレージプールは、ホストが再起動すると削除されます。
    次のいずれかを行います。
    • XML ファイルを使用してストレージプールを定義します。
      a.新規デバイスに必要なストレージプール情報を含む一時的な XML ファイルを作成します。
      XML ファイルには、ストレージプールのタイプに基づいた特定のフィールドが含まれている必要があります。詳細は、「ストレージプール固有のもの」 を参照してください。
      以下は、ストレージプール定義の XML ファイルの例を示しています。この例では、ファイルは ~/guest_images.xml に保存されています。
      <pool type='fs'>
        <name>guest_images_fs</name>
        <source>
          <device path='/dev/sdc1'/>
        </source>
        <target>
          <path>/guest_images</path>
        </target>
      </pool>
      b.virsh pool-define コマンドを使用して、永続ストレージプールを作成するか、virsh pool-create コマンドを使用して一時ストレージプールを作成して起動します。
      # virsh pool-define ~/guest_images.xml
      Pool defined from guest_images_fs
      
      または
      # virsh pool-create ~/guest_images.xml
      Pool created from guest_images_fs
      c.手順 a で作成した XML ファイルを削除します。
    • virsh pool-define-as コマンドを使用して、永続ストレージプールを作成するか、virsh pool-create-as コマンドを使用して一時的なストレージプールを作成します。
      以下の例では、永続化した後、/guest_images ディレクトリーから /dev/sdc1 にマッピングされた一時的なファイルシステムベースのストレージプールを作成します。
      # virsh pool-define-as guest_images_fs fs - - /dev/sdc1 - "/guest_images"
      Pool guest_images_fs defined
      または
      # virsh pool-create-as guest_images_fs fs - - /dev/sdc1 - "/guest_images"
      Pool guest_images_fs created
      注記
      virsh インターフェイスを使用する場合、コマンド内のオプション名は任意です。オプション名を使用しない場合は、指定する必要のないフィールドにハイフンを使用します。
  3. プールが作成されたことを確認します。

    virsh pool-list --allを使用して、存在するすべてのストレージプールのリストを表示します。
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    guest_images_fs      inactive   no
    
  4. ストレージプールのターゲットパスの定義

    virsh pool-build コマンドを使用して、フォーマット済みファイルシステムのストレージプール用のストレージプールターゲットパスを作成し、ストレージソースデバイスを初期化して、データのフォーマットを定義します。次に、virsh pool-list を使用して、ストレージプールがリスト表示されていることを確認します。
    # 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
    
    注記
    ターゲットパスの構築は、ディスクベース、ファイルシステムベース、論理ストレージプールにのみ必要です。libvirt は、overwrite オプションが指定されている場合を除き、ソースストレージデバイスのデータフォーマットが、選択したストレージプールタイプと異なることを検出すると、ビルドに失敗します。
  5. ストレージプールを起動します。

    virsh pool-start コマンドを使用して、ソースデバイスを使用できるように準備します。
    実行されるアクションは、ストレージプールのタイプによって異なります。たとえば、ファイルシステムベースのストレージプールの場合、virsh pool-start コマンドはファイルシステムをマウントします。LVM ベースのストレージプールの場合、virsh pool-start コマンドは、vgchange コマンドを使用してボリュームグループをアクティブにします。
    次に、virsh pool-list command を使用して、ストレージプールがアクティブであることを確認します。
    # 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
    
    注記
    virsh pool-start コマンドは、永続ストレージプールにのみ必要です。一時的なストレージプールは、作成時に自動的に起動します。
  6. 自動起動を有効にする (オプション)

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

    ストレージプールが正しく作成され、報告されたサイズが期待どおりで、状態が 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.2.2. Virtual Machine Manager を使用したストレージプールの作成

注記
このセクションでは、例としてディスクベースのストレージプールの作成について説明します。

手順13.3 Virtual Machine Manager を使用したストレージプールの作成

  1. ストレージプールを作成するメディアを準備します。

    これは、ストレージプールのタイプにより異なります。詳細は 「ストレージプール固有のもの」 を参照してください。
    この例では、GUID Partition Table でディスクに再ラベル付けする必要がある場合があります。
  2. ストレージ設定を開く

    1. Virtual Machine Manager で、設定するホスト接続を選択します。
      Edit メニューを開き、Connection Details を選択します。
    2. Connection Details ウィンドウの Storage タブをクリックします。

      図13.1 ストレージタブ

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

    注記
    Virtual Machine Manager を使用して、永続ストレージプールのみを作成できます。一時ストレージプールは、virsh を使用してのみ作成できます。
    1. 新しいストレージプールの追加 (パート 1)

      ウィンドウんの下部の ボタンをクリックします。Add a New Storage Pool ウィザードが表示されます。
      ストレージプールの Name を入力します。この例では、guest_images_fs という名前を使用します。
      Type ドロップダウンリストから、作成するストレージプールの種類を選択します。この例では、fs: Pre-Formatted Block Device を使用しています。

      図13.2 ストレージプールの名前とタイプ

      ストレージプールの名前とタイプ
      Forward ボタンを選択して続行します。
    2. 新しいプールの追加 (パート 2)

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

      ストレージプールのパス
      関連するパラメーターを使用してストレージプールを設定します。各タイプのストレージプールのパラメーターの詳細は、「ストレージプール固有のもの」 を参照してください。
      ストレージプールの種類によっては、Build Pool チェックボックスが表示されます。ストレージからストレージプールを構築する場合は、Build Pool チェックボックスをチェックします。
      詳細を確認し、Finish をクリックしてストレージプールを作成します。

13.2.3. ストレージプール固有のもの

このセクションでは、前提条件、パラメーター、および追加情報を含む、各タイプのストレージプールに固有の情報を説明します。これには、以下のトピックが含まれます。

13.2.3.1. ディレクトリーベースのストレージプール

パラメーター
以下の表は、ディレクトリーベースのストレージプールを作成する場合に必要な、XML ファイル、virsh pool-define-as コマンド、および Virtual Machine Manager アプリケーションのパラメーターのリストを示しています。

表13.1 ディレクトリーベースのストレージプールのパラメーター

説明XMLpool-define-asVirtual Machine Manager
ストレージプールのタイプ <pool type='dir'> [type] directory dir: ファイルシステムディレクトリー
ストレージプールの名前 <name>name</name> [name] name Name
ターゲットを指定するパス。ストレージプールに使用されるパスになります。

<target>
  <path>target_path</path>
</target>

target path_to_pool ターゲットパス
virsh を使用してストレージプールを作成する場合は、プールが作成されたことの確認して 続行します。
以下は、/guest_images ディレクトリーに基づいたストレージプールの XML ファイルの例です。
<pool type='dir'>
  <name>dirpool</name>
  <target>
    <path>/guest_images</path>
  </target>
</pool>
以下は、/guest_images ディレクトリーに基づいてストレージプールを作成するコマンドの例になります。
# virsh pool-define-as dirpool dir --target "/guest_images"
Pool FS_directory defined
以下の図は、/guest_images ディレクトリーに基づいてストレージプールを作成するための、Virtual Machine Manager の Add a New Storage Pool ダイアログボックスの例を示しています。

図13.4 新しいディレクトリーベースのストレージプールの例を追加します。

新しいディレクトリーベースのストレージプールの例を追加します。

13.2.3.2. ディスクベースのストレージプール

推奨事項
ディスクベースのストレージプールを作成する前に、以下の点に注意してください。
  • 使用されている libvirt のバージョンに応じて、ディスクをストレージプール専用にすると、現在ディスクデバイスに格納されているすべてのデータが再フォーマットされて消去される可能性があります。ストレージプールを作成する前に、ストレージデバイスのデータのバックアップを作成することを強く推奨します。
  • ゲストには、ディスク全体またはブロックデバイス (/dev/sdb など) への書き込みアクセス権を付与しないでください。パーティション (/dev/sdb1 など) または LVM ボリュームを使用します。
    ブロックデバイス全体をゲストに渡すと、ゲストはブロックデバイスをパーティションに分割するか、ブロックデバイスに独自の LVM グループを作成します。これにより、ホストの物理マシンがこのようなパーティションや LVM グループを検出し、エラーが発生する場合があります。
前提条件
注記
本セクションの手順は、virsh pool-build コマンドを実行しない場合に限り必要になります。
ホストディスクにディスクベースのストレージプールを作成する前に、ディスクに、GUID Partition Table (GPT) ディスクラベルを付けて再ラベル付けする必要があります。GPT ディスクラベルは、各デバイスに最大 128 個のパーティションを作成できます。
# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
New disk label type? gpt
(parted) quit
Information: You may need to update /etc/fstab.
#
ディスクに再ラベル付けしたら、ストレージプールの定義 でストレージプールの作成を続行します。
パラメーター
以下の表は、ディスクベースのストレージプールを作成する場合に必要な、XML ファイル、virsh pool-define-as コマンド、および Virtual Machine Manager アプリケーションのパラメーターのリストを示しています。

表13.2 ディスクベースのストレージプールのパラメーター

説明XMLpool-define-asVirtual Machine Manager
ストレージプールのタイプ <pool type='disk'> [type] disk disk: 物理ディスクデバイス
ストレージプールの名前 <name>name</name> [name] name Name
ストレージデバイスを指定するパス。たとえば、/dev/sdb

<source>
  <device path=/dev/sdb/>
<source>

source-dev path_to_disk ソースパス
ターゲットを指定するパス。ストレージプールに使用されるパスになります。

<target>
  <path>/path_to_pool</path>
</target>

target path_to_pool ターゲットパス
virsh を使用してストレージプールを作成する場合は、ストレージプールの定義 に進みます。
以下は、ディスクに基づいたストレージプールに対する XML ファイルの例です。
<pool type='disk'>
  <name>phy_disk</name>
  <source>
    <device path='/dev/sdb'/>
    <format type='gpt'/>
  </source>
  <target>
    <path>/dev</path>
  </target>
</pool>
以下は、ディスクベースのストレージプールを作成するコマンドの例です。
# virsh pool-define-as phy_disk disk --source-format=gpt --source-dev=/dev/sdb --target /dev
Pool phy_disk defined
以下の図は、ディスクベースのストレージプールを作成するための、仮想マシン XML 設定 Virtual Machine Manager の Add a New Storage Pool ダイアログボックスの例を示しています。

図13.5 新しいディスクベースのストレージプールの例を追加します。

新しいディスクベースのストレージプールの例を追加します。

13.2.3.3. ファイルシステムベースのストレージプール

推奨事項
このセクションの手順に従って、ディスク全体 (/dev/sdb など) をストレージプールとして割り当てないでください。ゲストには、ディスク全体またはブロックデバイスへの書き込みアクセス権を付与しないでください。この方法は、パーティション (/dev/sdb1 など) をストレージプールに割り当てる場合に限り使用してください。
前提条件
注記
これは、virsh pool-build コマンドを実行しない場合にのみ必要になります。
パーティションからストレージプールを作成するには、ファイルシステムを ext4 にフォーマットします。
# mkfs.ext4 /dev/sdc1
ファイルシステムをフォーマットしたら、ストレージプールの定義 でストレージプールの作成を続行します。
パラメーター
以下の表は、パーティションからファイルシステムベースのストレージプールを作成する場合に必要な、XML ファイル、virsh pool-define-as コマンド、および Virtual Machine Manager アプリケーションのパラメーターのリストを示しています。

表13.3 ファイルシステムベースのストレージプールパラメーター

説明XMLpool-define-asVirtual Machine Manager
ストレージプールのタイプ <pool type='fs'> [type] fs fs: フォーマット済みブロックデバイス
ストレージプールの名前 <name>name</name> [name] name Name
パーミッションを指定するパス。たとえば、/dev/sdc1

<source>
  <device path='source_path' />

[source] path_to_partition ソースパス
ファイルシステムのタイプ (ext4 など)。

  <format type='fs_type' />
</source>

[ソースフォーマット]FS-format 該当なし
ターゲットを指定するパス。ストレージプールに使用されるパスになります。

<target>
  <path>/path_to_pool</path>
</target>

[target] path_to_pool ターゲットパス
virsh を使用してストレージプールを作成する場合は、ストレージプールが作成されたことの確認 に進みます。
次に示すのは、ファイルシステムベースのストレージプールの XML ファイルの例です。
<pool type='fs'>
  <name>guest_images_fs</name>
  <source>
    <device path='/dev/sdc1'/>
    <format type='auto'/>
  </source>
  <target>
    <path>/guest_images</path>
  </target>
</pool>
以下は、パーティションベースのストレージプールを作成するコマンドの例です。
# virsh pool-define-as guest_images_fs fs --source-dev /dev/sdc1 --target /guest_images
Pool guest_images_fs defined
以下の図は、ファイルシステムベースのストレージプールを作成するための、仮想マシン XML 設定Virtual Machine Managerの Add a New Storage Pool ダイアログボックスの例を示しています。

図13.6 新しいファイルシステムベースのストレージプールの例を追加します。

新しいファイルシステムベースのストレージプールの例を追加します。

13.2.3.4. GlusterFS ベースのストレージプール

推奨事項
GlusterFS は、ユーザー空間のファイルシステム (FUSE) を使用するユーザー空間のファイルシステムです。
前提条件
GlusterFS ベースのストレージプールをホストに作成する前に、Gluster サーバーを準備する必要があります。

手順13.4 Gluster サーバーの準備

  1. 次のコマンドを使用してそのステータスをリスト表示して、Gluster サーバーの IP アドレスを取得します。
    # gluster volume status
    Status of volume: gluster-vol1
    Gluster process						Port	Online	Pid
    ------------------------------------------------------------------------------
    Brick 222.111.222.111:/gluster-vol1 			49155	Y	18634
    
    Task Status of Volume gluster-vol1
    ------------------------------------------------------------------------------
    There are no active volume tasks
    
  2. glusterfs-fuse パッケージがインストールされていない場合はインストールします。
  3. virt_use_fusefs ブール値が有効になっていない場合は有効にします。有効になっていることを確認します。
    # setsebool virt_use_fusefs on
    # getsebool virt_use_fusefs
    virt_use_fusefs --> on
    
必要なパッケージがインストールされ、有効になったことを確認したら、ストレージプールの作成を続行して、ストレージプールの定義 でストレージプールを作成します。
パラメーター
以下の表は、GlusterFS ベースのストレージプールを作成する場合に必要な、XML ファイル、virsh pool-define-as コマンド、および Virtual Machine Manager アプリケーションのパラメーターのリストを示しています。

表13.4 GlusterFS ベースのストレージプールパラメーター

説明XMLpool-define-asVirtual Machine Manager
ストレージプールのタイプ <pool type='gluster'> [type] gluster Gluster: Gluster ファイルシステム
ストレージプールの名前 <name>name</name> [name] name Name
Gluster サーバーのホスト名または IP アドレス

<source>
  <hostname='hostname' />

source-host hostname ホスト名
Gluster サーバーの名前   <name='Gluster-name' /> source-name Gluster-name ソース名
ストレージプールに使用される Gluster サーバーのパス。

  <dir path='Gluster-path' />
</source>

source-path Gluster-path ソースパス
virsh を使用してストレージプールを作成する場合は、ストレージプールが作成されたことの確認 に進みます。
以下は、GlusterFS ベースのストレージプールの XML ファイルの例になります。
<pool type='gluster'>
  <name>Gluster_pool</name>
  <source>
    <host name='111.222.111.222'/>
    <dir path='/'/>
    <name>gluster-vol1</name>
  </source>
</pool>
以下は、GlusterFS ベースのストレージプールを作成するコマンドの例になります。
# pool-define-as --name Gluster_pool --type gluster --source-host 111.222.111.222 --source-name gluster-vol1 --source-path /
Pool Gluster_pool defined
以下の図は、GlusterFS ベースのストレージプールを作成するための、仮想マシン XML 設定 Virtual Machine ManagerAdd a New Storage Pool ダイアログボックスの例を示しています。

図13.7 新しい GlusterFS ベースのストレージプールの例を追加します。

新しい GlusterFS ベースのストレージプールの例を追加します。

13.2.3.5. iSCSI ベースのストレージプール

推奨事項
iSCSI (Internet Small Computer System Interface) は、ストレージデバイスを共有するネットワークプロトコルです。iSCSI は、IP 層で SCSI 命令を使用してイニシエーター (ストレージクライアント) をターゲット (ストレージサーバー) に接続します。
iSCSI ベースのデバイスを使用してゲスト仮想マシンを保存することで、iSCSI をブロックストレージデバイスとして使用するなど、より柔軟なストレージオプションが可能になります。iSCSI デバイスは、Linux-IO (LIO) ターゲットを使用します。これは、Linux 用のマルチプロトコル SCSI ターゲットです。LIO は、iSCSI に加えて、FCoE (Fibre Channel and Fibre Channel over Ethernet) にも対応します。
前提条件
iSCSI ベースのストレージプールを作成する前に、iSCSI ターゲットを作成する必要があります。iSCSI ターゲットは、targetcli パッケージを使用して作成されます。これは、ソフトウェアで対応している iSCSI ターゲットを作成するためのコマンドセットを提供します。

手順13.5 iSCSI ターゲットの作成

  1. targetcli パッケージのインストール

    # yum install targetcli
  2. targetcli コマンドセットの起動

    # targetcli
  3. ストレージオブジェクトの作成

    ストレージプールを使用して、3 つのストレージオブジェクトを作成します。
    1. ブロックストレージオブジェクトの作成
      1. /backstores/block ディレクトリーに移動します。
      2. create コマンドを実行します。
        # create [block-name][filepath]
        以下に例を示します。
        # create block1 dev=/dev/sdb1
    2. fileio オブジェクトの作成
      1. /fileio ディレクトリーに移動します。
      2. create コマンドを実行します。
        # create [fileio-name][image-name] [image-size]
        以下に例を示します。
        # create fileio1 /foo.img 50M
    3. ramdisk オブジェクトの作成
      1. /ramdisk ディレクトリーに移動します。
      2. create コマンドを実行します。
        # create [ramdisk-name] [ramdisk-size]
        以下に例を示します。
        # create ramdisk1 1M
    4. この手順で作成したディスクの名前を書き留めておきます。これらは後で使用されます。
  4. iSCSI ターゲットの作成

    1. /iscsi ディレクトリーに移動します。
    2. ターゲットの作成には、以下の 2 つの方法があります。
      • パラメーターを指定せずに create コマンドを実行します。
        iSCSI qualified name (IQN) は自動的に生成されます。
      • IQN とサーバーを指定して create コマンドを実行します。以下に例を示します。
        # create iqn.2010-05.com.example.server1:iscsirhel7guest
  5. ポータル IP アドレスの定義

    iSCSI 経由でブロックストレージをエクスポートするには、最初にポータル、LUN、および access control lists ACL を設定する必要があります。
    ポータルには、ターゲットが監視する IP アドレスと TCP、および接続するイニシエーターが含まれます。iSCSI はポート 3260 を使用します。このポートはデフォルトで設定されています。
    ポート 3260 への接続:
    1. /tpg ディレクトリーに移動します。
    2. 以下のコマンドを実行します。
      # portals/ create
      このコマンドを実行すると、ポート 3260 をリッスンしている利用可能な IP アドレスがすべて使用できるようになります。
      ポート 3260 をリッスンする IP アドレスを 1 つだけにする場合は、コマンドの末尾に IP アドレスを追加します。以下に例を示します。
      # portals/ create 143.22.16.33
  6. LUN の設定と、ストレージオブジェクトのファブリックへの割り当て

    この手順では、ストレージオブジェクトの作成 で作成したストレージオブジェクトを使用します。
    1. ポータルの IP アドレスの定義 で作成した TPG の luns ディレクトリーに移動します。以下に例を示します。
      # iscsi>iqn.iqn.2010-05.com.example.server1:iscsirhel7guest
    2. 最初の LUN を ramdisk に割り当てます。以下に例を示します。
      # create /backstores/ramdisk/ramdisk1
    3. 2 番目の LUN をブロックディスクに割り当てます。以下に例を示します。
      # create /backstores/block/block1
    4. 3 番目の LUN を fileio ディスクに割り当てます。以下に例を示します。
      # create /backstores/fileio/fileio1
    5. 作成される LUN のリストを表示します。
      /iscsi/iqn.20...csirhel7guest ls
      
      o- tgp1 ............................................................[enabled, auth]
        o- acls...................................................................[0 ACL]
        o- luns..................................................................[3 LUNs]
        | o- lun0......................................................[ramdisk/ramdisk1]
        | o- lun1...............................................[block/block1 (dev/vdb1)]
        | o- lun2................................................[fileio/file1 (foo.img)]
        o- portals.............................................................[1 Portal]
          o- IP-ADDRESS:3260.........................................................[OK]
      
  7. 各イニシエーターの ACL の作成

    イニシエーターの接続時に認証を有効にします。指定した LUN を、指定したイニシエーターに制限することもできます。ターゲットとイニシエーターには一意の名前があります。iSCSI イニシエーターは IQN を使用します。
    1. イニシエーター名を使用して、iSCSI イニシエーターの IQN を検索します。以下に例を示します。
      # cat /etc/iscsi/initiator2.iscsi
      InitiatorName=create iqn.2010-05.com.example.server1:iscsirhel7guest
      この IQN は、ACL を作成するために使用されます。
    2. acls ディレクトリーへ移動します。
    3. 次のいずれかを実行して ACL を作成します。
      • パラメーターを指定せずに create コマンドを実行して、すべての LUN およびイニシエーターに ACL を作成します。
        # create
      • 特定の LUN およびイニシエーターに ACL を作成し、iSCSI インティエーターの IQN を指定して create コマンドを実行します。以下に例を示します。
        # create iqn.2010-05.com.example.server1:888
      • すべてのイニシエーターに 1 つのユーザー ID とパスワードを使用するように、カーネルターゲットを設定します。
        # set auth userid=user_ID
        # set auth password=password
        # set attribute authentication=1
        # set attribute generate_node_acls=1
    この手順を完了したら、ストレージプールをセキュリティー保護 して続行します。
  8. 設定を保存します。

    以前の起動設定を上書きして、設定を永続化します。
    # saveconfig
  9. サービスを有効にします。

    次回の起動時に保存した設定を適用するには、サービスを有効にします。
    # systemctl enable target.service
オプションの手順
iSCSI ベースのストレージプールを作成する前に、iSCSI ターゲットで実行できるオプションの手順が多数あります。

手順13.6 RAID アレイでの論理ボリュームの設定

  1. RAID5 アレイの作成

    RAID5 アレイの作成方法は、Red Hat Enterprise Linux 7 Storage Administration Guide を参照してください。
  2. RAID5 アレイに LVM 論理ボリュームを作成する

    RAID5 アレイで LVM 論理ボリュームを作成する方法は、Red Hat Enterprise Linux 7 Logical Volume Manager Administration Guide を参照してください。

手順13.7 検出可能性のテスト

  • 新しい iSCSI デバイスが検出可能であることを確認します。

    # iscsiadm --mode discovery --type sendtargets --portal server1.example.com
    143.22.16.33:3260,1 iqn.2010-05.com.example.server1:iscsirhel7guest

手順13.8 デバイスの接続のテスト

  1. 新しい iSCSI デバイスの接続

    新しいデバイス (iqn.2010-05.com.example.server1:iscsirhel7guest) を接続して、デバイスを接続できるかどうかを判断します。
    # iscsiadm -d2 -m node --login
    scsiadm: Max file limits 1024 1024
    
    Logging in to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 143.22.16.33,3260]
    Login to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 143.22.16.33,3260] successful.
    
  2. デバイスの取り外し

    # iscsiadm -d2 -m node --logout
    scsiadm: Max file limits 1024 1024
    
    Logging out of session [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 143.22.16.33,3260
    Logout of [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 143.22.16.33,3260] successful.

手順13.9 iSCSI ストレージプールで libvirt のシークレットを使用する

注記
この手順は、iSCSI ターゲットの作成 時に、user_ID および password が定義される場合に必要です。
ユーザー名とパスワードのパラメーターは、iSCSI ストレージプールをセキュリティー保護するため、virsh で設定できます。これは、プールを定義する前または後に設定できますが、認証設定を有効にするにはプールを起動する必要があります。
  1. libvirt の秘密ファイルを作成する

    チャレンジハンドシェイク認証プロトコル (CHAP) のユーザー名を使用して、libvirt シークレットファイルを作成します。以下に例を示します。
    <secret ephemeral='no' private='yes'>
        <description>Passphrase for the iSCSI example.com server</description>
        <usage type='iscsi'>
            <target>iscsirhel7secret</target>
        </usage>
    </secret>
  2. シークレットの定義

    # virsh secret-define secret.xml
  3. UUID の確認

    # virsh secret-list
    UUID                                  Usage
    --------------------------------------------------------------------------------
    2d7891af-20be-4e5e-af83-190e8a922360  iscsi iscsirhel7secret
  4. UID へのシークレットの割り当て

    以下のコマンドを使用して、前の手順の出力の UUID に、シークレットを割り当てます。これにより、CHAP ユーザー名とパスワードが、libvirt が制御するシークレットリストにあることが保証されます。
    # MYSECRET=`printf %s "password123" | base64`
    # virsh secret-set-value 2d7891af-20be-4e5e-af83-190e8a922360 $MYSECRET
  5. ストレージプールに認証エントリーを追加します。

    virsh edit を使用して、ストレージプールの XML ファイル内の <source> エントリーを変更し、authentication typeusername、および secret usage を指定して <auth> 要素を追加します。
    以下に例を示します。
    <pool type='iscsi'>
      <name>iscsirhel7pool</name>
        <source>
           <host name='192.168.122.1'/>
           <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/>
           <auth type='chap' username='redhat'>
              <secret usage='iscsirhel7secret'/>
           </auth>
        </source>
      <target>
        <path>/dev/disk/by-path</path>
      </target>
    </pool>
    注記
    サブ要素 <auth> は、ゲスト XML 内の <pool> 要素および <disk> 要素の異なる場所に存在します。<pool> の場合は、<auth><source> 要素内に指定されます。認証は一部のプールソース (iSCSI および RBD) のプロパティーであるため、これはプールソースの検索場所を説明する要素となります。ドメインのサブ要素である <disk> の場合、iSCSI ディスクまたは RBD ディスクに対する認証は、ディスクのプロパティーになります。
    また、ディスクのサブ要素 <auth> は、ストレージプールのサブ要素とは異なります。
    <auth username='redhat'>
      <secret type='iscsi' usage='iscsirhel7secret'/>
    </auth>
  6. 変更を有効にします。

    この変更をアクティブにするには、ストレージプールを起動する必要があります。
    • ストレージプールが起動していない場合は、virsh を使用したストレージプールの作成 の手順に従ってストレージプールを定義し、起動します。
    • プールがすでに起動している場合は、次のコマンドを入力してストレージプールを停止し、再起動します。
      # virsh pool-destroy iscsirhel7pool
      # virsh pool-start iscsirhel7pool
パラメーター
以下の表は、iSCSI ベースのストレージプールを作成する場合に必要な、XML ファイル、virsh pool-define-as コマンド、および Virtual Machine Manager アプリケーションのパラメーターのリストを示しています。

表13.5 iSCSI ベースのストレージプールパラメーター

説明XMLpool-define-asVirtual Machine Manager
ストレージプールのタイプ <pool type='iscsi'> [type] iscsi iscsi: iSCSI ターゲット
ストレージプールの名前 <name>name</name> [name] name Name
ホストの名前。

<source>
  <host name='hostname' />

source-host hostname ホスト名
iSCSI IQN

  device path="iSCSI_IQN" />
</source>

source-dev iSCSI_IQN ソース IQN
ターゲットを指定するパス。ストレージプールに使用されるパスになります。

<target>
  <path>/dev/disk/by-path</path>
</target>

target path_to_pool ターゲットパス
(必要に応じて) iSCSI イニシエーターの IQN。これは、ACL が LUN を特定のイニシエーターに制限する場合に限り必要です。

<initiator>
  <iqn name='initiator0' />
</initiator>

以下の注記を参照してください。 イニシエーター IQN
注記
iSCSI イニシエーターの IQN は、virsh find-storage-pool-sources-as iscsi コマンドを使用して指定できます。
virsh を使用してストレージプールを作成する場合は、ストレージプールが作成されたことの確認 に進みます。
以下は、iSCSI ベースのストレージプールの XML ファイルの例になります。
<pool type='iscsi'>
  <name>iSCSI_pool</name>
  <source>
    <host name='server1.example.com'/>
    <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/>
  </source>
  <target>
    <path>/dev/disk/by-path</path>
  </target>
</pool>

以下は、iSCSI ベースのストレージプールを作成するコマンドの例になります。
# virsh pool-define-as --name iSCSI_pool --type iscsi --source-host server1.example.com --source-dev iqn.2010-05.com.example.server1:iscsirhel7guest --target /dev/disk/by-path
Pool iSCSI_pool defined
以下の図は、iSCSI ベースのストレージプールを作成するための、仮想マシン XML 設定 Virtual Machine Manager の Add a New Storage Pool ダイアログボックスの例を示しています。

図13.8 新しい iSCSI ベースのストレージプールの例を追加します。

新しい iSCSI ベースのストレージプールの例を追加します。

13.2.3.6. LVM ベースのストレージプール

推奨事項
LVM ベースのストレージプールを作成する前に、以下の点に注意してください。
  • LVM ベースのストレージプールは、LVM の柔軟性を完全には提供しません。
  • libvirt は、シン論理ボリュームに対応しますが、シンストレージプールの機能は提供しません。
  • LVM ベースのストレージプールは、ボリュームグループです。Logical Volume Manager コマンド、または virsh コマンドを使用して、ボリュームグループを作成できます。virsh インターフェイスを使用してボリュームグループを管理する場合は、virsh コマンドを使用してボリュームグループを作成します。
    ボリュームグループの詳細は、Red Hat Enterprise Linux Logical Volume Manager Administration Guide を参照してください。
  • LVM ベースのストレージプールには、完全なディスクパーティションが必要です。この手順で新しいパーティションまたはデバイスをアクティベートすると、パーティションはフォーマットされ、すべてのデータが削除されます。ホストの既存のボリュームグループ (VG) を使用すると、何も消去されません。以下の手順を開始する前に、ストレージデバイスのバックアップを作成することが推奨されます。
    LVM ボリュームグループの作成方法は、Red Hat Enterprise Linux Logical Volume Manager Administration Guide を参照してください。
  • 既存の VG に LVM ベースのストレージプールを作成する場合は、pool-build コマンドを実行しないでください。
仮想マシンが準備されたことを確認したら、ストレージプールの定義 でストレージプールの作成を続行します。
パラメーター
以下の表は、LVM ベースのストレージプールを作成する場合に必要な、XML ファイル、virsh pool-define-as コマンド、および Virtual Machine Manager アプリケーションのパラメーターのリストを示しています。

表13.6 LVM ベースのストレージプールパラメーター

説明XMLpool-define-asVirtual Machine Manager
ストレージプールのタイプ <pool type='logical'> [type] logical 論理: LVM ボリュームグループ
ストレージプールの名前 <name>name</name> [name] name Name
ストレージプールのデバイスのパス

<source>
  <device path='device_path' />

source-dev device_path ソースパス
ボリュームグループの名前   <name='VG-name' /> source-name VG-name ソースパス
仮想グループの形式

  <format type='lvm2' />
</source>

source-format lvm2 該当なし
ターゲットパス

<target>
  <path='target-path' />
</target>

target target-path ターゲットパス
注記
論理ボリュームグループが複数のディスクパーティションで作成されている場合は、複数のソースデバイスがリスト表示されている可能性があります。以下に例を示します。
<source>
  <device path='/dev/sda1'/>
  <device path='/dev/sdb3'/>
  <device path='/dev/sdc2'/>
  ...
  </source>
virsh を使用してストレージプールを作成する場合は、ストレージプールが作成されたことの確認 に進みます。
以下は、LVM ベースのストレージプールの XML ファイルの例です。
<pool type='logical'>
  <name>guest_images_lvm</name>
  <source>
    <device path='/dev/sdc'/>
    <name>libvirt_lvm</name>
    <format type='lvm2'/>
  </source>
  <target>
    <path>/dev/libvirt_lvm</path>
  </target>
</pool>
以下は、LVM ベースのストレージプールを作成するコマンドの例です。
# virsh pool-define-as guest_images_lvm logical --source-dev=/dev/sdc --source-name libvirt_lvm --target /dev/libvirt_lvm
Pool guest_images_lvm defined
以下の図は、LVM ベースのストレージプールを作成するための、仮想マシン XML 設定 Virtual Machine Manager の Add a New Storage Pool ダイアログボックスの例を示しています。

図13.9 新しい LVM ベースのストレージプールの例を追加します。

新しい LVM ベースのストレージプールの例を追加します。

13.2.3.7. NFS ベースのストレージプール

前提条件
NFS (Network File System) ベースのストレージプールを作成するには、ホストマシンで NFS サーバーを使用するように設定しておく必要があります。NFS の詳細は、Red Hat Enterprise Linux Storage Administration Guide を参照してください。
NFS サーバーが適切に設定されていることを確認したら、ストレージプールの定義 でストレージプールの作成を続行します。
パラメーター
以下の表は、NFS ベースのストレージプールを作成する場合に必要な、XML ファイル、virsh pool-define-as コマンド、および Virtual Machine Manager アプリケーションのパラメーターのリストを示しています。

表13.7 NFS ベースのストレージプールパラメーター

説明XMLpool-define-asVirtual Machine Manager
ストレージプールのタイプ <pool type='netfs'> [type] netfs netfs: Network Exported Directory
ストレージプールの名前 <name>name</name> [name] name Name
マウントポイントが置かれている NFS サーバーのホスト名。これは、ホスト名または IP アドレスになります。

<source>
  <host name='host_name' />

source-host host_name ホスト名
NFS サーバーで使用されるディレクトリー

  <dir path='source_path' />
</source>

source-path source_path ソースパス
ターゲットを指定するパス。ストレージプールに使用されるパスになります。

<target>
  <path>/target_path</path>
</target>

target target_path ターゲットパス
virsh を使用してストレージプールを作成する場合は、ストレージプールが作成されたことの確認 に進みます。
以下は、NFS ベースのストレージプールの XML ファイルの例です。
<pool type='netfs'>
  <name>nfspool</name>
  <source>
    <host name='localhost'/>
    <dir path='/home/net_mount'/>
  </source>
  <target>
    <path>/var/lib/libvirt/images/nfspool</path>
  </target>
</pool>
以下は、NFS ベースのストレージプールを作成するコマンドの例です。
# virsh pool-define-as nfspool netfs --source-host localhost --source-path /home/net_mount --target /var/lib/libvirt/images/nfspool
Pool nfspool defined
以下の図は、NFS ベースのストレージプールを作成するための、仮想マシン XML 設定 Virtual Machine Managerの Add a New Storage Pool ダイアログボックスの例を示しています。

図13.10 新しい NFS ベースのストレージプールの追加の例

新しい NFS ベースのストレージプールの追加の例

13.2.3.8. SCSI デバイスを使用する vHBA ベースのストレージプール

注記
Virtual Machine Manager を使用し、SCSI デバイスを使用して vHBA ベースのストレージプールを作成することはできません。
推奨事項
N_Port ID Virtualization (NPIV) は、1 つの物理ファイバーチャンネルのホストバスアダプター (HBA) の共有を可能にするソフトウェアテクノロジーです。これにより、複数のゲストが複数の物理ホストから同じストレージを認識できるため、ストレージの移行パスが容易になります。そのため、正しいストレージパスが指定されていれば、移行を使用してストレージを作成またはコピーする必要はありません。
仮想化では、仮想ホストバスアダプター、または vHBA が、仮想マシンの論理ユニット番号 (LUN) を制御します。複数の KVM ゲスト間でファイバーチャネルデバイスパスを共有するホストには、仮想マシンごとに vHBA を作成する必要があります。1 つの vHBA を、複数の KVM ゲストで使用することはできません。
NPIV の各 vHBA は、その親 HBA と、独自の World Wide Node Name (WWNN) および World Wide Port Name (WWPN) で識別されます。ストレージのパスは、WWNN および WWPN の値で決定します。親 HBA は、scsi_host# または WWNN/WWPN ペアとして定義できます。
注記
親 HBA が scsi_host# として定義され、ハードウェアがホストマシンに追加されている場合、scsi_host# の割り当てが変更される可能性があります。したがって、WWNN/WWPN のペアを使用して親 HBA を定義することが推奨されます。
これは、vHBA 設定を保持するため、vHBA に基づいて libvirt ストレージプールを定義することが推奨されます。
libvirt ストレージプールを使用すると、主に以下の利点があります。
  • libvirt コードは、virsh コマンドの出力を使用すると、LUN のパスを簡単に見つけることができます。
  • 仮想マシンの移行には、ターゲットマシンで同じ vHBA 名を持つストレージプールの定義と起動のみが必要です。これを行うには、仮想マシンの XML 設定で、vHBA LUN、libvirt ストレージプール、およびボリューム名を指定する必要があります。例は、「SCSI デバイスを使用する vHBA ベースのストレージプール」 を参照してください。
注記
vHBA を作成する前に、ホストの LUN でストレージアレイ (SAN) 側のゾーンを設定して、ゲスト間の分離を提供し、データの破損を防ぐことが推奨されます。
永続的な vHBA 設定を作成するには、最初に以下の形式を使用して、libvirt 'scsi' ストレージプール XML ファイルを作成します。同じ物理 HBA 上のストレージプールを使用する 1 つの vHBA を作成する場合は、システムの /dev/disk/by-{path|id|uuid|label} のような場所など、<path> 値に安定した場所を使用することが推奨されます。
同じ物理 HBA 上でストレージプールを使用する複数の vHBA を作成する場合は、<path> フィールドの値を /dev/ のみにする必要があります。それ以外の場合は、ストレージプールボリュームが 1 つの vHBA からしか確認できず、NPIV 設定で、ホストのデバイスを複数のゲストに公開することができません。
<path> および <target> の要素の詳細は、アップストリームの libvirt ドキュメント を参照してください。
前提条件
vHBA を作成し、SCSI デバイスを使用して vHBA ベースのストレージプールを作成できるようにしてある。

手順13.10 vHBA の作成

  1. ホストシステムで HBA の場所を特定します。

    ホストシステムの HBA を特定するには、virsh nodedev-list --cap vports コマンドを使用します。
    以下の例は、vHBA に対応する HBA が 2 つ搭載されているホストを示しています。
    # virsh nodedev-list --cap vports
    scsi_host3
    scsi_host4
    
  2. HBA の詳細を確認します。

    virsh nodedev-dumpxml HBA_device コマンドを実行して、HBA の詳細を表示します。
    # virsh nodedev-dumpxml scsi_host3
    コマンドの出力には、vHBA の作成に使用する <name><wwnn>、および <wwpn> フィールドの一覧が表示されます。サポートされる vHBA の最大数が <max_vports> に表示されます。以下に例を示します。
    <device>
      <name>scsi_host3</name>
      <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3</path>
      <parent>pci_0000_10_00_0</parent>
      <capability type='scsi_host'>
        <host>3</host>
        <unique_id>0</unique_id>
        <capability type='fc_host'>
          <wwnn>20000000c9848140</wwnn>
          <wwpn>10000000c9848140</wwpn>
          <fabric_wwn>2002000573de9a81</fabric_wwn>
        </capability>
        <capability type='vport_ops'>
          <max_vports>127</max_vports>
          <vports>0</vports>
        </capability>
      </capability>
    </device>
    この例では、<max_vports> には、HBA 設定で使用できる仮想ポートが 127 個あることを示しています。<vports> 値は、現在使用されている仮想ポートの数を示します。この値は、vHBA の作成後に更新されます。
  3. vHBA ホストデバイスの作成

    vHBA ホスト用に、以下のいずれかの XML ファイルを作成します。この例では、ファイル名は vhba_host3.xml です。
    次の例では、scsi_host3 を使用して親 vHBA を説明します。
    # cat vhba_host3.xml
    <device>
      <parent>scsi_host3</parent>
      <capability type='scsi_host'>
        <capability type='fc_host'>
        </capability>
      </capability>
    </device>
    次の例では、WWNN/WWPN のペアを使用して親 vHBA を説明します。
    # cat vhba_host3.xml
    <device>
      <name>vhba</name>
      <parent wwnn='20000000c9848140' wwpn='10000000c9848140'/>
      <capability type='scsi_host'>
        <capability type='fc_host'>
        </capability>
      </capability>
    </device>
    注記
    WWNN および WWPN の値は、手順13.10「vHBA の作成」 に表示される HBA の詳細にある値と一致する必要があります。
    <parent> フィールドは、この vHBA デバイスに関連付ける HBA デバイスを指定します。<device> タグの詳細は、ホスト用の新しい vHBA デバイスを作成するために、次の手順で使用されます。nodedev XML 形式の詳細は、libvirt アップストリームページ を参照してください。
  4. vHBA ホストデバイスに新しい vHBA を作成します。

    vhba_host3 に基づいて vHBA を作成するには、virsh nodedev-create コマンドを使用します。
    # virsh nodedev-create vhba_host3.xml
    Node device scsi_host5 created from vhba_host3.xml
  5. vHBA の確認

    virsh nodedev-dumpxml コマンドを使用して、新しい vHBA の詳細 (scsi_host5) を確認します。
    # virsh nodedev-dumpxml scsi_host5
    <device>
      <name>scsi_host5</name>
      <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3/vport-3:0-0/host5</path>
      <parent>scsi_host3</parent>
      <capability type='scsi_host'>
        <host>5</host>
        <unique_id>2</unique_id>
        <capability type='fc_host'>
          <wwnn>5001a4a93526d0a1</wwnn>
          <wwpn>5001a4ace3ee047d</wwpn>
          <fabric_wwn>2002000573de9a81</fabric_wwn>
        </capability>
      </capability>
    </device>
vHBA を確認したら、ストレージプールの定義 でストレージプールの作成を続行します。
パラメーター
以下の表は、vHBA ベースのストレージプールを作成する場合に必要な、XML ファイル、virsh pool-define-as コマンド、および Virtual Machine Manager アプリケーションのパラメーターのリストを示しています。

表13.8 vHBA ベースのストレージプールパラメーター

説明XMLpool-define-as
ストレージプールのタイプ <pool type='scsi'> scsi
ストレージプールの名前 <name>name</name> --adapter-name name
vHBA の識別子。parent 属性はオプションです。

<source>
  <adapter type='fc_host'
  [parent=parent_scsi_device]
  wwnn='WWNN'
  wwpn='WWPN' />
</source>

[--adapter-parent parent]
--adapter-wwnn wwnn
--adapter-wpnn wwpn

ターゲットを指定するパス。ストレージプールに使用されるパスになります。

<target>
  <path>target_path</path>
</target>

target path_to_pool
重要
<path> フィールドが /dev/ の場合、libvirt は、ボリュームデバイスパスで一意の短いデバイスパスを生成します。たとえば、/dev/sdc です。それ以外の場合は、物理ホストパスが使用されます。たとえば、/dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016044602198-lun-0 などです。一意の短いデバイスパスを使用すると、複数のストレージプールで、同じボリュームを複数のゲストにリスト表示できます。物理ホストのパスを複数のゲストで使用すると、デバイスタイプが重複していることを示す警告が発生することがあります。
注記
parent 属性は、<adapter> フィールドで、パスを変更して NPIV LUN を使用できる物理 HBA の親を識別するために使用できます。このフィールドの scsi_hostN は、vports 属性および max_vports 属性と組み合わせて、親 ID を完了します。parent 属性、parent_wwnn 属性、parent_wwpn 属性、または parent_fabric_wwn 属性では、ホストの再起動後に同じ HBA が使用されるというさまざまな程度の保証を提供します。
  • parentを指定しないと、libvirt は、NPIV に対応する最初の scsi_hostN アダプターを使用します。
  • parent のみが指定されている場合、設定に SCSI ホストアダプターを追加すると、問題が発生する可能性があります。
  • parent_wwnn または parent_wwpn を指定した場合は、ホストの再起動後に同じ HBA が使用されます。
  • parent_fabric_wwn を使用する場合は、ホストの再起動後、使用されているscsi_hostNに関係なく、同じファブリックの HBA が選択されます。
virsh を使用してストレージプールを作成する場合は、ストレージプールが作成されたことの確認 に進みます。
以下は、vHBA ベースのストレージプールの XML ファイルの例です。最初の例は、HBA にある唯一のストレージプールの例です。2 つ目は、単一の vHBA を使用し、parent 属性を使用して、SCSI ホストデバイスを識別するいくつかのストレージプールの 1 つであるストレージプールの例になります。
<pool type='scsi'>
  <name>vhbapool_host3</name>
  <source>
    <adapter type='fc_host' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/>
  </source>
  <target>
    <path>/dev/disk/by-path</path>
  </target>
</pool>
<pool type='scsi'>
  <name>vhbapool_host3</name>
  <source>
    <adapter type='fc_host' parent='scsi_host3' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/>
  </source>
  <target>
    <path>/dev/disk/by-path</path>
  </target>
</pool>
以下は、vHBA ベースのストレージプールを作成するコマンドの例です。
# virsh pool-define-as vhbapool_host3 scsi --adapter-parent scsi_host3 --adapter-wwnn 5001a4a93526d0a1 --adapter-wwpn 5001a4ace3ee047d --target /dev/disk/by-path
Pool vhbapool_host3 defined
注記
virsh では、parent_wwnn 属性、parent_wwpn 属性、または parent_fabric_wwn 属性を定義する方法は提供されていません。
vHBA LUN を使用するように仮想マシンを設定する
vHBA 用にストレージプールを作成したら、vHBA LUN を仮想マシンの設定に追加する必要があります。
  1. 仮想マシンの XML に、仮想マシンにディスクボリュームを作成します。
  2. <source> パラメーターで、storage poolstorage volume を指定します。
以下は例になります。
<disk type='volume' device='disk'>
  <driver name='qemu' type='raw'/>
  <source pool='vhbapool_host3' volume='unit:0:4:0'/>
  <target dev='hda' bus='ide'/>
</disk>
disk の代わりにlun デバイスーを指定するには、以下の例を参照してください。
<disk type='volume' device='lun' sgio='unfiltered'>
  <driver name='qemu' type='raw'/>
  <source pool='vhbapool_host3' volume='unit:0:4:0' mode='host'/>
  <target dev='sda' bus='scsi'/>
  <shareable />
</disk>
SCSI LUN ベースのストレージをゲストに追加する XML 設定例は、「ゲストへの SCSI LUN ベースのストレージの追加」 を参照してください。
ハードウェア障害が発生した場合に、LUN への再接続が成功するように、fast_io_fail_tmo オプションおよび dev_loss_tmo オプションを変更することが推奨されます。詳細は、Reconnecting to an exposed LUN after a hardware failure を参照してください。

13.2.4. ストレージプールの削除

virsh または Virtual Machine Manager を使用して、ストレージプールを削除できます。

13.2.4.1. ストレージプールを削除するための前提条件

削除するストレージプールを使用するその他のゲスト仮想マシンに悪影響を及ぼさないようにするには、ストレージプールを停止して、ストレージプールによって使用されているリソースを解放することを推奨します。

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

  1. 定義したストレージプールのリストを表示します。
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    guest_images_pool    active     yes
    
  2. 削除するストレージプールを停止します。
    # virsh pool-destroy guest_images_disk
  3. (任意) ストレージプールの種類によっては、ストレージプールが含まれるディレクトリーを削除できる場合があります。
    # virsh pool-delete guest_images_disk
  4. ストレージプールの定義を削除します。
    # virsh pool-undefine guest_images_disk
  5. プールが定義されていないことを確認します。
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    
    

13.2.4.3. Virtual Machine Manager を使用したストレージプールの削除

  1. Connection Details ウィンドウ の Storage タブにあるストレージプールリストで、削除するストレージプールを選択します。
  2. Storage ウィンドウの下部にある をクリックします。これによりストレージプールが停止し、使用中のリソースがすべて解放されます。
  3. をクリックします。
    注記
    アイコンは、ストレージプールが停止している場合にのみ有効になります。
    ストレージプールが削除されます。