13.2. ストレージプールの使用
virsh
コマンドと 仮想管理マネージャー を使用してストレージプールを作成、設定、および削除 する方法の詳細を説明します。
13.2.1. ストレージプールの概念
- ローカルストレージプール
- ローカルストレージプールは、ホストサーバーに直接アタッチされています。これに含まれるのは、ローカルディレクトリー、直接アタッチされたディスク、物理パーティション、ローカルデバイス上の論理ボリューム管理 (LVM) のボリュームグループです。ローカルストレージプールは開発、テスト、移行や多数の仮想マシンを必要としない小規模開発などに役立ちます。ローカルストレージプールは、ライブマイグレーションに使用できないため、多くの本番環境に適切でない可能性があります。
- ネットワーク (共有) ストレージプール
- ネットワークストレージプールは、標準のプロトコルを使用したネットワーク上の共有ストレージデバイスを含みます。ネットワークストレージは、virt-manager を使ってホスト間で仮想マシンを移行するときに必要になりますが、
virsh
を使って移行する場合は任意になります。仮想マシンの移行の詳細は 15章KVM の移行 を参照してください。
- ディレクトリベースのストレージプール
- ディスクベースのストレージプール
- パーティションベースのストレージプール
- GlusterFS ストレージプール
- iSCSI ベースのストレージプール
- LVM ベースのストレージプール
- NFS ベースのストレージプール
- SCSI デバイスとの vHBA ベースのストレージプール
libvirt
ストレージプールタイプは次のとおりです。
- マルチパスベースのストレージプール
- RBD ベースのストレージプール
- Sheepdog ベースのストレージプール
- Vstorage ベースのストレージプール
- ZFS ベースのストレージプール
注記
13.2.2. ストレージプールの作成
virsh
および 仮想マシンマネージャー を使用した、一般的なストレージプールの作成手順を説明します。virsh
を使用するとすべてのパラメーターを指定でき、仮想マシンマネージャー では GUI で簡単なストレージプールを作成できます。
13.2.2.1. virsh を使用したストレージプールの作成
注記
手順13.2 virsh を使用したストレージプールの作成
推奨事項を読み、前提条件をすべて満たしているようにしてください。
一部のストレージプールでは、特定の慣例に従うことが推奨されます。さらに、ストレージプールのタイプによっては特定の前提条件があります。推奨事項と前提条件を確認するには、「ストレージプール固有の情報」 を参照してください。ストレージプールを定義します。
ストレージプールは永続または一時になります。永続ストレージプールは、ホストマシンのシステムの再起動後も保持されます。一時ストレージプールは、ホストが再起動されるまで存在します。次のいずれかを行います。- 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_fsc. a. で作成した XML ファイルを削除します。 virsh pool-define-as
コマンドを使用して永続ストレージプールを作成するか、virsh pool-create-as
コマンドを使用して一時ストレージプールを作成します。以下の最初の例は、/guest_images
ディレクトリーから/dev/sdc1
にマップされる、ファイルシステムベースの永続ストレージプールを作成し、2 つ目の例は同様にマップされるファイルシステムベースの一時ストレージプールを作成します。#
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
インターフェースを使用する場合、コマンドのオプション名は任意です。オプション名を使用しない場合は、指定する必要のないフィールドにダッシュを使用します。
プールが作成されたことを確認します。
virsh pool-list --all
を使用して、既存のストレージプールをすべてリストします。#
virsh pool-list --all
Name State Autostart ----------------------------------------- default active yes guest_images_fs inactive noストレージプールのターゲットパスを定義します。
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
オプションが指定されていないと構築に失敗します。ストレージプールを起動します。
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
コマンドは、永続ストレージプールにのみ必要です。一時ストレージプールは、作成時に自動的に起動されます。自動起動をオンにします (任意)。
デフォルトでは、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 yeslibvirtd
の起動時に毎回ストレージプールが自動的に起動されるようになりました。ストレージプールを確認します。
ストレージプールが正しく作成されたこと、およびサイズが予測される値で報告されていること、さらに状態が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. 仮想マシンマネージャーでのストレージプールの作成
注記
手順13.3 仮想マシンマネージャーでのストレージプールの作成
ストレージプールが作成されるメディアを準備します。
これは、ストレージプールの種類によって異なります。詳細は 「ストレージプール固有の情報」 を参照してください。この例では、GUID パーティションテーブル でディスクを再度ラベル付けする必要があることがあります。ストレージ設定を開きます。
- 仮想マシンマネージャーで、設定するホスト接続を選択します。編集 メニューを開き、接続の詳細 を選択します。
- 接続の詳細 ウインドウの ストレージ タブをクリックします。
図13.1 「ストレージ」タブ
新しいストレージプールを作成します。
注記
仮想マシンマネージャー では永続ストレージプールのみを作成できます。一時ストレージプールはvirsh
を使用してのみ作成できます。新しいストレージプールを追加します (パート 1)
ウィンドウの下部にあるボタンをクリックします。新しいストレージプールを追加 ウィザードが表示されます。
ストレージプールのを入力します。この例では名前として guest_images_fs を使用します。fs: 事前フォーマット済みブロックデバイス
を使用します。図13.2 ストレージプールの名前と種類
新規プールの追加 (パート 2)
図13.3 ストレージプールのパス
関連するパラメーターを持つストレージプールを設定します。ストレージプールの各種類のパラメーターに関する情報は、「ストレージプール固有の情報」 を参照してください。ストレージプールの種類によっては プールを構築 チェックボックスがダイアログに表示されることがあります。ストレージからストレージプールを構築する場合は、プールを構築 チェックボックスにチェックマークを入れます。詳細を確認し、ボタンをクリックしてストレージプールを作成します。
13.2.3. ストレージプール固有の情報
13.2.3.1. ディレクトリベースのストレージプール
パラメーター
virsh pool-define-as
コマンド、および仮想マシンマネージャー アプリケーションに必要なパラメーターの一覧が記載されています。
表13.1 ディレクトリーベースのストレージプールのパラメーター
説明 | XML | pool-define-as | 仮想マシンマネージャー |
---|---|---|---|
ストレージプールの種類 | <pool type='dir'> | [type] ディレクトリー | dir: ファイルシステムディレクトリー |
ストレージプールの名前 | <name>name</name> | [name] name | 名前 |
ターゲットを指定するパス。これは、ストレージプールに使用されるパスになります。 |
<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
ディレクトリーを基にしたストレージプールを作成するための 仮想マシンマネージャー の「新しいストレージプールを追加」ダイアログの例になります。

