Open14

proxmoxホストのディスクを拡張する

杉田 一毅杉田 一毅

練習用に運用しているProxmoxサーバ(version 5.15.74-1)のディスクを換装した。元々500GBのSSDを使用していたが、I/O Errorを吐き始め明確に故障したのと、前々から用量不足を感じていたため、1TBのHDDに換装した。特にpve-root(proxmoxホスト)に100GBしか割り当てておらず、カツカツな状況が続いていた。

換装時にddコマンドで単純にコピーしたため、当然パーティションテーブルもそのままである。何も考えずに新HDDで運用開始してしまったために、迂闊にパーティションを広げられずにここまで来てしまった。

今回はサーバを動かしたままパーティションを拡大し、Proxmoxのlogical volumeを拡大できないか、ということで色々とやってみる。バックアップは(壊れてるけど)以前のSSDがあるので、何もせず突き進みます。

杉田 一毅杉田 一毅

ちなみに特にクラスタを構成しているわけでもなく、シングルマシンで運用している。

$ pveversion -v
proxmox-ve: 7.3-1 (running kernel: 5.15.74-1-pve)
pve-manager: 7.3-3 (running version: 7.3-3/c3928077)
pve-kernel-5.15: 7.2-14
pve-kernel-helper: 7.2-14
pve-kernel-5.15.74-1-pve: 5.15.74-1
ceph-fuse: 15.2.17-pve1
corosync: 3.1.7-pve1
criu: 3.15-1+pve-1
glusterfs-client: 9.2-1
ifupdown2: 3.1.0-1+pmx3
ksm-control-daemon: 1.4-1
libjs-extjs: 7.0.0-1
libknet1: 1.24-pve2
libproxmox-acme-perl: 1.4.2
libproxmox-backup-qemu0: 1.3.1-1
libpve-access-control: 7.2-5
libpve-apiclient-perl: 3.2-1
libpve-common-perl: 7.2-8
libpve-guest-common-perl: 4.2-3
libpve-http-server-perl: 4.1-5
libpve-storage-perl: 7.2-12
libspice-server1: 0.14.3-2.1
lvm2: 2.03.11-2.1
lxc-pve: 5.0.0-3
lxcfs: 4.0.12-pve1
novnc-pve: 1.3.0-3
proxmox-backup-client: 2.2.7-1
proxmox-backup-file-restore: 2.2.7-1
proxmox-mini-journalreader: 1.3-1
proxmox-widget-toolkit: 3.5.3
pve-cluster: 7.3-1
pve-container: 4.4-2
pve-docs: 7.3-1
pve-edk2-firmware: 3.20220526-1
pve-firewall: 4.2-7
pve-firmware: 3.5-6
pve-ha-manager: 3.5.1
pve-i18n: 2.8-1
pve-qemu-kvm: 7.1.0-4
pve-xtermjs: 4.16.0-1
qemu-server: 7.3-1
smartmontools: 7.2-pve3
spiceterm: 3.2-2
swtpm: 0.8.0~bpo11+2
vncterm: 1.7-1
zfsutils-linux: 2.1.6-pve1
杉田 一毅杉田 一毅

lsblkでディスクの概観を確認する。lsblkコマンドについては弊社のテックブログで詳しく解説してます。

