イフブロ

イフブロ

インフラエンジニアのブログ

オンラインで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]
  • CentOS7で、LVMを使ったルーティパーティションを拡張する。AWSに乗っているのでDiskはEBSです。

手順

EBSの拡張

EBSはオンラインでの拡張がサポートされている (古いインスタンスタイプによってはサポートされていないので要確認)ので、GUIからポチポチ拡張する。

f:id:umisora2:20180305170737p:plain

f:id:umisora2:20180305170805p:plain

f:id:umisora2:20180305170850p:plain

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 で拡張した後に resize2fsxfs_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として来られたパーティションだからの様です。