KVMストレージ構成
libvirtは、KVMで使用するために構成できる様々なストレージ・メカニズムを処理します。そうしたメカニズムは、異なるプールまたはユニットに編成されています。デフォルトでは、libvirtは新しいディスクの作成にディレクトリベースのストレージ・プールを使用しますが、物理ディスク、NFS、iSCSIなどの様々なストレージ・タイプに対してプールを構成できます。
構成されているストレージ・プールのタイプに応じて、KVMで様々なストレージ・ボリュームをブロック・デバイスとして使用できるようになります。iSCSIプールを使用する場合など、ボリュームを定義する必要がないこともあります。これは、KVMにiSCSIターゲットのLUNが自動的に提示されるためです。
KVMでlibvirtを使用するために、異なるストレージ・プールとボリュームを定義する必要がないことに注意してください。これらのツールは、必要に応じてKVMによるストレージの使用方法と消費方法を管理するのに役立ちます。デフォルトのディレクトリベースのストレージを使用して、デフォルトの場所に手動でマウントしたストレージを使用できます。
KVM環境の複雑なストレージ要件の管理と構成が簡単になるように、Oracle Linux Virtualization Managerの使用をお薦めします。または、Cockpitを使用してKVMストレージを管理することもできます。詳細は、『Oracle Linux: Cockpit Webコンソールの使用』のストレージ管理タスクを参照してください。
ストレージ・プール: 作成および管理
ストレージ・プールによってストレージ・タイプの論理的なグループ化が可能になります。ストレージ・タイプは、ボリュームをホストするために使用でき、そのボリュームをVMのセットが仮想ディスクとして使用できます。多様なストレージ・タイプが用意されています。ローカル・ストレージは、ディレクトリベースのストレージ・プール、ファイル・システム・ストレージおよびディスクベースのストレージの形式で使用できます。その他のストレージ・タイプ(NFS、iSCSIなど)では、標準ネットワーク・ベースのストレージが提供され、RBDタイプでは分散ストレージが提供されます。詳細は、https://libvirt.org/storage.htmlを参照してください。
ストレージ・プールは、基盤となるストレージ・リソースをVM構成から抽象化するために役立ちます。この抽象化は、仮想ディスクなどのリソースが、物理的な場所やメディア・タイプを変更する可能性がある場合に役立ちます。ターゲット・パス、DNSまたはIPアドレス指定は時間とともに変化する可能性があるため、ネットワーク・ベースのストレージを使用するときに抽象化がより重要になります。この構成情報を抽象化することで、複数のKVMインスタンスを更新する必要なく、統合された方法でリソースを管理できるようになります。
ホストがリブートするまで使用可能な一時ストレージプールを作成することも、リブート後に復元される永続ストレージ・プールを定義することもできます。
一時ストレージ・プールは、作成直後に自動的に起動され、その中のボリュームは即座にVMで使用できるようになりますが、一時ストレージ・プールに関する構成情報は、プールの停止後、ホストのリブート後またはlibvirtdサービスが再起動された場合に失われます。ストレージ自体に影響はありませんが、一時ストレージ・プール内のリソースを使用するように構成されたVMは、そうしたリソースにアクセスできなくなります。一時ストレージ・プールは、virsh pool-createコマンドを使用して作成します。
ほとんどの場合に、永続ストレージ・プールの作成を検討する必要があります。永続ストレージ・プールは、構成エントリとして定義され、/etc/libvirt
内に格納されます。永続ストレージ・プールは停止および起動が可能で、ホスト・システムのブート時に起動するように構成できます。libvirtは、永続ストレージの構成時に、ネットワーク・ベースのリソースを自動的にマウントしてアクセスできるようにします。永続ストレージ・プールの作成にはvirsh pool-defineコマンドを使用するため、通常、そのプールを使用するには作成後に起動する必要があります。
ストレージ・プールの作成
virsh
ツールを使用します。
プールを作成したら、プール内にストレージ・ボリュームを作成できます。詳細は、「ストレージ・ボリュームの作成」を参照してください。
virt-install
を使用してVMを作成するときに、使用するプールを指定することもできます。--disk
引数と、pool
およびsize
サブ・オプションを含めます。次に例を示します:
virt-install
...
--disk pool=pool_name, size=80
ストレージ・ボリューム: 作成および管理
ストレージ・ボリュームはストレージ・プール内に作成され、1つ以上のVM内のブロック・デバイスとしてロードできる仮想ディスクに相当します。一部のストレージ・プール・タイプでは、ストレージ・ボリュームを個別に作成する必要はありません。ストレージ・メカニズムによって、すでにVMにブロック・デバイスとして設定されている場合があるためです。たとえば、iSCSIストレージ・プールは、iSCSIターゲットの個々の論理ユニット番号(LUN)を個別のブロック・デバイスとして指定します。
ディレクトリ・ベースまたはファイル・システム・ベースのストレージ・プールを使用する場合などは、仮想ディスクとして使用するためにストレージ・ボリュームを個別に作成します。その場合、いくつかのディスク・イメージ形式がサポートされていますが、一部の形式(qcow2
など)の作成には追加のツール(qemu-imgなど)が必要になることがあります。
ディスク・ベースのプールの場合、標準パーティション・タイプのラベルは個々のボリュームを表すために使用されます。論理ボリュームマネージャに基づくプールの場合、ボリューム自体がプール内で個別に提供されます。
ストレージ・ボリュームは、ボリュームの初期サイズの割当て値をボリュームの容量より低い値に設定することで、作成時にスパース割当てできます。割当てはボリュームの初期または現在の物理サイズを示し、容量はKVMに提供される仮想ディスクのサイズを示します。スパース割当ては、KVMが最初に使用可能なディスク領域よりも最終的に多くのディスク領域を必要とする可能性がある場合に、物理ディスク領域をオーバーサブスクライブするために使用されます。スパース割当てされていないボリュームの場合、割当てはボリュームの容量と同じかそれ以上になります。ディスクの容量を超えると、メタデータ用の領域が必要に応じて提供されます。
同じシステムの別のプールに同じ名前のボリュームがある場合、--pool
オプションを使用して、virshボリューム操作に使用するプールを指定する必要があります。この処理は後続の例で繰り返されます。
仮想ディスク: 作成および管理
通常、仮想ディスクは特定のパスに格納されているディスク・イメージに基づいて、ブロック・デバイスとしてVMにアタッチされます。仮想ディスクは、作成時にVMに対して定義することも、既存のVMに追加することもできます。
ノート:
仮想ディスクを管理するためのコマンドライン・ツールでは、ストレージ・ボリュームとストレージ・プールの処理に関して完全な一貫性があるわけではありません。既存のVMへの仮想ディスクのアタッチ
virsh attach-disk
コマンドを使用します。
既存のVMにボリュームをアタッチするコマンドライン・ツールは制限されており、cockpitなどのGUIツールはこの操作により適しています。ボリュームに関する作業が頻繁になると予想される場合は、Oracle Linux Virtualization Managerの使用を検討してください。
VM作成時の仮想ディスクのアタッチ
VMの作成時に、ストレージ・ボリュームを仮想ディスクとしてVMにアタッチできます。virt-installコマンドを使用すると、ボリュームまたはストレージ・プールを直接指定できます。その場合は、--disk
オプションを使用します。