$ lsblk
NAME                            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                               8:0    0 931.5G  0 disk 
├─sda1                            8:1    0  1007K  0 part 
├─sda2                            8:2    0   512M  0 part 
└─sda3                            8:3    0 446.6G  0 part 
  ├─pve-swap                    253:0    0     8G  0 lvm  [SWAP]
  ├─pve-root                    253:1    0    96G  0 lvm  /
  ├─pve-data_tmeta              253:2    0   3.3G  0 lvm  
  │ └─pve-data-tpool            253:4    0 320.1G  0 lvm  
  │   ├─pve-data                253:5    0 320.1G  1 lvm  
  │   ├─pve-vm--1001--cloudinit 253:6    0     4M  0 lvm  
  │   ├─pve-vm--1001--disk--0   253:7    0   128G  0 lvm  
  │   ├─pve-vm--9100--cloudinit 253:8    0     4M  0 lvm  
  │   ├─pve-vm--100--cloudinit  253:9    0     4M  0 lvm  
  │   ├─pve-vm--100--disk--0    253:10   0   128G  0 lvm  
  │   ├─pve-vm--200--cloudinit  253:11   0     4M  0 lvm  
  │   ├─pve-vm--200--disk--0    253:12   0   128G  0 lvm  
  │   ├─pve-vm--300--cloudinit  253:13   0     4M  0 lvm  
  │   └─pve-vm--300--disk--0    253:14   0    64G  0 lvm  
  └─pve-data_tdata              253:3    0 320.1G  0 lvm  
    └─pve-data-tpool            253:4    0 320.1G  0 lvm  
      ├─pve-data                253:5    0 320.1G  1 lvm  
      ├─pve-vm--1001--cloudinit 253:6    0     4M  0 lvm  
      ├─pve-vm--1001--disk--0   253:7    0   128G  0 lvm  
      ├─pve-vm--9100--cloudinit 253:8    0     4M  0 lvm  
      ├─pve-vm--100--cloudinit  253:9    0     4M  0 lvm  
      ├─pve-vm--100--disk--0    253:10   0   128G  0 lvm  
      ├─pve-vm--200--cloudinit  253:11   0     4M  0 lvm  
      ├─pve-vm--200--disk--0    253:12   0   128G  0 lvm  
      ├─pve-vm--300--cloudinit  253:13   0     4M  0 lvm  
      └─pve-vm--300--disk--0    253:14   0    64G  0 lvm  

これをみるとsdaは931.5GBあるのに、有効活用できているのは450GB程度であることが確認できる。

次にパーティションスタイルを確認。おそらくGPTなのでgdiskを叩いてみる。

$ gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.6

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Model: ST1000DM014-2UB1
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): F0CDE82C-92CD-418D-872E-1E7D143DA54F
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 1953525134
Partitions will be aligned on 8-sector boundaries
Total free space is 1015822080 sectors (484.4 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34            2047   1007.0 KiB  EF02  
   2            2048         1050623   512.0 MiB   EF00  
   3         1050624       937703054   446.6 GiB   8E00  

やはりパーティションスタイルはGPTだった。

杉田 一毅杉田 一毅

このままgdiskで作業を進める。

$ gdisk
GPT fdisk (gdisk) version 1.0.6

Type device filename, or press <Enter> to exit: ^C
root@medopstech:~# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.6

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/sda: 1953525168 sectors, 931.5 GiB
Model: ST1000DM014-2UB1
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): F0CDE82C-92CD-418D-872E-1E7D143DA54F
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 1953525134
Partitions will be aligned on 8-sector boundaries
Total free space is 1015822080 sectors (484.4 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34            2047   1007.0 KiB  EF02  
   2            2048         1050623   512.0 MiB   EF00  
   3         1050624       937703054   446.6 GiB   8E00  

Command (? for help): d
Partition number (1-3): 3

Command (? for help): n
Partition number (3-128, default 3): 3
First sector (1050624-1953525134, default = 1050624) or {+-}size{KMGTP}: 
Last sector (1050624-1953525134, default = 1953525134) or {+-}size{KMGTP}: 
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 8E00
Changed type of partition to 'Linux LVM'

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
OK; writing new GUID partition table (GPT) to /dev/sda.
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.

これでパーティションテーブルの書き換えは終了。ちゃんと反映されているかをチェックする。

$  gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.6

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Model: ST1000DM014-2UB1
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): F0CDE82C-92CD-418D-872E-1E7D143DA54F
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 1953525134
Partitions will be aligned on 8-sector boundaries
Total free space is 0 sectors (0 bytes)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34            2047   1007.0 KiB  EF02  
   2            2048         1050623   512.0 MiB   EF00  
   3         1050624      1953525134   931.0 GiB   8E00  Linux LVM

問題なさそう。

杉田 一毅杉田 一毅

gdiskの警告にあるように、この時点でカーネルはパーティションの更新を知らない。その証拠に、カーネルを参照しているlsblkで確認すると、まだ更新されていなかった。

