3 論理ボリューム・マネージャの操作
論理ボリューム・マネージャ(LVM)を使用すると、複数の物理ボリュームを管理し、論理ボリュームのミラーリングおよびストライプ化を構成できます。LVMは、デバイス・マッパー(DM)を使用した抽象レイヤーの作成を通じて、物理ボリュームと論理ボリュームの構成に使用できる機能を提供します。LVMを使用すると、データの冗長性とI/Oパフォーマンスの向上が実現します。
LVMでは、最初に物理ボリュームからボリューム・グループを作成します。物理ボリュームは、ディスク・アレイLUN、ソフトウェアまたはハードウェアRAIDデバイス、ハード・ドライブ、ディスク・パーティションなどのストレージ・デバイスです。これらの物理ボリューム上に、ボリューム・グループを作成します。次に、ボリューム・グループに論理ボリュームを構成します。論理ボリュームは、ソフトウェアRAID、暗号化、およびその他のストレージ機能を構成するための基盤になります。
論理ボリュームにファイル・システムを作成して、物理デバイスの場合と同様の方法で論理ボリューム・デバイスをマウントできます。論理ボリュームのファイル・システムがデータでいっぱいになると、ボリューム・グループ内の空き領域を使用してボリュームの容量を増加できます。その後、ファイル・システムでその機能がサポートされていれば、ファイル・システムを拡大できます。物理ストレージ・デバイスをボリューム・グループに追加して、その容量をさらに増やすことができます。
LVMは非破壊的で、ユーザーに透過的です。そのため、論理ボリューム・サイズの増加、レイアウトの動的な変更、物理ボリュームの再構成などの管理タスクでは、システムの停止時間は不要です。
システムに論理ボリュームを設定する前に、次の要件を完了します。
-
物理ボリュームに割り当てられたデバイスのデータをバックアップします。
-
これらのデバイスをアンマウントします。マウントされたデバイスでの物理ボリュームの作成が失敗します。
LVMを使用した論理ボリュームの構成には、順次実行する次のタスクが含まれます。
-
選択したストレージ・デバイスから物理ボリュームを作成。
-
物理ボリュームからボリューム・グループを作成。
-
ボリューム・グループ上に論理ボリュームを構成。
-
必要に応じて、論理ボリュームのスナップショットを作成。
物理ボリュームの初期化および管理
次の例では、/dev/sdb
、/dev/sdc
、/dev/sdd
および/dev/sde
を物理ボリュームとして設定します。
sudo pvcreate -v /dev/sd[bcde]
Set up physical volume for “/dev/sdb” with 6313482 available sectors Zeroing start of device /dev/sdb Physical volume “/dev/sdb” successfully created ...
物理ボリュームに関する情報を表示するには、pvdisplay、pvsおよびpvscanコマンドを使用します。
物理ボリュームをLVMの管理から削除するには、pvremoveコマンドを使用します。
sudo pvremove device
物理ボリュームの管理に使用可能なその他のコマンドには、pvchange、pvck、pvmoveおよびpvresizeがあります。
詳細は、lvm(8)
、pvcreate(8)
およびLVMのその他のマニュアル・ページを参照してください。
ボリューム・グループの作成および管理
次の例では、新しく作成された物理ボリュームからボリューム・グループmyvg
を作成します。
sudo vgcreate -v myvg /dev/sd[bcde]
次のような出力結果が表示されます。
Wiping cache of LVM-capable devices Adding physical volume ‘/dev/sdb’ to volume group ‘myvg’ Adding physical volume ‘/dev/sdc’ to volume group ‘myvg’ Adding physical volume ‘/dev/sdd’ to volume group ‘myvg’ Adding physical volume ‘/dev/sde’ to volume group ‘myvg’ Archiving volume group “myvg” metadata (seqno 0). Creating volume group backup “/etc/lvm/backup/myvg” (seqno 1). Volume group “myvg” successfully created
LVMは、ボリューム・グループ内のストレージ領域を物理的なエクステントに分割します。エクステント(デフォルト・サイズは4MB)は、ストレージを論理ボリュームに割り当てる際にLVMで使用する最小単位です。
割当ポリシーは、LVMがボリューム・グループまたは論理ボリュームからどのようにエクステントを割り当てるかを決定します。ボリューム・グループのデフォルト割当てポリシーはnormal
で、ルールには、同じ物理ボリュームにパラレル・ストライプを配置しないなどが含まれます。論理ボリュームの場合、デフォルトの割当てポリシーはinherit
で、これはボリューム・グループと同じポリシーを論理ボリュームで使用するということです。その他の割当ポリシーは、anywhere
、contiguous
およびcling
およびcling_by_tags
です。
割当てポリシーを変更するには、lvchangeまたはvgchangeコマンドを使用します。あるいは、ボリューム・グループまたは論理ボリュームの作成時に直接、優先割当てポリシーを設定します。
vgextendおよびvgreduceコマンドは、物理ボリュームをボリューム・グループに追加するか、ボリュームを削除します。このコマンドを使用すると、ボリューム・グループのサイズを操作できます。
sudo vgextend | vgreduce [options] vol_group physical_vol
ボリューム・グループに関する情報を表示するには、vgdisplay、vgsおよびvgscanコマンドを使用します。
LVMからボリューム・グループを削除するには、vgremoveコマンドを使用します。
sudo vgremove vol_group
このコマンドは、グループに論理ボリュームが存在する場合に警告し、確認を求めます。
ボリューム・グループの管理に使用可能なその他のコマンドには、vgchange、vgck、vgexport、vgimport、vgmerge、vgrenameおよびvgsplitがあります。
詳細は、lvm(8)
、vgcreate(8)
およびLVMのその他のマニュアル・ページを参照してください。
論理ボリュームの作成および管理
この例では、2GBのサイズの論理ボリュームmylv
をボリューム・グループmyvg
に作成します。
sudo lvcreate -v --size 2g --name mylv myvg
次のような出力結果が表示されます。
Archiving volume group “myvg” metadata (seqno 1). Creating logical volume mylv Create volume group backup “/etc/lvm/backup/myvg” (seqno 2). Activating logical volume myvg/mylv. ... Logical volume "mylv" created.
lvcreateでは、デバイス・マッパーを使用して、論理ボリュームごとにブロック・デバイス・ファイル・エントリを/dev
に作成します。このコマンドは、udev
を使用して、/dev/mapper
および/dev/
volume_groupからこのデバイス・ファイルへのシンボリック・リンクも設定します。たとえば、ボリューム・グループmyvg
の論理ボリュームmylv
に対応するデバイスは/dev/dm-3
で、そこに/dev/mapper/myvg-mylv
および/dev/myvg/mylv
がシンボリック・リンクされます。
コマンドまたはスクリプトでは、/dev/dm-*
ではなく、常に/dev/mapper
または/dev/
volume_groupのデバイスを参照します。これらの名前は永続的で、ブート・プロセスの初期にデバイス・マッパーによって自動的に作成されます。対照的に、/dev/dm-*
デバイスの永続性は、再起動後は保証されません。
論理ボリュームは、ファイル・システム、スワップ・パーティション、自動ストレージ管理(ASM)ディスクまたはRAWデバイスとしての論理ボリュームの構成など、物理ストレージ・デバイスと同様に管理および使用します。
論理ボリュームに関する情報を表示するには、lvdisplay、lvsおよびlvscanコマンドを使用します。
ボリューム・グループから論理ボリュームを削除するには、lvremoveコマンドを使用します。
sudo lvremove vol_group/logical_vol
論理ボリュームの管理に使用可能なその他のコマンドには、lvchange、lvconvert、lvmdiskscan、lvmsadc、lvmsar、lvrenameおよびlvresizeがあります。
詳細は、lvm(8)
、lvcreate(8)
およびLVMのその他のマニュアル・ページを参照してください。
タグを使用したグループ化の作成および管理
タグは、同じタイプのLVMオブジェクトをグループ化する文字列です。物理ボリューム(PV)や論理ボリューム(LV)など、ボリューム・グループ(VG)内のオブジェクトのみをタグ付けできます。PVは、VGメタデータの一部としてタグが格納され、PVが削除されると削除されるため、VGから削除されるとタグが失われます。
複数のLVMコマンドでタグを使用できます。コマンドでタグを使用すると、コマンド内の位置で想定されるタイプのタグを持つすべてのオブジェクトが追加されます。タグ付けされたグループ内のすべてのオブジェクトをアクティブ化するなどのアクションを自動化するためにタグを使用することもできます。
- 1つ以上の既存のオブジェクトにタグを追加するには、次のコマンドを使用します:
pvchange --addtag @tag PV pvchange --addtag @tag VG pvchange --addtag @tag LV
前述のtagはタグの名前で、常に接頭辞に"@"文字を付ける必要があります。PVは1つ以上の物理ボリューム、VGは1つ以上のボリューム・グループ、LVは1つ以上の論理ボリュームです。--addtag
オプションを繰り返して、1つのコマンドで複数のタグを追加できます。ノート:
有効なタグ文字は、A-Z a-z 0-9 _ + . - / = ! : # &で、最大1024文字です。タグをハイフンで始めることはできません。 - オブジェクトの作成時にタグを追加するには、次のコマンドを使用します:
vgcreate --addtag @tag VG lvcreate --addtag @tag LV
- 1つ以上の既存のオブジェクトからタグを削除するには、次のコマンドを使用します:
pvchange --deltag @tag PV pvchange --deltag @tag VG pvchange --deltag @tag LV
--deltag
オプションを繰り返して、1つのコマンドで複数のタグを追加できます。 - タグを表示するには、次のコマンドを使用します:
pvs -o tags PV pvs -o tags VG pvs -o tags LV
タグの詳細は、
lvm(8)
、pvcreate(8)
およびLVMのその他のマニュアル・ページを参照してください。
アクティブ化および自動アクティブ化の管理
論理ボリュームをアクティブ化または非アクティブ化するには、lvchange
コマンドを使用します。論理ボリュームをアクティブ化すると、論理ボリュームがブロック・デバイスを介して使用可能になります。論理ボリュームを非アクティブ化すると、論理ボリュームは非アクティブになり、カーネルからアクセスできなくなります。
さらに、ボリューム・グループ内のすべての論理ボリュームに適用される論理ボリュームまたはボリューム・グループの自動アクティブ化を有効にできます。自動アクティブ化では、マシンへのLVMデバイスのアタッチに応じて論理ボリュームがアクティブ化されます。ボリューム・グループ内のすべての物理ボリュームをアタッチすると、そのボリューム・グループは完了し、そのボリューム・グループ内の論理ボリュームが自動的にアクティブ化されます。この自動動作は、vgchange
またはlvchange
を--setautoactivation
オプションとともに使用して無効または有効にできます。
/etc/lvm/lvm.conf
auto_activation_volume_list
パラメータでアクティブ化できる論理ボリュームをリストすることで、自動的にアクティブ化できる論理ボリュームを制御することもできます。
- 論理ボリュームを非アクティブ化するには、次のコマンドを使用します:
lvchange -an VG LG
前述のVGはボリューム・グループの名前、LGは非アクティブ化する論理ボリュームの名前です。
- ボリューム・グループ内のすべての論理ボリュームを非アクティブ化するには、次のコマンドを使用します:
lvchange -an VG
- 非アクティブ化した論理ボリュームをアクティブ化するには、次のコマンドを使用します:
lvchange -ay VG LG
ノート:
systemd
は、/etc/fstab
ファイルで指定されたマウント・ポイントを使用して、LVMボリュームを自動的にマウントします。 - ボリューム・グループ内の非アクティブ化されたすべての論理ボリュームをアクティブ化するには、次のコマンドを使用します:
lvchange -ay VG
- 前述の
lvchange
コマンドを使用してアクティブ化できる論理ボリュームを制御するには、activation/volume_list
構成オプションを指定して/etc/lvm/lvm.conf
構成ファイルを使用することもできます。次の例は、ボリューム・リストがボリューム・グループ全体またはボリューム・グループ内の1つの論理ボリュームのみを指定できることを示しています:
1つ以上のタグを使用して、アクティブにできる論理デバイスを指定することもできます。次に例を示します。volume_list = [ "VG", "VG/LV"]
volume_list = ["@tag1", "@tag2, "@tag3"]
角カッコを空のままにすると、デバイスはアクティブになりません。volume_list = []
- ボリューム・グループの自動アクティブ化を有効または無効にするには、次のコマンドを使用します:
vgchange --setautoactivation <y|n>
- 論理ボリュームの自動アクティブ化を有効または無効にするには、次のコマンドを使用します:
lvchange --setautoactivation <y|n>
/etc/lvm/lvm.conf
構成ファイルを使用して自動アクティブ化を制御するには、ボリューム・グループ、またはボリューム・グループとその中の特定の論理ボリュームをactivation/auto_activation_volume_list
構成オプションに指定します:
タグを使用して自動アクティブ化を有効にすることもできます。次に例を示します。auto_activation_volume_list = [ "VG", "VG/LV"]
auto_activation_volume_list = ["@tag1", "@tag2, "@tag3"]
角カッコを空のままにすると、自動アクティブ化機能は完全に無効になります。auto_activation_volume_list = []
論理ボリューム・スナップショットの作成
既存の論理ボリュームのスナップショットを作成するには、lvcreate --snapshotを使用します。次に例を示します。
sudo lvcreate --size 500m --snapshot --name mylv-snapshot myvg/mylv
Logical volume “mylv-snapshot” created
元のボリュームとは別に、スナップショットのコンテンツをマウントおよび変更できます。または、スナップショットが作成された時点の元のボリュームの状態のレコードとしてスナップショットを保持できます。
スナップショットの占有領域は、期間内にボリュームのコンテンツがどれだけ異なるかによって異なりますが、通常は元のボリュームよりも少なくなります。この例では、スナップショットに必要な領域が元のボリュームの1/4であることを想定しています。スナップショットに割り当てられるデータの量を計算するには、次の手順を実行します。
-
lvsコマンドを発行します。
-
コマンド出力で、
Snap%
列の値を確認します。100%に近づいている値は、スナップショットがストレージ領域より低いことを示します。
-
lvresizeを使用して、スナップショットを拡張するか、ストレージ領域を節約するためにサイズを小さくします。
スナップショットを元のボリュームとマージするには、lvconvert --mergeコマンドを使用します。
ボリューム・グループから論理ボリューム・スナップショットを削除するには、必要に応じて論理ボリュームにlvremoveコマンドを使用します。
sudo lvremove myvg/mlv-snapshot
詳細は、lvcreate(8)
およびlvremove(8)
の各マニュアル・ページを参照してください。
シンプロビジョニングされた論理ボリュームの使用
シンプロビジョニングされた論理ボリュームの仮想サイズは通常、そのボリュームを作成した物理ストレージより大きくなっています。シンプロビジョニングされた論理ボリュームは、シン・プールと呼ばれる特殊なタイプの論理ボリュームに割り当てたストレージから作成します。LVMは、ボリュームにアクセスするアプリケーションから要求があると、オンデマンドでストレージをシン・プールからシンプロビジョニングされた論理ボリュームに割り当てます。lvsコマンドを使用して、シン・プールの使用量を監視し、使用可能なストレージが不足しないようにシン・プールのサイズを増やす必要があります。
シンプロビジョニングされた論理ボリュームの構成と管理
シンプロビジョニングされた論理ボリュームの作成には、次の2つのステップがあります:
-
シン・プールを作成します。
sudo lvcreate --size size --thin vol_group/pool_name
-
シンプロビジョニングされた論理ボリュームを作成します。
sudo lvcreate --virtualsize size --thin vol_group/thin_pool_name --name logical_vol
次の例では、サイズが1GBのシン・プールmytp
が、最初にボリューム・グループmyvg
から作成されます。
sudo lvcreate --size 1g --thin myvg/mytp Logical volume "mytp" created
次に、シンプロビジョニングされた論理ボリュームmytv
が、2GBの仮想サイズで作成されます:
sudo lvcreate --virtualsize 2g --thin myvg/mytp --name mytv Logical volume "mytv" created
mytp
のサイズがmytv
のサイズより小さいことに注意してください。
mytv
のスナップショットを作成する場合、スナップショットのサイズを指定しないでください。そうしないと、そのストレージはmytp
からプロビジョニングされません。次に例を示します。
sudo lvcreate --snapshot --name mytv-snapshot myvg/mytv Logical volume “mytv-snapshot” created
ボリューム・グループに十分な領域がある場合は、次のように、必要に応じてlvresizeコマンドを使用してシン・プールのサイズを増やします。
sudo lvresize -L+1G myvg/mytp Extending logical volume mytp to 2 GiB Logical volume mytp successfully resized
詳細は、lvcreate(8)
およびlvresize(8)
の各マニュアル・ページを参照してください。
シンプロビジョニングされた論理ボリュームでのsnapperの使用
snapperユーティリティは、シンプロビジョニングされた論理ボリュームのシン・スナップショットを作成および保守するためのもう1つのツールです。
snapper構成をマウントされている既存のボリュームに設定するには:
sudo snapper -c config_name create-config -f "lvm(fs_type)" fs_name
- config_name
-
構成の名前
- fs_type
-
ファイル・システム・タイプ(ext4またはxfs)
- fs_name
-
ファイル・システムのパス。
コマンドによってconfig_nameが/etc/sysconfig/snapper
に追加され、構成ファイル/etc/snapper/configs/config_name
が作成され、スナップショットに.snapshots
サブディレクトリが設定されます。
デフォルトでは、snapperはボリュームの.snapshot
サブディレクトリを作成するcron.hourly
ジョブ、および古いスナップショットをクリーンアップするcron.daily
ジョブを設定します。構成ファイルを編集すると、この動作を無効化または変更できます。詳細は、snapper-configs(5)
マニュアル・ページを参照してください。
snapperを使用すると、3つのタイプのスナップショットを作成できます。
-
post
-
ポスト・スナップショットは、変更後のボリュームの状態を記録します。ポスト・スナップショットは常に、変更直前に実行するプリ・スナップショットと対になっています。
-
pre
-
プリ・スナップショットは、変更の直前のボリュームの状態を記録します。プリ・スナップショットは常に、変更直前に実行するポスト・スナップショットと対になっています。
-
single
-
単一のスナップショットは、ボリュームの状態を記録しますが、ボリュームのその他のスナップショットと関連性はありません。
たとえば、次のコマンドでは、ボリュームのプリ・スナップショットおよびポスト・スナップショットを作成します。
sudo snapper -c config_name create -t pre -p N
... Modify the volume's contents ...
sudo snapper -c config_name create -t post --pre-num N -p N'
-pオプションをsnapperに指定するとスナップショット数が表示されるため、ポスト・スナップショットを作成する場合、またはプリ・スナップショットとポスト・スナップショットのコンテンツを比較する場合に参照できます。
プリ・スナップショットとポスト・スナップショットの間に追加、削除、または変更したファイルおよびディレクトリを表示するには、statusサブコマンドを使用します。
sudo snapper -c config_name status N .. ..
プリ・スナップショットとポスト・スナップショットの間のファイル内容の差異を表示するには、diffサブコマンドを使用します。
sudo snapper -c config_name diff .. N'
ボリュームにあるスナップショットをリストするには:
sudo snapper -c config_name list
スナップショットを削除するには、その番号をdeleteサブコマンドに指定します。
sudo snapper -c config_name delete N''
ボリューム内の、ポスト・スナップショットN'に含まれる変更をプレ・スナップショットNに戻すには、次のようにします。
sudo snapper -c config_name undochange N .. N'
詳細は、snapper(8)
マニュアル・ページを参照してください。