Azure Virtual Machine Hibernation

L’ibernazione di Azure Virtual Machine (VM) è una funzionalità che permette di mettere in stato di ibernazione una macchina virtuale in Azure, proprio come si farebbe con un computer normale. Quando una VM viene ibernata, il suo stato attuale viene salvato su disco, il che include la memoria, le applicazioni in esecuzione e le configurazioni. Una volta che la VM viene “risvegliata” dall’ibernazione, riprende dallo stato salvato, permettendo agli utenti di continuare il lavoro da dove lo avevano lasciato.

Questo può essere particolarmente utile per risparmiare sui costi associati alle risorse di calcolo in Azure. Quando una VM è in stato di ibernazione, non viene addebitato il costo delle risorse di calcolo, ma solo lo spazio di archiviazione utilizzato per mantenere lo stato salvato della VM. È ideale per scenari in cui le VM non devono essere attive 24 ore su 24, 7 giorni su 7, ma sono necessarie solo occasionalmente.

La funzionalità di ibernazione di Azure VM è particolarmente utile per i casi di uso come lo sviluppo e il testing, dove le macchine virtuali non devono essere sempre in esecuzione, ma possono essere rapidamente riavviate per riprendere il lavoro.

L’ibernazione di Azure Virtual Machine è supportata su specifiche tipologie di macchine virtuali, principalmente basate sulle loro capacità di hardware e configurazioni. Tuttavia, le opzioni disponibili possono variare nel tempo a seconda delle innovazioni e aggiornamenti da parte di Microsoft Azure. Al momento della scrittura di questo articolo sono supportate le seguenti dimensioni (fino ad un massimo di 32 Gb di RAM):

E sono supportati i seguenti sistemi operativi:

  • Windows Server 2022
  • Windows Server 2019
  • Windows 11 Pro
  • Windows 11 Enterprise
  • Windows 11 Enterprise multi-session
  • Windows 10 Pro
  • Windows 10 Enterprise
  • Windows 10 Enterprise multi-session
  • Ubuntu 22.04 LTS
  • Ubuntu 20.04 LTS
  • Ubuntu 18.04 LTS
  • Debian 11
  • Debian 10 (con backports kernel)

È bene anche considerare le seguenti limitazioni:

  • Non è possibile abilitare l’ibernazione nelle macchine virtuali esistenti.
  • Non è possibile ridimensionare una macchina virtuale se è abilitata l’ibernazione.
  • Quando una macchina virtuale viene ibernata non è possibile collegare, scollegare o modificare dischi o schede di interfaccia di rete associati alla macchina virtuale. La macchina virtuale deve invece essere spostata in uno stato Stop-Dealloated.
  • Quando una macchina virtuale viene ibernata non esiste alcuna garanzia di capacità per garantire che la capacità sia sufficiente per avviare la macchina virtuale in un secondo momento. Nel raro caso in cui si verifichino problemi di capacità, è possibile provare ad avviare la macchina virtuale in un secondo momento. Le prenotazioni di capacità non garantiscono la capacità per le macchine virtuali ibernate.
  • Non è possibile disabilitare l’ibernazione in una macchina virtuale una volta abilitata.

Abilitazione della funzionalità di ibernazione per la sottoscrizione

Per abilitare la funzionalità di ibernazione su una macchina virtuale (VM) in Azure è necessario prima registrare le funzionalità di ibernazione. Dal portale di Microsoft Azure selezionate la sottoscrizione in cui volete abilitare la funzionalità e dal nodo Preview feaures cercate hibernation.

Figura 1: Abilitazione della funzionalità di ibernazione (preview) per la sottoscrizione

Figura 2: Funzionalità di ibernazione registrata

Per ibernare una macchina virtuale, è prima necessario abilitare la funzionalità durante la creazione della macchina virtuale. È possibile abilitare l’ibernazione solo per una macchina virtuale durante la creazione iniziale. Non è possibile abilitare questa funzionalità dopo la creazione della VM.

Figura 3: Abilitazione della funzionalità di ibernazione durante la creazione della VM

L’abilitazione dell’ibernazione durante la creazione di una macchina virtuale Windows installa automaticamente l’estensione macchina virtuale “Microsoft.CPlat.Core.WindowsHibernateExtension”. Questa estensione configura il sistema operativo guest per l’ibernazione. Questa estensione non deve essere installata o aggiornata manualmente perché è gestita dalla piattaforma Azure.

Figura 4: Estensione per abilitare l’ibernazione della Azure VM

Dal portale di Azure sarà poi semplice mettere in ibernazione la VM semplicemente usando il tasto Hibernate (preview).

Figura 5: Ibernazione della Azure VM

Nel giro di qualche secondo la macchina verrà ibernata e deallocata.

Figura 6: Ibernazione della Azure VM completata

Quando riaccenderemo la Azure VM ritroveremo la stessa situazione che abbiamo lasciato prima che la VM fosse ibernata.

Figura 7: Riaccensione della Azure VM ibernata

Figura 8: Alla riaccensione della VM il lavoro può essere ripreso dal momento prima dell’ibernazione

Conclusioni

L’ibernazione delle macchine virtuali in Azure rappresenta un notevole passo avanti nella gestione efficiente delle risorse cloud. Questa funzionalità offre ai suoi utenti la flessibilità di ridurre significativamente i costi operativi, permettendo di “congelare” le VM durante i periodi di inattività, evitando così l’addebito delle risorse di calcolo, pur mantenendo lo stato attuale e i dati. È particolarmente vantaggiosa in scenari dove l’uso della VM non è costante, come nello sviluppo di software o in ambienti di test.

Inoltre, l’ibernazione migliora l’efficienza operativa. Gli utenti possono rapidamente riprendere il lavoro da dove era stato lasciato, senza dover passare attraverso lunghi processi di riavvio e ricarica delle applicazioni e dei dati. Questo aspetto è particolarmente utile in contesti dinamici dove la rapidità di reazione e la capacità di riprendere il lavoro in modo efficiente sono cruciali.

Tuttavia, è fondamentale riconoscere che l’abilitazione e l’uso efficace di questa funzionalità richiedono una comprensione chiara dei requisiti tecnici e delle compatibilità specifiche della propria infrastruttura in Azure. L’impegno nel configurare correttamente e testare l’ibernazione si traduce in un equilibrio ottimale tra risparmio sui costi e prestazioni efficienti, sfruttando al meglio ciò che la tecnologia cloud ha da offrire.