Last Updated on August 7, 2025 by Arnav Sharma
Hibernation is an effective cost management feature available for Azure virtual machines (VMs), allowing you to pause VMs that are not in use, thereby saving on compute costs. Whether you are using Linux or Windows VMs, Azure provides a straightforward process to hibernate and resume these machines, ensuring that your applications can quickly pick up right where they left off. This blog post will explore the details of hibernating Azure VMs, the supported configurations, and the specific steps for both Windows and Linux environments.
Why Hibernate Your VMs?
Hibernation is particularly beneficial for:
- Virtual desktops, dev/test servers, and other scenarios where VMs don’t need to run 24/7.
- Systems with long boot times due to memory-intensive applications. These applications can be initialized on VMs and hibernated. Prewarmed VMs can then be quickly started with applications already running in the desired state.
How Hibernation Works
When you hibernate a VM, Azure signals the VM’s operating system to perform a suspend-to-disk action. The memory contents of the VM are stored in the OS disk, and the VM is then deallocated. When you start the VM again, the memory contents are transferred from the OS disk back into memory, allowing applications and processes to resume from their previous state.
Once a VM is in a hibernated state, you aren’t billed for the VM usage. Instead, you’re only billed for the storage (OS disk, data disks) and networking resources (IPs, etc.) attached to the VM.
Supported Configurations
Hibernation support is limited to certain VM sizes and OS versions. Here are the key configurations:
Supported Operating Systems
Windows
- Windows Server 2022
- Windows Server 2019
- Windows 11 Pro, Enterprise, Enterprise multi-session
- Windows 10 Pro, Enterprise, Enterprise multi-session
Linux
- Ubuntu 22.04 LTS, 20.04 LTS, 18.04 LTS
- Debian 11, 10 (with backports kernel)
- RHEL 9.0+ (with minimum kernel version 5.14.0-70), RHEL 8.3+ (with minimum kernel version 4.18.0.240)
Supported VM Sizes
VM sizes with up to 64-GB RAM from the following General Purpose VM series support hibernation:
- Dasv5-series
- Dadsv5-series
- Dsv5-series
- Ddsv5-series
- Easv5-series
- Eadsv5-series
- Esv5-series
- Edsv5-series
VM sizes with up to 112-GB RAM from the following GPU VM series support hibernation:
- NVv4-series (in preview)
- NVadsA10v5-series (in preview)
Configure Hibernation
Windows VMs
- Enable Hibernation During VM Creation: In the Azure portal, check the ‘Enable hibernation’ box during VM creation. This can also be done via CLI, PowerShell, ARM templates, and API.
- Enable Hibernation on an Existing VM:
- Deallocate your VM using
az vm deallocate. - Update the OS disk to set
supportsHibernationto true. - Update the VM to enable hibernation.
- Start the VM and configure the guest OS for hibernation.
- Deallocate your VM using
- Configuring the Guest OS: The ‘Microsoft.CPlat.Core.WindowsHibernateExtension’ VM extension is automatically installed. Ensure the page file is on the C: drive.
- Hibernate and Resume: Use the Azure portal, CLI, PowerShell, or REST API to hibernate and resume the VM.

Linux VMs
- Enable Hibernation During VM Creation: Check the ‘Enable hibernation’ box in the Azure portal during VM creation. This can also be done via CLI, PowerShell, ARM templates, and API.
- Enable Hibernation on an Existing VM:
- Deallocate your VM using
az vm deallocate. - Update the OS disk to set
supportsHibernationto true. - Update the VM to enable hibernation.
- Start the VM and configure the guest OS for hibernation.
- Deallocate your VM using
- Configuring the Guest OS: Use either the
LinuxHibernateExtensionor thehibernation-setup-tool. Ensure there is sufficient space available to create the swap file, especially for RHEL. - Hibernate and Resume: Use the Azure portal, CLI, PowerShell, or REST API to hibernate and resume the VM.

Troubleshooting
Windows VMs
- Ensure the page file is on the C: drive.
- Use the powercfg commands to verify and enable hibernation.
Linux VMs
- Install the
LinuxHibernateExtensionorhibernation-setup-tool. - Ensure sufficient space for the swap file.
I help organisations secure their cloud infrastructure and stay ahead of evolving cyber threats. Microsoft MVP and Certified Trainer, author of Mastering Azure Security, and founder of arnav.au — a platform for practical Cloud, Cybersecurity, DevOps and AI content.
Frequently Asked Questions
Hibernation allows you to pause VMs that aren't in use, significantly reducing compute costs since you're only billed for storage and networking resources instead of VM usage. It's particularly beneficial for virtual desktops, dev/test servers, and systems with long boot times, as applications can be quickly resumed from their previous state without reinitializing.
Hibernation is supported on Windows Server 2022/2019, Windows 11/10 Pro and Enterprise versions, and Linux distributions including Ubuntu 20.04+ LTS, Debian 10+, and RHEL 8.3+. VM sizes supporting hibernation include General Purpose series (Dasv5, Dsv5, Easv5, Esv5) up to 64-GB RAM and GPU series (NVv4, NVadsA10v5) up to 112-GB RAM.
To enable hibernation on an existing VM, first deallocate it using `az vm deallocate`, then update the OS disk to set supportsHibernation to true, update the VM to enable hibernation, and start it again. Finally, configure the guest OS for hibernation using the appropriate extensions (WindowsHibernateExtension for Windows or LinuxHibernateExtension for Linux).
When a VM is hibernated, the memory contents are stored in the OS disk and the VM is deallocated. You stop being billed for VM usage but continue to be billed for storage resources (OS disk and data disks) and networking resources (IPs, etc.) attached to the VM.
For Windows VMs, ensure the page file is located on the C: drive and use powercfg commands to verify and enable hibernation. For Linux VMs, install the LinuxHibernateExtension or hibernation-setup-tool and ensure there is sufficient disk space available to create the swap file, especially for RHEL systems.