Architettura Hyper-V

Hyper-V è una tecnologia di virtualizzazione basata su hypervisor per determinate versioni x64 di Windows. L'hypervisor è fondamentale per la virtualizzazione. È la piattaforma di virtualizzazione specifica del processore che consente a più sistemi operativi isolati di condividere una singola piattaforma hardware.

Hyper-V supporta l'isolamento in termini di partizione. Una partizione è un'unità logica di isolamento, supportata dall'hypervisor, in cui vengono eseguiti i sistemi operativi. L'hypervisor di Microsoft deve avere almeno un elemento padre o una radice, una partizione, Windows in esecuzione. Lo stack di gestione della virtualizzazione viene eseguito nella partizione padre e ha accesso diretto ai dispositivi hardware. La partizione radice quindi crea le partizioni figlio che ospitano i sistemi operativi guest. Una partizione radice crea le partizioni figlio tramite l'API hypercall.

Le partizioni non hanno accesso al processore fisico, né gestiscono gli interrupt del processore. Hanno invece una visualizzazione virtuale del processore e vengono eseguite in un'area dell'indirizzo di memoria virtuale privata per ogni partizione guest. L'hypervisor gestisce gli interrupt del processore e li reindirizza alla partizione corrispondente. Hyper-V può inoltre usare l'accelerazione hardware per la conversione degli indirizzi tra vari spazi degli indirizzi virtuali guest tramite un'unità di gestione della memoria di input/output (IOMMU, Input Output Memory Management Unit) che funziona indipendentemente dall'hardware di gestione della memoria utilizzato dalla CPU. Un'unità IOMMU viene utilizzata per modificare il mapping degli indirizzi di memoria fisica agli indirizzi usati dalle partizioni figlio.

Anche le partizioni figlio non hanno accesso diretto alle altre risorse hardware e vengono presentate una visualizzazione virtuale delle risorse, come dispositivi virtuali (VDevs). Le richieste per i dispositivi virtuali vengono reindirizzate tramite il VMBus o l'hypervisor ai dispositivi della partizione padre che gestisce le richieste. Il VMBus è un canale di comunicazione tra partizioni logiche. La partizione padre ospita i provider di servizi di virtualizzazione (VSP, Virtualization Service Provider) che comunicano sul VMBus per gestire le richieste di accesso ai dispositivi delle partizioni figlio. Le partizioni figlio ospitano i consumer di servizi di virtualizzazione (VSC, Virtualization Service Consumer) che reindirizzano le richieste dei dispositivi ai VSP nella partizione padre tramite il VMBus. L'intero processo è trasparente per il sistema operativo guest.

I dispositivi virtuali possono anche sfruttare una funzionalità di Windows Server Virtualization, denominata Enlightened I/O, per l'archiviazione, la rete, la grafica e i sottosistemi di input. Enlightened I/O è un'implementazione specializzata che supporta la virtualizzazione dei protocolli di comunicazione di alto livello (ad esempio SCSI) che utilizzano il VMBus direttamente, ignorando qualsiasi livello di emulazione dei dispositivi. Ciò rende più efficiente la comunicazione ma richiede un guest con riconoscimento che supporti hypervisor e VMBus. Il kernel che supporta l'hypervisor e Enlightened I/O di Hyper-V sono forniti tramite l'installazione dei servizi di integrazione di Hyper-V. Sono disponibili anche i componenti di integrazione, tra cui i driver di client server virtuale, per altri sistemi operativi client. Hyper-V richiede un processore con virtualizzazione basata su hardware, ad esempio quello fornito dalla tecnologia Intel VT o AMD Virtualization (AMD-V).

Nel diagramma seguente viene fornita una panoramica generale dell'architettura di un ambiente Hyper-V.

Diagram of the Hyper V High Level Architecture, showing the four partitions and Hypervisor sections.

Glossario

  • APIC - Advanced Programmable Interrupt Controller - Dispositivo che consente l'assegnazione dei livelli di priorità all'output di interrupt.
  • Partizione figlio - Partizione che ospita un sistema operativo guest - Tutti gli accessi alla memoria fisica e ai dispositivi da una partizione figlio vengono forniti tramite il bus macchina virtuale (VMBus) o l'hypervisor.
  • Hypercall - Interfaccia per le comunicazioni con l'hypervisor - L'interfaccia hypercall supporta l'accesso alle ottimizzazioni fornite dall'hypervisor.
  • Hypervisor - Livello di software che si trova tra l'hardware e uno o più sistemi operativi. Il processo principale consiste nel fornire ambienti di esecuzione isolati denominati partizioni. L'hypervisor controlla e regola l'accesso all'hardware sottostante.
  • IC - Integration Component - Componente di integrazione che consente alle partizioni figlio di comunicare con altre partizioni e l'hypervisor.
  • Stack di I/O - Stack di input/output
  • MSR - Memory Service Routine
  • Partizione radice - A volte chiamata partizione padre. Gestisce le funzioni a livello di computer, ad esempio i driver del dispositivo, il risparmio energia e l'aggiunta o la rimozione a caldo del dispositivo. La partizione radice (o padre) è l'unica ad avere accesso diretto alla memoria fisica e ai dispositivi.
  • VID - Virtualization Infrastructure Driver - Driver dell'infrastruttura di virtualizzazione che fornisce servizi di gestione della partizione, servizi di gestione del processore virtuale e servizi di gestione della memoria per le partizioni.
  • VMBus - Meccanismo di comunicazione basato su Fibre Channel utilizzato per la comunicazione tra partizioni e l'enumerazione del dispositivo nei sistemi con più partizioni virtualizzate attive. Il VMBus viene installato con i servizi di integrazione Hyper-V.
  • VMMS - Virtual Machine Management Service - Il servizio Virtual Machine Management è responsabile della gestione dello stato di tutte le macchine virtuali nelle partizioni figlio.
  • VMWP - Virtual Machine Worker Process - Il processo di lavoro della macchina virtuale è un componente in modalità utente dello stack di virtualizzazione. Il processo di lavoro fornisce i servizi di gestione delle macchine virtuali dall'istanza di Windows Server 2008 nella partizione padre ai sistemi operativi guest nelle partizioni figlio. Il servizio Virtual Machine Management genera un processo di lavoro separato per ogni macchina virtuale in esecuzione.
  • VSC - Virtualization Service Client - Il client di servizi di virtualizzazione è un'istanza del dispositivo sintetico che si trova in una partizione figlio. I VSC utilizzano le risorse hardware rese disponibili dai provider di servizi di virtualizzazione (VSP) nella partizione padre. Comunicano con i VSP corrispondenti nella partizione padre sul VMBus per soddisfare le richieste di I/O del dispositivo delle partizioni figlio.
  • VSP - Virtualization Service Provider - Il provider di servizi di virtualizzazione si trova nella partizione radice e fornisce il supporto per dispositivi sintetici nelle partizioni figlio tramite il bus macchina virtuale (VMBus).
  • WinHv - Windows Hypervisor Interface Library - La libreria dell'interfaccia di Windows Hypervisor è essenzialmente un ponte tra i driver del sistema operativo partizionato e l'hypervisor che consente ai driver di chiamare l'hypervisor utilizzando le convenzioni di chiamata standard di Windows.
  • WMI - Windows Management Instrumentation - Il servizio Virtual Machine Management espone un set di API basate su Strumentazione gestione Windows per gestire e controllare le macchine virtuali.