DRS (Distributed Resource Scheduler)
DRS is available exclusively with an Enterprise license. The required feature flag is drs. Learn more about licensing.
The Distributed Resource Scheduler (DRS) provides automatic VM load balancing across Proxmox cluster nodes. Inspired by VMware DRS, it continuously monitors resource utilization and generates migration recommendations to keep your clusters balanced and healthy.
Overview
DRS analyzes CPU, memory, and storage usage across all nodes in a cluster, identifies imbalances, and recommends VM migrations to distribute workloads evenly. It supports three operating modes:
| Mode | Behavior |
|---|---|
| Manual | DRS generates recommendations that an administrator must review and execute manually |
| Partial | Recommendations above a configurable priority threshold are executed automatically; the rest require manual approval |
| Automatic | All recommendations are executed automatically without manual intervention |
Interface Tabs
The DRS page is organized into five tabs: Clusters, Recommendations, History, Affinity Rules, and Configuration.
Clusters
The Clusters tab provides a real-time view of every connected Proxmox cluster that has more than one node. Each cluster is displayed as an expandable card showing:
- Cluster name and Proxmox VE version
- Node count and running VM count
- Average CPU and memory utilization displayed as circular gauges
- Health score -- a computed score reflecting overall cluster balance (Balanced, To Optimize, or Unbalanced)
- Memory spread -- the percentage gap between the most-loaded and least-loaded node
Expanding a cluster card reveals the per-node breakdown. Each node displays:
- CPU and memory usage as horizontal progress bars
- Running VM count vs. total VM count
- A color-coded role indicator:
| Role | Meaning |
|---|---|
| Source (red) | Node is above average utilization and should offload VMs |
| Target (green) | Node is below average utilization and can receive VMs |
| Neutral | Node is within the acceptable range of the cluster average |
| Maintenance (amber) | Node is in maintenance mode; VMs will be evacuated from it |
Recommendations
The Recommendations tab lists all pending migration recommendations. Each recommendation shows:
- The VM or container name and its ID
- The migration path: source node to target node
- A priority level: Low, Medium, High, or Critical
- An estimated improvement score indicating how much the migration will improve cluster balance
Clicking a recommendation opens a detail drawer where you can:
- Review the full migration details (VM info, reason, priority, estimated improvement, creation date)
- View storage validation results -- DRS checks whether the VM has local or shared disks and whether the target node has enough storage space
- Approve, Reject, or Execute the migration
When a migration is executed, a real-time progress bar tracks its status including percentage complete and current operation message. DRS polls the Proxmox task every 2 seconds until the migration completes or fails.
If a VM has been moved since the recommendation was created, DRS automatically marks it as stale and prevents execution. The recommendations list is revalidated each time you open a detail drawer.
Storage Validation
Before executing a migration, DRS performs a pre-flight storage check:
- Shared storage: If all VM disks reside on shared storage (Ceph, NFS, etc.), the migration is safe and fast -- no data copy is required.
- Local storage: If the VM has local disks, DRS displays:
- A list of local disks with their sizes
- The total data to transfer and an estimated transfer duration
- A breakdown of the target node's storage: current usage, projected usage after migration, and a warning level (OK, Warning, Critical, or Full)
Migrations involving local storage take significantly longer and temporarily consume additional storage space on the target node. Always verify that sufficient space is available before proceeding.
History
The History tab shows the last 20 migration operations with their status (Completed, Failed, or Running), source and target nodes, VM name, and timestamp. Use this tab to audit past DRS activity and troubleshoot failed migrations.
Affinity Rules
Affinity rules let you control VM placement within a cluster. When multiple clusters are connected, a cluster selector at the top lets you choose which cluster's rules to manage. Three rule types are supported:
| Rule Type | Description |
|---|---|
| Affinity | Keep selected VMs together on the same node |
| Anti-affinity | Keep selected VMs on different nodes to avoid single points of failure |
| Node affinity | Pin specific VMs to designated nodes |
Each rule can be configured as:
- Required (hard constraint) -- DRS will never generate a recommendation that violates this rule
- Preferred (soft constraint) -- DRS will respect this rule when possible but may override it under heavy load
Rules can also be populated from Proxmox tags or resource pools, making it easy to define placement policies for groups of VMs without listing individual VMIDs.
Use anti-affinity rules for redundant services (e.g., two database replicas) to ensure they never land on the same hypervisor.
Configuration
The Configuration tab exposes all DRS tuning parameters:
General Settings
- Enable/Disable DRS -- master toggle for the scheduler
- Operating mode -- Manual, Partial, or Automatic
- Balancing method -- Optimize for Memory, CPU, or Disk
- Balancing mode -- Based on actual usage (
used), allocated resources (assigned), or pressure stall information (psi, requires PVE 9+) - Guest types -- Balance VMs, containers, or both
Thresholds
- CPU high/low thresholds
- Memory high/low thresholds
- Storage high threshold
- Imbalance threshold (minimum spread before DRS intervenes)
- Maximum load spread for homogenization
Weights
- CPU weight, memory weight, and storage weight to control relative importance in the balancing score
Migration Controls
- Maximum concurrent migrations
- Migration cooldown period between successive operations
- Balance larger VMs first option
- Prevent overprovisioning toggle
Node Management
- Maintenance nodes -- VMs are automatically evacuated from these nodes
- Ignored nodes -- DRS excludes these nodes from all calculations
Affinity Engine
- Enable/disable affinity rules
- Enforce affinity (hard vs. soft mode globally)
Triggering an Evaluation
Click the Evaluate button in the page header to manually trigger a DRS evaluation cycle. DRS will re-analyze all connected clusters and generate fresh recommendations. In Partial or Automatic mode, qualifying recommendations may be executed immediately.
Permissions
| Permission | Description |
|---|---|
vm.migrate | Required to view DRS and execute migrations |
Users without the vm.migrate permission will not see the DRS entry in the navigation sidebar.