【Linux】LVMで論理ボリューム拡張 -4ステップで設定できる

【Linux】LVMで論理ボリューム拡張-4コマンドで設定できる Linuxサーバ

4つのステップでLVMの論理ボリュームを拡張できます。
その作成方法と重要なポイントを解説します。

■LVMの論理ボリューム拡張の4ステップは以下になります。

  1. 仮想ディスクの拡張
  2. PV(Physical Volume)の拡張
  3. LV(Logical Volume)の拡張
  4. ファイルシステムの拡張(xfs_growfs)
LVMの論理ボリューム拡張の4ステップ
論理ボリューム拡張の4ステップのイメージ図

スポンサーリンク

LVMの論理ボリューム拡張で利用する4ステップ

1.仮想ディスクの拡張

VirtualBoxでの仮想ディスク拡張方法

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つに分割したパターンとなっております。

LVM設定するデバイスが単一(/dev/sdb)と複数(/dev/sdbと/dev/sdc)


解説1.仮想ディスクの拡張

■ポイント

VirtualBoxやVMwareの仮想化技術を利用して仮想サーバを構築している場合、仮想ディスクを利用しています。
仮想ディスクは仮想化技術の仕組みにもよりますが、仮想サーバを停止せずに仮想ディスクの容量を数値入力することで簡単に拡張することができます。
仮想ディスクの拡張とは、仮想サーバに割り当てた仮想ディスクを増やすことを指します。

■仮想サーバ拡張時の仮想サーバの稼働について
  VirtualBox利用の場合:サーバ停止が必要
  VMware利用の場合: サーバ停止が不要(動的拡張が可能)

単一デバイスの場合

単一デバイスの仮想ディスクの拡張
VirtualBoxでの拡張

複数デバイスの場合

複数デバイスの仮想ディスクの拡張
VirtualBoxでの拡張

物理ディスク(デバイス)を増強して拡張という方法もありますが、今回は仮想ディスクを拡張します。
近年、仮想サーバによる仮想ディスクの利用が多くなり、物理ディスクを意識することなくディスクを増強することが可能となっています。

また、仮想ディスクだと仮想サーバ上のディスクデバイスの単位(sda、sdb)は
下記のようなファイル形式になっています。
・VirtualBoxの場合(例)
 「サーバ名_1.vdi」と「サーバ名_2.vdi」
  ->仮想サーバ上の「/dev/sda」と「dev/sdb」で認識

・VMWareの場合(例)
 「サーバ名_1.vmdk」
  ->仮想サーバ上の「/dev/sda」と認識

仮に、物理ディスクの容量が枯渇した場合、より容量が多い物理ディスクへファイルのコピーレベルで移行がおこなえます。

加えて、拡張もvdiファイル、vmdkファイル単位で拡張できるので、物理ディスクを増強してディスク容量を増やすよりも、仮想ディスクを増強して拡張することの方が多くなってきています。



解説2.PV(Physical Volume)の拡張

■ポイント

  1. 「fdisk -l」コマンドで仮想ディスクが拡張されていることを確認する
  2. パーティションが設定されているか?を確認する
    ※「pvdisplay」コマンドでパーティション設定を確認する


■パーティションの状態

「設定されていない場合」のPV Name「/dev/sdb」や「/dev/sdc」など
「設定されている場合」のPV Name「/dev/sdb1」や「/dev/sdc1」など



※「パーティションを設定していない場合」で解説

単一デバイスの場合

fdisk -l /dev/sdb
pvdisplay
pvresize  /dev/sdb
pvdisplay
単一デバイスのPV(Physical Volume)の拡張
単一デバイスのPV(Physical Volume)の拡張

複数デバイスの場合

fdisk -l /dev/sdb /dev/sdc
pvdisplay
pvresize  /dev/sdb /dev/sdc
pvdisplay
複数デバイスのPV(Physical Volume)の拡張
複数デバイスのPV(Physical Volume)の拡張

パーティションを設定していないLVMの作成方法
【Linux】LVMで論理ボリューム作成-5コマンドで設定できる


パーティションを設定している場合
Linuxでgrowpartを利用しないディスク拡張方法(partxコマンド利用)
よりパーティションの拡張を実施してからPVの拡張を実施してください。
※この場合「pvresize /dev/sdb1」となり「/dev/sdb」ではなく「/dev/sdb1」を指定します。


解説3.LV(Logical Volume)の拡張

■ポイント

  1. 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
単一デバイスのLV(Logical Volume)の拡張
単一デバイスのLV(Logical Volume)の拡張

複数デバイスの場合

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
複数デバイスのLV(Logical Volume)の拡張
複数デバイスのLV(Logical Volume)の拡張
複数デバイスのLV(Logical Volume)の拡張
複数デバイスのLV(Logical Volume)の拡張

-L +400M」:増やしたい容量を指定します。
単位は「M(メガ)、G(ギガ)、T(テラ)」などが利用可能です

-l +100%FREE」:空き容量をすべて割り当てる場合に指定します。
※残りの容量をすべて(余らせることなく)割当てたい時に使用します。

-L 100M」:割り当てたい容量を指定します。
単位は「M(メガ)、G(ギガ)、T(テラ)」などが利用可能です。


■2G->3Gへ拡張したい場合
下記、結果は同じになります
「-L +1G」->増やしたい容量を指定
「-L 3G」->拡張後の総容量を指定
※「+」の有無で意味が変わるので注意



解説4.ファイルシステムの拡張(xfs_growfs)

■ポイント

  1. 拡張したLVをアンマウントすることなく拡張が可能です。


単一デバイスの場合

df -h
xfs_growfs /lv-sdb-data
df -h
単一デバイスのファイルシステムの拡張(xfs_growfs)

複数デバイスの場合

■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
複数デバイスのファイルシステムの拡張(xfs_growfs)
複数デバイスのファイルシステムの拡張(xfs_growfs)

■「/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.仮想ディスクの拡張」作業の時だけ、サーバ停止調整すれば、その後、サーバを起動させてサービスを再開後に、後からゆっくりディスク拡張することができます。

VMware環境で稼働する仮想サーバであれば、「1.仮想ディスクの拡張」を仮想サーバの停止をせずに行えます。
その仮想サーバのディスクがLVMで設定していれば、拡張して増えた仮想ディスク容量を仮想サーバのサービス停止をすることなく、枯渇したマウントポイントに割当てすることが可能となります。
また、VMwareのような環境であれば物理ディスクが枯渇し、仮想ディスクの拡張ができなくなっても、容量が潤沢にある別の物理ディスクへ仮想サーバの停止をせずにマイグレーション(移動)することができます。

コメント

タイトルとURLをコピーしました