Skip to content

Boot Drive Swap

The Proxmox boot drive is a Samsung 840 PRO 128GB SATA SSD. This runbook covers replacing it with a larger drive (target: 1TB SATA SSD).

Hardware details

Property Value
Current drive Samsung SSD 840 PRO 128GB
Interface SATA, behind Dell PERC RAID controller
Location Front drive bay, Dell 2.5" SFF caddy
Replacement Any SATA or SAS 2.5" SSD (1TB recommended)

Spare Dell drive caddies are available.

Current boot drive layout

Partition Size Purpose
sda1 1 MB BIOS boot
sda2 1 GB EFI (/boot/efi)
sda3 118 GB LVM (pve volume group)
— pve-root 39.6 GB Proxmox OS (ext4)
— pve-swap 8 GB Swap
— pve-data 53.9 GB Thin pool for VM/CT disks

What lives where

On the boot drive (backed up via vzdump — restored from NAS):

  • All VM and LXC root disks (in LVM thin pool)

On the boot drive (host config — must be manually reconfigured):

  • Network configuration (/etc/network/interfaces)
  • NFS server and exports (/etc/exports)
  • Proxmox storage backends (/etc/pve/storage.cfg)
  • Hostname and DNS (/etc/hosts, /etc/resolv.conf)

NOT on the boot drive (survives the swap untouched):

  • ZFS pool stash on 4x SAS SSDs (sdbsde) — all media data intact

On the NAS (external — survives the swap):

  • vzdump backups of all VMs and containers

Pre-swap checklist

  1. Confirm backups are current on the NAS:
    vzdump 100 101 102 103 --storage nasbackup --compress zstd --mode snapshot --notes-template "Pre drive swap - {{guestname}}"
    
  2. Verify backups exist:
    ls -lh /mnt/pve/nasbackup/dump/
    
  3. Shut down Proxmox:
    shutdown -h now
    

Swap procedure

  1. Physically swap the drive — remove the 128GB SSD from its caddy, install the new 1TB SSD
  2. Boot from Proxmox installer USB — download the latest Proxmox VE ISO and flash to USB
  3. Install Proxmox — select the new 1TB drive as the install target. During install:
  4. Hostname: proxfold.localdomain
  5. IP: 192.168.1.250/24
  6. Gateway: 192.168.1.1
  7. DNS: 192.168.1.1

Post-install configuration

Step 1 — Import the ZFS pool

zpool import stash

Verify:

zpool status stash
ls /stash/rodneystash/

Step 2 — Configure networking

Set /etc/network/interfaces — see Config Files for full contents.

Step 3 — Install and configure NFS server

apt update && apt install -y nfs-kernel-server

Set /etc/exports — see Config Files for contents.

exportfs -ra
systemctl enable --now nfs-kernel-server

Step 4 — Add the NAS backup storage

apt install -y cifs-utils
pvesm add cifs nasbackup --server 192.168.1.253 --share backup --username admin --password '<password>' --content backup --smbversion 2.0

Step 5 — Restore VMs and containers

# List available backups
ls -lh /mnt/pve/nasbackup/dump/

# Restore each (use the most recent backup file for each)
pct restore 100 /mnt/pve/nasbackup/dump/vzdump-lxc-100-<timestamp>.tar.zst --storage local-lvm
qmrestore /mnt/pve/nasbackup/dump/vzdump-qemu-101-<timestamp>.vma.zst 101 --storage local-lvm
qmrestore /mnt/pve/nasbackup/dump/vzdump-qemu-102-<timestamp>.vma.zst 102 --storage local-lvm
pct restore 103 /mnt/pve/nasbackup/dump/vzdump-lxc-103-<timestamp>.tar.zst --storage local-lvm

Step 6 — Re-add the ZFS mount point to Plex LXC

pct set 100 -mp0 /stash,mp=/stash
pct set 100 -features mount=nfs;cifs

Step 7 — Start and verify

pct start 100
qm start 101
qm start 102

# Verify Plex can see media
pct exec 100 -- ls /mnt/plex/Movies/ | head -5

# Verify arrstack NFS mount
qm guest exec 101 -- df -h /stash

# Verify Docker containers are running
qm guest exec 101 -- docker ps

Post-swap verification checklist

  • [ ] Proxmox web UI accessible at https://192.168.1.250:8006
  • [ ] ZFS pool stash imported and healthy (zpool status stash)
  • [ ] NFS export active (exportfs -v)
  • [ ] Plex LXC running and media accessible
  • [ ] Arrstack VM running, NFS mounted, Docker containers up
  • [ ] Sonarr/Radarr show no errors, libraries visible
  • [ ] qBittorrent accessible
  • [ ] Overseerr accessible
  • [ ] End-to-end test: request something in Overseerr, confirm it downloads and appears in Plex
  • [ ] Nginx VM running (if needed)