はじめに
Azure上のRedHatに構成されてるLVMのディスクをオンライン状態で拡張しました。
Linuxを理解できてる人には簡単なんだろうけど、
UNIX系のVM触ると10回に1回ぐらいはVMを破壊して起動できなくしてしまう私にはまだまだ難しい...(笑)
ということで備忘録。
環境
- Azure上のVM
- RedHat8.6
※拡張はrootユーザで行う必要があります。作業前にsudo su -
でrootにスイッチしてください。
目次
1.新規ディスクを追加する場合
2.既存ディスクを拡張する場合
1. 新規ディスクを追加する場合
既存ディスクのサイズは変更せず、新規にディスクを追加してLVMを拡張します。
-
Azure上でディスクを追加
Azure Portalにログインして、ディスクを拡張したいVMの「ディスク」画面から新規ディスクを追加します。
-
対象VMにSSH接続(TeraTerm等で接続)
-
追加したディスクを確認
[localadmin@test-rhel86vm2 ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 64G 0 disk sda1 8:1 0 500M 0 part /boot sda2 8:2 0 63G 0 part rootvg-tmplv 253:5 0 2G 0 lvm /tmp rootvg-usrlv 253:6 0 10G 0 lvm /usr rootvg-homelv 253:7 0 1G 0 lvm /home rootvg-varlv 253:8 0 8G 0 lvm /var rootvg-rootlv 253:9 0 42G 0 lvm / sda14 8:14 0 4M 0 part sda15 8:15 0 495M 0 part /boot/efi sdb 8:16 0 300G 0 disk sdb1 8:17 0 300G 0 part /mnt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sdm 8:192 0 256G 0 disk # ←今回の新規追加したディスク
-
追加したディスクをアクティブ化
[root@test-rhel86vm2 ~]# parted -s -a optimal /dev/sdm -- mklabel gpt mkpart primary 1 -1 set 1 lvm on # 特にエラー等が表示されず、コマンドが返ってこれば成功
-
物理ボリュームを作成
[root@test-rhel86vm2 ~]# pvcreate /dev/sdm1 Physical volume "/dev/sdm1" successfully created.
-
既存のボリュームグループに作成した物理ボリュームを追加
[root@test-rhel86vm2 ~]# vgextend <物理ボリュームを追加するvg名> /dev/sdm1 Volume group "hanavg" successfully extended [root@test-rhel86vm2 ~]# vgs VG #PV #LV #SN Attr VSize VFree hanavg 8 2 0 wz--n- <2.00t 1.12t ← 追加したvgに空きスペースが作成されることを確認 mediavg 1 1 0 wz--n- <512.00g 0 rootvg 1 5 0 wz--n- <63.02g 0 sharedvg 1 1 0 wz--n- <512.00g 0 usrsapvg 1 1 0 wz--n- <64.00g 0
-
LVMを拡張
# 追加する容量をGB単位で指定 [root@test-rhel86vm2 ~]# lvextend -i1 -L +768G <拡張するLVM> Size of logical volume hanavg/datalv changed from 511.98 GiB (131068 extents) to <1.25 TiB (327676 extents). Logical volume hanavg/datalv successfully resized. [root@test-rhel86vm2 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert datalv hanavg -wi-ao---- <1.25t ← 指定したLVMが拡張されていることを確認 loglv hanavg -wi-ao---- <383.99g medialv mediavg -wi-ao---- <512.00g homelv rootvg -wi-ao---- 1.00g rootlv rootvg -wi-ao---- <42.02g tmplv rootvg -wi-ao---- 2.00g usrlv rootvg -wi-ao---- 10.00g varlv rootvg -wi-ao---- 8.00g sharedlv sharedvg -wi-ao---- <512.00g usrsaplv usrsapvg -wi-ao---- <64.00g
-
ファイルシステムを拡張
[root@test-rhel86vm2 ~]# xfs_growfs /dev/hanavg/datalv meta-data=/dev/mapper/hanavg-datalv isize=512 agcount=16, agsize=8388288 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=134212608, imaxpct=25 = sunit=64 swidth=256 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=65533, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 134212608 to 335540224
ここまでやって、dfコマンドを実行したらディスクが拡張されてることが確認できました。
[root@test-rhel86vm2 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 252G 0 252G 0% /dev
tmpfs tmpfs 252G 0 252G 0% /dev/shm
tmpfs tmpfs 252G 9.0M 252G 1% /run
tmpfs tmpfs 252G 0 252G 0% /sys/fs/cgroup
/dev/mapper/rootvg-rootlv xfs 43G 368M 42G 1% /
/dev/mapper/rootvg-usrlv xfs 10G 1.9G 8.2G 19% /usr
/dev/mapper/rootvg-homelv xfs 1014M 40M 975M 4% /home
/dev/mapper/rootvg-tmplv xfs 2.0G 47M 2.0G 3% /tmp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/dev/mapper/hanavg-datalv xfs 1.3T 518G 763G 41% /hana/data ← 拡張したディスク(Sizeが増えます)
/dev/sdb1 ext4 2.0T 2.1G 1.9T 1% /mnt
2. 既存ディスクを拡張する場合
今度は新規ディスクの追加ではなく、既存ディスクを拡張してLVMを拡張します。
※Azureの仕様上、OSディスクはオフライン状態でないと拡張できないので、
本手順はOSディスク以外を拡張する場合です。
-
Azure上でディスクを拡張
Azure Portalにログインして、ディスクを拡張したいVMの「ディスク」画面から既存ディスクを拡張します。
-
対象VMにSSH接続
-
拡張したディスクをOS上のディスク情報に反映
[root@test-rhel86vm2]# echo 1 > /sys/block/sdX/device/rescan # sdXの"X"は拡張したディスクデバイスを指定
-
拡張したディスクを確認
[root@test-rhel86vm2 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 64G 0 disk sda1 8:1 0 500M 0 part /boot sda2 8:2 0 63G 0 part rootvg-tmplv 253:5 0 2G 0 lvm /tmp rootvg-usrlv 253:6 0 10G 0 lvm /usr rootvg-homelv 253:7 0 1G 0 lvm /home rootvg-varlv 253:8 0 8G 0 lvm /var rootvg-rootlv 253:9 0 42G 0 lvm / sda14 8:14 0 4M 0 part sda15 8:15 0 495M 0 part /boot/efi sdb 8:16 0 2T 0 disk sdb1 8:17 0 2T 0 part /mnt sdc 8:32 0 256G 0 disk ← rescan実行後に拡張したdiskのSIZEが増える sdc1 8:33 0 128G 0 part hanavg-datalv 253:3 0 512G 0 lvm /hana/data
-
パーティション再作成
gdisk
で対象ディスクに接続後は、d
で削除→n
で再作成→w
で上書き保存です。p
でパーティションが確認できます。[root@test-rhel86vm2 ~]# gdisk /dev/sdc GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): p # 現状のパーティションの確認 Disk /dev/sdc: 536870912 sectors, 256.0 GiB Model: Virtual Disk Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 536870878 Partitions will be aligned on 2048-sector boundaries Total free space is 268439485 sectors (128.0 GiB) Number Start (sector) End (sector) Size Code Name 1 2048 268433407 128.0 GiB 8E00 primary Command (? for help): d # パーティションを削除(作成前に上書き保存しない限りはOS上では削除されません) Using 1 Command (? for help): n # パーティションを再作成 Partition number (1-128, default 1): First sector (34-536870878, default = 2048) or {+-}size{KMGTP}: Last sector (2048-536870878, default = 536870878) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): 8e00 # LVMを指定 Changed type of partition to 'Linux LVM' Command (? for help): p # パーティションを確認 Disk /dev/sdc: 536870912 sectors, 256.0 GiB Model: Virtual Disk Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): 508E4F5E-D05B-479C-AF20-8A655EA6D22C Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 536870878 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 536870878 256.0 GiB 8E00 Linux LVM ← Sizeが拡張されていることを確認 Command (? for help): w # 上書き保存 Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y # yを入力して確定 OK; writing new GUID partition table (GPT) to /dev/sdc. Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) The operation has completed successfully.
-
再作成したパーティション情報を反映
[root@test-rhel86vm2 ~]# sudo partprobe [root@test-rhel86vm2 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 64G 0 disk sda1 8:1 0 500M 0 part /boot sda2 8:2 0 63G 0 part rootvg-tmplv 253:5 0 2G 0 lvm /tmp ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sdc 8:32 0 256G 0 disk sdc1 8:33 0 128G 0 part ← partprobe実行後に拡張したpartのSIZEが増える hanavg-datalv 253:3 0 512G 0 lvm /hana/data
-
物理ボリュームを拡張(同時にボリュームグループも拡張される)
[root@test-rhel86vm2 ~]# pvresize /dev/sdc1 Physical volume "/dev/sdc1" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized [root@test-rhel86vm2 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 rootvg lvm2 a-- <63.02g 0 /dev/sdc1 hanavg lvm2 a-- <256.00g 128.00g ← 拡張した物理ボリュームに空き容量ができる [root@test-rhel86vm2 ~]# vgs VG #PV #LV #SN Attr VSize VFree hanavg 7 2 0 wz--n- <1.75t 128.00g ← 物理ボリュームが追加されているvgも同時に拡張される mediavg 1 1 0 wz--n- <512.00g 0
-
LVMを拡張
# 追加する容量をGB単位で指定 [root@test-rhel86vm2 ~]# lvextend -i1 -L +768G <拡張するLVM> Size of logical volume hanavg/datalv changed from 511.98 GiB (131068 extents) to <1.25 TiB (327676 extents). Logical volume hanavg/datalv successfully resized. [root@test-rhel86vm2 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert datalv hanavg -wi-ao---- <1.25t ← 指定したLVMが拡張されていることを確認 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
ファイルシステムを拡張
[root@test-rhel86vm2 ~]# xfs_growfs /dev/hanavg/datalv meta-data=/dev/mapper/hanavg-datalv isize=512 agcount=16, agsize=8388288 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=134212608, imaxpct=25 = sunit=64 swidth=256 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=65533, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 134212608 to 335540224
dfコマンドを実行すれば、ディスクが拡張されているはず。
※途中のrescan
やpartprove
で更新したディスクやパーティションの情報が反映されなければ、
OSを再起動する必要があります。
[root@test-rhel86vm2 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 252G 0 252G 0% /dev
tmpfs tmpfs 252G 0 252G 0% /dev/shm
tmpfs tmpfs 252G 9.0M 252G 1% /run
tmpfs tmpfs 252G 0 252G 0% /sys/fs/cgroup
/dev/mapper/rootvg-rootlv xfs 43G 368M 42G 1% /
/dev/mapper/rootvg-usrlv xfs 10G 1.9G 8.2G 19% /usr
/dev/mapper/rootvg-homelv xfs 1014M 40M 975M 4% /home
/dev/mapper/rootvg-tmplv xfs 2.0G 47M 2.0G 3% /tmp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/dev/mapper/hanavg-datalv xfs 1.3T 518G 763G 41% /hana/data ← 拡張したLVM(Sizeが増えます)
/dev/sdb1 ext4 2.0T 2.1G 1.9T 1% /mnt
おわりに
本当はこれくらいさくっとできるようになりたい...けどいろいろ知らなさすぎてやたらと時間かかりました(´・ω・`)
検証してるときにRedHatのWebコンソールの存在を教えてもらったので、今度はそっちでできるか検証したいです。