Skip to main content

DRS (Distributed Resource Scheduler)

Enterprise Feature

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:

ModeBehavior
ManualDRS generates recommendations that an administrator must review and execute manually
PartialRecommendations above a configurable priority threshold are executed automatically; the rest require manual approval
AutomaticAll 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:
RoleMeaning
Source (red)Node is above average utilization and should offload VMs
Target (green)Node is below average utilization and can receive VMs
NeutralNode 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:

  1. Review the full migration details (VM info, reason, priority, estimated improvement, creation date)
  2. View storage validation results -- DRS checks whether the VM has local or shared disks and whether the target node has enough storage space
  3. 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.

tip

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)
warning

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 TypeDescription
AffinityKeep selected VMs together on the same node
Anti-affinityKeep selected VMs on different nodes to avoid single points of failure
Node affinityPin 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.

tip

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

PermissionDescription
vm.migrateRequired to view DRS and execute migrations

Users without the vm.migrate permission will not see the DRS entry in the navigation sidebar.