Proxmox VE のマシンのディスクを縮小(xfs, LVM, LUKS)
RHEL マシンがあまりディスクスペースを使っていないため、ディスクを縮小しました。
自分用のメモです。
今回行うこと
32GB のディスクを 16GB に縮小します。
16GB のディスクにデータをコピーして、32GB のディスクを削除することで縮小を実現します。
Proxmox VE 上で lvreduce を使って縮小はしません。
環境
OS: Rocky Linux 10.0
Boot: UEFI
FDE (LVM on LUKS): yes
root@localhost:~# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rl-root 27G 2.2G 25G 9% /
root@localhost:~# fdisk -l /dev/sda
Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: BA25673D-2FB5-4D81-9884-F3F8DF875B06
Device Start End Sectors Size Type
/dev/sda1 2048 1230847 1228800 600M EFI System
/dev/sda2 1230848 3327999 2097152 1G Linux extended boot
/dev/sda3 3328000 67106815 63778816 30.4G Linux filesystem
root@localhost:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rl -wi-ao---- 26.39g
swap rl -wi-ao---- 4.00g
事前作業
手順
- 縮小したいサイズのディスクを追加
- xfsdump で root のバックアップ
- root 論理ボリュームの再作成
- xfsrestore でリストア
- 物理ボリューム縮小
- 16GB のディスクにデータをコピー
- 16GB のディスクをシステムのディスクとして設定
xfsdump で root のバックアップ
2.2G くらい
root@localhost:~# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rl-root 27G 2.2G 25G 9% /
ディスク追加
バックアップファイルの保存先として使いますが、後ほどシステムのディスクとして再利用します。
今回は 16GB に縮小するので 16GB のディスクを追加。
マウント
root@localhost:~# fdisk -l
...
Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
mkfs.xfs /dev/sdb
mkdir /mnt/sdb
mount /dev/sdb /mnt/sdb
バックアップ
xfsdump -l 0 -f /mnt/sdb/root.dump -L "root dump" -M "backup" /dev/rl/root
再起動して RHEL インストールメディアからレスキューモードを起動します。
reboot
root 論理ボリュームの再作成
RHEL10 インストールディスクのレスキューモード起動
3) Skip to shell
を選択
暗号化パーティションを開く
暗号化していない環境は不要
cryptsetup luksOpen /dev/sda3 sda3
root 論理ボリュームを再作成
lvremove /dev/rl/root
lvcreate -L 8G -n root rl
# WARNING: xfs signature detected on /dev/rl/root at offset 0. Wipe it? [y/n]: y
mkfs.xfs /dev/rl/root
xfsrestore でリストア
mkdir /mnt/root
mkdir /mnt/sdb
mount /dev/rl/root /mnt/root
mount /dev/sdb /mnt/sdb
xfsrestore -f /mnt/sdb/root.dump /mnt/root
ルートボリュームの UUID が変わっているので、/mnt/root/etc/fstab
の UUID を修正
頑張って入力するか >>
で追記しエディタで切り貼り
blkid /dev/mapper/rl-root
vi /mnt/root/etc/fstab
起動できるか確認する
reboot
縮小成功
root@localhost:~# vgs
VG #PV #LV #SN Attr VSize VFree
rl 1 2 0 wz--n- 30.39g 18.39g
root@localhost:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rl -wi-ao---- 8.00g
swap rl -wi-ao---- 4.00g
root@localhost:~# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rl-root 8.0G 1.9G 6.2G 23% /
物理ボリューム縮小
楽なので Ubuntu Desktop の GParted で縮小作業をします。
シェルでやる方は pvresize
と cryptsetup resize
で縮小できます。計算が面倒なので割愛
GParted を起動。luks パーティションを開く
/dev/sda3
を縮小。私の場合は 13000 MiB にしました。
データコピー後の最後に最大まで拡張すればいいので適当にやってます。
16GB のディスクにデータをコピー
Ubuntu 上のターミナルでやってしまいましょう
fdisk /dev/sdb
コピー元と同じ構成のパーティションを作成しましょう。
/dev/sdb1 600M
/dev/sdb2 1G
/dev/sdb3 12.7G
dd でコピー
dd if=/dev/sda1 of=/dev/sdb1 bs=4M status=progress
dd if=/dev/sda2 of=/dev/sdb2 bs=4M status=progress
dd if=/dev/sda3 of=/dev/sdb3 bs=4M status=progress
# for i in 1 2 3; do dd if=/dev/sda$i of=/dev/sdb$i bs=4M status=progress; done
できました。
/dev/sdb3
を最大まで拡張
シャットダウン後 Proxmox VE 上で作業。32GB のディスクをデタッチし、オプションから 16GB のディスクで起動するように設定
起動確認、ボリューム拡張
縮小成功
root@localhost:~# fdisk -l /dev/sda
Disk /dev/sda: 16 GiB, 17179869184 bytes, 33554432 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4A90049D-10DC-4749-9D1E-BF921B967DCC
Device Start End Sectors Size Type
/dev/sda1 2048 1230847 1228800 600M Linux filesystem
/dev/sda2 1230848 3327999 2097152 1G Linux filesystem
/dev/sda3 3328000 33552383 30224384 14.4G Linux filesystem
root@localhost:~# pvs
PV VG Fmt Attr PSize PFree
/dev/mapper/luks-56b095b6-640f-4c3a-ac81-225e559963ff rl lvm2 a-- <12.68g 692.00m
root@localhost:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rl -wi-ao---- 8.00g
swap rl -wi-ao---- 4.00g
物理ボリュームを拡張する
pvresize /dev/mapper/luks-56b095b6-640f-4c3a-ac81-225e559963ff
拡張できました
root@localhost:~# pvs
PV VG Fmt Attr PSize PFree
/dev/mapper/luks-56b095b6-640f-4c3a-ac81-225e559963ff rl lvm2 a-- 14.39g 2.39g
論理ボリューム拡張(任意)
lvextend -l +100%FREE /dev/rl/root
xfs_growfs /dev/rl/root
root@localhost:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rl -wi-ao---- 10.39g
swap rl -wi-ao---- 4.00g
root@localhost:~# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rl-root 11G 1.9G 8.5G 19% /
お疲れさまでした。
Discussion