$ lsblk
NAME                            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                               8:0    0 931.5G  0 disk 
├─sda1                            8:1    0  1007K  0 part 
├─sda2                            8:2    0   512M  0 part 
└─sda3                            8:3    0 446.6G  0 part 
  ├─pve-swap                    253:0    0     8G  0 lvm  [SWAP]
  ├─pve-root                    253:1    0    96G  0 lvm  /
  ├─pve-data_tmeta              253:2    0   3.3G  0 lvm  
  │ └─pve-data-tpool            253:4    0 320.1G  0 lvm  
  │   ├─pve-data                253:5    0 320.1G  1 lvm  
  │   ├─pve-vm--1001--cloudinit 253:6    0     4M  0 lvm  
  │   ├─pve-vm--1001--disk--0   253:7    0   128G  0 lvm  
  │   ├─pve-vm--9100--cloudinit 253:8    0     4M  0 lvm  
  │   ├─pve-vm--100--cloudinit  253:9    0     4M  0 lvm  
  │   ├─pve-vm--100--disk--0    253:10   0   128G  0 lvm  
  │   ├─pve-vm--200--cloudinit  253:11   0     4M  0 lvm  
  │   ├─pve-vm--200--disk--0    253:12   0   128G  0 lvm  
  │   ├─pve-vm--300--cloudinit  253:13   0     4M  0 lvm  
  │   └─pve-vm--300--disk--0    253:14   0    64G  0 lvm  
  └─pve-data_tdata              253:3    0 320.1G  0 lvm  
    └─pve-data-tpool            253:4    0 320.1G  0 lvm  
      ├─pve-data                253:5    0 320.1G  1 lvm  
      ├─pve-vm--1001--cloudinit 253:6    0     4M  0 lvm  
      ├─pve-vm--1001--disk--0   253:7    0   128G  0 lvm  
      ├─pve-vm--9100--cloudinit 253:8    0     4M  0 lvm  
      ├─pve-vm--100--cloudinit  253:9    0     4M  0 lvm  
      ├─pve-vm--100--disk--0    253:10   0   128G  0 lvm  
      ├─pve-vm--200--cloudinit  253:11   0     4M  0 lvm  
      ├─pve-vm--200--disk--0    253:12   0   128G  0 lvm  
      ├─pve-vm--300--cloudinit  253:13   0     4M  0 lvm  
      └─pve-vm--300--disk--0    253:14   0    64G  0 lvm  

partprobeでカーネルにパーティション変更を知らせてみる。(おそらくrebootの方が安全だが、練習サーバなので色々えいやで試せます)

$ partprobe -s /dev/sda
/dev/sda: gpt partitions 1 2 3

もう一度lsblkしてみる。

$ lsblk
NAME                            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                               8:0    0 931.5G  0 disk 
├─sda1                            8:1    0  1007K  0 part 
├─sda2                            8:2    0   512M  0 part 
└─sda3                            8:3    0   931G  0 part 
  ├─pve-swap                    253:0    0     8G  0 lvm  [SWAP]
  ├─pve-root                    253:1    0    96G  0 lvm  /
  ├─pve-data_tmeta              253:2    0   3.3G  0 lvm  
  │ └─pve-data-tpool            253:4    0 320.1G  0 lvm  
  │   ├─pve-data                253:5    0 320.1G  1 lvm  
  │   ├─pve-vm--1001--cloudinit 253:6    0     4M  0 lvm  
  │   ├─pve-vm--1001--disk--0   253:7    0   128G  0 lvm  
  │   ├─pve-vm--9100--cloudinit 253:8    0     4M  0 lvm  
  │   ├─pve-vm--100--cloudinit  253:9    0     4M  0 lvm  
  │   ├─pve-vm--100--disk--0    253:10   0   128G  0 lvm  
  │   ├─pve-vm--200--cloudinit  253:11   0     4M  0 lvm  
  │   ├─pve-vm--200--disk--0    253:12   0   128G  0 lvm  
  │   ├─pve-vm--300--cloudinit  253:13   0     4M  0 lvm  
  │   └─pve-vm--300--disk--0    253:14   0    64G  0 lvm  
  └─pve-data_tdata              253:3    0 320.1G  0 lvm  
    └─pve-data-tpool            253:4    0 320.1G  0 lvm  
      ├─pve-data                253:5    0 320.1G  1 lvm  
      ├─pve-vm--1001--cloudinit 253:6    0     4M  0 lvm  
      ├─pve-vm--1001--disk--0   253:7    0   128G  0 lvm  
      ├─pve-vm--9100--cloudinit 253:8    0     4M  0 lvm  
      ├─pve-vm--100--cloudinit  253:9    0     4M  0 lvm  
      ├─pve-vm--100--disk--0    253:10   0   128G  0 lvm  
      ├─pve-vm--200--cloudinit  253:11   0     4M  0 lvm  
      ├─pve-vm--200--disk--0    253:12   0   128G  0 lvm  
      ├─pve-vm--300--cloudinit  253:13   0     4M  0 lvm  
      └─pve-vm--300--disk--0    253:14   0    64G  0 lvm  