図13.4 新しいディレクトリーベースのストレージプールの追加例
13.2.3.2. ディスクベースのストレージプール
推奨
- 使用されている libvirt のバージョンによっては、ディスクをストレージプール専用にすると、ディスクデバイスに現在保存されているすべてのデータが再フォーマットまたは消去されることがあります。ストレージデバイスのデータをバックアップしてからストレージプールを作成することが強く推奨されます。
- ゲストにはディスクまたはブロックデバイス全体 (例:
/dev/sdb
) の書き込み権限を与えないでください。パーティション (例:/dev/sdb1
) または LVM ボリュームを使用してください。ゲストにブロックデバイス全体を渡した場合、ゲストはそれにパーティションを設定するか、またはその上に独自の LVM グループを作成する可能性があります。これは、ホスト物理マシンがこれらのパーティションや LVM グループを検出し、エラーを出す原因になります。
前提条件
注記
virsh pool-build
コマンドを実行しない場合のみ必要になります。
# 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.
#
パラメーター
virsh pool-define-as
コマンド、および仮想マシンマネージャー アプリケーションに必要なパラメーターの一覧が記載されています。
表13.2 ディスクベースのストレージプールのパラメーター
説明 | XML | pool-define-as | 仮想マシンマネージャー |
---|---|---|---|
ストレージプールの種類 | <pool type='disk'> | [type] ディスク | disk: 物理ディスクデバイス |
ストレージプールの名前 | <name>name</name> | [name] name | 名前 |
ストレージデバイスを指定するパス (例: /dev/sdb)。 |
<source> | source-dev path_to_disk | ソースパス |
ターゲットを指定するパス。これは、ストレージプールに使用されるパスになります。 |
<target> | target path_to_pool | ターゲットパス |
virsh
を使用してストレージプールを作成している場合、ストレージプールの定義 を続行します。
例
<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 gpt --source-dev=/dev/sdb --target /dev
Pool phy_disk defined

