気の向くままに辿るIT/ICT/IoT
システム開発

lvmによるlvextend/lvdisplayの例

ホーム前へ次へ
LVMとは?

lvmによるlvextend/lvdisplayの例

lvmによるlvextend/lvdisplayの例

 次のような状況で論理ボリュームの確認と拡張を行うことになりました。

 仮想マシン上のファイルシステムが論理ボリューム用のLVM2で作成されていたFedora(Linux)のrootパーティションの容量が8GBでは不足するケースがあった為、VirtualBoxの仮想ディスクサイズを15GBに拡張、仮想ハードディスクだけ拡張したところでファイルシステムを拡張しないと利用できず、意味がないので論理ボリュームを拡張することに。

 仮想ディスク拡張後、Live版Gpartedで確認するとbootパーティションがサイズ500MiBで/dev/sda1、rootパーティションがサイズ7.51GiBで/dev/sda2となっていました。

 ちなみにGRUB Legacyでは、LVMをサポートしていないことから、boot領域のあるパーティションは、LVM/LVM2として指定することができませんが、GRUB 2では、そうした制約はないようです。

 LVMとは、論理ボリューム用のファイルシステムであり、論理ボリューム管理ソフトウェアlogical volume managerでもあります。

 論理ボリュームを拡張するにあたっては、外付けなどのHDDや未使用のパーティションが必要というか、これらを論理ボリュームに容易に追加、削除できるのがlvmのメリットです。

 そこで今回は、仮想ハードディスク拡張分の7GiBを全て使ってパーティション/dev/sda3を追加することにしました。

 ちなみにLVMに追加するにあたってファイルシステムの指定は不要、指定した場合、論理ボリューム拡張時に余計なファイルシステムがあるけどクリアしていい?といったWarning/警告が出るので[y]とすれば、処理を完了できます。

 今回は、GPartedでパーティションを作成しましたが、そもそもlvmの[pvcreate]コマンドを使うとディスクやパーティションを初期化でき、この時、DOSパーティションに追加する場合は、パーティションIDを[0x8e]に設定します。

 尚、記憶メディア全体を追加するなら当然その必要はありませんが、fdiskやGPartedで記憶メディアを操作し、パーティションの作成などをする際には、それら記憶メディアはアンマウント状態である必要がありますが、作成後に未使用の領域をLVMに追加する際にはマウント状態でも大丈夫(だったはず。。)。

 仮想マシンでLVMにパーティションを追加するなら一度、仮想マシンを終了させ、仮想化ソフトウェアのサイズ変更方法に沿って拡張、更に適宜USBメモリや.isoなどを指定の上、Live起動させてfdiskやGPartedを実行し、パーティションを作成後、終了、仮想マシンを起動後、後述のようにLVM操作を行ないます。

 物理マシンで既にLVMに物理ボリューム及び論理ボリュームが割り当てられている外付けHDDなどに新たにパーティションを追加する場合、(ボリュームグループに追加済みの物理ボリューム/dev/sd?*ではなく、)システム上で[df -h]などで確認した(LVM上の/dev/VGNAME/LVNAMEとは限らない)当該デバイス名を指定してアンマウントしてからdmesgなどで確認した外付けHDDなどに割り当てられたデバイスに対してfdiskやGParted操作、(ここでマウントしてもよいでしょうが、)続いて後述のようにLVM操作を行なってから[mount -a]するなりして先の(LVM上の/dev/VGNAME/LVNAMEとは限らない)当該デバイスをマウントします。

$ sudo pvdisplay
...
$ sudo pvcreate /dev/sda3
Physical volume "/dev/sd?*" successfully created
$ sudo pvdisplay
...
$

 物理ボリューム情報を表示する[pvdisplay]コマンドを実行すると既存の物理ボリュームの情報が表示されるので一応確認しておきます。

 全部なら記憶メディアを用意、dmesgなどでデバイス名を確認、記憶メディアの一部ならGPartedやfdiskなどでLVMに追加するパーティションを作成したら、ファイルシステムの作成は不要、そのまま、PV/Phisical Volume/物理ボリュームを作成する[pvcreate]コマンドでその記憶メディアやパーティションに割り当てられたデバイスを追加します。

 前述の通り、今回は、パーティションを追加、デバイス名は、/dev/sda3です。

 [pvcreate]実行後、[pvdisplay]コマンドを実行すれば、新たに追加した物理ボリュームを確認できます。

$ lvdisplay
...
LV Path /dev/fedora/swap
LV Name swap
VG Name fedora
...
LV Size 820MiB
...
LV Path /dev/fedora/root
LV Name root
VG Name fedora
...
LV Size 6.69GiB
...
$

 次に論理ボリュームの情報を表示する[lvdisplay]コマンドでLV/Logical Volume/論理ボリューム名やVG/Volume Group/ボリュームグループ名を確認。

 今回は、[swap]というスワップ領域用論理ボリューム(LV)と[root]というrootパーティション用論理ボリュームを持つ[fedora]というボリュームグループ(VG)が1つあり、拡張予定の[root]の論理ボリュームサイズは、6.69GiBであることがわかります。

$ sudo vgdisplay
...
$ sudo vgextend fedora /dev/sda3
Volume group "fedora" successfully extended
$ sudo vgdisplay
...
$

 次にVG/Volume Group/ボリュームグループを表示する[vgdisplay]コマンドで既存のボリュームグループの特にVG Sizeを一応確認しておきます。

 続いてボリュームグループに物理ボリュームを追加する[vgextend]コマンドを実行します。

 [vgextend]実行後、[vgdisplay]コマンドを実行すれば、ボリュームグループを確認できVG Sizeが物理ボリュームを追加した分だけ増量していることを確認することができます。

 ただし、この後、論理ボリュームやファイルシステムを拡張するまでは、増量分の記憶領域を使うことができません。

$ sudo lvextend -r -l +100%FREE /dev/fedora/root
fsck from util-linux x.x.x
...
$ lvdisplay fedora
...
LV Path /dev/fedora/root
LV Name root
VG Name fedora
...
LV Size 13.70GiB
...
$

 最後に論理ボリュームを拡張する[lvextend]コマンドにファイルシステムも同時に拡張する[-r]オプションなど適宜適切なオプションを、続いて論理ボリュームパス(/dev/VGNAME/LVNAME)を渡して実行します。

 今回は、論理ボリュームを拡張する為、新規に作成した[/dev/sda3]の分の全ての領域を[/dev/fedora/root]に割り当て([-l +100%FREE /dev/fedora/root])論理ボリュームと同時にファイルシステムも拡張([-r]オプション)しました。

 念の為、[lvdisplay fedora]で確認すると追加した7GiB分だけ論理ボリュームが拡張され、6.69GiBだったrootパーティジョンが丸められて13.70GiBとなっているので成功、これで拡張した領域すべてを使うことができるようになります。

 詳細は、[man lvm]、[man pvcreate]、[man pvdisplay]、[man vgdisplay]、[man lvdisplay]、[man lvextend]等を参照。

ホーム前へ次へ