67.13. LVM の割り当ての制御
デフォルトでは、ボリュームグループは normal
割り当てポリシーを使用します。これにより、同じ物理ボリューム上に並行ストライプを配置しないなどの常識的な規則に従って物理エクステントが割り当てられます。vgcreate
コマンドで --alloc
引数を使用すると、別の割り当てポリシー (contiguous
、anywhere
、または cling
) を指定できます。一般的に、normal
以外の割り当てポリシーが必要となるのは、通常とは異なる、標準外のエクステント割り当てを必要とする特別なケースのみです。
67.13.1. 指定したデバイスからのエクステントの割り当て
lvcreate
コマンドと lvconvert
コマンドを使用する際に、コマンドラインの末尾でデバイス引数を使用すると、特定のデバイスからの割り当てに制限できます。より詳細に制御するために、各デバイスの実際のエクステント範囲を指定できます。このコマンドは単に、指定した物理ボリューム (PV) を引数として使用して、新しい論理ボリューム (LV) にエクステントを割り当てます。各 PV から利用可能なエクステントがなくなるまでエクステントを取得し、その後、次にリストされている PV からエクステントを取得します。リストされているすべての PV の領域が、要求された LV サイズに対して不足する場合、コマンドは失敗します。このコマンドは、指定した PV からのみ割り当てを行うことに注意してください。Raid LV は、個別の RAID イメージまたは個別のストライプにシーケンシャル PV を使用します。PV のサイズが RAID イメージ全体に対して十分でない場合、デバイスの使用量を完全に予測することはできません。
手順
ボリュームグループ (VG) を作成します。
# vgcreate <vg_name> <PV> ...
ここでは、以下のようになります。
-
<vg_name>
は VG の名前です。 -
<PV>
は PV です。
-
PV を割り当てて、リニアや RAID などのさまざまなボリュームタイプを作成できます。
エクステントを割り当ててリニアボリュームを作成します。
# lvcreate -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]
ここでは、以下のようになります。
-
<lv_name>
は LV の名前です。 -
<lv_size>
は LV のサイズです。デフォルトの単位はメガバイトです。 -
<vg_name>
は VG の名前です。 [ <PV ...> ]
は PV です。コマンドラインでは、PV の 1 つを指定することも、すべての PV を指定することもできます。何も指定しないことも可能です。
1 つの PV を指定すると、当該 PV から LV のエクステントが割り当てられます。
注記PV に LV 全体に対する十分な空きエクステントがない場合、
lvcreate
は失敗します。- 2 つの PV を指定した場合、LV のエクステントは、当該 PV のうちの 1 つ、または両方の PV の組み合わせから割り当てられます。
PV を指定しない場合、エクステントは VG 内の PV の 1 つ、または VG 内のすべての PV の任意の組み合わせから割り当てられます。
注記このような場合、LVM は、指定した PV または使用可能な PV のすべてを使用しない可能性があります。最初の PV に LV 全体に対して十分な空きエクステントがある場合、他の PV はおそらく使用されません。ただし、最初の PV に空きエクステントの割り当てサイズが設定されていない場合、LV の一部は最初の PV から割り当てられ、一部は 2 番目の PV から割り当てられる可能性があります。
例67.10 1 つの PV からのエクステントの割り当て
この例では、
lv1
エクステントがsda
から割り当てられます。# lvcreate -n lv1 -L1G vg /dev/sda
例67.11 2 つの PV からのエクステントの割り当て
この例では、
lv2
エクステントがsda
、sdb
、または両方の組み合わせから割り当てられます。# lvcreate -n lv2 L1G vg /dev/sda /dev/sdb
例67.12 PV を指定しないエクステントの割り当て
この例では、
lv3
エクステントが、VG 内の PV の 1 つ、または VG 内のすべての PV の任意の組み合わせから割り当てられます。# lvcreate -n lv3 -L1G vg
または、以下を実行します。
-
エクステントを割り当てて RAID ボリュームを作成します。
# lvcreate --type <segment_type> -m <mirror_images> -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]
ここでは、以下のようになります。
-
<segment_type>
は、指定したセグメントタイプ (例:raid5
、mirror
、snapshot
) です。 -
<mirror_images>
は、指定した数のイメージを含む、raid1
またはミラーリングされた LV を作成します。たとえば、-m 1
を指定すると、2 つのイメージを含むraid1
LV が作成されます。 -
<lv_name>
は LV の名前です。 -
<lv_size>
は LV のサイズです。デフォルトの単位はメガバイトです。 -
<vg_name>
は VG の名前です。 <[PV ...]>
は PV です。最初の RAID イメージは最初の PV から割り当てられ、2 番目の RAID イメージは 2 番目の PV から割り当てられます。以後も同様です。
例67.13 2 つの PV からの RAID イメージの割り当て
この例では、
lv4
の最初の RAID イメージはsda
から割り当てられ、2 番目のイメージはsdb
から割り当てられます。# lvcreate --type raid1 -m 1 -n lv4 -L1G vg /dev/sda /dev/sdb
例67.14 3 つの PV からの RAID イメージの割り当て
この例では、
lv5
の最初の RAID イメージはsda
から割り当てられ、2 番目のイメージはsdb
から割り当てられ、3 番目のイメージはsdc
から割り当てられます。# lvcreate --type raid1 -m 2 -n lv5 -L1G vg /dev/sda /dev/sdb /dev/sdc
-
関連情報
-
システム上の
lvcreate(8)
、lvconvert(8)
、およびlvmraid(7)
man ページ
67.13.2. LVM の割り当てポリシー
LVM の操作で物理エクステントを 1 つまたは複数の論理ボリューム (LV) に割り当てる必要がある場合、割り当ては以下のように行われます。
- ボリュームグループで割り当てられていない物理エクステントのセットが、割り当てのために生成されます。コマンドラインの末尾に物理エクステントの範囲を指定すると、指定した物理ボリューム (PV) の中で、その範囲内で割り当てられていない物理エクステントだけが、割り当て用エクステントとして考慮されます。
-
割り当てポリシーは順番に試行されます。最も厳格なポリシー (
contiguous
) から始まり、最後は--alloc
オプションで指定した割り当てポリシーか、特定の LV やボリュームグループ (VG) にデフォルトとして設定されている割り当てポリシーが試行されます。各割り当てポリシーでは、埋める必要がある空の LV 領域の最小番号の論理エクステントから始まり、割り当てポリシーによる制限に従って、できるだけ多くの領域の割り当てを行います。領域が足りなくなると、LVM は次のポリシーに移動します。
割り当てポリシーの制限は以下のとおりです。
contiguous
ポリシーでは、LV の最初の論理エクステントを除き、論理エクステントの物理的位置が、直前の論理エクステントの物理的位置に隣接している必要があります。LV がストライプ化またはミラーリングされている場合、
contiguous
の割り当て制限は、領域を必要とする各ストライプまたは RAID イメージに個別に適用されます。-
cling
の割り当てポリシーでは、既存の LV に追加する論理エクステントに使用される PV が、その LV にある少なくとも 1 つの論理エクステントですでに使用されている必要があります。 -
normal
の割り当てポリシーでは、並行 LV 内の同じオフセットで、並行 LV (つまり、異なるストライプまたは RAID イメージ) にすでに割り当てられている論理エクステントと同じ PV を共有する物理エクステントは選択されません。 -
割り当て要求を満たすのに十分な空きエクステントがあっても、
normal
の割り当てポリシーによって使用されない場合は、たとえ同じ PV に 2 つのストライプを配置することによってパフォーマンスが低下しても、anywhere
の割り当てポリシーがその空きエクステントを使用します。
vgchange
コマンドを使用して、割り当てポリシーを変更できます。
今後の更新で、定義された割り当てポリシーに基づくレイアウト操作のコードが変更される可能性があることに注意してください。たとえば、割り当て可能な空き物理エクステントの数が同じ 2 つの空の物理ボリュームをコマンドラインで指定する場合、現行バージョンの LVM では、それが表示されている順番に使用が検討されます。ただし、今後のリリースで、そのプロパティーが変更されない保証はありません。特定の LV 用に特定のレイアウトが必要な場合は、各手順に適用される割り当てポリシーに基づいて LVM がレイアウトを決定することがないように、lvcreate
と lvconvert
を順に使用してレイアウトを構築してください。
67.13.3. 物理ボリュームでの割り当て防止
pvchange
コマンドを使用すると、単一または複数の物理ボリュームの空き領域で物理エクステントが割り当てられないようにすることができます。これは、ディスクエラーが発生した場合や、物理ボリュームを削除する場合に必要となる可能性があります。
手順
device_name
での物理エクステントの割り当てを無効にするには、次のコマンドを使用します。# pvchange -x n /dev/sdk1
pvchange
コマンドで-xy
引数を使用すると、無効にされていた割り当てを許可できます。
関連情報
-
システム上の
pvchange(8)
man ページ