AWSでEC2インスタンスを標準構成で起動した場合、LVMなどの構成とはなりません。しかしながら、オンプレミス環境からマイグレーションした場合、移行元のマシンイメージでLVM構成となっている場合があります。
LVM構成のEC2インスタンスでEBSの容量拡張を行う手順を、備忘録として残します。
1、事前準備
容量拡張対象のEC2インスタンスに「growpart」パッケージが導入されている必要があります。パッケージがない場合はインストールします。
yum install epel-release
yum install --enablerepo=epel cloud-utils-growpart
yum install --enablerepo=epel dracut-modules-growroot
また、失敗すると全データが復旧できなくなる可能性がある為、バックアップを取得します。
2、EC2インスタンスの容量拡張
対象インスタンスでEBSの拡張を行います。作業手順については以下リンクを参照して実施します。
3、パーティションの拡張
EBSの拡張後は以下の図のように、ディスク容量は増加していますがパーティションの容量は増加していません。そのため「growpart」コマンドを使用してパーティションを拡張します。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1 259:0 0 20G 0 disk ←ディスク容量は増えている
mqnvme1n1p1 259:5 0 10G 0 part ←パーティションは増えていない
tqtest--vg-lv01 253:0 0 8G 0 lvm /mnt
mqtest--vg-lv02 253:1 0 1.9G 0 lvm
nvme0n1 259:1 0 8G 0 disk
tqnvme0n1p1 259:2 0 8G 0 part /
mqnvme0n1p128 259:3 0 1M 0 part
# growpart /dev/nvme1n1 1
※growpart <デバイス名> <パーティション番号>
CHANGED: partition=1 start=2048 old: size=20969472 end=20971520 new: size=41940959 end=41943007
コマンド実行後、以下のようにパーティションの容量が増加します。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1 259:0 0 20G 0 disk
mqnvme1n1p1 259:5 0 20G 0 part ←パーティションも増えている
tqtest--vg-lv01 253:0 0 8G 0 lvm /mnt
mqtest--vg-lv02 253:1 0 1.9G 0 lvm
nvme0n1 259:1 0 8G 0 disk
tqnvme0n1p1 259:2 0 8G 0 part /
mqnvme0n1p128 259:3 0 1M 0 part
※コマンド実行後に容量の変化がなかった場合は、再起動を行います。
4、Physical Volumeの拡張
パーティション拡張後、LVMのPhysical Volumeを拡張します。「pvdisplay」コマンドでPV容量を確認すると変更前の「10GiB」が表示されています。
# pvdisplay
--- Physical volume ---
PV Name /dev/sdf1
VG Name test-vg
PV Size <10.00 GiB / not usable 3.00 MiB ←10GiBのまま
Allocatable yes
PE Size 4.00 MiB
Total PE 2559
Free PE 24
Allocated PE 2535
PV UUID e5eVKY-c2DK-mZ61-BBEM-NOxc-ZtVe-AkegV8
「pvresize」コマンドを実行して、PVを拡張します。
# pvresize /dev/nvme1n1p1
Physical volume "/dev/sdf1" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
拡張後、容量が増加していることを確認します。
# pvdisplay
--- Physical volume ---
PV Name /dev/sdf1
VG Name test-vg
PV Size <20.00 GiB / not usable 1.98 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 5119
Free PE 2584
Allocated PE 2535
PV UUID e5eVKY-c2DK-mZ61-BBEM-NOxc-ZtVe-AkegV8
5、Logical Volumeの拡張
Physical Volumeの拡張後、Logical Volumeを拡張します。
「lvdisplay」コマンドを実行し、拡張対象のLVの状態を確認します。今回は「/dev/test-vg/lv01」に20Gib(全量)割り当てます。
# lvdisplay
--- Logical volume ---
LV Path /dev/test-vg/lv01 ←追加対象
LV Name lv01
VG Name test-vg
LV UUID YweuFN-161d-2qco-3y3c-0NjH-BDoe-S46Sll
LV Write Access read/write
LV Creation host, time ip-192-168-0-200.test-nakamura, 2020-05-23 11:57:25 +0000
LV Status available
# open 1
LV Size 8.00 GiB
Current LE 2048
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/test-vg/lv02
LV Name lv02
VG Name test-vg
LV UUID Tlt5EQ-TP4A-dMiB-zHgd-KPdF-zxAg-MGAUtk
LV Write Access read/write
LV Creation host, time ip-192-168-0-200.test-nakamura, 2020-05-23 11:57:57 +0000
LV Status available
# open 0
LV Size 1.90 GiB
Current LE 487
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
「lvextend」コマンドを実行し、全量を割り当てます。
# lvextend -l +100%FREE /dev/test-vg/lv01
Size of logical volume test-vg/lv01 changed from 8.00 GiB (2048 extents) to 18.09 GiB (4632 extents).
Logical volume test-vg/lv01 successfully resized.
# lvdisplay
--- Logical volume ---
LV Path /dev/test-vg/lv01
LV Name lv01
VG Name test-vg
LV UUID YweuFN-161d-2qco-3y3c-0NjH-BDoe-S46Sll
LV Write Access read/write
LV Creation host, time ip-192-168-0-200.test-nakamura, 2020-05-23 11:57:25 +0000
LV Status available
# open 1
LV Size 18.09 GiB ←容量が増える
Current LE 4632
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/test-vg/lv02
LV Name lv02
VG Name test-vg
LV UUID Tlt5EQ-TP4A-dMiB-zHgd-KPdF-zxAg-MGAUtk
LV Write Access read/write
LV Creation host, time ip-192-168-0-200.test-nakamura, 2020-05-23 11:57:57 +0000
LV Status available
# open 0
LV Size 1.90 GiB
Current LE 487
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
6、FileSystemの拡張
最後に、FileSystemの拡張を行い、OSが認識する容量を拡張します。
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 213M 0 213M 0% /dev
tmpfs 231M 0 231M 0% /dev/shm
tmpfs 231M 420K 231M 1% /run
tmpfs 231M 0 231M 0% /sys/fs/cgroup
/dev/nvme0n1p1 8.0G 1.6G 6.5G 20% /
tmpfs 47M 0 47M 0% /run/user/1000
/dev/mapper/test--vg-lv01 7.8G 36M 7.3G 1% /mnt ←まだOSから認識されていない
「resize2fs」コマンドを実行し、FileSystemの容量を拡張します。
# resize2fs /dev/mapper/test--vg-lv01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/test--vg-lv01 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/mapper/test--vg-lv01 is now 4743168 blocks long.
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 213M 0 213M 0% /dev
tmpfs 231M 0 231M 0% /dev/shm
tmpfs 231M 420K 231M 1% /run
tmpfs 231M 0 231M 0% /sys/fs/cgroup
/dev/nvme0n1p1 8.0G 1.6G 6.5G 20% /
tmpfs 47M 0 47M 0% /run/user/1000
/dev/mapper/test--vg-lv01 18G 44M 17G 1% /mnt ←容量が増加した
以上で、容量の拡張は終了です。