図13.5 新しいディスクベースのストレージプールの追加例
13.2.3.3. ファイルシステムベースのストレージプール
推奨
/dev/sdb
)。ゲストにはディスクまたはブロックデバイス全体への書き込み権限を与えないでください。この方法はパーティション (例: /dev/sdb1
) をストレージプールに割り当てるためにのみ使用してください。
前提条件
注記
virsh pool-build
コマンドを実行しない場合のみ必要になります。
# mkfs.ext4 /dev/sdc1
パラメーター
virsh pool-define-as
コマンド、および仮想マシンマネージャー アプリケーションに必要なパラメーターの一覧が記載されています。
表13.3 ファイルシステムベースストレージプールのパラメーター
説明 | XML | pool-define-as | 仮想マシンマネージャー |
---|---|---|---|
ストレージプールの種類 | <pool type='fs'> | [type] fs | fs: 事前フォーマント済みブロックデバイス |
ストレージプールの名前 | <name>name</name> | [name] name | 名前 |
パーティションを指定するパス (例: dev/sdc1) |
<source> | [source] path_to_partition | ソースパス |
ファイルシステムの種類 (例: ext4)。 |
<format type='fs_type' /> | [source format] FS-format | 該当なし |
ターゲットを指定するパス。これは、ストレージプールに使用されるパスになります。 |
<target> | [target] path_to_pool | ターゲットパス |
virsh
を使用してストレージプールを作成している場合、ストレージプールが作成されたことを確認して続行します。
例
<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

図13.6 新しいファイルシステムベースのストレージプールの追加例
13.2.3.4. GlusterFS ベースのストレージプール
推奨
前提条件
手順13.4 Gluster サーバーの準備
- 次のコマンドを使って、状態を一覧表示し、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 - glusterfs-fuse パッケージがインストールされていない場合はインストールします。
- virt_use_fusefs ブール値が有効になっていない場合は有効にします。有効になっているか確認してください。
#
setsebool virt_use_fusefs on
#getsebool virt_use_fusefs
virt_use_fusefs --> on
パラメーター
virsh pool-define-as
コマンド、および 仮想マシンマネージャー アプリケーションに必要なパラメーターの一覧が記載されています。
表13.4 GlusterFS ベースのストレージプールのパラメーター
説明 | XML | pool-define-as | 仮想マシンマネージャー |
---|---|---|---|
ストレージプールの種類 | <pool type='gluster'> | [type] gluster | Gluster: Gluster ファイルシステム |
ストレージプールの名前 | <name>name</name> | [name] name | 名前 |
Gluster サーバーのホスト名または IP アドレス |
<source> | source-host hostname | ホスト名 |
Gluster サーバーの名前 | <name='Gluster-name' /> | source-name Gluster-name | ソース名 |
ストレージプールに使用される Gluster サーバーのパス |
<dir path='Gluster-path' /> | source-path Gluster-path | ソースパス |
virsh
を使用してストレージプールを作成している場合、ストレージプールが作成されたことを確認して続行します。
例
<pool type='gluster'> <name>Gluster_pool</name> <source> <host name='111.222.111.222'/> <dir path='/'/> <name>gluster-vol1</name> </source> </pool>
# pool-define-as --name Gluster_pool --type gluster --source-host 111.222.111.222 --source-name gluster-vol1 --source-path /
Pool Gluster_pool defined

