ZFS on Proxmox: Complete Storage Guide
ZFS storage configuration for Proxmox. RAID levels, compression, snapshots, best practices for homelab.
ZFS on Proxmox: Complete Storage Guide
Last updated: May 5, 2026 | Reading time: 11 minutes
Why ZFS?
ZFS is more than a filesystem—it's a volume manager with:
- ✅ Data integrity (checksums)
- ✅ Snapshots (instant, space-efficient)
- ✅ Compression (saves space, can improve speed)
- ✅ RAID (software, flexible)
- ✅ Self-healing (detects and fixes corruption)
RAID Levels
| Level | Min Disks | Usable | Fault Tolerance | |-------|-----------|--------|-----------------| | RAID0 | 2 | 100% | None | | RAID1 | 2 | 50% | 1 disk | | RAID10 | 4 | 50% | 1 per mirror | | RAIDZ1 | 3 | 67% | 1 disk | | RAIDZ2 | 4 | 50% | 2 disks | | RAIDZ3 | 5 | 40% | 3 disks |
Recommendation: RAIDZ2 for homelabs. Best balance of capacity and safety.
Installation
During Proxmox Install
- Select "ZFS (RAID0)" or your preferred level
- Choose disks
- Set compression:
lz4(fast) orzstd(better ratio) - Set ashift:
12(for 4K sector drives)
After Installation
# Create pool
zpool create -o ashift=12 tank mirror /dev/sda /dev/sdb
# Create dataset for VMs
zfs create tank/vms
# Add to Proxmox
pvesm add zfspool tank -sparse 1
Compression
# Check compression
zfs get compression tank
# Enable compression
zfs set compression=zstd tank
# Compression ratios
# lz4: 1.5-2x (fastest)
# zstd: 2-3x (good balance)
# gzip: 3-4x (slowest)
Recommendation: zstd for most use cases.
Snapshots
# Create snapshot
zfs snapshot tank/vms@before-update
# List snapshots
zfs list -t snapshot
# Restore snapshot
zfs rollback tank/vms@before-update
# Delete snapshot
zfs destroy tank/vms@before-update
Automated Snapshots
# Install sanoid
apt install sanoid
# Configure
nano /etc/sanoid/sanoid.conf
Example config:
tank/vms:
hourly = 4
daily = 7
weekly = 4
monthly = 6
ARC (Cache) Tuning
ZFS uses RAM as cache (ARC). Default: 50% of RAM.
# Check ARC usage
arc_summary
# Limit ARC to 8 GB
echo 8589934592 > /sys/module/zfs/parameters/zfs_arc_max
# Make permanent
echo "options zfs zfs_arc_max=8589934592" > /etc/modprobe.d/zfs.conf
Rule: ARC = 25-50% of RAM for homelabs.
Scrub (Data Integrity Check)
# Start scrub
zpool scrub tank
# Check progress
zpool status tank
# Schedule monthly
echo "0 0 1 * * root zpool scrub tank" >> /etc/crontab
Best Practices
- Use ECC RAM if possible (not required but ideal)
- Don't mix drive sizes in same vdev
- Don't use RAIDZ3 unless you have 8+ drives
- Always have backups (ZFS is not a backup)
- Monitor SMART data for drive health
ZFS is the best filesystem for Proxmox. The data integrity alone is worth it.