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#

  1. Overview
  2. Architecture
  3. Installation
  4. Network Configuration
  5. CLI Management
  6. Virtual Machines and Containers
  7. Backup and Restore
  8. Monitoring and Maintenance
  9. Troubleshooting
  10. See Also
  11. 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 vzdump and 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:

  1. Install multipath tools:

    apt-get update
    apt-get install multipath-tools
  2. Identify WWIDs for each iSCSI device:

    /lib/udev/scsi_id -g -u -d /dev/<device>
  3. 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
        }
    }
  4. Add WWIDs to multipath:

    multipath -a <wwid>
  5. Restart and verify:

    systemctl restart multipath-tools.service
    multipath -ll

Configuring Proxmox VE for iSCSI Multipath:

  1. Discover targets:

    iscsiadm -m discovery -t sendtargets -p <target-ip>
  2. Log into the target:

    iscsiadm -m node -T <target-iqn> -p <target-ip> --login
  3. Add 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-ve

4. 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 status

5. CLI Management#

5.1 Managing Virtual Machines (qm)#

CommandDescription
qm listList 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=vmbr0Create a VM
qm set <vmid> --<option> <value>Modify VM settings
qm migrate <vmid> <target-node> --onlineLive migrate a VM
qm terminal <vmid>Connect to serial console

5.2 Managing Containers (pct)#

CommandDescription
pct listList 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#

CommandDescription
pvecm create <cluster-name>Create a new cluster
pvecm add <node-ip>Join a node to the cluster
pvecm nodesList cluster nodes
pvecm statusShow cluster status
pvecm expected 1Set 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 100

6.2 Connecting to a VM#

Via Serial Console:

qm set 100 --serial0 socket
qm terminal 100

Via 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 zstd

7.2 Restoring from Backup#

# Restore a VM
qmrestore <backup-file>.vma <vmid>

# Restore a container
pct restore <vmid> <backup-file>.tar.zst

8. Monitoring and Maintenance#

8.1 CLI Monitoring Tools#

CommandDescription
pvesh get /nodes/<node>/statusNode resource usage via API
pvesh get /cluster/resourcesCluster-wide resource overview
pveperfBenchmark local storage and CPU
zpool statusZFS pool health (if using ZFS)
ceph statusCeph cluster health (if using Ceph)
top / htopSystem-level process monitoring

Troubleshooting#

IssueCauseSolution
Web interface unreachablepveproxy service not runningsystemctl restart pveproxy; check port 8006 is open
Cluster node not joiningCorosync port blocked or SSH key issueEnsure ports 5405-5412/UDP are open; verify /etc/pve is accessible
VM migration failsNo shared storage or network mismatchVerify shared storage; ensure bridge names match across nodes
TASK ERROR: command 'apt-get update' failedEnterprise repo without subscriptionDisable enterprise repo; use pve-no-subscription repo
Container cannot reach networkBridge misconfiguredVerify vmbr0 exists and has correct IP/gateway in /etc/network/interfaces

See Also#

Sources#