図13.7 新しい GlusterFS ベースのストレージプールの追加例
13.2.3.5. iSCSI ベースのストレージプール
推奨
前提条件
手順13.5 iSCSI ターゲットの作成
targetcli パッケージのインストール
#
yum install targetcli
targetcli
コマンドセットを起動します。#
targetcli
ストレージオブジェクトを作成します。
ストレージプールを使用して、3 つのストレージオブジェクトを作成します。- ブロックストレージオブジェクトの作成
/backstores/block
ディレクトリーに移動します。create
コマンドを実行します。#
create [block-name][filepath]
例を以下に示します。#
create block1 dev=/dev/sdb1
- fileio オブジェクトの作成
/fileio
ディレクトリーに移動します。create
コマンドを実行します。#
create [fileio-name][image-name] [image-size]
例を以下に示します。#
create fileio1 /foo.img 50M
- ram ディスクオブジェクトの作成
/ramdisk
ディレクトリーに移動します。create
コマンドを実行します。#
create [ramdisk-name] [ramdisk-size]
例を以下に示します。#
create ramdisk1 1M
- ここで作成するディスクの名前を書き留めておきます。これは後ほど使用します。
iSCSI ターゲットの作成
/iscsi
ディレクトリーに移動します。- ターゲットを以下の 2 つの方法のいずれかで作成します。
- パラメーターを使用せずに
create
コマンドを実行します。iSCSI 修飾名 (IQN) が自動的に生成されます。 - 以下の例のように、IQN とサーバーを指定して
create
コマンドを実行します。#
create iqn.2010-05.com.example.server1:iscsirhel7guest
ポータル IP アドレスを定義します。
iSCSI 上でブロックストレージをエクスポートするには、最初にポータル、LUN、および アクセス制御リスト ACL を設定する必要があります。ポータルには、ターゲットが監視する IP アドレスおよび TCPと、ポータルが接続するイニシエーターが含まれます。iSCSI は 3260 番ポートを使用します。このポートはデフォルトで設定されています。3260 番ポートに接続するには、以下を行います。/tpg
ディレクトリーに移動します。- 次のコマンドを実行します。
#
portals/ create
このコマンドは、利用可能な IP アドレスがすべて 3260 番ポートをリッスンするようにします。1 つの IP アドレスのみが 3260 番ポートをリッスンするようにするには、以下の例のように IP アドレスをコマンドの最後に追加します。#
portals/ create 143.22.16.33
LUN を設定し、ストレージオブジェクトをファブリックに割り当てます。
このステップでは、「ストレージオブジェクトの作成」で作成したストレージオブジェクトを使用します。- 以下の例のように、「ポータル IP アドレスの定義」で作成した TPG の
luns
ディレクトリーに移動します。#
iscsi>iqn.iqn.2010-05.com.example.server1:iscsirhel7guest
- 以下の例のように、最初の LUN ram ディスクに割り当てます。
#
create /backstores/ramdisk/ramdisk1
- 以下の例のように、2 番目の LUN をブロックディスクに割り当てます。
#
create /backstores/block/block1
- 以下の例のように、3 番目の LUN を fileio ディスクに割り当てます。
#
create /backstores/fileio/fileio1
- 結果の 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]
各イニシエーターに ACL を作成
イニシエーターの接続時に認証を有効にします。指定の LUN を指定のイニシエーターに制限することもできます。ターゲットとイニシエーターの名前は一意です。iSCSI イニシエーターは IQN を使用します。- 以下の例のように、イニシエーター名を使用して iSCSI イニシエーターの IQN を検索します。
#
cat /etc/iscsi/initiator2.iscsi
InitiatorName=create iqn.2010-05.com.example.server1:iscsirhel7guestこの IQN は、ACL の作成に使用されます。 acls
ディレクトリーに移動します。- 以下のいずれかを実行して 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
この手順を完了した後、ストレージプールをセキュア化して作業を続けます。設定の保存
以前のブート設定を上書きして、設定を永続化します。#
saveconfig
サービスの有効化
保存した設定を次回のブート時に適用するには、サービスを有効にします。#
systemctl enable target.service
任意の手順
手順13.6 RAID アレイ上の論理ボリュームの設定
RAID5 アレイの作成
RAID5 アレイの作成に関する情報は、『Red Hat Enterprise Linux 7 ストレージ管理ガイド』を参照してください。RAID5 アレイ上の LVM 論理ボリュームの作成
RAID 5 アレイ上での LVM 論理ボリュームの作成に関する詳細は、『Red Hat Enterprise Linux 7 論理ボリュームマネージャーの管理』を参照してください。
手順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 デバイス割り当てのテスト
新規 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.デバイスの接続を解除します。
#
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 ストレージプールの libvert シークレットの使用
注記
virsh
を使ってユーザー名およびパスワードパラメーターを設定することにより、iSCSI ストレージプールのセキュリティーを保護することができます。これは、プールを定義する前後に設定できますが、認証設定を有効にするには、プールが起動している必要があります。
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>
シークレットの定義
#
virsh secret-define secret.xml
UUID の検証
#
virsh secret-list
UUID Usage -------------------------------------------------------------------------------- 2d7891af-20be-4e5e-af83-190e8a922360 iscsi iscsirhel7secretシークレットの UID への割り当て
以下のコマンドを使用して、以前の手順の出力にある UUID にシークレットを割り当てます。これにより、CHAP ユーザー名およびパスワードが libvirt によって制御されるシークレットリストに確実に記載されるようにします。#
MYSECRET=`printf %s "password123" | base64`
#virsh secret-set-value 2d7891af-20be-4e5e-af83-190e8a922360 $MYSECRET
認証エントリーをストレージプールに追加します。
virsh edit
を使用してストレージプールの XML ファイルの<source>
エントリーを変更し、authentication type
、username
、および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>
は、認証が一部のプールソース (iSCSI および RBD) のプロパティーであり、プールソースの検索方法を記述しているため、<source>
要素内に指定されます。ドメインのサブ要素である<disk>
の場合、iSCSI または RBD ディスクへの認証はディスクのプロパティーになります。さらに、ディスクの<auth>
サブ要素はストレージプールのものとは異なります。<auth username='redhat'> <secret type='iscsi' usage='iscsirhel7secret'/> </auth>
変更のアクティブ化
以下の変更をアクティブにするには、ストレージプールを起動している必要があります。- ストレージプールをまだ起動していない場合は、「virsh でのストレージプールの作成」の手順にしたがってストレージプールを定義および起動します。
- プールがすでに起動している場合は、以下のコマンドを実行してストレージプールを停止し、再起動します。
#
virsh pool-destroy iscsirhel7pool
#virsh pool-start iscsirhel7pool
パラメーター
virsh pool-define-as
コマンド、および仮想マシンマネージャー アプリケーションに必要なパラメーターの一覧が記載されています。
表13.5 iSCSI ベースのストレージプールのパラメーター
説明 | XML | pool-define-as | 仮想マシンマネージャー |
---|---|---|---|
ストレージプールの種類 | <pool type='iscsi'> | [type] iscsi | iscsi: iSCSI Target |
ストレージプールの名前 | <name>name</name> | [name] name | 名前 |
ホストの名前 |
<source> | source-host hostname | ホスト名 |
iSCSI の IQN。 |
device path="iSCSI_IQN" /> | source-dev iSCSI_IQN | ソース IQN |
ターゲットを指定するパス。これは、ストレージプールに使用されるパスになります。 |
<target> | target path_to_pool | ターゲットパス |
(任意) iSCSI イニシエーターの IQN。ACL が特定のイニシエーターへの LUN を制限する場合のみ必要です。 |
<initiator> | 以下の注記を参照してください。 | イニシエーター IQN |
注記
virsh find-storage-pool-sources-as iscsi
コマンドを使用します。
virsh
を使用してストレージプールを作成している場合、ストレージプールが作成されたことを確認して続行します。
例
<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>
# 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

