ZFS in Proxmox VE
Proxmox VE has native ZFS support built in — no extra packages needed. You can create ZFS pools during installation or add them later, and use them as storage for VM disks, containers, and backups.
If you’re new to ZFS, start with the ZFS Introduction first.
ZFS During Proxmox Installation
The easiest way to set up ZFS in Proxmox is during installation. The installer lets you:
- Select ZFS as the filesystem for the OS disk
- Choose your RAID level (single, mirror, RAIDZ1, RAIDZ2, RAIDZ3)
- Select which disks to include in the pool
This creates a pool called rpool for the OS and sets up ZFS automatically.
Add a ZFS Pool After Installation
If you want to add additional disks as a separate ZFS pool after Proxmox is installed:
Via the Web Interface
- Go to Node → Disks → ZFS
- Click “Create: ZFS”
- Give it a name (e.g.
datapool) - Select your RAID level
- Select the disks to include
- Click Create
The pool is automatically added as a storage backend in Proxmox.
Via the Command Line
# Mirror pool with two disks
zpool create datapool mirror \
/dev/disk/by-id/ata-DISK1-ID \
/dev/disk/by-id/ata-DISK2-ID
# RAIDZ1 with three disks
zpool create datapool raidz1 \
/dev/disk/by-id/ata-DISK1-ID \
/dev/disk/by-id/ata-DISK2-ID \
/dev/disk/by-id/ata-DISK3-IDThen add it to Proxmox storage:
- Go to Datacenter → Storage → Add → ZFS
- Select your pool
- Choose what it can store (disk images, containers, backups)
Recommended ZFS Settings for Proxmox
Enable compression on your pool — it saves significant space for VM disks:
sudo zfs set compression=lz4 datapoolSet the correct ARC size to avoid ZFS consuming too much RAM (leave RAM for VMs):
# Limit ARC to 8GB (adjust based on your RAM)
echo "options zfs zfs_arc_max=8589934592" | \
sudo tee /etc/modprobe.d/zfs.conf
sudo update-initramfs -uUsing ZFS Storage for VMs
Once your ZFS pool is added as storage:
- When creating a VM, select your ZFS pool as the storage location for the disk
- Proxmox creates a ZFS volume (zvol) for each VM disk
- The VM disk benefits from ZFS checksums, compression, and snapshots automatically
VM Snapshots with ZFS
ZFS snapshots in Proxmox are nearly instant and space-efficient. Unlike full backups, snapshots only track changes.
Take a snapshot via the web interface:
- Select your VM
- Go to Snapshots tab
- Click “Take Snapshot”
- Give it a name and description
- Click OK
Via command line:
# List VM disks
zfs list | grep vm
# Take a snapshot manually
zfs snapshot datapool/vm-100-disk-0@before-update
# Roll back if something goes wrong
zfs rollback datapool/vm-100-disk-0@before-updateZFS Replication Between Proxmox Nodes
ZFS send/receive is excellent for replicating VM storage between Proxmox nodes:
# Send a VM disk snapshot to another Proxmox node
zfs send datapool/vm-100-disk-0@snapshot1 | \
ssh root@192.168.1.11 zfs receive datapool/vm-100-disk-0
# Incremental replication (only changes)
zfs send -i datapool/vm-100-disk-0@snapshot1 \
datapool/vm-100-disk-0@snapshot2 | \
ssh root@192.168.1.11 zfs receive datapool/vm-100-disk-0This is a cost-effective way to keep a replica of important VMs on a second Proxmox node.
Monitor ZFS Pool Health in Proxmox
Via web interface:
- Go to Node → Disks → ZFS — shows pool status and health
Via command line:
# Overall health
zpool status
# Space usage
zpool list
zfs list
# Start a scrub
zpool scrub datapool
# Watch scrub progress
watch -n 5 zpool status datapoolSet up a monthly scrub via cron:
sudo crontab -eAdd:
0 3 1 * * zpool scrub datapoolUseful Commands in Proxmox Context
# List all ZFS pools
zpool list
# List all VM disks on ZFS
zfs list | grep vm
# Check pool health
zpool status
# List all snapshots
zfs list -t snapshot
# Check compression savings
zfs get compressratio datapoolRelated Links
- ZFS – Introduction and Key Concepts — understand ZFS before diving in
- ZFS on Linux – Installation and Setup — ZFS on standard Linux
- ZFS Basic Commands — everyday ZFS commands
- Run Proxmox Backup Server as a VM with Disk Passthrough — complement ZFS with PBS backups
- Proxmox ZFS Documentation — official Proxmox ZFS docs