NAS構成において、libvirtのストレージプールを利用します。
以下ではそのための事前準備について説明します。
サポートするlibvirtのストレージプールの構成
サポートする構成は以下のとおりです。
サポートするlibvirtのストレージプールの属性が"netfs"である
同一のターゲットパスを指定する同一構成定義のlibvirtのストレージプールがVMホスト間で定義されている
サポートするフォーマット
qcow2フォーマットのイメージファイルをサポートします。
シン・プロビジョニングを利用したストレージの有効活用
qcow2フォーマットのイメージファイルは、スパース割り当てです。
これをシン・プロビジョニングとして、扱います。
シン・プロビジョニングとは、ストレージ容量を仮想化する技術です。ストレージの効率的な活用を実現します。
事前に、必要な容量を確保する必要がなく、実際に利用している容量に応じて容量を確保し、必要に応じて拡張できる機能です。
本製品で、NAS構成を利用する場合には、シン・プロビジョニングの設定が必要です。
シン・プロビジョニングの属性が設定されたストレージプールに仮想ストレージリソースを登録することで、シンフォーマットのディスクリソースとしてL-Serverに割り当てます。
シン・プロビジョニングの属性が設定されていないストレージプールには、libvirtのストレージプールを仮想ストレージリソースとして登録できません。
なお、仮想ストレージリソースからシックフォーマットのディスクリソースは、切り出せません。
ストレージプールに対するシン・プロビジョニング属性の設定方法については、「操作ガイド インフラ管理者編 (リソース管理) CE」の「20.2 作成」を参照してください。
ストレージプールの容量表示、および空き容量の計算方法については、「操作ガイド インフラ管理者編 (リソース管理) CE」の「20.6 表示」を参照してください。
ストレージ環境の事前設定
libvirtのストレージプールを利用したNAS構成において、libvirtのストレージプールでターゲットパスとして指定されるディレクトリ領域が仮想ストレージリソースとして認識されます。
そのディレクトリ領域上に、qcow2フォーマットのイメージファイルが格納されます。仮想ストレージリソースから自動生成したディスクリソースとして扱います。
libvirtのストレージプールを利用したストレージ環境において、以下の事前設定が必要です。
NFSサーバの設定
NFSクライアントであるKVMホスト側での、libvirtのストレージプールの設定
NFSサーバでの設定
共有ディレクトリは、libvirtのストレージプールでソースパスとして指定されるディレクトリです。
VMゲストが使用するイメージファイルが配置されます。
NFSクライアントであるVMホストからアクセスできるよう、共有ディレクトリの設定を行ってください。
以下に設定の条件を記載します。
NFS v3で利用できるように設定します。
Read/Writeアクセスができるように設定します。
なお、NFSに対するI/Oを同期で行う設定を推奨します。
共有ディレクトリについての制約事項
共有ディレクトリ1つにつき、NFSサーバ上で1つのディスクを割り当てください。
例
[root@NFSServer1 ~]# cat /etc/exports <RETURN>
/home/NFS/NFSStorage_01 *(rw,no_root_squash)
/home/NFS/NFSStorage_02 *(rw,no_root_squash)
/home/NFS/NFSStorage_03 *(rw,no_root_squash)
/home/NFS/NFSStorage_04 *(rw,no_root_squash) [root@NFSServer1 ~]# mount <RETURN> ... /dev/vdb on /home/NFS/NFSStorage_01 type ext4 (rw) /dev/vdc on /home/NFS/NFSStorage_02 type ext4 (rw) /dev/vdd on /home/NFS/NFSStorage_03 type ext4 (rw) /dev/vde on /home/NFS/NFSStorage_04 type ext4 (rw) |
共有ディレクトリ配下には、本製品が作成するファイルやディレクトリ以外を配置しないでください。
共有ディレクトリ配下の本製品が作成するファイルやディレクトリを編集しないでください。
注意
上記の制約事項が守られない場合、仮想ストレージリソースの容量管理ができない場合や本製品の操作が失敗する場合があります。
Red Hat Enterprise Linux 6において、バージョン3に変更する方法について
NFS サーバ側の /etc/sysconfig/nfs のRPCNFSDARGS行において、RPCNFSDARGS="-N 4"行を有効にしてください。変更後は、NFS サーバ側で NFS サービスの再起動が必要です。
NFSサーバにおいて、共有ディレクトリにマウントしたディスクについては、NFSサーバの再起動などでアンマウントされないようにしてください。
NFSクライアントであるKVMホスト側での、libvirtのストレージプールの設定
各VMホストでは、共有ディレクトリを、ソースパスとして指定するlibvirtのストレージプールを作成してください。
その際、libvirtのストレージプールの構成定義は、各VMホストで以下の項目が同一になるようにしてください。
名前(1)
uuid(2)
NFSサーバのip(3)
ソースパス(4)
ターゲットパス(5)
注意
上記の設定項目に以下の文字を含めないでください。以下の文字がどれか1つでも含まれている場合、仮想ストレージリソースとして検出できません。
空白(" ")
全角文字列
円マーク("¥")
ダブルクォーテーション(")
シングルクォーテーション(')
セミコロン(";")
丸括弧"()"
例
以下に、libvirtのストレージプールの構成定義例を示します。
<pool type='netfs'> <name>rcxnfs</name>(1) <uuid>bd0a2edc-66fb-e630-d2c9-cafc85a9cd29</uuid>(2) <capacity>52844822528</capacity> <allocation>44229459968</allocation> <available>8615362560</available> <source> <host name='192.168.1.1'/>(3) <dir path='/root/rcx_nfs'/>(4) <format type='nfs'/> </source> <target> <path>/root/rcx_lib_pool</path>(5) <permissions> <mode>0700</mode> <owner>-1</owner> <group>-1</group> </permissions> </target> </pool> |
NFS_1,NFS_2: NFSサーバ上の共有ディレクトリ
複数VMホスト間でのlibvirtのストレージプールの共有構成について
共有ディレクトリへのアクセス範囲である各VMホストにおいて、libvirtのストレージプールは同じように定義することを推奨します。
NFS_1~4の各アクセス範囲内の各VMホストに合わせて、同じように定義します。
以下に例示します。
NFS_1~4: NFSサーバ上の共有ディレクトリ
L_SP1~4: libvirtのストレージプール
設定手順
上記設定を行うために推奨する手順について説明します。
libvirtのストレージプールの作成
VMホスト上でlibvirtのストレージプールを作成します。
virt-manangerやvirsh pool-defineコマンドで作成できます。
virshコマンドの使用法、libvirtのストレージプールについては、「Virtualization Administration Guide」の以下を参照してください。
Chapter 14. Managing guests virtual machines with virsh
Chapter 11. Storage concepts
Chapter 12. Storage pools
URL: https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/index.html |
ポイント
virt-managerで、libvirtのストレージプールを作成する場合、libvirtのストレージプール構成定義ファイルは自動的に作成されます。
virsh pool-defineコマンドで作成する場合、libvirtのストレージプール構成定義ファイルを用意してください。
なお、libvirtのストレージプールの構成定義ファイルは、VMホスト上の/etc/libvirt/storage/に配置してください。
VMホスト上で、libvirtのストレージプール構成定義ファイル("libvirtのストレージプールの名前".xml)において、以下を確認してください。
名前
uuid
NFSサーバのip
ソースパス
ターゲットパス
注意
uuidの定義が存在するか確認してください。
<pool type='netfs'>と定義されていることを確認してください。
構成定義ファイル名は変更しないでください。
libvirtのストレージプールの名前.xml以外のファイル名である場合、libvirtd 再起動時に構成定義ファイルが読み込まれず、libvirtのストレージプールの定義がなくなります。
libvirtのストレージプールの定義が作成されているか確認してください。
以下は、コマンドでlibvirtのストレージプールの定義が表示される場合の例です。
例
# virsh pool-list --all <RETURN>
Name State Autostart
------------------------------------------------------------------
default active yes
rcxnfs active no
nfstest active yes |
libvirtのストレージプールのAutostartの情報がyesであることを確認してください。
Autostartがnoの場合には、libvirtのストレージプールの自動起動の設定を行ってください。
以下はコマンドでの例です。
例
virsh pool-autostart rcxnfs |
注意
本設定を行わない場合、libvirtd 再起動時などでlibvirtのストレージプールの状態がinactiveのままとなり、仮想ストレージリソースとして使用できないことがあります。
各VMホスト上での作成
以下のvirshコマンドを実行して、手順1.のa.で作成した構成定義と同じ定義を、各VMホスト上で作成します。
virsh pool-define libvirtのストレージプールの構成定義ファイルのフルパス |
例
virsh pool-define /etc/libvirt/storage/rcxnfs.xml |
libvirtのストレージプールの構成定義ファイルは、VMホスト上の/etc/libvirt/storage/に配置してください。
注意
libvirtのストレージプールの構成定義ファイルは、VMホスト上の、/etc/libvirt/storage/以外に配置すると、libvirtd 再起動時に構成定義ファイルが読み込まれず、libvirtのストレージプールの定義がなくなります。
手順1.のb.で作成した構成定義ファイルとvirsh pool-defineコマンドを使用して、他の各VMホスト上でlibvirtのストレージプールを作成してください。virt-managerコマンドを使用するとuuidを指定できないため、各KVMホスト間で、libvirtのストレージプールの構成定義ファイル中の"uuid"を一致させることができません。
手順1.のc.と同様に、libvirtのストレージプールの定義が作成されているか各VMホストで確認してください。
手順1.のd.と同様に、libvirtのストレージプールのAutostartの情報がyesであることを各VMホストで確認してください。
Autostartがnoの場合には、libvirtのストレージプールの自動起動の設定を行ってください。
手順1.のe.と同様に、libvirtのストレージプールのStateの情報がactiveであることを各VMホストで確認してください。inacticeの場合、起動させてください。
参考
VMホストをストレージ管理製品として登録することにより、libvirtのストレージプールで指定するターゲットパスのディレクトリ領域を仮想ストレージリソースとして自動検出します。
仮想ストレージリソース名は、libvirtのストレージプールの名前が使用されます。
名前に下記の文字以外が含まれている場合、その文字をハイフン("-")に置き換えます。
数字(0~9)
英大文字(A~Z)、英小文字(a~z)
ハイフン("-")、アンダースコア("_")
libvirtのストレージプールの名前に全角文字が含まれる場合、libvirtのストレージプールが検出されません。
本製品が同一名のlibvirtのストレージプールを複数検出した場合は、libvirtのストレージプールの名前の末尾に1から採番される追番(例: "_1")をつけたものが仮想ストレージリソース名になります。