反映された様子だ。パーティション変更は特に問題なく終了。意外と簡単だった。

杉田 一毅杉田 一毅

続いてLinux LVM関係の操作に移る。Linux LVMは、

  • Physical Volume(PV; 物理ボリューム)
  • Volume Group(VG; ボリュームグループ)
  • Logical Volume(LV; 論理ボリューム)

の三層構造になっている(参考)。

よって手順としては、

  1. 現状の確認
  2. Physical Volumeの拡張
  3. pve-root(Logical Volume)の拡張

となる。Volume GroupはPhysical Volumeが拡大されれば自動的に拡大するはず。

杉田 一毅杉田 一毅

現状確認にはpvdisplay, vgdisplay, lvdisplayが便利である。

$ pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               pve
  PV Size               446.63 GiB / not usable <1.82 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              114337
  Free PE               4095
  Allocated PE          110242
  PV UUID               X0dNBz-bkm7-dVbe-vdtK-sw6n-fuu4-Vfmb72
$ vgdisplay
  --- Volume group ---
  VG Name               pve
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  479
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                13
  Open LV               6
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <446.63 GiB
  PE Size               4.00 MiB
  Total PE              114337
  Alloc PE / Size       110242 / 430.63 GiB
  Free  PE / Size       4095 / <16.00 GiB
  VG UUID               ThyBtE-oeeG-WMUO-MnQv-s4A3-4f9N-Ca0kTs
$  lvdisplay
  --- Logical volume ---
  LV Path                /dev/pve/swap
  LV Name                swap
  VG Name                pve
  LV UUID                sdgLvR-iqTq-spdA-X7BF-3V5S-9sB3-yz8POz
  LV Write Access        read/write
  LV Creation host, time proxmox, 2023-07-22 00:44:49 +0900
  LV Status              available
  # open                 2
  LV Size                8.00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/pve/root
  LV Name                root
  VG Name                pve
  LV UUID                Ke0GAx-tVeG-4K7G-6rbE-vjXJ-yj4K-6nsx8D
  LV Write Access        read/write
  LV Creation host, time proxmox, 2023-07-22 00:44:50 +0900
  LV Status              available
  # open                 1
  LV Size                96.00 GiB
  Current LE             24576
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
   
.
.
.
杉田 一毅杉田 一毅

pvresizeで物理ボリュームのリサイズが可能。

$ pvresize /dev/sda3
  Physical volume "/dev/sda3" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
$ pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               pve
  PV Size               931.01 GiB / not usable 3.69 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238338
  Free PE               128096
  Allocated PE          110242
  PV UUID               X0dNBz-bkm7-dVbe-vdtK-sw6n-fuu4-Vfmb72
$ vgdisplay
  --- Volume group ---
  VG Name               pve
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  480
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                13
  Open LV               6
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <931.01 GiB
  PE Size               4.00 MiB
  Total PE              238338
  Alloc PE / Size       110242 / 430.63 GiB
  Free  PE / Size       128096 / <500.38 GiB
  VG UUID               ThyBtE-oeeG-WMUO-MnQv-s4A3-4f9N-Ca0kTs

