Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.4. 論理ボリュームの管理

このセクションでは、論理ボリューム管理の各種事項を実行するコマンドを説明しています。

4.4.1. 論理ボリュームの作成

論理ボリュームを作成するには、lvcreate コマンドを使用します。 以下のサブセクションで説明してあるように、リニアボリューム、ストライプ化ボリューム、及び ミラー化ボリュームが作成できます。
論理ボリューム用に名前を指定しないと、デフォルトの名前 lvol# が使用されます。 (# の部分には論理ボリュームの内部番号が入ります)
以下のセクションでは、LVM で作成できる3つの論理ボリュームタイプの為の 論理ボリューム作成の例を提供します。

4.4.1.1. リニアボリュームの作成

論理ボリュームを作成する場合、論理ボリュームはボリュームグループを構成する物理 ボリューム上の空きエクステントを使用してボリュームグループから構築されます。通常は論理ボリュームは背後にある物理ボリューム上で次に使用可能な空きを基準にして空き領域を占有します。論理ボリュームを修正することで、物理ボリュームの領域の開放と再割り当てができます。
以下のコマンドは、ボリュームグループ vg1 内に 10 ギガバイトの サイズの論理ボリュームを作成します。
lvcreate -L 10G vg1
次のコマンドはボリュームグループ testvg 内に testlv と 言う 1500 メガバイトのリニア論理ボリュームを作成し、ブロックデバイス /dev/testvg/testlv を 作ります。
lvcreate -L1500 -n testlv testvg
次のコマンドは、ボリュームグループ vg0 内の空きエクステントから gfslv と言う 50 ギガバイトの論理ボリュームを作成します。
lvcreate -L 50G -n gfslv vg0
lvcreate コマンドの -l 引数を使用して、 論理ボリュームのエキステントのサイズを指定することができます。この引数を使用すると、ボリュームグループ内で使用する論理グループのパーセントも指定することができます。以下のコマンドは、ボリュームグループ testvol 内で全体の 60% を 使用する mylv と言う論理ボリュームを作成します。
lvcreate -l 60%VG -n mylv testvg
lvcreate コマンドの -l 引数を使用して、 ボリュームグループ内の空き領域のパーセントを論理ボリュームのサイズとして指定することも できます。以下のコマンドはボリュームグループ testvol 内の未割り当て領域を全て使用する yourlv と言う論理グループを作成します。
lvcreate -l 100%FREE -n yourlv testvg
You can use -l argument of the lvcreate command to create a logical volume that uses the entire volume group. Another way to create a logical volume that uses the entire volume group is to use the vgdisplay command to find the "Total PE" size and to use those results as input to the the lvcreate command.
以下のコマンドは、testvg と言うボリュームグループを全使用する mylv と言う論理ボリュームを作成します。
# vgdisplay testvg | grep "Total PE"
Total PE              10230
# lvcreate -l 10230 testvg -n mylv
The underlying physical volumes used to create a logical volume can be important if the physical volume needs to be removed, so you may need to consider this possibility when you create the logical volume. For information on removing a physical volume from a volume group, see 「ボリュームグループから物理ボリュームを削除」.
ボリュームグループ内の特定の物理ボリュームから割り当てられる論理ボリュームを 作成するには、lvcreate コマンドの行の末尾にその物理ボリュームを指定する必要があります。以下のコマンドは、物理ボリューム /dev/sdg1 から割り当てられるボリュームグループ testvg 内に testlv と言う論理ボリュームを作成します。
lvcreate -L 1500 -ntestlv testvg /dev/sdg1
論理ボリュームとして使用される物理ボリュームのエクステントを指定することが出来ます。 以下の例では、ボリュームグループ内の物理ボリューム /dev/sda1 の エクステント 0から 25 まで、 及び物理ボリューム /dev/sdb1 のエクステント 50 から 125 までで構成されるリニア論理ボリュームを作成します。
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25 /dev/sdb1:50-125
以下の例では、物理ボリューム /dev/sda1 のエクステント 0 から 25 までのリニア論理ボリュームを作成して、それからエクステント 100 で論理ボリュームの レイアウトを継続します。
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25:100-
The default policy for how the extents of a logical volume are allocated is inherit, which applies the same policy as for the volume group. These policies can be changed using the lvchange command. For information on allocation policies, see 「ボリュームグループの作成」.

