Are you dealing with a sluggish Proxmox server that’s taking forever to boot? If one of your ZFS mirrored boot drives has failed, it can cause major delays during startup, often stalling at the boot screen while the system tries to access the faulty hardware. Replacing a boot drive in a ZFS setup isn’t as straightforward as swapping out a data drive, but with the right steps, you can get your Proxmox node back to peak performance without losing data. In this detailed tutorial, we’ll cover how to diagnose the issue, replace the drive, and restore your mirror—tested on Proxmox VE 8.x and beyond. Whether you’re a homelab enthusiast or managing enterprise servers, this guide will help you avoid downtime and keep your ZFS rpool healthy. Let’s get your system booting smoothly again!
Understanding the Boot Drive Failure in Proxmox ZFS
When a boot drive fails in a ZFS mirror (typically your rpool), the pool enters a DEGRADED state. You’ll notice symptoms like extended boot times—up to 15 minutes or more—as the BIOS struggles with the bad drive. Running zpool status will confirm this, showing errors like a missing label or unavailable device. Fortunately, with a mirrored setup, your system can still operate, giving you time to fix it.
Proxmox uses ZFS for its root filesystem by default, which adds resilience but complicates replacements. Unlike simple data pools, the boot drive involves partitions for EFI, data, and more. Microsoft might have its own ecosystem pushes, but here we’re focusing on open-source reliability. If you’re on Proxmox 6.3 or later (and have migrated to proxmox-boot-tool), this process ensures a seamless swap. Always back up critical data first, though ZFS’s redundancy minimizes risks.

Prerequisites for Replacing Your Proxmox Boot Drive
Before diving in, gather these essentials:
- A replacement drive that’s the same size or larger than the failed one—ideally identical for compatibility.
- Access to your Proxmox node via SSH or console (it should still boot in degraded mode).
- Basic familiarity with Linux commands; we’ll use tools like
zpool,sgdisk, andproxmox-boot-tool. - UEFI boot mode enabled (common in modern setups).
- Proxmox VE 6.3+; if you’re on an older GRUB-based system, refer to official docs for adjustments.
Important Warnings:
- Double-check all commands—especially source/target drives—to prevent overwriting your good drive.
- Test the new setup by unplugging the original good drive post-replacement.
- If the failed drive revives after cleaning or reseating, great! But assume it’s dead for these steps.
- This guide assumes a mirrored rpool; single-drive setups require different approaches.
Step-by-Step: Replacing the Failed ZFS Boot Drive on Proxmox
Follow these steps precisely. We’ll start with diagnosis, then physical replacement, partitioning, mirroring, and boot configuration.
Step 1: Diagnose the Failure
Confirm the issue with:
zpool status
Look for a DEGRADED pool with an UNAVAIL device. Example output might show:
pool: rpool
state: DEGRADED
status: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state.
action: Replace the device using 'zpool replace'.
If it matches, proceed to physical replacement.
Step 2: Physically Swap the Drive
Shut down your Proxmox node safely. Remove the failed drive and install the new one in its place. Power on and boot into the system (it should start using the good mirror). Use lsblk to identify the new drive—often it takes the same name as the old one (e.g., /dev/nvme0n1).
Step 3: Copy Partitions to the New Drive
Replicate the partition table from the good drive to the new one:
- Identify source (good drive, e.g.,
/dev/sda) and target (new drive, e.g.,/dev/nvme0n1). - Run:
sgdisk --replicate=/dev/TARGET /dev/SOURCE
Example: sgdisk --replicate=/dev/nvme0n1 /dev/sda. Caution: Reversing this wipes the good drive!
- Randomize GUIDs on the new drive:
sgdisk --randomize-guids /dev/NEW_DRIVE
Example: sgdisk --randomize-guids /dev/nvme0n1.
This prepares the new drive for ZFS integration.
Step 4: Attach the New Drive to the ZFS Mirror
Replace the failed device in the pool:
zpool replace rpool OLD_DEVICE NEW_DEVICE
Use the data partition (usually p3). Example: zpool replace rpool /dev/nvme0n1p3 /dev/disk/by-id/nvme-TEAM_TM8FP6256G_TPBF2207080020101623-part3. If names match, simplify to zpool replace rpool /dev/nvme0n1p3.
Step 5: Monitor Resilvering
Watch the process with zpool status. It starts as:
pool: rpool
state: ONLINE
status: One or more devices is currently being resilvered...
scan: resilver in progress...
Wait for completion (could take minutes to hours based on size). Final status should be ONLINE with no errors.
Step 6: Set Up Proxmox Boot Tool
Make the new drive bootable:
- Format the EFI partition (p2):
proxmox-boot-tool format /dev/NEW_DRIVEp2
Example: proxmox-boot-tool format /dev/nvme0n1p2.
- Initialize:
proxmox-boot-tool init /dev/NEW_DRIVEp2
- Check status:
proxmox-boot-tool status
Clean up old UUIDs if needed:
proxmox-boot-tool clean
Re-verify with proxmox-boot-tool status to ensure both drives are configured.
Final Verification and Tips
Reboot your system to test. For extra assurance, unplug the original good drive and boot from the new one alone. If all goes well, your rpool is mirrored and resilient again.
Pro Tips for Success:
- Use by-id paths for devices to avoid name changes during reboots.
- Schedule regular
zpool scrubto catch issues early. - If you’re on Proxmox 8.x, consider enabling auto-expansion for larger drives.
- Monitor drive health with tools like smartctl.
This method has saved countless hours in homelabs and production environments. If you’re troubleshooting other Proxmox issues like VM migrations or storage pools, check our related guides. Share your experience in the comments—what Proxmox challenges have you faced? Subscribe for more tech tutorials to keep your setup running flawlessly!
This is an updated version to our Proxmox VE OS ZFS Boot Disk Replacement post.