図13.8 新しい iSCSI ベースストレージプールの追加例
13.2.3.6. LVM ベースのストレージプール
推奨
- LVM ベースのストレージプールは LVM の完全な柔軟性を提供しません。
- libvirt はシン論理ボリュームをサポートしますが、シンストレージプールの機能は提供しません。
- LVM ベースのストレージプールはボリュームグループです。論理ボリュームマネージャーのコマンドまたは
virsh
コマンドを使用するとボリュームグループを作成できます。virsh
インターフェースを使用してボリュームグループを管理するには、virsh
コマンドを使用してボリュームグループを作成します。ボリュームグループに関する詳細は、『Red Hat Enterprise Linux 7 論理ボリュームマネージャーの管理』を参照してください。 - LVM ベースのストレージプールは全面的なディスクパーティションを必要とします。この手順を使用して新しいパーティションおよびデバイスをアクティブ化する場合、パーティションはフォーマットされ、すべてのデータは消去されます。ホストの既存ボリュームグループ (VG) を使用する場合は、いずれのデータも消去されません。以下の手順を開始する前に、ストレージデバイスのバックアップを取っておくことが推奨されます。LVM ボリュームグループ作成の詳細は、『Red Hat Enterprise Linux 7 論理ボリュームマネージャーの管理』を参照してください。
- 既存の VG 上に LVM ベースのストレージプールを作成する場合、
pool-build
コマンドを実行しないでください。
パラメーター
virsh pool-define-as
コマンド、および仮想マシンマネージャー アプリケーションに必要なパラメーターの一覧が記載されています。
表13.6 LVM ベースのストレージプールのパラメーター
説明 | XML | pool-define-as | 仮想マシンマネージャー |
---|---|---|---|
ストレージプールの種類 | <pool type='logical'> | [type] logical | logical: LVM Volume Group |
ストレージプールの名前 | <name>name</name> | [name] name | 名前 |
ストレージプールのデバイスへのパス |
<source> | source-dev device_path | ソースパス |
ボリュームグループの名前 | <name='VG-name' /> | source-name VG-name | ソースパス |
仮想グループの形式 |
<format type='lvm2' /> | source-format lvm2 | 該当なし |
ターゲットパス |
<target> | target target-path | ターゲットパス |
注記
<source> <device path='/dev/sda1'/> <device path='/dev/sdb3'/> <device path='/dev/sdc2'/> ... </source>
virsh
を使用してストレージプールを作成している場合、ストレージプールが作成されたことを確認して続行します。
例
<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>
# 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

