LVM構成のEC2インスタンスでディスク拡張する方法

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の拡張を行います。作業手順については以下リンクを参照して実施します。

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 ←容量が増加した

以上で、容量の拡張は終了です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)