Red Hat Training

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

20.29. ストレージプールコマンド

libvirt を使用すると、仮想マシン内のデバイスとして表示されるストレージボリュームを提供するために使用されるファイル、raw パーティション、ドメイン固有の形式など、さまざまなストレージソリューションを管理できます。詳細は、libvirt アップストリームページ を参照してください。ストレージプールを管理するコマンドの多くは、ゲスト仮想マシンに使用されるコマンドと似ています。

20.29.1. ストレージプール XML の検索

virsh find-storage-pool-sources type コマンドは、検出された 1 つのソースのすべてのストレージプールを説明する XML を表示します。タイプには、netfs、disk、dir、fs、iscsi、logical、および gluster が含まれます。すべてのタイプがストレージバックエンドドライバーに対応しており、さらに多くのタイプが利用可能であることに注意してください (詳細については、man ページを参照してください)。--srcSpec を使用してテンプレートソースの XML ファイルを提供することで、プールのクエリーをさらに制限することもできます。

例20.71 利用可能なストレージプールの XML 設定のリストを表示する方法

以下の例では、システムで利用可能なすべての論理ストレージプールの XML 設定を出力します。
# virsh find-storage-pool-sources logical
<sources>
  <source>
    <device path='/dev/mapper/luks-7a6bfc59-e7ed-4666-a2ed-6dcbff287149'/>
    <name>RHEL_dhcp-2-157</name>
    <format type='lvm2'/>
  </source>
</sources>

20.29.2. ストレージプールの検索

virsh find-storage-pool-sources-as type コマンドは、特定のタイプを指定して、潜在的なストレージプールのソースを見つけます。タイプには、netfs、disk、dir、fs、iscsi、logical、および gluster が含まれます。すべてのタイプがストレージバックエンドドライバーに対応しており、さらに多くのタイプが利用可能であることに注意してください (詳細については、man ページを参照してください)。また、オプションの引数 hostportinitiator も指定できます。このオプションのそれぞれが、クエリーを受けるものを決定します。

例20.72 潜在的なストレージプールソースを見つける方法

次の例では、指定したホストマシンのディスクベースのストレージプールを検索します。ホスト名がわからない場合は、virsh hostname コマンドを最初に実行してください。
# virsh find-storage-pool-sources-as disk --host myhost.example.com

20.29.3. ストレージプール情報のリスト表示

virsh pool-info pool コマンドは、指定したストレージプールオブジェクトの基本情報をリスト表示します。このコマンドには、ストレージプールの名前または UUID が必要です。この情報を取得するには、pool-list コマンドを使用します。

例20.73 ストレージプールの情報を取得する方法

以下の例は、vdisk という名前のストレージプールに関する情報を取得します。
# virsh pool-info vdisk

Name:           vdisk
UUID:
State:          running
Persistent:     yes
Autostart:      no
Capacity:       125 GB
Allocation:     0.00
Available:      125 GB

20.29.4. 利用可能なストレージプールのリスト表示

virsh pool-list は、libvirt が認識しているすべてのストレージプールオブジェクトをリスト表示します。デフォルトでは、アクティブなプールのみがリスト表示されます。--inactive 引数を使用すると非アクティブなプールのみがリスト表示され、--all 引数を使用するとすべてのストレージプールがリスト表示されます。このコマンドは、以下のオプション引数を取ります。これにより、検索結果をフィルターにかけます。
  • --inactive - 非アクティブなストレージプールのリストを表示します。
  • --all - アクティブなストレージプールと非アクティブなストレージプールの両方をリスト表示します。
  • --persistent - 永続ストレージプールのリストを表示します。
  • --transient - 一時的なストレージプールのリストを表示します。
  • --autostart - 自動起動が有効になっているストレージプールのリストを表示します。
  • --no-autostart - 自動起動が無効になっているストレージプールのリストを表示します。
  • --type type - 指定したタイプのプールのみをリスト表示します。
  • --details - ストレージプールの拡張内容のリストを表示します。
上記の引数に加えて、リストのコンテンツをフィルタリングするために使用できるフィルタリングフラグのセットがいくつかあります。--persistent は、リストを永続プールに制限します。--transient はリストを一時的なプールに制限し、--autostart はリストをプールの自動起動に制限し、最後に --no-autostart は、自動起動が無効になっているストレージプールにリストを制限します。
--typeを必要とするすべてのストレージプールコマンドでは、プールタイプをコンマで区切る必要があります。有効なプールタイプには、dirfsnetfslogicaldiskiscsiscsimpathrbdsheepdog、および gluster が含まれます。
--details オプションは、virsh に対して、プール永続性と利用可能な容量関連の情報を追加で表示するように指示します。
注記
このコマンドを古いサーバーで使用すると、固有の競合で一連の API 呼び出しの使用が強制されます。ここでは、リストの収集中にプールの状態が呼び出し間で変更した場合に、プールがリストに表示されなかったり、複数回表示されたりすることがあります。ただし、新しいサーバーにはこの問題はありません。

例20.74 すべてのストレージプールのリストを表示する方法

