23.18. ストレージプール
すべてのストレージプールのバックエンドは、同じパブリック API と XML 形式を共有しますが、機能のレベルは異なります。ボリュームの作成を許可するものと、既存のボリュームのみを使用できるものがあります。ボリュームのサイズや配置に制限がある場合があります。
ストレージプールドキュメントのトップレベル要素は
<pool>
です。これには、dir, fs, netfs, disk, iscsi, logical, scsi, mpath, rbd, sheepdog
または gluster
の値をとる 1 つの属性 type
があります。
23.18.1. ストレージプールのメタデータの提供
以下の XML の例は、ストレージプールに追加できるメタデータタグを示しています。この例では、プールが iSCSI ストレージプールです。
図23.79 一般的なメタデータタグ
<pool type="iscsi"> <name>virtimages</name> <uuid>3e3fce45-4f53-4fa7-bb32-11f34168b82b</uuid> <allocation>10000000</allocation> <capacity>50000000</capacity> <available>40000000</available> ... </pool>
この例で使用される要素は、表23.27「virt-sysprepコマンド」 で説明されています。
要素 | 説明 |
---|---|
<name> | ホスト物理マシンに固有である必要があるストレージプールの名前を指定します。これは、ストレージプールを定義する際に必須になります。 |
<uuid> | ストレージプールの識別子を指定します。この識別子はグローバルに一意である必要があります。UUID の提供は任意ですが、ストレージプールの作成時に UUID が提供されていない場合は、UUID が自動的に生成されます。 |
<allocation> | ストレージプールへのストレージ割り当ての合計を提供します。メタデータのオーバーヘッドにより、これは、すべてのストレージボリュームにわたる割り当て合計より大きくなることがあります。この値はバイト単位で表されます。この要素は読み取り専用であり、値は変更しないでください。 |
<capacity> | プールの合計ストレージ容量を提供します。デバイスの制約により、ストレージボリュームの容量が不足している可能性があります。この値はバイト単位です。この要素は読み取り専用であり、値は変更しないでください。 |
<available> | ストレージプールに新しいストレージボリュームを割り当てるための空き領域を提供します。基となるデバイスの制約により、すべての空き領域を 1 つのストレージボリュームに割り当てることができない場合があります。この値はバイト単位です。この要素は読み取り専用であり、値は変更しないでください。 |
23.18.2. ソース要素
<pool>
要素内には、単一の <source>
要素が定義されます (1 つのみ)。<source>
の子要素は、ストレージプールタイプによって異なります。使用できる XML の例の一部を以下に示します。
図23.80 ソース要素オプション 1
... <source> <host name="iscsi.example.com"/> <device path="demo-target"/> <auth type='chap' username='myname'> <secret type='iscsi' usage='mycluster_myname'/> </auth> <vendor name="Acme"/> <product name="model"/> </source> ...
図23.81 ソース要素オプション 2
... <source> <adapter type='fc_host' parent='scsi_host5' wwnn='20000000c9831b4b' wwpn='10000000c9831b4b'/> </source> ...
<source>
が使用できる子要素は、表23.28「ソースの子要素のコマンド」 で説明されています。
要素 | 説明 |
---|---|
<device> | ホスト物理マシンデバイスによってバッキングされているストレージプールのソースを提供します (「ストレージプール」 に示すように、<pool type=> に基づいています)。バックエンドドライバーによっては複数回繰り返される場合があります。ブロックデバイスノードへの完全修飾パスである 1 つの属性path が含まれます。 |
<dir> | ディレクトリー (<pool type='dir'> ) がサポートするストレージプールのソースを提供します。またはオプションで、ファイルシステム (<pool type='gluster'> ) に基づくストレージプール内のサブディレクトリーを選択します。この要素は、(<pool> ) ごとに 1 回のみ発生する可能性があります。この要素は、バッキングディレクトリーのフルパスである 1 つの属性 (<path> ) を受け入れます。 |
<adapter> | SCSI アダプター (<pool type='scsi'> ) がサポートするストレージプールのソースを提供します。この要素は、(<pool> ) ごとに 1 回のみ発生する可能性があります。属性名は SCSI アダプター名 (例: "scsi_host1") になります。後方互換のために "host1" は引き続きサポートされていますが、推奨されません。属性type は、アダプタータイプを指定します。有効な値は 'fc_host'| 'scsi_host' です。省略し、name 属性を指定すると、デフォルトの type='scsi_host' になります。後方互換性を維持するため、属性のtype はtype='scsi_host' アダプターではオプションですが、type='fc_host' アダプターでは必須です。wwnn (Word Wide Node Name) 属性および wwpn (Word Wide Port Name) 属性は、type='fc_host' アダプターにより使用され、ファイバーチャネルストレージファブリックのデバイスを一意に識別します (デバイスは HBA または vHBA のいずれかです)。wnn と wpn の両方を指定する必要があります。(v)HBA の wnn/wwpn を取得する方法は、「デバイス設定の収集」 を参照してください。オプションの属性 parent は、type='fc_host' アダプターの親デバイスを指定します。 |
<ホスト> | リモートサーバー (type='netfs'|'iscsi'|'rbd'|'sheepdog'|'gluster' ) からのストレージによってバッキングされるストレージプールのソースを提供します。この要素は、<directory> 要素または <device> 要素と併用する必要があります。サーバーのホスト名または IP アドレスである属性name が含まれます。必要に応じて、プロトコル固有のポート番号の port 属性を含めることができます。 |
<auth> | 存在する場合は、<auth> 要素は、type 属性 (プール type='iscsi'|'rbd' ) の設定により、ソースへのアクセスに必要な認証情報を提供します。type は、type='chap' または type='ceph' にする必要があります。Ceph RBD (Rados Block Device) ネットワークソースに "ceph" を使用し、iSCSI ターゲットの CHAP (Challenge-Handshake Authentication Protocol) に "iscsi" を使用します。また、必須属性username は、認証時に使用するユーザー名と、必須属性タイプのサブ要素の secret を識別して、実際のパスワードまたはその他の認証情報を保持する libvirt 秘密オブジェクトに戻します。ドメインの XML は、パスワードを意図的に公開せず、パスワードを管理するオブジェクトへの参照のみを公開します。secret 要素は、秘密オブジェクトの UUID を持つ uuid 属性、または secret オブジェクトで指定された鍵に一致する usage 属性のいずれかを必要とします。 |
<name> | 指定した名前の要素<type> から、ストレージデバイスによりバッキングされるストレージプールのソースを提供します。これは、(type='logical'|'rbd'|'sheepdog','gluster' ) の値をとることができます。 |
<format> | ストレージプール<type> の形式に関する情報を提供します。この形式は、type='logical'|'disk'|'fs'|'netfs' の値を使用できます。この値はバックエンド固有であることに注意してください。通常、これはファイルシステムタイプ、ネットワークファイルシステムタイプ、パーティションテーブルタイプ、LVM メタデータタイプを示すために使用されます。すべてのドライバーにはデフォルト値が必要なため、この要素はオプションとなります。 |
<vendor> | ストレージデバイスのベンダーに関するオプション情報を提供します。これには、バックエンド固有の値を持つ 1 つの属性<name> が含まれます。 |
<product> | ストレージデバイスの製品名に関するオプション情報を提供します。これには、バックエンド固有の値を持つ 1 つの属性<name> が含まれます。 |
23.18.3. ターゲット要素の作成
以下のタイプ (
type='dir'|'fs'|'netfs'|'logical'|'disk'|'iscsi'|'scsi'|'mpath'
) のトップレベル内の <pool>
要素には、1 つの <target>
要素が含まれます。このタグは、ストレージプールのホストファイルシステムへのマッピングを説明するために使用されます。以下の子要素を含めることができます。
図23.82 ターゲット要素 XML の例
<pool> ... <target> <path>/dev/disk/by-path</path> <permissions> <owner>107</owner> <group>107</group> <mode>0744</mode> <label>virt_image_t</label> </permissions> <timestamps> <atime>1341933637.273190990</atime> <mtime>1341930622.047245868</mtime> <ctime>1341930622.047245868</ctime> </timestamps> <encryption type='...'> ... </encryption> </target> </pool>
表 (表23.29「ターゲットの子要素」) は、親
<target>
要素に有効な子要素を説明しています。
要素 | 説明 |
---|---|
<path> | ストレージプールがローカルファイルシステムの名前空間にマッピングされる場所を指定します。ファイルシステムまたはディレクトリーベースのストレージプールの場合は、ストレージボリュームが作成されるディレクトリーの名前になります。デバイスベースのストレージプールの場合は、デバイスのノードが存在するディレクトリーの名前になります。後者の場合、/dev/ は論理的な選択のように見えるかもしれませんが、デバイスのノードはオンデマンドで割り当てられるため、再起動後も安定しているとは限りません。/dev/disk/by-{path,id,uuid,label} の場所など、安定した場所を使用することが推奨されます。 |
<permissions> | 現在、これはディレクトリーベースまたはファイルシステムベースのストレージプールでのみ役に立ちます。これは、ディレクトリーとしてローカルファイルシステムの名前空間にマッピングされます。これは、ストレージプールの構築時に、最終ディレクトリーに使用するパーミッションに関する情報を提供します。<mode> 要素には、8 進数のパーミッションセットが含まれます。<owner> 要素には、数値のユーザー ID が含まれます。<group> 要素には数値のグループ ID が含まれます。<label> 要素には、MAC (SELinux など) ラベル文字列が含まれます。 |
<timestamps> | ストレージボリュームのタイミング情報を提供します。最大 4 つのサブ要素が含まれます。timestamps='atime'|'btime|'ctime'|'mtime' には、保存ボリュームのアクセス時間、作成時間、変更時間、および修正時間 (既知の場合) が格納されます。使用される時間形式は <seconds> です。エポックの開始 (1970 年 1 月 1 日) からの<nanoseconds> 。ナノ秒の解像度が 0 であるか、ホストのオペレーティングシステムまたはファイルシステムで対応していない場合は、ナノ秒の部分が省略されます。これは読み取り専用属性で、ストレージボリュームの作成時には無視されます。 |
<暗号化 (encryption)> | 存在する場合は、ストレージボリュームの暗号化方法を指定します。詳細は、libvirt upstream pages を参照してください。 |
23.18.4. デバイスエクステントの設定
ストレージプールで、基本となる配置または割り当て方法が公開される場合は、
<source>
要素の <device>
要素に、利用可能なエクステントに関する情報が含まれることがあります。ストレージプールによっては、ストレージボリュームを 1 つの制約 (ディスクパーティションプールなど) 内で完全に割り当てる必要があるという制約があります。したがって、エクステント情報を使用すると、アプリケーションが新しいストレージボリュームに可能な最大サイズを判断できます。
エクステント情報に対応するストレージプールの場合、各
<device>
要素には、<freeExtent>
要素が 0 個以上含まれます。これらの各要素には、デバイス上のエクステントの境界を提供する 2 つの属性 (<start>
および <end>
) が含まれます (バイト単位)。