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

libvirt を使用すると、ストレージボリュームを仮想マシン内のデバイスとして表示するために使用されるファイル、raw パーティション、およびドメイン固有の形式を含む、さまざまなストレージソリューションを管理できます。この機能についての詳細は、libvirt upstream pages を参照してください。ストレージプールを管理するためのコマンドの多くは、ゲスト仮想マシンに使用されるコマンドに類似したものです。

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

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

例20.72 利用可能なストレージプールの 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 ページを参照してください)。また、このコマンドはオプションの引数 hostport および initiator を取ります。これらのオプションのそれぞれは照会される内容を決定します。

例20.73 ストレージプールソースを検索する方法

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

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

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

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

以下の例では、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 を必要とするストレージプールコマンドではすべて、プールのタイプはコンマで区切る必要があります。有効なプールのタイプには、dirfsnetfslogicaldiskiscsiscsimpathrbd、および sheepdoggluster があります。
--details オプションは virsh に対し、プールの永続性や容量に関連した情報を追加で表示します (ある場合)。

注記

このコマンドが古いサーバーに対して使用される場合、競合を継承する一連の API 呼び出しの使用が強制されます。これにより、一覧が収集されている間に複数の呼び出し間の状態が変更される場合、プールは一覧表示されなくなるか、または複数回表示される可能性があります。ただし、新しいサーバーの場合は、この問題は発生しません。

例20.75 すべてのストレージプールを一覧表示する方法

以下の例では、アクティブと非アクティブの両方のストレージプールが一覧表示されます。
virsh pool-list --all
Name                 State      Autostart
-----------------------------------------
default             active     yes
vdisk               active     no

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

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

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

以下の例では、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.77 ストレージプールを構築する方法

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

Pool vdisk built

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

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

例20.78 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.75「すべてのストレージプールを一覧表示する方法」 に示されているように virsh pool-list --all コマンドを実行します。ただし、このコマンドの実行時には、プールが起動していないためにステータスは非アクティブになります。ストレージプールの説明については、例20.82「ストレージプールの開始方法」 を参照してください。

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

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

例20.79 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.75「すべてのストレージプールを一覧表示する方法」 に示されているように virsh pool-list --all コマンドを実行します。ただし、このコマンドの実行時にはプールが起動していないためにステータスは非アクティブになります。ストレージプールの説明については、例20.82「ストレージプールの開始方法」 を参照してください。

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

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

例20.80 ストレージプールの作成および開始方法

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

Pool vdisk created

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

virsh pool-define-as <name> コマンドは指定された生のパラメーターからプールオブジェクト名を作成しますが、これを開始しません。このコマンドは以下のオプションを受け入れます。
  • --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.81 ストレージプールを定義する方法

以下の例では、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.82 ストレージプールの開始方法

以下の例では、vdisk で構築した 例20.79「XML ファイルによるストレージプールの作成方法」 ストレージプールを開始します。
virsh pool-start vdisk

Pool vdisk started
プールが開始したことを確認するには、virsh pool-list --all に示されるように 例20.75「すべてのストレージプールを一覧表示する方法」 コマンドを開始し、ステータスがアクティブであることを確認します。

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

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

例20.83 ストレージプールの自動起動を実行する方法

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

Pool vdisk autostarted

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

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

例20.84 ストレージプールの停止方法

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

Pool vdisk destroyed
virsh pool-delete pool コマンドは、指定されたストレージプールで使用されたリソースを破棄します。この操作は回復不可能で、元に戻すことができないことに注意してください。ただし、プール構成はこのコマンドの実行後もそのまま存在し、新規ストレージボリュームの作成が可能です。

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

以下の例では、vdisk で構築した 例20.79「XML ファイルによるストレージプールの作成方法」 ストレージプールを削除します。
virsh pool-delete vdisk

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

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

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

Pool vdisk undefined

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

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

例20.87 ストレージプール設定の取得方法

以下の例では、vdisk で構築した 例20.79「XML ファイルによるストレージプールの作成方法」 ストレージプール設定を取得します。設定ファイルは端末で開かれます。
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.88 ストレージプール設定の編集方法

以下の例では、vdisk で構築した 例20.79「XML ファイルによるストレージプールの作成方法」 ストレージプール設定を編集します。設定ファイルはデフォルトのエディターで開かれます。
virsh pool-edit vdisk
<pool type="dir">
	<name>vdisk</name>
	<target>
          <path>/var/lib/libvirt/images</path>
	</target>
</pool>