この例では、アクティブおよび非アクティブの両方のストレージプールのリストを表示します。
# virsh pool-list --all
Name                 State      Autostart
-----------------------------------------
default             active     yes
vdisk               active     no

20.29.5. ストレージプールリストの更新

virsh pool-refresh pool コマンドは、ストレージプールに含まれるストレージボリュームのリストを更新します。

例20.75 ストレージプール内のストレージボリュームのリストを更新する方法

以下の例では、vdisk という名前のストレージボリュームのリストを更新します。
# virsh pool-refresh vdisk

Pool vdisk refreshed

20.29.6. ストレージプールの作成、定義、および起動

20.29.6.1. ストレージプールの構築

virsh pool-build pool コマンドは、コマンドに指定した名前を使用してストレージプールを構築します。オプションの引数 --overwrite および --no-overwrite は、FS ストレージプール、またはディスクタイプベースのストレージプール、または論理タイプベースのストレージプールでのみ使用できます。[--overwrite] または [--no-overwrite] がなく、使用されるプールが FS の場合は、タイプが実際にディレクトリーベースであることを前提としています。プール名のほかに、ストレージプール UUID も使用することが可能です。
--no-overwrite を指定すると、プローブにより、ファイルシステムがターゲットデバイスにすでに存在するかどうかを判断したり、存在する場合はエラーを返すか、存在しない場合は mkfs を使用してターゲットデバイスをフォーマットします。--overwrite を指定した場合は、mkfs コマンドが実行され、ターゲットデバイスに存在するデータがすべて上書きされます。

例20.76 ストレージプールを構築する方法

以下の例では、vdisk という名前のディスクベースのストレージプールを作成します。
# virsh pool-build vdisk

Pool vdisk built

20.29.6.2. XML ファイルからのストレージプールの定義

virsh pool-define file コマンドは、XML file からストレージプールオブジェクトを作成するが、起動しません。

例20.77 XML ファイルからストレージプールを定義する方法

この例では、ストレージプールの設定を含む XML ファイルが作成されていることを前提としています。以下に例を示します。
<pool type="dir">
	<name>vdisk</name>
	<target>
          <path>/var/lib/libvirt/images</path>
	</target>
</pool>
以下のコマンドは、XML ファイル (この例では vdisk.xml) からディレクトリータイプのストレージプールを構築します。
# virsh pool-define vdisk.xml

Pool vdisk defined
ストレージプールが定義されたことを確認するには、例20.74「すべてのストレージプールのリストを表示する方法」 に示されているように virsh pool-list --all コマンドを実行します。ただし、コマンドを実行すると、プールが起動していないとステータスが inactive と表示されます。ストレージプールを起動する方法は、例20.81「ストレージプールを起動する方法」を参照してください。

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

virsh pool-create file コマンドは、関連付けられた XML ファイルからストレージプールを作成して起動します。

例20.78 XML ファイルからストレージプールを作成する方法

この例では、ストレージプールの設定を含む XML ファイルがすでに作成されていることを前提としています。以下に例を示します。
<pool type="dir">
	<name>vdisk</name>
	<target>
          <path>/var/lib/libvirt/images</path>
	</target>
</pool>
以下の例では、XML ファイル (この例では vdisk.xml) に基づいて、ディレクトリータイプのストレージプールを構築します。
# virsh pool-create vdisk.xml

Pool vdisk created
ストレージプールが作成されたことを確認するには、例20.74「すべてのストレージプールのリストを表示する方法」 に示されているように virsh pool-list --all コマンドを実行します。ただし、コマンドを実行すると、プールが起動していないとステータスが inactive と表示されます。ストレージプールを起動する方法は、例20.81「ストレージプールを起動する方法」を参照してください。

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

virsh pool-create-as name コマンドは、指定した raw パラメーターからプールオブジェクト名を作成して開始します。このコマンドには、以下のオプションがあります。
  • --print-xml - XML ファイルの内容を表示しますが、そこからストレージプールを定義または作成しません。
  • --type type は、ストレージプールタイプを定義します。使用できるタイプは、「利用可能なストレージプールのリスト表示」 を参照してください。
  • --source-host hostname - 基となるストレージのソースホスト物理マシン
  • --source-path path - 基となるストレージの場所
  • --source-dev path - 基となるストレージのデバイス
  • --source-name name - ソースの基となるストレージの名前
  • --source-format format - ソースの基となるストレージの形式
  • --target path - 基となるストレージのターゲット

例20.79 ストレージプールを作成して起動する方法

以下の例では、/mnt ディレクトリーに、vdisk という名前のストレージプールを作成して起動します。
# virsh pool-create-as --name vdisk --type dir --target /mnt

Pool vdisk created

20.29.6.5. ストレージプールの定義

virsh pool-define-as <name> コマンドは、指定した raw パラメーターからプールオブジェクト名を作成しますが、起動しません。このコマンドには、以下のオプションが使用できます。
  • --print-xml - XML ファイルの内容を表示しますが、そこからストレージプールを定義または作成しません。
  • --type type は、ストレージプールタイプを定義します。使用できるタイプは、「利用可能なストレージプールのリスト表示」 を参照してください。
  • --source-host hostname - 基となるストレージのソースホスト物理マシン
  • --source-path path - 基となるストレージの場所
  • --source-dev devicename - 基となるストレージのデバイス
  • --source-name sourcename - 基となるストレージの名前
  • --source-format format - 基となるストレージの形式
  • --target targetname - 基となるストレージのターゲット
