Open-source server virtualization platform combining KVM and LXC with a web-based management interface, supporting clustering, live migration, high availability, and enterprise storage backends.
Table of Contents#
- Overview
- Architecture
- Installation
- Network Configuration
- CLI Management
- Virtual Machines and Containers
- Backup and Restore
- Monitoring and Maintenance
- Troubleshooting
- See Also
- Sources
1. Overview#
Proxmox VE (Virtual Environment) is an open-source platform for enterprise virtualization that integrates KVM hypervisor and LXC containers. It provides:
- Web-based management interface and full CLI/API access
- Cluster management with centralized resource pooling
- Live migration, high availability, and software-defined networking
- Multiple storage backends (local, NFS, iSCSI, Ceph, ZFS, LINSTOR)
- Built-in backup/restore with
vzdumpand Proxmox Backup Server integration
2. Architecture#
2.1 Nodes and Clusters#
Nodes are individual servers running Proxmox VE. These can be combined into clusters for centralized management and resource pooling. Clusters use Corosync for communication and pmxcfs (a cluster-aware filesystem) to synchronize configuration across all nodes.
2.2 Storage Models#
2.2.1 Local Storage#
Local storage refers to disks physically attached to the server. Proxmox VE can use local storage for VM and container disks, ISO images, and backup files. Common backends include LVM, LVM-thin, ZFS, and directory-based storage.
2.2.2 Shared Storage#
Shared storage is accessible by all nodes within a Proxmox VE cluster. Types include NFS, iSCSI, Ceph RBD, CephFS, and GlusterFS. Shared storage is required for features like live migration and high availability.
2.2.3 iSCSI Multipath#
iSCSI Multipath ensures continuous availability and high performance by utilizing multiple paths between the Proxmox server and the iSCSI storage, providing redundancy and load balancing.
Enabling iSCSI Multipath:
Install multipath tools:
apt-get update apt-get install multipath-toolsIdentify WWIDs for each iSCSI device:
/lib/udev/scsi_id -g -u -d /dev/<device>Configure
/etc/multipath.conf:blacklist { wwid .* } blacklist_exceptions { wwid "<wwid-1>" wwid "<wwid-2>" } multipaths { multipath { wwid "<wwid-1>" alias mpath0 } multipath { wwid "<wwid-2>" alias mpath1 } }Add WWIDs to multipath:
multipath -a <wwid>Restart and verify:
systemctl restart multipath-tools.service multipath -ll
Configuring Proxmox VE for iSCSI Multipath:
Discover targets:
iscsiadm -m discovery -t sendtargets -p <target-ip>Log into the target:
iscsiadm -m node -T <target-iqn> -p <target-ip> --loginAdd the iSCSI storage through the Proxmox web interface or CLI, selecting the multipath option.
3. Installation#
3.1 Requirements#
- 64-bit processor with hardware virtualization support (Intel VT-x or AMD-V)
- Minimum 2 GB RAM (8 GB+ recommended for production)
- 16 GB disk space minimum
- Network interface card
3.2 From ISO#
Burn the ISO to a USB drive (e.g., with dd or Etcher), boot from it, and follow the on-screen instructions for disk partitioning, administrator password, and network settings.
3.3 On Existing Debian#
# Add the Proxmox VE repository
echo "deb [signed-by=/usr/share/keyrings/proxmox-release-bookworm.gpg] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
| sudo tee /etc/apt/sources.list.d/pve-install-repo.list
# Add the repository GPG key
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg \
-O /usr/share/keyrings/proxmox-release-bookworm.gpg
# Install Proxmox VE
sudo apt update
sudo apt install proxmox-ve4. Network Configuration#
Network settings can be configured through the web interface or by editing /etc/network/interfaces.
4.1 Creating a Cluster#
To create a cluster:
# On the first node
pvecm create <cluster-name>
# On additional nodes (join the cluster)
pvecm add <existing-node-ip>
# Verify cluster status
pvecm nodes
pvecm status5. CLI Management#
5.1 Managing Virtual Machines (qm)#
| Command | Description |
|---|---|
qm list | List all VMs |
qm start <vmid> | Start a VM |
qm stop <vmid> | Force stop a VM |
qm shutdown <vmid> | Graceful ACPI shutdown |
qm reboot <vmid> | Reboot a VM |
qm create <vmid> --name <name> --memory <mb> --net0 virtio,bridge=vmbr0 | Create a VM |
qm set <vmid> --<option> <value> | Modify VM settings |
qm migrate <vmid> <target-node> --online | Live migrate a VM |
qm terminal <vmid> | Connect to serial console |
5.2 Managing Containers (pct)#
| Command | Description |
|---|---|
pct list | List all containers |
pct start <vmid> | Start a container |
pct stop <vmid> | Stop a container |
pct create <vmid> local:vztmpl/<template>.tar.gz --hostname <name> --memory <mb> | Create a container |
pct enter <vmid> | Attach to container shell |
pct exec <vmid> -- <command> | Run command inside container |
5.3 Cluster Operations#
| Command | Description |
|---|---|
pvecm create <cluster-name> | Create a new cluster |
pvecm add <node-ip> | Join a node to the cluster |
pvecm nodes | List cluster nodes |
pvecm status | Show cluster status |
pvecm expected 1 | Set expected votes (for single-node recovery) |
6. Virtual Machines and Containers#
6.1 Creating a VM via CLI#
# Create the VM
qm create 100 --name "example-vm" --memory 2048 --net0 virtio,bridge=vmbr0
# Attach installation media and a virtual disk
qm set 100 --ide2 local:iso/<iso-file>.iso,media=cdrom
qm set 100 --virtio0 local-lvm:32
# Configure boot options
qm set 100 --boot c --bootdisk virtio0
# Start the VM
qm start 1006.2 Connecting to a VM#
Via Serial Console:
qm set 100 --serial0 socket
qm terminal 100Via SPICE:
remote-viewer spice://<proxmox-host>:<port>?tls-port=<tls-port>6.3 Managing Containers#
Containers share the kernel with the host, making them faster and more resource-efficient than VMs. Create them via the web interface ("Create CT" button) or CLI with pct create.
7. Backup and Restore#
7.1 Setting Up Backups#
Proxmox VE includes vzdump for backups. Configure scheduled backups through the web interface or CLI:
# Backup a single VM/container
vzdump <vmid> --storage <backup-storage> --mode snapshot
# Backup all VMs on the node
vzdump --all --storage <backup-storage> --mode snapshot --compress zstd7.2 Restoring from Backup#
# Restore a VM
qmrestore <backup-file>.vma <vmid>
# Restore a container
pct restore <vmid> <backup-file>.tar.zst8. Monitoring and Maintenance#
8.1 CLI Monitoring Tools#
| Command | Description |
|---|---|
pvesh get /nodes/<node>/status | Node resource usage via API |
pvesh get /cluster/resources | Cluster-wide resource overview |
pveperf | Benchmark local storage and CPU |
zpool status | ZFS pool health (if using ZFS) |
ceph status | Ceph cluster health (if using Ceph) |
top / htop | System-level process monitoring |
Troubleshooting#
| Issue | Cause | Solution |
|---|---|---|
| Web interface unreachable | pveproxy service not running | systemctl restart pveproxy; check port 8006 is open |
| Cluster node not joining | Corosync port blocked or SSH key issue | Ensure ports 5405-5412/UDP are open; verify /etc/pve is accessible |
| VM migration fails | No shared storage or network mismatch | Verify shared storage; ensure bridge names match across nodes |
TASK ERROR: command 'apt-get update' failed | Enterprise repo without subscription | Disable enterprise repo; use pve-no-subscription repo |
| Container cannot reach network | Bridge misconfigured | Verify vmbr0 exists and has correct IP/gateway in /etc/network/interfaces |