Proxmox VE with ZFS
Complete guide to installing Proxmox VE virtualization platform with ZFS storage on Unraid for enterprise-grade virtual machine management.
Video [IBRACORP Video Tutorial - Coming Soon]
Useful Links
Related Videos
- Virtual Machine Management
- Storage Configuration
- Network Setup
Thank you for choosing to collaborate with IBRACORP π
Please read our disclaimer https://docs.ibracorp.io/disclaimer
Creditsβ
Role | Contributor |
---|---|
Writer / Producer | Sycotix |
Video Recording and Voice | Sycotix |
Contributor | DiscDuck |
Testing / Proofreading | Hawks, North |
Feature Listβ
Comprehensive Virtualization Platform
- Virtual Machine Management with web-based interface
- Container Support with LXC containers
- ZFS Storage Integration with snapshots and replication
- High Availability Clustering for enterprise environments
- Backup and Restore with automated scheduling
- Network Management with software-defined networking
- Role-based Access Control for multi-user environments
- API Integration for automation and monitoring
- Live Migration of VMs between cluster nodes
- Storage Replication for disaster recovery
- Web Console Access for remote management
- Template System for rapid VM deployment
Prerequisitesβ
Hardware Requirements
- CPU with virtualization extensions (Intel VT-x or AMD-V)
- Minimum 2GB RAM (8GB+ recommended)
- 32GB+ storage for Proxmox OS
- Additional storage for ZFS pool (3+ drives recommended)
- Network connectivity
- UEFI/BIOS with virtualization enabled
Software Requirements
- Unraid server (if installing as VM)
- Proxmox VE ISO (version 7.0 or later)
- Basic understanding of virtualization concepts
- SSH client for command-line access
Installationβ
Download Proxmox VE ISOβ
- Download ISO: Visit Proxmox Downloads
- Select Version: Download latest stable Proxmox VE ISO
- Place ISO: Copy to your Unraid's
/mnt/user/isos/
directory
VM Creation on Unraidβ
Create Proxmox VM
-
Enable VM Manager: In Unraid, go to Settings β VM Manager and enable VMs
-
Create New VM: Click "Add VM" and select "Linux"
-
VM Configuration:
Name: Proxmox-VE
Template: Debian
CPU: 2+ threads (4+ recommended)
Initial Memory: 2048MB (4096MB+ recommended)
Max Memory: Match initial memory -
Storage Configuration:
- vDisk 1: 32GB (Proxmox OS)
- vDisk 2: 100GB (ZFS Pool Member 1)
- vDisk 3: 100GB (ZFS Pool Member 2)
- vDisk 4: 100GB (ZFS Pool Member 3)
-
Network Settings:
Network Source: br0 (or your bridge)
Network Model: VirtIO (paravirtualized) -
Graphics: VNC for installation, can be changed later
Proxmox VE Installation Processβ
Boot and Install
-
Start VM: Boot from Proxmox VE ISO
-
Installation Menu: Select "Install Proxmox VE"
-
Accept EULA: Read and accept the End User License Agreement
-
Target Harddisk: Select the 32GB disk for Proxmox installation
-
Location and Time Zone: Configure your geographic settings
-
Administration Password: Set strong root password
-
Network Configuration:
Hostname: pve.yourdomain.local
IP Address: 192.168.1.100/24 (adjust for your network)
Gateway: 192.168.1.1
DNS Server: 8.8.8.8 -
Summary: Review settings and confirm installation
-
Installation: Wait for installation to complete (5-10 minutes)
-
Reboot: Remove ISO and restart VM
Initial Configurationβ
First Boot Setupβ
- Access Web Interface: Open browser to
https://your-proxmox-ip:8006
- Login: Use
root
and the password set during installation - Accept Certificate: Add security exception for self-signed certificate
Repository Configurationβ
Switch to No-Subscription Repository
-
Access Shell: Click on your node β Shell
-
Edit Sources:
nano /etc/apt/sources.list.d/pve-enterprise.list
-
Comment Enterprise Repo: Add
#
before the line:# deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
-
Add No-Subscription Repo:
echo "deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription" >> /etc/apt/sources.list
-
Update Package Lists:
apt update
System Updatesβ
Update Proxmox
# Update package database
apt update
# Upgrade system packages
apt full-upgrade -y
# Reboot to apply kernel updates
reboot
ZFS Configurationβ
Create ZFS Poolβ
Set Up RAIDZ-1 Pool
-
Access Shell: Log into Proxmox shell
-
Identify Disks: List available disks:
lsblk
fdisk -l -
Create ZFS Pool: Create RAIDZ-1 with three disks:
zpool create -f storage raidz /dev/sdb /dev/sdc /dev/sdd
-
Verify Pool: Check pool status:
zpool status
zpool list -
Set Pool Properties:
# Enable compression
zfs set compression=lz4 storage
# Set deduplication (optional, uses more RAM)
zfs set dedup=on storage
# Set auto-snapshots
zfs set com.sun:auto-snapshot=true storage
Add Storage to Proxmoxβ
Configure ZFS Storage in Web Interface
-
Navigate to Storage: Datacenter β Storage
-
Add ZFS: Click Add β ZFS
-
Configuration:
ID: zfs-storage
ZFS Pool: storage
Content: Disk image, Container, VZDump backup file
Nodes: Select your Proxmox node -
Enable: Check "Enabled" and click Add
ZFS Management Commandsβ
Useful ZFS Commands
# Check pool health
zpool status -v
# View pool I/O statistics
zpool iostat -v 2
# Create snapshot
zfs snapshot storage@backup-$(date +%Y%m%d)
# List snapshots
zfs list -t snapshot
# Rollback to snapshot
zfs rollback storage@backup-20231201
# Destroy snapshot
zfs destroy storage@backup-20231201
# Check filesystem usage
zfs list
# Set quotas
zfs set quota=50G storage/vm-disk
# Monitor ZFS ARC
arc_summary
VM and Container Managementβ
Creating Virtual Machinesβ
Create VM from Web Interface
-
Click Create VM: Top right corner
-
General Tab:
- VM ID: Auto-assigned or custom
- Name: Descriptive name
- Resource Pool: Optional
-
OS Tab:
- ISO Image: Select from uploaded ISOs
- Guest OS Type: Match your OS
-
System Tab:
- BIOS: UEFI (recommended for modern OSes)
- Machine: Default (q35)
-
Hard Disk Tab:
- Bus/Device: SCSI (VirtIO SCSI)
- Storage: zfs-storage
- Disk size: As needed
- Cache: Write back (unsafe)
-
CPU Tab:
- Cores: Based on requirements
- Type: host (best performance)
-
Memory Tab:
- Memory: Set based on guest requirements
- Ballooning: Enable for dynamic allocation
-
Network Tab:
- Bridge: vmbr0
- Model: VirtIO (paravirtualized)
LXC Container Creationβ
Create Linux Container
-
Click Create CT: Next to Create VM
-
General:
- CT ID: Auto or custom
- Hostname: Container name
- Password: Root password
-
Template:
- Storage: local
- Template: Choose from available
-
Disks:
- Storage: zfs-storage
- Disk size: Container requirements
-
CPU: Set core allocation
-
Memory: Set RAM and swap
-
Network: Configure as needed
Advanced Configurationβ
High Availability Setupβ
Cluster Configuration
# Create cluster (on first node)
pvecm create cluster-name
# Add node to cluster (on additional nodes)
pvecm add existing-cluster-ip
# Check cluster status
pvecm status
Backup Configurationβ
Automatic Backup Setup
-
Navigate: Datacenter β Backup
-
Add Backup Job:
- Storage: Select backup storage
- Schedule: Cron format or preset
- Mode: Snapshot, Suspend, or Stop
- Compression: LZO or GZIP
-
Backup Script Example:
#!/bin/bash
# Backup all VMs
vzdump --all --mode snapshot --storage zfs-storage --compress lzo
Network Configurationβ
Advanced Networking
# Edit network configuration
nano /etc/network/interfaces
# Example bridge configuration
auto vmbr1
iface vmbr1 inet static
address 10.0.0.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
Storage Managementβ
Additional Storage Types
# Add directory storage
pvesm add dir local-storage --path /mnt/extra-storage --content backup,iso
# Add NFS storage
pvesm add nfs nfs-storage --server 192.168.1.200 --export /volume1/proxmox --content backup,iso
# Add iSCSI storage
pvesm add iscsi iscsi-storage --portal 192.168.1.201 --target iqn.2021-01.local.storage:target1
Monitoring and Maintenanceβ
Performance Monitoringβ
System Monitoring Commands
# CPU and memory usage
htop
# Disk I/O monitoring
iotop
# Network monitoring
iftop
# ZFS pool monitoring
zpool iostat -v 2
# VM resource usage
qm list
pct list
Maintenance Tasksβ
Regular Maintenance
# Update Proxmox
apt update && apt upgrade
# Clean old kernels
apt autoremove
# Check ZFS pool health
zpool scrub storage
# Backup configuration
tar -czf /root/proxmox-backup-$(date +%Y%m%d).tar.gz /etc/pve
# Log rotation
logrotate -f /etc/logrotate.conf
Troubleshootingβ
Common Issuesβ
Boot Problems
-
Grub Issues: Boot from rescue mode and reinstall:
grub-install /dev/sda
update-grub -
ZFS Import Failures: Force import pool:
zpool import -f storage
Network Issues
-
Bridge Configuration: Verify bridge settings:
ip link show
brctl show -
VM Network Problems: Check VM network configuration and restart networking
Storage Issues
-
ZFS Pool Degraded: Check disk health:
zpool status -v
smartctl -a /dev/sdb -
Storage Full: Clean old backups and snapshots:
zfs list -t snapshot
zfs destroy storage@old-snapshot
Recovery Proceduresβ
Emergency Recovery
- Boot from Live CD: Use Proxmox installer in rescue mode
- Mount ZFS Pool: Import and mount existing pool
- Restore Configuration: Copy
/etc/pve
from backup - Rebuild Boot: Reinstall bootloader if needed
Security Best Practicesβ
Access Controlβ
User Management
- Create Users: Avoid using root for daily operations
- Role Assignment: Use built-in roles or create custom ones
- Two-Factor Authentication: Enable 2FA for additional security
- API Tokens: Use tokens instead of passwords for automation
Network Securityβ
Firewall Configuration
# Enable firewall
pve-firewall start
# Configure rules in web interface:
# Datacenter β Firewall β Options β Enable
SSL Certificatesβ
Custom SSL Certificate
# Generate certificate request
openssl req -new -nodes -keyout /etc/pve/local/pve-ssl.key -out /etc/pve/local/pve-ssl.csr
# Install certificate
cp your-certificate.crt /etc/pve/local/pve-ssl.pem
systemctl restart pveproxy
Special Thanksβ
- Proxmox Team for creating this excellent virtualization platform
- OpenZFS Community for the robust ZFS filesystem
- To our fantastic Discord community and our Admins DiscDuck and Hawks for their input and testing
Please support the developers and creators involved in this work to help show them some love. β€οΈ
Final Wordsβ
We hope you enjoyed this guide. It was conceptualized, written, and implemented by our Admin Sycotix.
Support Usβ
Our work sometimes takes months to research and develop.
If you want to help support us please consider:
- Liking and Subscribing to our Youtube channel
- Joining our Discord server
- Becoming a paid member on our IBRACORP website
- Donating via Paypal
Thank you for being part of our community!