--print-xml を指定すると、プールを作成または定義せずに、プールオブジェクトの XML を出力します。それ以外の場合は、プールを構築するためには指定のタイプが必要になります。type を必要とするすべてのストレージプールコマンドでは、プールタイプをコンマで区切る必要があります。有効なプールタイプには、dirfsnetfslogicaldiskiscsiscsimpathrbdsheepdog、および gluster が含まれます。

例20.80 ストレージプールを定義する方法

以下の例では、vdisk という名前のストレージプールを定義しますが、起動はしません。このコマンドを実行したら、virsh pool-start コマンドを使用してストレージプールをアクティブにします。
# virsh pool-define-as --name vdisk --type dir --target /mnt

Pool vdisk defined

20.29.6.6. ストレージプールの起動

virsh pool-start pool コマンドは、指定したストレージプールを開始します。このストレージプールは以前定義されていましたが、非アクティブです。このコマンドは、ストレージプールの UUID とプールの名前を使用することもできます。

例20.81 ストレージプールを起動する方法

以下の例では、例20.78「XML ファイルからストレージプールを作成する方法」 で作成した vdisk ストレージプールを起動します。
# virsh pool-start vdisk

Pool vdisk started
プールが開始したことを確認するには、例20.74「すべてのストレージプールのリストを表示する方法」 に示すように、virsh pool-list --all コマンドを実行し、ステータスが有効であることを確認します。

20.29.6.7. ストレージプールの自動起動

virsh pool-autostart pool コマンドを使用すると、システムの起動時にストレージプールが自動的に起動します。このコマンドには、プール名または UUID が必要です。pool-autostart コマンドを無効にするには、コマンドに --disable 引数を使用します。

例20.82 ストレージプールの自動起動方法

以下の例では、例20.78「XML ファイルからストレージプールを作成する方法」 で作成した vdisk ストレージプールを自動起動します。
# virsh pool-autostart vdisk

Pool vdisk autostarted

20.29.7. ストレージプールの停止および削除

virsh pool-destroy pool コマンドは、ストレージプールを停止します。停止すると、libvirt はプールを管理しなくなりますが、プールに含まれる生データは変更されず、後で pool-create コマンドを使用して復元できます。

例20.83 ストレージプールを停止する方法

以下の例では、例20.78「XML ファイルからストレージプールを作成する方法」 で作成した vdisk ストレージプールを停止します。
# virsh pool-destroy vdisk

Pool vdisk destroyed
virsh pool-delete pool コマンドは、指定したストレージプールが使用しているリソースを破壊します。この操作は復元できず、元に戻せないことに注意してください。ただし、プール構造はこのコマンドの後に依然として存在し、新しいストレージボリュームの作成を受け入れる準備ができています。

例20.84 ストレージプールを削除する方法

以下の例では、例20.78「XML ファイルからストレージプールを作成する方法」 に組み込まれているvdisk ストレージプールを削除します。
# virsh pool-delete vdisk

Pool vdisk deleted
virsh pool-undefine pool コマンドは、非アクティブなプールの設定を定義します。

例20.85 ストレージプールの定義を解除する方法

以下の例では、例20.78「XML ファイルからストレージプールを作成する方法」 で作成したvdisk ストレージプールの定義を解除します。これにより、ストレージプールが一時的になります。
# virsh pool-undefine vdisk

Pool vdisk undefined

20.29.8. プール用の XML ダンプファイルの作成

virsh pool-dumpxml pool コマンドは、指定されたストレージプールオブジェクトの XML 情報を返します。オプション --inactive を使用すると、現在のプール設定の代わりに、次回のプール開始時に使用される設定がダンプされます。

例20.86 ストレージプールの設定を取得する方法

以下の例では、例20.78「XML ファイルからストレージプールを作成する方法」 で作成した vdisk ストレージプールの設定を取得します。コマンドを実行すると、設定ファイルはターミナルで開きます。
# virsh pool-dumpxml vdisk
<pool type="dir">
	<name>vdisk</name>
	<target>
          <path>/var/lib/libvirt/images</path>
	</target>
</pool>

20.29.9. ストレージプールの設定ファイルの編集

pool-edit pool コマンドは、指定したストレージプールの XML 設定ファイルを開いて編集します。
この方法は、適用する前にエラーをチェックするため、XML 設定ファイルの編集に使用すべき唯一の方法です。

例20.87 ストレージプールの設定を編集する方法

以下の例では、例20.78「XML ファイルからストレージプールを作成する方法」 で作成した vdisk ストレージプールの設定を編集します。コマンドを実行すると、設定ファイルがデフォルトエディターで開きます。
# virsh pool-edit vdisk
<pool type="dir">
	<name>vdisk</name>
	<target>
          <path>/var/lib/libvirt/images</path>
	</target>
</pool>