2.3. LVM 論理ボリューム
LVM では、ボリュームグループは論理ボリュームに分割されます。以下のセクションでは、論理ボリュームのタイプを説明します。
2.3.1. リニアボリューム
リニアボリュームは、複数の物理ボリュームの領域を 1 つの論理ボリュームに統合します。たとえば、60GB ディスクが 2 つある場合は、120GB の論理ボリュームを作成できます。物理ストレージは連結されます。
リニアボリュームを作成すると、論理ボリュームの領域に、物理エクステントの範囲が順番に割り当てられます。たとえば、図2.2「エクステントのマッピング」 にあるように、1 から 99 までの論理エクステントが 1 つ目の物理ボリュームにマッピングされ、100 から 198 までの論理エクステントが 2 つ目の物理ボリュームにマッピングされます。アプリケーションからは、サイズが 198 エクステントのデバイスが 1 つあるように見えます。
図2.2 エクステントのマッピング
[D]
論理ボリュームを設定する物理ボリュームのサイズは、同じである必要はありません。図2.3「サイズの異なる物理ボリュームを用いたリニアボリューム」 物理エクステントサイズが 4MB のボリュームグループ
VG1
を表示します。このボリュームグループには、PV1
と PV2
という名前の 2 つの物理ボリュームが含まれます。1 エクステントは 4MB なので、物理ボリュームが分割される単位は 4MB になります。この例では、PV1
は 200 エクステントのサイズ(800MB)で、PV2
はサイズが 100 エクステント(400 MB)です。リニアボリュームは、エクステントサイズ 1 から 300 (4MB から 1200MB) の間で作成できます。この例では、LV1
という名前のリニアボリュームのサイズは 300 エクステントです。
図2.3 サイズの異なる物理ボリュームを用いたリニアボリューム
[D]
物理エクステントのプールから、必要なサイズの複数のリニア論理ボリュームを設定できます。図2.4「複数の論理ボリューム」 は、図2.3「サイズの異なる物理ボリュームを用いたリニアボリューム」 と同じボリュームグループを示していますが、この場合、2 つの論理ボリュームがボリュームグループから抜け出されています。
LV1
は、サイズが 250 のエクステント(1000MB)と LV2
(サイズが 50 エクステント)の LV2 です。
図2.4 複数の論理ボリューム
[D]
2.3.2. ストライプ化論理ボリューム
LVM 論理ボリュームにデータを書き込む際に、ファイルシステムは、基になる物理ボリューム全体にデータを分配します。このとき、ストライプ化論理ボリュームを作成すると、データを物理ボリュームに書き込む方法を制御できます。順次の読み取りおよび書き込みが大量に行われる場合には、これによりデータ I/O の効率を向上できます。
ストライピングは、ラウンドロビン式で、指定した数の物理ボリュームにデータを書き込んでいくことで、パフォーマンスを向上させます。I/O は、ストライピングでは並行して実行されます。これにより、ストライプで追加される各物理ボリュームでは、ほぼ直線的なパフォーマンスの向上が期待できます。
以下は、3 つの物理ボリュームにデータがストライプ化されている状態を示しています。この図は、以下のようになります。
- データの 1 番目のストライプは、1 番目の物理ボリュームに書き込まれます。
- データの 2 番目のストライプは、2 番目の物理ボリュームに書き込まれます。
- データの 3 番目のストライプは、3 番目の物理ボリュームに書き込まれます。
- データの 4 番目のストライプは、1 番目の物理ボリュームに書き込まれます。
ストライプ化された論理ボリュームでは、ストライプのサイズは、エクステントのサイズより小さくなります。
図2.5 3 つの PV にまたがるデータのストライピング
[D]
ストライプ化論理ボリュームは、別のデバイスセットを最初のセットの末端に連結すれば拡張できます。ストライプ化論理ボリュームを拡張するには、ストライプに対応するボリュームグループを設定する、基になる物理ボリュームセットに、十分な空き領域が必要です。たとえば、ボリュームグループ全域を使用している 2 way ストライプがある場合は、そのボリュームグループに物理ボリュームを 1 つだけ追加しても、ストライプは拡張できません。ボリュームグループには物理ボリュームを 2 つ以上追加する必要があります。ストライプ化ボリュームの拡張の詳細は、「ストライプ化ボリュームの拡張」 を参照してください。
2.3.3. RAID 論理ボリューム
LVM は、RAID0、1、4、5、6、および 10 に対応します。LVM RAID ボリュームには以下の特徴があります。
- LVM で作成および管理される RAID 論理ボリュームは、MD カーネルドライバーを使用します。
- RAID1 イメージはアレイから一時的に切り離して、後でアレイにマージし直すことができます。
- LVM RAID ボリュームはスナップショットに対応
RAID 論理ボリュームの作成方法は、「RAID 論理ボリューム」 を参照してください。
注記
RAID 論理ボリュームはクラスターには対応していません。RAID 論理ボリュームは、1 台のマシンに作成して排他的にアクティブにすることができますが、複数のマシンで同時にアクティブにすることはできません。
2.3.4. シンプロビジョニングされた論理ボリューム (シンボリューム)
論理ボリュームは、シンプロビジョニングにできます。これにより、利用可能なエクステントよりも大きな論理ボリュームを作成できます。シンプロビジョニングを使用すると、シンプールと呼ばれる、空き領域のストレージプールを管理でき、アプリケーションで必要になった時に任意の数のデバイスに割り当てることができます。後でアプリケーションが実際に論理ボリュームに書き込むときに割り当てられるように、シンプールにバインドするデバイスを作成できます。シンプールは、ストレージ領域をコスト効率よく割り当てる必要がある場合に、動的に拡張できます。
注記
クラスターのノード間では、シンボリュームに対応していません。シンプールとそのすべてのシンボリュームは、1 つのクラスターノードで排他的にアクティブにする必要があります。
ストレージ管理者は、シンプロビジョニングを使用することで物理ストレージをオーバーコミットできるため、多くの場合は、追加のストレージを購入する必要がなくなります。たとえば、10 人のユーザーから、各自のアプリケーションに使用するファイルシステムをそれぞれ 100GB 要求された場合、ストレージ管理者は各ユーザーに 100GB のファイルシステムを作成します (ただし、実際には 100GB 未満のストレージが、必要に応じて使用されます)。
注記
シンプロビジョニングを使用する場合は、ストレージ管理者がストレージプールを監視し、容量が満杯になり始めたら容量を追加することが重要です。
利用可能な領域をすべて使用できるようにするために、LVM はデータの破棄に対応します。これにより、破棄されたファイルや、その他のブロック範囲で以前に使用された領域を再利用できます。
シンボリュームの作成方法は、「シンプロビジョニングされた論理ボリュームの作成」 を参照してください。
シンボリュームは、新たに実装されたコピーオンライト (COW) スナップショット論理ボリュームに対応します。これにより、多くの仮想デバイスでシンプール内の同一データを共有できます。シンプロビジョニングのスナップショットボリュームの詳細は、「シンプロビジョニングされたスナップショットボリューム」 を参照してください。
2.3.5. スナップショットボリューム
LVM スナップショット機能により、サービスを中断せずに任意の時点でデバイスの仮想イメージを作成できます。スナップショットの取得後に作成元のデバイスに変更が加えられると、データが変更する前に、これから変更する部分のコピーがスナップショット機能により作成されるため、このコピーを使用して、デバイスの状態を再構築できます。
注記
LVM は、シンプロビジョニングのスナップショットに対応しますシンプロビジョニングのスナップショットボリュームの詳細は、「シンプロビジョニングされたスナップショットボリューム」 を参照してください。
注記
LVM スナップショットは、クラスターのノード間では対応していません。クラスター化されたボリュームグループ内にスナップショットボリュームは作成できません。
スナップショットは、スナップショットの作成後に変更したデータ部分のみをコピーするため、スナップショット機能に必要なストレージは最小限になります。たとえば、複製元の大部分が更新されない場合は、その容量の 3-5 % があればスナップショットを十分に維持することができます。
注記
ファイルシステムのスナップショットコピーは仮想コピーであり、ファイルシステムのメディアバックアップを実際に作成するわけではありません。スナップショットは、バックアップの代替手順にはなりません。
作成元のボリュームへの変更を保管するために確保する領域は、スナップショットのサイズによって異なります。たとえば、スナップショットを作成してから作成元を完全に上書きした場合に、その変更を保管するのに必要なスナップショットのサイズは、作成元のボリュームと同じか、それ以上になります。スナップショットのサイズは、予想される変更レベルに応じて決定する必要があります。たとえば、
/usr
など、その大部分が読み取り用ボリュームの有効期間の短いスナップショットに必要な領域は、/home
など、書き込みの数が多いボリュームの有効期間の長いスナップショットに必要な領域よりも小さくなります。
スナップショットが満杯になると、作成元のボリュームの変更を追跡できなくなるため、そのスナップショットは無効になります。スナップショットのサイズは定期的に監視する必要があります。ただし、スナップショットのサイズは完全に変更することが可能なため、ストレージに余裕があれば、スナップショットが停止しないように、スナップショットのボリュームサイズを拡大できます。逆に、スナップショットのボリュームサイズが必要以上に大きければ、そのボリュームのサイズを縮小して、他の論理ボリュームで必要となる領域を確保できます。
スナップショットのファイルシステムを作成しても、作成元への完全な読み取り/書き込みのアクセスは引き続き可能です。スナップショット上のチャンクを変更した場合は、そのチャンクにマークが付けられ、そこには、作成元のボリュームのコピーは入りません。
スナップショット機能にはいくつかの用途があります。
- 最も一般的な用途は、継続的にデータを更新している稼動中のシステムを停止せずに、論理ボリューム上でバックアップを実行する必要がある場合にスナップショットを撮ることです。
- スナップショットファイルシステムで fsck コマンドを実行してファイルシステムの整合性を確認し、元のファイルシステムを修復する必要があるかどうかを判断できます。
- スナップショットは読み取りおよび書き込み用であるため、スナップショットを撮ってそのスナップショットにテストを実行することにより、実際のデータに触れることなく、実稼働データにアプリケーションのテストを実行できます。
- LVM ボリュームを作成して、Red Hat の仮想化と併用することが可能です。LVM スナップショットを使用して、仮想ゲストイメージのスナップショットを作成できます。このスナップショットは、最小限のストレージを使用して、既存のゲストの変更や新規ゲストの作成を行う上で利便性の高い方法を提供します。Red Hat Virtualization による LVM ベースのストレージプールの作成についての詳細は、『仮想化管理ガイド』 を参照してください。
スナップショットボリュームの作成に関する情報は、「スナップショットボリュームの作成」 を参照してください。
lvconvert コマンドの
--merge
オプションを使用して、スナップショットを作成元のボリュームにマージできます。この機能の用途の 1 つがシステムロールバックの実行で、データやファイルを紛失した場合や、システムを以前の状態に復元する必要がある場合に行います。スナップショットボリュームのマージの結果作成される論理ボリュームには、複製元のボリューム名、マイナー番号、UUID が付けられ、マージされたスナップショットは削除されます。このオプションの使用方法については、「スナップショットボリュームのマージ」 を参照してください。
2.3.6. シンプロビジョニングされたスナップショットボリューム
Red Hat Enterprise Linux は、シンプロビジョニングのスナップショットボリュームのサポートを提供します。シンプロビジョニングのスナップショットボリュームにより、多くの仮想デバイスを同じデータボリュームに格納できます。これにより管理が簡略化され、スナップショットボリューム間でのデータ共有が可能になります。
シンボリュームや、LVM スナップショットボリュームの場合、シンプロビジョニングのスナップショットボリュームは、クラスターのノード間では対応していません。スナップショットボリュームは、1 つのクラスターノードで排他的にアクティブにする必要があります。
シンプロビジョニングのスナップショットボリュームの利点は以下のとおりです。
- 同じボリュームからのスナップショットが複数ある場合に、シンプロビジョニングのスナップショットボリュームを使用すれば、ディスクの使用量を減らすことができます。
- 作成元が同じスナップショットが複数ある場合は、作成元に 1 回書き込むことにより、1 回の COW 操作でデータを保存できます。作成元のスナップショットの数を増やしても、速度が大幅に低下することはありません。
- シンプロビジョニングのスナップショットボリュームは、別のスナップショットの作成元の論理ボリュームとして使用できます。これにより、再帰的スナップショット (スナップショットのスナップショットのそのまたスナップショットなど) の深度を任意に決定できます。
- シン論理ボリュームのスナップショットにより、シン論理ボリュームを作成することもできます。COW 操作が必要になるまで、あるいはスナップショット自体が書き込まれるまで、データ領域は消費されません。
- シンプロビジョニングのスナップショットボリュームは、作成元とともにアクティブにしておく必要はありません。そのため、スナップショットボリュームが多数ある場合は、作成元のみをアクティブにし、スナップショットボリュームはアクティブにしないでおくことができます。
- シンプロビジョニングのスナップショットボリュームの作成元を削除すると、そのボリュームのスナップショットは、それぞれ独立したシンプロビジョニングボリュームになります。したがって、スナップショットとその作成元のボリュームをマージする代わりに、作成元のボリュームを削除し、その独立したボリュームを新たな作成元ボリュームにして、シンプロビジョニングのスナップショットを新たに作成できます。
シンプロビジョニングのスナップショットボリュームを使用する利点は数多くありますが、古い LVM スナップショットボリューム機能の方がニーズに適している場合もあります。
- シンプールのチャンクサイズは変更できません。シンプールのチャンクサイズが大きい場合 (1MB など) や、そのチャンクのサイズでは効率的ではない短期間のスナップショットが必要な場合は、代わりに以前のスナップショット機能を使用できます。
- シンプロビジョニングのスナップショットボリュームのサイズを制限することはできません。スナップショットは、必要な場合はシンプール内の全領域を使用します。これは、ニーズに適さない場合があります。
一般的には、使用するスナップショットの形式を決定する際に、使用しているサイトの特定要件を考慮するようにしてください。
注記
シンプロビジョニングを使用する場合は、ストレージ管理者がストレージプールを監視し、容量が満杯になり始めたら容量を追加することが重要です。シンプロビジョニングのスナップショットボリュームの設定および表示に関する情報は、「シンプロビジョニングされたスナップショットボリュームの作成」 を参照してください。
2.3.7. キャッシュボリューム
Red Hat Enterprise Linux 7.1 リリースでは、LVM は高速ブロックデバイス (SSD ドライブなど) を、大規模な低速ブロックデバイスのライトバックまたはライトスルーキャッシュとして使用することをサポートします。既存の論理ボリュームのパフォーマンスを改善するためにキャッシュ論理ボリュームを作成したり、大規模で低速なデバイスと共に小規模で高速なデバイスで設定される新規のキャッシュ論理ボリュームを作成したりできます。
LVM キャッシュボリュームを作成する方法は、「LVM 論理ボリュームの作成」 を参照してください。