4.4.1.2. ストライプ化ボリュームの作成

For large sequential reads and writes, creating a striped logical volume can improve the efficiency of the data I/O. For general information about striped volumes, see 「ストライプ化論理ボリューム」.
ストライプ化論理ボリュームを作成する時には、lvcreate コマンドで -i 引数を使用してストライプの数量を指定します。これが、幾つの物理ボリュームで 論理ボリュームがストライプ化されるかを決定します。ストライプの数はボリュームグループ内の物理 ボリュームの数よりも越えることは出来ません(--alloc anywhere 引数が 使用さる場合は例外)。
ストライプ化論理ボリュームの背後にある物理ボリュームデバイスが異なるサイズを持つ場合、 ストライブ化ボリュームの最大サイズはその背後のデバイスの最小サイズで決定されます。 例えば、二脚のストライプがある場合、最大サイズは最小デバイスのサイズの二倍になります。 三脚ストライプの場合、最大サイズは最小デバイスのサイズの三倍になります。
以下のコマンドは 64kB のストライプを持つ2つの物理ボリュームに渡ってストライプ化論理ボリュームを作成します。論理ボリュームは 50 ギガバイトのサイズで、gfslv と言う名前を持ち、ボリュームグループ vg0 から作り出されます。
lvcreate -L 50G -i2 -I64 -n gfslv vg0
リニアボリュームと同じく、ストライプに使用する物理ボリュームのエクステントを指定する ことができます。以下のコマンドは、ボリュームグループ testvg の中で、 2 つの物理ボリュームに渡ってストライプ化する 100 エクステントのサイズの、stripelv と 言う名前のストライプ化ボリュームを作成します。ストライプは /dev/sda1 の セクター 0-50 と、/dev/sdb1 のセクター 50-100 を使用します。
# lvcreate -l 100 -i2 -nstripelv testvg /dev/sda1:0-50 /dev/sdb1:50-100
  Using default stripesize 64.00 KB
  Logical volume "stripelv" created

4.4.1.3. ミラー化ボリュームの作成

ミラー化ボリュームを作成する時には、lvcreate コマンドの -m 引数を使用して、データのコピー数量を指定します。-m1 と指定すると、ミラー1つが作成され、ファイルシステムのコピーが合計2つとなります。(1つのリニア論理ボリュームと 1つのコピー)。同じように -m2 と指定すると、ミラー2つが作成され、ファイルシステムのコピーが合計3つとなります。
以下のコマンドは、単独ミラーのミラー化論理ボリュームを作成します。ボリュームは 50 ギガバイトの サイズで、mirrorlv と言う名前で、ボリュームグループ vg0 から 作り出されます:
lvcreate -L 50G -m1 -n gfslv vg0
LVM ミラーは、コピーされるデバイスをデフォルトで 512KB のサイズとなっている区画(regions)に 分割します。この区画サイズは -R 引数を使用することにより、MB のサイズで 指定することが出来ます。LVM は、ミラーと同期している区画を追跡記録するために小さなログを 維持します。デフォルトでは、このログはディスク上に保存され、再起動後も固執するようになっています。 --corelog 引数を使用すると、それを変更してログがメモリー上で保存されるように 指定でき、余分なログデバイスの必要性を解消します。しかし、これには再起動の度にミラー全体を再度 同期化することが要求されます。
以下のコマンドはボリュームグループ bigvg からミラー化論理ボリュームを 作成します。論理ボリュームは ondiskmirvol と言う名前で、1つのミラーを 持ちます。このボリュームは 12MB のサイズで、ミラーログをメモリーに保存します。
# lvcreate -L 12MB -m1 --corelog -n ondiskmirvol bigvg
  Logical volume "ondiskmirvol" created
