Replace mirrored boot drives

Mar 14, 2026
4
2
3
I've got two nodes running PVE 9.1.9 that are booting from mirrored 32GB M.2 Sata SSDs. All vms are on nfs storage.
These nodes are repurposed Vmware ESXi:s and so far 32GB has been just enough. I'm unable to upgrade these to 9.2 however, since it requires more space.
My plan is to get four 128GB M.2 Sata SSD:s to replace the existing ones, but I'm not sure what the correct way to replace the mirrored boot drives are. These are Lenovo rack servers. Should I contact them for assistance, or is there a generic method I can use?
 
The PVE installer requires only 8GiB AFAIK and uses about half of that for boot and its software. Maybe only the ESP is too small? Maybe you need to remove some old kernels (which can be a bit of a hassle according to some recent threads once you run out of space). Or are you storing additional files like ISO and templates, or maybe accidental backups when a network share is not mounted? EDIT: Or maybe the systemd journal log is growing unlimited?

If it is a mirror, you remove one side, re-partition it and re-mirrorit. But people would need to know why you are filling up your current setup and what your current setup is like (ZFS or hardware RAID controller).
 
Last edited:
  • Like
Reactions: Johannes S
The PVE installer requires only 8GiB AFAIK and uses about half of that for boot and its software. Maybe only the ESP is too small? Maybe you need to remove some old kernels (which can be a bit of a hassle according to some recent threads once you run out of space). Or are you storing additional files like ISO and templates, or maybe accidental backups when a network share is not mounted? EDIT: Or maybe the systemd journal log is growing unlimited?

If it is a mirror, you remove one side, re-partition it and re-mirrorit. But people would need to know why you are filling up your current setup and what your current setup is like (ZFS or hardware RAID controller).
Are you saying I don't really need to replace these?
It's a hardware raid 1 using ThinkSystem M.2 with Mirroring Enablement Kit, so the drives only show up as a single device in the os.
This is what the storage looks like on one of the nodes:
root@pve01:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 63G 0 63G 0% /dev
tmpfs 13G 5.7M 13G 1% /run
/dev/mapper/pve-root 13G 11G 904M 93% /
tmpfs 63G 66M 63G 1% /dev/shm
efivarfs 512K 80K 428K 16% /sys/firmware/efi/efivars
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service
tmpfs 63G 0 63G 0% /tmp
/dev/sda2 511M 8.8M 503M 2% /boot/efi
/dev/fuse 128M 68K 128M 1% /etc/pve
tmpfs 1.0M 0 1.0M 0% /run/credentials/getty@tty1.service
x.x.x.x:/nfs/vol03 8.7T 1.8T 6.5T 22% /mnt/pve/vol03
tmpfs 13G 4.0K 13G 1% /run/user/0

root@pve01:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name pve
PV Size <28.50 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 7295
Free PE 2
Allocated PE 7293
PV UUID jE0vNE-Rr0K-rXSs-JeT3-2eT4-9YYb-f46XA4

root@pve01:~# lvdisplay
--- Logical volume ---
LV Name data
VG Name pve
LV UUID 45p3GA-UJvV-6VNL-J3vP-fgvT-KcAV-7X19Kq
LV Write Access read/write (activated read only)
LV Creation host, time proxmox, 2025-09-29 23:45:34 +0200
LV Pool metadata data_tmeta
LV Pool data data_tdata
LV Status available
# open 0
LV Size 10.49 GiB
Allocated pool data 0.00%
Allocated metadata 1.58%
Current LE 2686
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 16384
Block device 252:5

--- Logical volume ---
LV Path /dev/pve/swap
LV Name swap
VG Name pve
LV UUID JqALMN-3gU2-94Lo-Vkzc-lVj2-C10c-jUReDc
LV Write Access read/write
LV Creation host, time proxmox, 2025-09-29 23:45:33 +0200
LV Status available
# open 1
LV Size 3.50 GiB
Current LE 896
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 16384
Block device 252:0

--- Logical volume ---
LV Path /dev/pve/root
LV Name root
VG Name pve
LV UUID ZfbcRo-POnf-gm9V-mWQs-g2cP-dM1K-5Fv04g
LV Write Access read/write
LV Creation host, time proxmox, 2025-09-29 23:45:34 +0200
LV Status available
# open 1
LV Size <12.50 GiB
Current LE 3199
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 16384
Block device 252:1
 
Are you saying I don't really need to replace these?
Well, if your VMs use some other storage then 32GB sounds like more than enough for PVE (and then some like CT templates and a few ISOs).
/dev/mapper/pve-root 13G 11G 904M 93% /
Your root is indeed quite full (93%) but I don't see why it would need to use 11G(i)B. Note that this would be more readable when using CODE-tags.
I don't know the commands to check where the space is being taken by heart, sorry. There are other threads on this forum about full drives that you might find. Or maybe some other volunteer will explain this in detail. It's "just" Debian GNU/Linux under the hood, in case you are familiar with Linux in general.
 
Well, if your VMs use some other storage then 32GB sounds like more than enough for PVE (and then some like CT templates and a few ISOs).

Your root is indeed quite full (93%) but I don't see why it would need to use 11G(i)B. Note that this would be more readable when using CODE-tags.
I don't know the commands to check where the space is being taken by heart, sorry. There are other threads on this forum about full drives that you might find. Or maybe some other volunteer will explain this in detail. It's "just" Debian GNU/Linux under the hood, in case you are familiar with Linux in general.

This is what's using up all the space:
16K ./lost+found
4.0K ./home
4.7G ./var
66M ./dev
4.0K ./media
1.8T ./mnt
0 ./tmp
5.7M ./run
92K ./root
5.6G ./usr
4.0K ./srv
5.6M ./etc
0 ./sys
0 ./proc
448M ./boot
4.0K ./opt

3.3GB in /var/cache/apt/archives/
1.1GB in /var/lib/
400MB in /var/log
4.5GB in /usr/lib/

Nothing out of the ordinary.
Btw, what's the data lv used for? It doesn't look like it's mounted.
 
For reference, the root of my PVE 9.2.2 installs circle around 5G used.

Your disk is definitely big enough, but currently you reserve 12.5G for root, 3.5G for swap and 10.5G for data which you hardly/don't use because you have the VM's on NFS.

Definitely go for apt autoclean to clear out the apt package cache.

Next, you can go for a smaller data volume and extend the root volume. That should give you plenty space for the upgrade. See for example:
https://forum.proxmox.com/threads/pve-resizing-root-data.124754/
https://forum.proxmox.com/threads/correct-steps-to-reduce-pve-data.128841/
 
Last edited:
/usr is bigger than expected as it is 3G on my system. Did you install additional software or upgrade through multiple versions of PVE (in which case apt purge '~o' might help)? /var is also much bigger than mine (544M for /var, 91M for /var/log).
 
  • Like
Reactions: Johannes S
Here's what I ended up doing:
I removed the local-lvm from the GUI under Datacenter/Storage.
I removed the thin pool on both nodes using lvremove pve/data.
I then extended the root lv and resized the filesystem using:
lvextend -l +100%FREE pve/root
resize2fs /dev/pve/root

Rebooted the empty node to make sure it came back online and then upgraded to 9.2.2 with no issues.

Thanks for all the great input!