上手くいった。

杉田 一毅杉田 一毅

最後の工程、pve-rootのLogical Volume拡大はlvextendコマンドを使用する。
あまり自信がないので、テストランをしてみた。

$ lvextend --test -L +100G /dev/pve/root
  TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
  WARNING: Sum of all thin volume sizes (<450.22 GiB) exceeds the size of thin pools and the amount of free space in volume group (<400.38 GiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Size of logical volume pve/root changed from 96.00 GiB (24576 extents) to 196.00 GiB (50176 extents).
  Logical volume pve/root successfully resized.

最終的にはLogical volume pve/root successfully resized.とあるが、3つWARNINGが気になる。これらを理解してから本番実行したい。

杉田 一毅杉田 一毅

解決した。Thin Provisioningの理解が必要。Thin Provisioningは共有ストレージをもつ環境において、on-demandにストレージを割り当てる技術とのこと(参考)。その利点として、Red Hatのドキュメントには以下が列挙されている。

  • 使用可能な物理ストレージよりも大きい論理ボリュームを作成できます。
  • 同じデータボリュームに保存する仮想デバイスを増やすことができます。
  • データ要件をサポートするために論理的かつ自動的に拡張できるファイルシステムを作成できます。未使用のブロックはプールに戻され、プール内の任意のファイルシステムで使用できます。

対する概念として、あらかじめ物理ストレージのブロックを割り当てておくThick Provisioningがある。

今回の場合、pve-data-tpoolという320GBのthin poolに対し、4つのVMにプロビジョンされた論理ボリュームの和の方が大きいため、上記のWARNINGが出ている。

それぞれ、

  • 物理ボリュームが足りなくなるかもしれない
  • 足りなくなった時にthin poolを保護する機能がオンになっていない
  • thin poolの自動拡張閾値を100GB未満に設定します(せよ?)

という意味だろう。

実際にthin poolを拡張すればWARNINGが消えると思われるのでやってみよう。

$ lvextend --test -L +150G /dev/pve/data
  TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
  Size of logical volume pve/data_tdata changed from 320.09 GiB (81944 extents) to 470.09 GiB (120344 extents).
  Logical volume pve/data_tdata successfully resized.
$ lvextend --test -L +1G /dev/pve/data
  TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
  WARNING: Sum of all thin volume sizes (<450.22 GiB) exceeds the size of thin pools (321.09 GiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Size of logical volume pve/data_tdata changed from 320.09 GiB (81944 extents) to 321.09 GiB (82200 extents).
  Logical volume pve/data_tdata successfully resized.

150GBの拡張でWARNINGが消え、1GBの拡張では消えなかった。大体解釈は合っていると思われる。

杉田 一毅杉田 一毅

このWARNINGはこの時点で気にする必要はないので、本番コマンドを実行。pve-rootの領域拡大に成功した。しかしdfで確認したところ、マウント中のファイルシステム(ext4)はそのことを知らない様子である。proxmoxのGUIでも反映されていない。

$ lvextend -L +100G /dev/pve/root
  WARNING: Sum of all thin volume sizes (<450.22 GiB) exceeds the size of thin pools and the amount of free space in volume group (<400.38 GiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Size of logical volume pve/root changed from 96.00 GiB (24576 extents) to 196.00 GiB (50176 extents).
  Logical volume pve/root successfully resized.
$ lsblk -o +FSTYPE
NAME                            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT FSTYPE
sda                               8:0    0 931.5G  0 disk            
├─sda1                            8:1    0  1007K  0 part            
├─sda2                            8:2    0   512M  0 part            vfat
└─sda3                            8:3    0   931G  0 part            LVM2_member
  ├─pve-swap                    253:0    0     8G  0 lvm  [SWAP]     swap
  ├─pve-root                    253:1    0   196G  0 lvm  /          ext4
  ├─pve-data_tmeta              253:2    0   3.3G  0 lvm             
  │ └─pve-data-tpool            253:4    0 320.1G  0 lvm             
  │   ├─pve-data                253:5    0 320.1G  1 lvm             
  │   ├─pve-vm--1001--cloudinit 253:6    0     4M  0 lvm             iso9660
  │   ├─pve-vm--1001--disk--0   253:7    0   128G  0 lvm             
  │   ├─pve-vm--9100--cloudinit 253:8    0     4M  0 lvm             iso9660
  │   ├─pve-vm--100--cloudinit  253:9    0     4M  0 lvm             iso9660
  │   ├─pve-vm--100--disk--0    253:10   0   128G  0 lvm             
  │   ├─pve-vm--200--cloudinit  253:11   0     4M  0 lvm             iso9660
  │   ├─pve-vm--200--disk--0    253:12   0   128G  0 lvm             
  │   ├─pve-vm--300--cloudinit  253:13   0     4M  0 lvm             iso9660
  │   └─pve-vm--300--disk--0    253:14   0    64G  0 lvm             
  └─pve-data_tdata              253:3    0 320.1G  0 lvm             
    └─pve-data-tpool            253:4    0 320.1G  0 lvm             
      ├─pve-data                253:5    0 320.1G  1 lvm             
      ├─pve-vm--1001--cloudinit 253:6    0     4M  0 lvm             iso9660
      ├─pve-vm--1001--disk--0   253:7    0   128G  0 lvm             
      ├─pve-vm--9100--cloudinit 253:8    0     4M  0 lvm             iso9660
      ├─pve-vm--100--cloudinit  253:9    0     4M  0 lvm             iso9660
      ├─pve-vm--100--disk--0    253:10   0   128G  0 lvm             
      ├─pve-vm--200--cloudinit  253:11   0     4M  0 lvm             iso9660
      ├─pve-vm--200--disk--0    253:12   0   128G  0 lvm             
      ├─pve-vm--300--cloudinit  253:13   0     4M  0 lvm             iso9660
      └─pve-vm--300--disk--0    253:14   0    64G  0 lvm             
$ df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/pve-root   94G   86G  4.0G  96% /
杉田 一毅杉田 一毅

ちなみに/dev/pve/root/dev/mapper/pve-rootはどちらも/dev/dm-1へのシンボリックリンクになっている。

$ ls -la /dev/pve/ | grep "root ->"
lrwxrwxrwx  1 root root    7 Jan  3 13:18 root -> ../dm-1
$ ls -la /dev/mapper/ | grep "pve-root ->"
lrwxrwxrwx  1 root root       7 Jan  3 13:18 pve-root -> ../dm-1

同じように見えるが、resize2fsを実行するデバイスは/dev/mapper/pve-rootの方が良いか。
先例ではそうなっている。

この辺は時間も迫っているので理解を諦めた。詳しい方がいれば教えてください。

杉田 一毅杉田 一毅

ファイルシステムのリサイズを実行。ちなみに、resize2fsはカーネルがサポートしている場合、on-lineリサイジング(ファイルシステムをマウントしながらリサイズすること)もできる。man resize2fsから引用。

The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system located on device. If the file system is mounted, it can be
used to expand the size of the mounted file system, assuming the kernel and the file system supports on-line resizing. (Modern Linux 2.6 kernels will support on-line resize for file systems
mounted using ext3 and ext4; ext3 file systems will require the use of file systems with the resize_inode feature enabled.)

$ resize2fs  /dev/mapper/pve-root
$ resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/pve-root is mounted on /; on-line resizing required
old_desc_blocks = 12, new_desc_blocks = 25
The filesystem on /dev/mapper/pve-root is now 51380224 (4k) blocks long.

root@medopstech:~# df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/pve-root  193G   86G   99G  47% /

GUIでも反映された。

杉田 一毅杉田 一毅

ということで全工程が完了した。Proxmoxのディスク拡張をコマンドで行ったのは今回が初めてで、知らないことも多かったが、再起動せずサービスを継続したまま比較的安全に作業できたと思う。所々、無知識で踏み込んでしまったが、良い経験にはなった。

ご指摘、ご意見あれば適宜ツッコミを入れていただけると助かります。