Introduction

備忘録。
以前 開発メモ その210 CentOS7 on Gen2 Hyper-V VM のディスクをリサイズする において、CentOS 7 で同じことをやったが、同様に RHEL でも実行できるかの確認。

How to?

まず直前の状態。

1
2
3
4
5
6
7
8
9
10
11
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 3.8G 18M 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/mapper/rhel-root 26G 4.4G 21G 18% /
/dev/sda2 1014M 234M 781M 23% /boot
/dev/sda1 599M 6.9M 592M 2% /boot/efi
tmpfs 777M 16K 777M 1% /run/user/42
tmpfs 777M 32K 777M 1% /run/user/1000

1. Hyper-Vからディスク拡張

GUIから拡張
今回は30GBから40GBに拡張。

ios

2. ディスクの状態を確認

仮想マシンを起動。
何も変化していないことを確認。

1
2
3
4
5
6
7
8
9
10
11
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 3.8G 18M 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/mapper/rhel-root 26G 4.5G 21G 18% /
/dev/sda2 1014M 234M 781M 23% /boot
/dev/sda1 599M 6.9M 592M 2% /boot/efi
tmpfs 777M 16K 777M 1% /run/user/42
tmpfs 777M 32K 777M 1% /run/user/1000

3. partedでディスクを修正

このままだとフリーな領域が見えませんので、partedで修正。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 20971520 blocks) or continue with the current setting?
Fix/Ignore? Fix
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 42.9GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 630MB 629MB fat32 EFI System Partition boot, esp
2 630MB 1704MB 1074MB xfs
3 1704MB 32.2GB 30.5GB lvm

修正が実施され、ディスクの情報が出力されます。
ここで Disk /dev/sda: 42.9GB の部分の数値を記録します。
後から使用します。
この数値がHyper-Vで拡張したディスクサイズになっています。

4. resizepartで実際にリサイズ

同じくpartedのコマンドの一つ resizepart でパーティションのサイズを変更します。
修正対象は、3つめのパーティションになります。
そして、パーティションの終端を指定します。つまり、先ほどのディスクサイズを指定します。

1
2
3
(parted) resizepart
Partition number? 3
End? [32.2GB]? 42.9G

リサイズ後、pコマンドで確認します。

1
2
3
4
5
6
7
8
9
10
11
(parted) p
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 42.9GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 630MB 629MB fat32 EFI System Partition boot, esp
2 630MB 1704MB 1074MB xfs
3 1704MB 42.9GB 41.2GB lvm

サイズが増えていることがわかります。
qを押下してpartedを終了します。

5. pvresizeで物理ボリュームをリサイズ

物理ボリュームのリサイズ。
修正前はこうなります。

1
2
3
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 rhel lvm2 a-- 28.41g 0

修正対象の物理ボリュームを指定して、pvresizeを実行するだけで、最大まで物理ボリュームを拡張します。

1
2
3
4
5
6
7
# pvresize /dev/sda3
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized

# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 rhel lvm2 a-- 38.36g 9.95g

空き領域が増えたことがわかります。

6. lvextendで論理ボリュームをリサイズ

これで最後です。
先ほど拡張した物理ボリューム内のデバイスマッパーが割り当てたデバイスを拡張します。
つまり、**/dev/sda3** 配下のデバイスになります。
この関係は lsblk で確認できます。

1
2
3
4
5
6
7
8
9
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 38.4G 0 part
├─rhel-root 253:0 0 25.4G 0 lvm /
└─rhel-swap 253:1 0 3G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom

ここでは、

  • rhel-root
  • rhel-swap

を拡張できます。
片方に空き領域を全部足してもイイですし、均等に配分しても構いません。
ここでは、10:0でrootに配分します、というかswapにはlvextendで拡張できません。
fsadm: Filesystem “swap” on device “/dev/mapper/rhel-swap” is not supported by this tool. って言われて怒られますので。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# lvextend -l +100%FREE -r /dev/mapper/rhel-root
Size of logical volume rhel/root changed from 25.41 GiB (6505 extents) to 35.36 GiB (9053 extents).
Logical volume rhel/root successfully resized.
meta-data=/dev/mapper/rhel-root isize=512 agcount=4, agsize=1665280 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=6661120, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=3252, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 6661120 to 9270272

指定は、現在の空き領域の何%を指定したデバイスに追加するか、という意味になります。
今回は全部を配分するので100%を指定しました。

7. 確認

こうなりました。
無事に10GB増えていることがわかります。

1
2
3
4
5
6
7
8
9
10
11
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 3.8G 18M 3.8G 1% /run
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/mapper/rhel-root 36G 4.5G 31G 13% /
/dev/sda2 1014M 234M 781M 23% /boot
/dev/sda1 599M 6.9M 592M 2% /boot/efi
tmpfs 777M 16K 777M 1% /run/user/42
tmpfs 777M 36K 777M 1% /run/user/1000