図13.9 新しい LVM ベースのストレージプールの追加例
13.2.3.7. NFS ベースのストレージプール
前提条件
パラメーター
virsh pool-define-as
コマンド、および 仮想マシンマネージャー アプリケーションに必要なパラメーターの一覧が記載されています。
表13.7 NFS ベースのストレージプールのパラメーター
説明 | XML | pool-define-as | 仮想マシンマネージャー |
---|---|---|---|
ストレージプールの種類 | <pool type='netfs'> | [type] netfs | netfs: Network Exported Directory |
ストレージプールの名前 | <name>name</name> | [name] name | 名前 |
マウントポイントがある NFS サーバーのホスト名。ホスト名または IP アドレスを指定できます。 |
<source> | source-host host_name | ホスト名 |
NFS サーバーで使用されるディレクトリー |
<dir path='source_path' /> | source-path source_path | ソースパス |
ターゲットを指定するパス。これは、ストレージプールに使用されるパスになります。 |
<target> | target target_path | ターゲットパス |
virsh
を使用してストレージプールを作成している場合、ストレージプールが作成されたことを確認して続行します。
例
<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>
# virsh pool-define-as nfspool netfs --source-host localhost --source-path /home/net_mount --target /var/lib/libvirt/images/nfspool
Pool nfspool defined

