オンラインでLinuxDisk拡張 with EBS / LVM
概要
AWSのEC2インスタンスのDiskをオンラインで拡張する。 なんか毎回ファイルコマンド忘れるし、どこ変えればいいんじゃ・・・ってなるんですよね。 きっと今回もなると思うんですけれども、少しでも前にすすめる様に覚え書きします。
環境
今回はルーティパーティションを 20GBから100GBに変更する。
# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) # df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 20G 11G 9.3G 54% / devtmpfs 7.8G 0 7.8G 0% /dev tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs 7.7G 8.4M 7.7G 1% /run tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup tmpfs 1.6G 0 1.6G 0% /run/user/200 tmpfs 1.6G 0 1.6G 0% /run/user/0 # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 29G 0 part ├─centos-root 253:0 0 20G 0 lvm / └─centos-swap 253:1 0 9G 0 lvm [SWAP]
手順
EBSの拡張
EBSはオンラインでの拡張がサポートされている (古いインスタンスタイプによってはサポートされていないので要確認)ので、GUIからポチポチ拡張する。
OSからDisk確認
su - root lsblk #... Diskの使用状況 pvdisplay #... 物理ボリュームのサイズの確認 vgdisplay #... ボリュームグループのサイズの確認 lvdisplay #... 論理ボリュームのサイズの確認
物理ディスクの拡張
旧来だと fdisk
で pertitionを拡張したり、一度削除して作り直したりしていた。
または perted
コマンドで拡張したりしていた。
growpart
ってコマンドが新しく出来ていて便利だったので以後はコレを使おう
EBSのサイズに合わせてパーティションサイズを変更出来るんだとか。
yum install cloud-utils-growpart growpart /dev/xvda 1 pvresize /dev/xvda1 Physical volume "/dev/xvda1" changed 1 physical volume(s) resized / 0 physical volume(s) not resized
この状態で各種サイズ確認すると * lsblk * pv * vg までは拡張されている事が見える。
# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 100.00 GiB PE Size 4.00 MiB Total PE 25599 Alloc PE / Size 7423 / 29.00 GiB Free PE / Size 18176 / 71.00 GiB ←← vg には総サイズは大きいが新しく大きくした所が `Free` として使用可能である事がわかる。 VG UUID rMuMHs-vxaY-s4eU-IXVZ-hb0X-AOjy-S853uX
論理ディスクの拡張
論理ボリュームを拡張する
lvextend -l +100%FREE /dev/centos/root lvdisplay
# lvdisplay --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID oTvKS9-OZfk-miHO-uXxk-B2cb-U0GF-f4ivKh LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-06-29 17:55:47 +0900 LV Status available # open 1 LV Size 91.00 GiB ←← でかくなった。 Current LE 23296 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
ファイルシステムの拡張
ディスクは大きくなったのでファイルシステムを拡張する
resize2fsはCentOS7では(厳密にはxfsファイルシステムでは) 使えなくなったので xfs_growfs
コマンドで拡張する。
# resize2fs /dev/centos/root resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/centos/root Couldn't find valid filesystem superblock. # xfs_growfs /dev/centos/root meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=1310720 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 spinodes=0 data = bsize=4096 blocks=5242880, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 5242880 to 23855104 [root@prod-wordpress02 ~]# df -h # df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 91G 12G 80G 14% / ←← 大きくなった devtmpfs 7.8G 0 7.8G 0% /dev tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs 7.7G 8.4M 7.7G 1% /run tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup tmpfs 1.6G 0 1.6G 0% /run/user/200 tmpfs 1.6G 0 1.6G 0% /run/user/0
終わり。
LVMがない場合は growpart
で拡張した後に resize2fs
か xfs_growfs
を実行すれば良い。
resize2fs
をLVMのパーティションに適用しようとすると
# resize2fs /dev/xvda1 resize2fs 1.42.9 (28-Dec-2013) resize2fs: デバイスもしくはリソースがビジー状態です while trying to open /dev/xvda1 Couldn't find valid filesystem superblock.
と出る。てっきり umount
しないといけないのかな。とか root partition
だからかな。と思ったけど
そんなことはなくって LVMとして来られたパーティションだからの様です。