4つのステップでLVMの論理ボリュームを拡張できます。
その作成方法と重要なポイントを解説します。
■LVMの論理ボリューム拡張の4ステップは以下になります。
- 仮想ディスクの拡張
↓ - PV(Physical Volume)の拡張
↓ - LV(Logical Volume)の拡張
↓ - ファイルシステムの拡張(xfs_growfs)
LVMの論理ボリューム拡張で利用する4ステップ
1.仮想ディスクの拡張
VirtualBoxでの仮想ディスク拡張方法
2.PV(Physical Volume)の拡張
pvresize /dev/sdb
※「1.」で拡張した仮想ディスクのデバイスを指定します。
※パーティションを作成していないことでデバイスを直接指定できます。
■注意
パーティション(/dev/sdb1)を設定していた場合はfdiskコマンドによるパーティションの再作成が必要なります。->こちらを参照
3.LV(Logical Volume)の拡張
lvextend -l +100%FREE /dev/vg-sdb/lv-sdb
※既存のLV(/dev/vg-sdb/lv-sdb)に拡張した容量をすべて割り当てています。
4.ファイルシステムの拡張(xfs_growfs)
xfs_growfs /lv-data
※「3.」で拡張した容量(LV)を仮想サーバ上で認識させています。
(増加分をOS上で再認識させています。)
※「ext4」フォーマットの場合はこちらをご覧ください。
LVMで論理ボリューム拡張の解説
4ステップ実行時のポイントを踏まえて細かく解説します。
LVM設定するデバイスが単一(/dev/sdb)と複数(/dev/sdbと/dev/sdc)ある場合と比較して解説します。
※複数デバイスの「/etc/sdc」はLVを2つに分割したパターンとなっております。
解説1.仮想ディスクの拡張
■ポイント
VirtualBoxやVMwareの仮想化技術を利用して仮想サーバを構築している場合、仮想ディスクを利用しています。
仮想ディスクは仮想化技術の仕組みにもよりますが、仮想サーバを停止せずに仮想ディスクの容量を数値入力することで簡単に拡張することができます。
仮想ディスクの拡張とは、仮想サーバに割り当てた仮想ディスクを増やすことを指します。
■仮想サーバ拡張時の仮想サーバの稼働について
VirtualBox利用の場合:サーバ停止が必要
VMware利用の場合: サーバ停止が不要(動的拡張が可能)
単一デバイスの場合
複数デバイスの場合
近年、仮想サーバによる仮想ディスクの利用が多くなり、物理ディスクを意識することなくディスクを増強することが可能となっています。
また、仮想ディスクだと仮想サーバ上のディスクデバイスの単位(sda、sdb)は
下記のようなファイル形式になっています。
・VirtualBoxの場合(例)
「サーバ名_1.vdi」と「サーバ名_2.vdi」
->仮想サーバ上の「/dev/sda」と「dev/sdb」で認識
・VMWareの場合(例)
「サーバ名_1.vmdk」
->仮想サーバ上の「/dev/sda」と認識
仮に、物理ディスクの容量が枯渇した場合、より容量が多い物理ディスクへファイルのコピーレベルで移行がおこなえます。
加えて、拡張もvdiファイル、vmdkファイル単位で拡張できるので、物理ディスクを増強してディスク容量を増やすよりも、仮想ディスクを増強して拡張することの方が多くなってきています。
解説2.PV(Physical Volume)の拡張
■ポイント
- 「fdisk -l」コマンドで仮想ディスクが拡張されていることを確認する
- パーティションが設定されているか?を確認する
※「pvdisplay」コマンドでパーティション設定を確認する
■パーティションの状態
「設定されていない場合」のPV Name | 「/dev/sdb」や「/dev/sdc」など |
「設定されている場合」のPV Name | 「/dev/sdb1」や「/dev/sdc1」など |
※「パーティションを設定していない場合」で解説
単一デバイスの場合
fdisk -l /dev/sdb
pvdisplay
pvresize /dev/sdb
pvdisplay
複数デバイスの場合
fdisk -l /dev/sdb /dev/sdc
pvdisplay
pvresize /dev/sdb /dev/sdc
pvdisplay
■パーティションを設定していないLVMの作成方法
【Linux】LVMで論理ボリューム作成-5コマンドで設定できる
■パーティションを設定している場合
Linuxでgrowpartを利用しないディスク拡張方法(partxコマンド利用)
よりパーティションの拡張を実施してからPVの拡張を実施してください。
※この場合「pvresize /dev/sdb1」となり「/dev/sdb」ではなく「/dev/sdb1」を指定します。
解説3.LV(Logical Volume)の拡張
■ポイント
- LVMを設定するときにVG(Volume Group)で複数のデバイスを統合しない設定を推奨しているのでVGで拡張作業は不要となり、PVの拡張後はLVの拡張から対応できます。
※VGの拡張は追加したデバイスを同じVGのグループに登録したい場合に利用する為、今回は対応が不要となります。
くわしくは下記リンクから
「LVMで論理ボリューム作成の解説」の「2.VG(Volume Group)の作成」を参照
単一デバイスの場合
vgdisplay
lvdisplay
lvextend -l +100%FREE /dev/vg-sdb/lv-sdb
lvdisplay
複数デバイスの場合
vgdisplay
■VG(vg-sdb)の
LV(/dev/vg-sdb/lv-sdb)を拡張
lvdisplay /dev/vg-sdb/lv-sdb
lvextend -l +100%FREE /dev/vg-sdb/lv-sdb
lvdisplay /dev/vg-sdb/lv-sdb
■VG(vg-sdc)の
LV(/dev/vg-sdc/lv-sdc01)と
LV(/dev/vg-sdc/lv-sdc02)を拡張
lvdisplay /dev/vg-sdc/lv-sdc01 /dev/vg-sdc/lv-sdc02
lvextend -L +400M /dev/vg-sdc/lv-sdc01
lvextend -l +100%FREE /dev/vg-sdc/lv-sdc02
lvdisplay /dev/vg-sdc/lv-sdc01 /dev/vg-sdc/lv-sdc02
「-L +400M」:増やしたい容量を指定します。
単位は「M(メガ)、G(ギガ)、T(テラ)」などが利用可能です
「-l +100%FREE」:空き容量をすべて割り当てる場合に指定します。
※残りの容量をすべて(余らせることなく)割当てたい時に使用します。
「-L 100M」:割り当てたい容量を指定します。
単位は「M(メガ)、G(ギガ)、T(テラ)」などが利用可能です。
例
■2G->3Gへ拡張したい場合
下記、結果は同じになります
「-L +1G」->増やしたい容量を指定
「-L 3G」->拡張後の総容量を指定
※「+」の有無で意味が変わるので注意
解説4.ファイルシステムの拡張(xfs_growfs)
■ポイント
- 拡張したLVをアンマウントすることなく拡張が可能です。
単一デバイスの場合
df -h
xfs_growfs /lv-sdb-data
df -h
複数デバイスの場合
■LV(/dev/vg-sdb/lv-sdb)の拡張を
マウントポイントに反映
df -h
xfs_growfs /lv-sdb-data
df -h
■LV(/dev/vg-sdc/lv-sdc01)と
LV(/dev/vg-sdc/lv-sdc02)の拡張を
マウントポイントに反映
df -h
xfs_growfs /lv-sdc-data01
xfs_growfs /lv-sdc-data02
df -h
■「/dev/mapper/~」について
「LV Path」と「デバイスマッパー」はどちらも同じものを指します
くわしくは、下記リンクから
「解説3.LV(Logical Volume)の作成」-「LVPathとデバイスのマッパー(mapper)が同じである根拠」を参照
※「ext4」でフォーマットしていた場合
「xfs_growfs」の箇所が「resize2fs /dev/vg-sdb/lv-sdb」と変更するだけで、その後の操作はすべて同じになります。
「resize2fs」実行するときは「LV Path」を指定してください。
まとめ
LVMでの論理ボリューム拡張は
「1.仮想ディスクの拡張」をサーバ停止せずにできればサーバ上で稼働するサービスを停止することなくディスク拡張ができます。
言い換えると、「1.仮想ディスクの拡張」作業の時だけ、サーバ停止調整すれば、その後、サーバを起動させてサービスを再開後に、後からゆっくりディスク拡張することができます。
その仮想サーバのディスクがLVMで設定していれば、拡張して増えた仮想ディスク容量を仮想サーバのサービス停止をすることなく、枯渇したマウントポイントに割当てすることが可能となります。
また、VMwareのような環境であれば物理ディスクが枯渇し、仮想ディスクの拡張ができなくなっても、容量が潤沢にある別の物理ディスクへ仮想サーバの停止をせずにマイグレーション(移動)することができます。
コメント