LVMにより無停止で仮想マシンのディスク容量を拡張

OS:CentOS Linux release 7.7.1908
LVM: 2.02.185(2)-RHEL7
VMware Workstaion 15 Pro 15.5.2 build-15785246

既に稼働中の仮想マシンを停止せずにディスク容量を増すよう指示を受け実践するものである。なお追加したいディスクの種類がIDEとNVMeの場合は稼働中、新たに追加すること能わぬ。こういう場合、マシン停止の機会を何としてでも関係者と調整せねばならない。まずは現状のブロックデバイスを把握する。

$ lsblk -i
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                      11:0    1 1024M  0 rom
nvme0n1                 259:0    0   20G  0 disk
|-nvme0n1p1             259:1    0    1G  0 part /boot
`-nvme0n1p2             259:2    0   19G  0 part
  |-centos_centos7-root 253:0    0   17G  0 lvm  /
  `-centos_centos7-swap 253:1    0    2G  0 lvm  [SWAP]

そうしたら仮想マシンにディスクを追加する。

図1. 仮想マシンを右クリックして「Settings」を選択
図2. 「Add」をクリック
図3. 「Hard Disk」を選択して「Next」
図4. 仮想マシンが稼働中であるとIDE・NVMeは追加できない
図5. 仮想ディスクの作成・選択
図6. ディスク領域の割り当て方法を指定
図7. ディスクファイル名と場所の指定
図8. 新たな仮想ディスクが追加された様子

恙無くディスクが追加されたら改めてブロックデバイスを一覧する。新たにsdaというブロックデバイスがあるからこれが先に追加したディスクであろうと見当が付く。

$ lsblk -i
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                       8:0    0   20G  0 disk
sr0                      11:0    1 1024M  0 rom
nvme0n1                 259:0    0   20G  0 disk
|-nvme0n1p1             259:1    0    1G  0 part /boot
`-nvme0n1p2             259:2    0   19G  0 part
  |-centos_centos7-root 253:0    0   17G  0 lvm  /
  `-centos_centos7-swap 253:1    0    2G  0 lvm  [SWAP]

このあとの手続きは物理ボリューム、ボリュームグループ、論理ボリュームそれぞれの設定である。先ずは追加したブロックデバイス /dev/sda をLVMで扱うためにpvcreateコマンドで物理ボリュームとして初期化する。

$ sudo pvs
  PV             VG             Fmt  Attr PSize   PFree
  /dev/nvme0n1p2 centos_centos7 lvm2 a--  <19.00g    0

$ sudo pvcreate /dev/sda
  Physical volume "/dev/sda" successfully created.

$ sudo pvs
  PV             VG             Fmt  Attr PSize   PFree
  /dev/nvme0n1p2 centos_centos7 lvm2 a--  <19.00g    0
  /dev/sda       centos_centos7 lvm2 a--  <20.00g    0

物理ボリュームとして追加された/dev/sdaを既存のボリュームグループcentos_centos7vgextendコマンドで追加する。

$ sudo vgs
  VG             #PV #LV #SN Attr   VSize   VFree
  centos_centos7   1   2   0 wz--n- <19.00g    0

$ sudo vgextend centos_centos7 /dev/sda
  Volume group "centos_centos7" successfully extended

$ sudo vgs
  VG             #PV #LV #SN Attr   VSize  VFree
  centos_centos7   2   2   0 wz--n- 38.99g    0

次に論理ボリュームを拡張する。ボリュームグループ centos_centos7 の内、論理ボリューム root の容量を拡張するならlvextendコマンドでこうである。

$ sudo lvs
  LV   VG             Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_centos7 -wi-ao---- <17.00g
  swap centos_centos7 -wi-ao----   2.00g

$ sudo lvextend -l +100%FREE /dev/mapper/centos_centos7-root
  Size of logical volume centos_centos7/root changed from <17.00 GiB (4351 extents) to 36.99 GiB (9470 extents).
  Logical volume centos_centos7/root successfully resized.

$ sudo lvs
  LV   VG             Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_centos7 -wi-ao---- 36.99g
  swap centos_centos7 -wi-ao----  2.00g

最後にファイルシステムの拡張を実施する。XFSファイルシステムで構築したなら xfs_growfs コマンドで、ext4であればresize2fsで以って拡張する。

$ df -Th
ファイルシス                    タイプ   サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos_centos7-root xfs         17G  1.5G   16G    9% /

$ sudo xfs_growfs /dev/mapper/centos_centos7-root
meta-data=/dev/mapper/centos_centos7-root isize=512    agcount=4, agsize=1113856 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4455424, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

$ df -Th
ファイルシス                    タイプ   サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos_centos7-root xfs         37G  1.5G   36G    4% /

これでようやっとディスク容量の拡張が達成された。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください