4 論理ボリューム・マネージャの操作
論理ボリューム・マネージャ(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のその他のマニュアル・ページを参照してください。
LVMでの表示および使用可能なデバイスの制限
LVMコマンドを使用すると、物理ボリューム・デバイス、または/etc/LVM/devices/system.devices
ファイルにLVMで使用可能で表示可能な物理ボリュームとして指定されていないデバイスをリストできます。デバイスがこのファイルにリストされていない場合、LVMはデバイスを表示または使用できません。LVMを使用して作成した物理ボリュームは、すべてsystem.devices
ファイルに自動的に追加されます。オペレーティング・システムのインストール中に作成された物理ボリュームも、system.devices
ファイルに追加されます。
system.devices
ファイルに追加する場合は、--adddevオプションを指定したlvmdevicesコマンドを使用してデバイスを追加します。たとえば、次のコマンドは、/dev/sdf
デバイスをsystem.devices
ファイルに追加します。sudo lvmdevices --adddev /dev/sdf
--deldev
オプションを使用します。たとえば、次のコマンドは、system.devices
ファイルに対して/dev/sdf
デバイスを削除します。sudo lvmdevices --deldev /dev/sdf
ノート:
デバイス制限機能はデフォルトで有効になっています。この機能を無効にするには、/etc/lvm/lvm.conf
ファイルにuse_devicesfile=0
を設定します。この機能を無効にすると、かわりにLVMデバイス・フィルタ機能が自動的に有効になります。LVMデバイス・フィルタ機能の詳細は、/etc/LVM/LVM.conf
ファイルのConfiguration option devices/filter
セクションを参照してください。
詳細は、lvmdevices(8)
およびlvm.conf(5)
マニュアル・ページを参照してください。
ボリューム・グループの作成および管理
次の例では、新しく作成された物理ボリュームからボリューム・グループ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のその他のマニュアル・ページを参照してください。
論理ボリューム・スナップショットの作成
既存の論理ボリュームのスナップショットを作成するには、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)
マニュアル・ページを参照してください。