図13.10 新しい NFS ベースのストレージプールの追加例
13.2.3.8. SCSI デバイスを使用した vHBA ベースのストレージプール
注記
推奨
scsi_host#
または WWNN/WWPN ペアで定義することができます。
注記
scsi_host#
で定義しハードウェアがホストマシンに追加されると、scsi_host#
の割り付けが変更される場合があります。したがって、親 HBA は WWNN/WWPN ペアを使って定義することが推奨されます。
- libvirt コードにより、virsh コマンド出力から LUN のパスを簡単に特定できます。
- 仮想マシンの移行には、ターゲットマシン上に同じ vHBA 名を持つストレージプールを定義し、起動することのみが必要になります。これを実行するには、vHBA LUN、libvirt ストレージプール、およびボリューム名を仮想マシンの XML 設定に指定する必要があります。例は、「SCSI デバイスを使用した vHBA ベースのストレージプール」 を参照してください。
注記
'scsi'
ストレージプール XML ファイルを作成します。同一の物理 HBA 上のストレージプールを使用する単一の vHBA を作成する場合は、システム上の /dev/disk/by-{path|id|uuid|label}
の場所のいずれかにするなど、<path>
値の安定した場所を使用することをお勧めします。
<path>
フィールドの値は /dev/
にしなければなりません。そうでないと、ストレージプールボリュームは vHBA のいずれかのみに表示され、ホストのデバイスを NPIV 設定で複数ゲストに表示することができなくなります。
前提条件
手順13.10 vHBA の作成
ホストシステム上で HBA を見つけます。
ホストシステム上で HBA を見つけるには、virsh nodedev-list --cap vports
コマンドを使用します。次の例は、vHBA をサポートする 2 つの HBA を持つホストを示しています。#
virsh nodedev-list --cap vports
scsi_host3 scsi_host4HBA の詳細を確認します。
virsh nodedev-dumpxml HBA_device
コマンドを使って HBA の詳細を確認します。#
virsh nodedev-dumpxml scsi_host3
コマンドからの XML 出力には、<name>
、<wwnn>
、および<wwpn>
フィールドの一覧が表示されます。これらのフィールドは vHBA を作成するために使用されます。<max_vports>
値は、サポートされる vHBA の最大数を示します。例を以下に示します。<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 作成後に更新されます。vHBA ホストデバイスを作成します。
vHBA ホスト用に以下のどちらかのような XML ファイルを作成します (この例では、ファイル名は vhba_host3.xml です)。この例では、親 vHBA を定義するのにscsi_host3
が使われています。# cat vhba_host3.xml <device> <parent>scsi_host3</parent> <capability type='scsi_host'> <capability type='fc_host'> </capability> </capability> </device>
この例では、親 vHBA を定義するのに WWNN/WWPN ペアが使われています。# 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 アップストリームページ を参照してください。vHBA ホストデバイス上で新規 vHBA を作成します。
vhba_host3 をベースにして vHBA を作成するには、virsh nodedev-create
コマンドを使用します。#
virsh nodedev-create vhba_host3.xml
Node device scsi_host5 created from vhba_host3.xmlvHBA を確認します。
新規 vHBA (scsi_host5
) の詳細をvirsh nodedev-dumpxml
コマンドで確認します。# 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>
パラメーター
virsh pool-define-as
コマンド、および 仮想マシンマネージャー アプリケーションに必要なパラメーターの一覧が記載されています。
表13.8 vHBA ベースのストレージプールのパラメーター
説明 | XML | pool-define-as |
---|---|---|
ストレージプールの種類 | <pool type='scsi'> | scsi |
ストレージプールの名前 | <name>name</name> | --adapter-name name |
vHBA の識別子。parent 属性は任意です。 |
<source> |
[--adapter-parent parent] |
ターゲットを指定するパス。これは、ストレージプールに使用されるパスになります。 |
<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>
フィールドで使用すると、物理 HBA の親を特定できます。そこからさまざまなパスで NPIV LUN を使用することができます。このフィールド scsi_hostN
は vports
および max_vports
属性と組み合わされ、親の識別を完了します。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
を使用してストレージプールを作成している場合、ストレージプールが作成されたことを確認して続行します。
例
parent
属性を使用して SCSI ホストデバイスを識別するストレージプールを示しています。
<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>
# 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 を使用するよう設定
- 仮想マシンの XML に仮想マシンのディスクボリュームを作成します。
<source>
パラメーターでstorage pool
およびstorage 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>
fast_io_fail_tmo
および dev_loss_tmo
オプションを編集することが推奨されます。詳細は、「ハードウェア故障後に公開されている LUN に再接続」を参照してください。
13.2.4. ストレージプールの削除
virsh
コマンドまたは 仮想マシンマネージャー を使用するとストレージプールを削除できます。
13.2.4.1. ストレージプールを削除するための前提条件
13.2.4.2. virsh を使用したストレージプールの削除
- 定義したストレージプールを一覧で表示します。
#
virsh pool-list --all
Name State Autostart ----------------------------------------- default active yes guest_images_pool active yes - 削除するストレージプールを停止します。
#
virsh pool-destroy guest_images_disk
- (任意): ストレージプールのタイプによっては、ストレージプールがあるディレクトリーを任意で削除することができます。
#
virsh pool-delete guest_images_disk
- ストレージプールの定義を削除します。
#
virsh pool-undefine guest_images_disk
- プールが定義されていないことを確認します。
#
virsh pool-list --all
Name State Autostart ----------------------------------------- default active yes
13.2.4.3. 仮想マシンマネージャーを使用したストレージプールの削除
- 「接続の詳細」ウインドウ の「ストレージタブ」にあるストレージプールリストで、削除するストレージプールを選択します。
- 「ストレージ」ウィンドウの下部にある
をクリックします。これにより、ストレージプールが停止され、ストレージプールによって使用されているリソースが解放されます。
をクリックします。
注記
ストレージプールが停止した場合のみアイコンが有効になります。
ストレージプールが削除されます。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。