このミラーログは、いずれかのミラー脚が作成されるデバイスとは異なるデバイス上で 作成されます。しかし、vgcreate コマンドに --alloc anywhere 引数を使用することにより、ミラー脚の 1つと同じデバイス上にミラーログを作成することが可能です。これはパフォーマンスを 低下するかもしれませんが、背後のデバイスが 2つしかない場合でもミラーが作成 できるようにします。
以下のコマンドは、単独ミラーを持つミラー化論理ボリュームを作成します。このミラー ログはミラー脚の1つと同じデバイス上にあります。この例では、ボリュームグループ vg0 は2つのデバイスのみで構成されています。このコマンドが 作成するミラー化ボリュームは 500 メガバイトのサイズで、その名前は mirrorlv で あり、ボリュームグループ vg0 から取り出されています。
lvcreate -L 500M -m1 -n mirrorlv -alloc anywhere vg0
ミラーが作成されると、ミラーの区画は同期化されます。大きなミラーのコンポーネントには、 同期プロセスは長時間かかる可能性があります。再生される必要のない新規のミラーを作成 している場合は、nosync 引数を指定して、最初のデバイスからの 初期同期化は必要ないことを示すことができます。
ミラーログとログ用に使用するデバイス、及びそのデバイスの使用するエクステントを指定することができます。 ログを特定のディスクに強制するには、それが配置されるディスク上の精確なエクステントを指定します。 LVM は、コマンドラインでは、必ずしもデバイスの一覧順序を配慮しません。物理ボリュームが一覧にあれば、 それが割り当て実行の唯一の場所です。既に割り当てされている物理エクステントが一覧にあれば、それは 無視されます。
以下のコマンドは、単独ミラーを持つミラー化論理ボリュームを作成します。このボリュームは 500 メガバイトのサイズで、mirrorlv と言う名前であり、ボリュームグループ vg0 から作り出されます。ミラーの最初の脚はデバイス /dev/sda1 上で、2 番目の脚が /dev/sdb1 上で、 そのミラーログは /dev/sdc1 上にあります。
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
以下のコマンドは単独ミラーを持つミラー化論理ボリュームを作成します。このボリュームは 500 メガバイトのサイズで、mirrorlv と言う名前を持ち、ボリューム グループ vg0 から作り出されます。ミラーの最初の脚はデバイス /dev/sda1 のエクステント 0 から 499 までにあり、ミラーの二番目の脚はデバイス /dev/sdb1 のエクステント 0 から 499 までにあります。そしてミラーログは デバイス /dev/sdc1 のエクステント 0 から始まります。これらは 1MB の エクステントです。指定されたエクステントのいずれかが既に割り当てられている場合、それらは無視されます。
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0

注記

RHEL 5.3 のリリースでは、ミラー化した論理ボリュームはクラスタ内でサポート されています。

4.4.1.4. ミラー化ボリューム設定の変更

論理ボリュームは、lvconvert を使用して、ミラー化ボリュームから リニアボリュームに、又はリニアボリュームからミラー化ボリュームに変換できます。また、このコマンドを 使用して、corelog などの既存論理ボリュームの他のミラーパラメータも再設定できます。
論理ボリュームをミラー化ボリュームに変換する時には、基本的に既存ボリューム用に ミラー脚を作成することになります。これは、ボリュームグループがミラー脚とミラーログの 為にデバイスと領域を持っている必要があると言う意味です。
If you lose a leg of a mirror, LVM converts the volume to a linear volume so that you still have access to the volume, without the mirror redundancy. After you replace the leg, you can use the lvconvert command to restore the mirror. This procedure is provided in 「LVM ミラー障害からの復元」.
以下のコマンドはリニア論理ボリューム vg00/lvol1 をミラー化 論理ボリュームに変換します。
lvconvert -m1 vg00/lvol1
以下のコマンドは、ミラー化論理ボリューム vg00/lvol1 を リニア論理ボリュームに変換して、ミラー脚を取り除きます。
lvconvert -m0 vg00/lvol1