Hyper-V, SUSE Linux Enterprise 10 e Integration Component
Technorati Tags: Microsoft,Windows,Virtualization,Hyper-V
Rieccoci, dopo un lungo e desiderato periodo di ferie...
Durante le feste (e le ferie), tra un pranzo, una cena ho chiaccherato a lungo con il mio amico Marco (un buon sistemista Windows e un ottimo sistemista UNIX).
Tra i tanti argomenti la virtualizzazione è stato il tema su cui siamo tornati più frequentemente (Amarone escluso).
In particolare Marco era un po' scettico sulla possibilità di usare efficacemente Hyper-V come sistema di virtualizzazione di macchine Linux. Ci siamo così messi a fare qualche prova.
Abbiamo deciso di installare SUSE Linux Enterprise 10 in una child partition di Hyper-V Beta1 (presente nella RC1 di Windows Server 2008) e quindi di provare i Linux Integration Components for Microsoft Windows Server 2008 Hyper-V (Beta1) - da ora IC
Per l'esperimeto abbiamo usato il piccolo server che Marco si è regalato per Natale e che pensa di usare a casa per fare esperimenti:
- Intel Xeon 2 Core
- 4GB RAM
- HD 1TB
- 2 schede di rete GB Ethernet
Ci è sembrato un ottimo collaudo installare Windows Server 2008 RC1 con Hyper-V e provare a farci girare qualche macchina virtuale .
Già che stavamo "lavorando" abbiamo deciso di provare la versione x64 di SUSE.
In Hyper-V manager abbiamo creato una macchina virtuale con 512 MB di RAM, 1 CPU e con le uniche accortezze di usare una scheda di rete di tipo emulato (Legacy Network Adapter) e di non assegnare controller SCSI.
Abbiamo assegnato l'ISO contente i bit di installazione di SUSE Linux Enterprise 10 SP1 al DVD virtuale e avviato la macchina virtuale.
L'installazione è filata liscia: il programma di installazione ha correttamente riconosciuto la scheda di rete emulata (DEC 21140), la scheda grafica emulata (S3 Trio 64) ed il resto dell'hardware. Abbiamo solo dovuto passare lo switch linux vga=0x314 per "auitare" il programma di installazione ad impostare la corretta modalità video (questa è la sapienza, preventiva, di Marco).
Al termine dell'installazione avevamo a disposizione un server SUSE perfettamente funzionante, in grado di accere alla rete e con anche la sua bella interfaccia grafica (per me... Marco preferisce la linea di comando): GNOME. Non brillantissimo come performance, ma accettabilissimo. E qui Marco ha mostrato i primi segni di soddisfazione.
A questo punto siamo passati ad installare gli IC (scaricabili da qui) in modo da avere una maggiore integrazione tra la macchina Linux e Hyper-V e per verificare il miglioramento delle performance.
Gli IC forniscono essenzialmente due cose:
- Supporto per i device sintetici ed in particolare per le schede di rete e i controller SCSI. E' possibile in questo modo sfruttare il vmbus per il dialogo con la parent partition e aumentare così le prestazioni
- Hypercall adapter. Si tratta di un sottile strato software che si posizione "sotto" il kernel modificato Xen e che traduce le chiamate alle funzioni di virtualizzazione di Xen in chiamate comprensibili ad Hyper-V (hypercall)
Avvertenza
Allo stato attuale le versioni di Linux supportate dai Linux Integration Components for Microsoft Windows Server 2008 Hyper-V sono solamente le seguenti:
- SUSE Linux Enterprise Server 10 SP1 (x86)
- SUSE Linux Enterprise Server 10 SP1 (x64)
Il supporto viene fornito unicamente attraverso questo newsgroup:
microsoft.bet.windowsserver.hyper-v.linux
Prima di installare gli IC per Linux abbiamo esportato (apposita voce di menù in Hyper-V Manager) la VM in modo da averne una "copia di salvataggio" nel caso qualcosa andasse storto e anche per avere due macchine virtuali che differissero "solo" per la presenza o meno degli IC.
Menù Export in Hyper-V Manager
Il primo passo dell'installazione degli IC consiste nel... leggere attentamente il documento allegato (Integration Components for Linux Read Me.docx) che contiene la descrizione di tutti i passi da fare.
Lo so, lo so... da buoni sistemisti preferite partire inserendo direttamente il CD - virtuale o meno - e vedere come si schianta tutto quanto, ma Marco è stato irremovibile: prima il read me. Vi assicuro che in questo caso una lettura preventiva del readme aiuta...
La scelta della versione x64 del sistema operativo si è subito dimostrata la più problematica: il kernel Xen incluso nella versione x64 di SUSE LE 10 SP1, infatti, non si avvia dopo aver installanto l'hypercall adapter x2v (il componente che traduce le chiamate a Xen in chiamate ad Hyper-V) .
E' quindi necessario eseguire il patching del kernel (e per fortuna che c'era Marco). Le apposite patch sono disponibili nell'ISO che contiene gli IC, ma andiamo per ordine.
Dicevamo del kernel Xen. Uno degli obbiettivi di Hyper-V è essere una piattoforma di virtualizzazione la più "aperta" possibile, in grado di eseguire al meglio diversi sistemi operativi.
E' possibile eseguire Linux su Hyper-V senza alcuna modifica (l'elenco delle versioni di Linux supportate da Microsoft in produzione sarà reso pubblico con la RTM di Hyper-V). In questo modo si usano però i device emulati (sostanzialmente gli stessi di Virtual Server 2005 R2) e le prestazioni non sono particolarmente brillanti.
Per migliorare le prestazioni delle macchine virtuali Linux eseguite in partizioni child di Hyper-V, Microsoft e XenSource (ora Citrix) stanno collaborando per sviluppare i device driver sintetici, il vmbus e un hypercall adapter da usare con kernel linux Xen-enabled (child). In particolare l'hypercall adapter è un sottile strato di software che si pone sotto il kernel Xen (child) e traduce le chiamate al sottosistema di virtualizzazione Xen in chiamate ad Hyper-V.
Architettura degli Integration Component per Linux con Hypercall Adapter
Vediamo sinteticamente qual'è stata la procedura che abbiamo seguito per installare gli IC in SUSE LE 10 SP1 x64 (vi rimando al documento citato sopra e allegato agli IC per la descrizione completa):
Copiare il contenuto del file ISO con gli IC in una directory sul filesyetm linux
usando Hyper-V Manager doovete assegnare il file ISO al DVD virtuale e quindi eseguire il mount del DVD virtuale in SUSE (es: mount /dev/cdrom /mnt/cdrom). Copiate a questo punto il contenuto del file ISO nelle directory /opt/linux_ic (che dovete creare) con
$ mkdir /opt/linux_ic $cp /mnt/cdrom/* /opt/linux_ic -RInstallare i tool di sviluppo e i sorgenti del kernel
in SUSE i pacchetti hanno il formato rpm e quindi potete installare tool di sviluppo e sorgenti del kernel usando il tool a linea di comando rpm o se preferite Yast2Installare il kernel Xen
Anche l'installazione del kernel Xen può essere fatta da linea di comando. Per la piattaforma x64 il comando da usare (supponendo di aver montato la ISO di SUSE in /mnt/cdrom) è:
$ rpm -ivh /mnt/cdrom/suse/x86_64/kernel-xen-2.6.16.46-0.12.x86_64.rpmApplicare le patch al kernel Xen
Le patch per il kernel Xen x64 sono presenti nel file ISO degli IC e a questo punto le avevamo già copiate nel file system di SUSE.
$ cd /usr/src/linux-2.6.16.46-0.12
$ cp /opt/linux_ic/patch/x2v-x64-sles.patch .
$ patch -l -p1 < x2v-x64-sles.patchRicompilare il kernel Xen e "installarlo" sul kernel Xen esistente
$ cp /boot/config-2.6.16.46-0.12-xen ./.config
$ make oldconfig
$ make vmlinuzInstallare l'hypercall adapter
A questo punto è possibile installare l'hypercall adapter con i seguenti comandi
$ cd /opt/linux_ic
$ perl setup.pl x2v /boot/grub/menu.lst
è necessario a questo punto riavviare la macchina virtuale SUSE e caricare il kernel modificato XenInstallare i device driver sintetici (VSC) e il vmbus
L'ultima operazione è l'installazione dei device driver sintetici (VSC):Durante l'installazione dei VSC abbiamo ricevuto tre warning e due errori nello script di avvio di vmbus ( /etc/init.d/vmbus). Potete tranquillamente ignorare sia gli warning che gli errori di avvio di vmbus che sono "problemi di gioventù" degli script (è pur sempre una Beta1), ma non compromettono in alcun modo la riuscita dell'installazione. Un ultimo riavvio della VM termina la fase di installazione degli IC.
Secondo il mio amico Marco i messaggi di errore all'avvio di vmbus sono legati al fatto che lo script di avvio è scritto per RedHat e non per SUSE.
Infatti nello script è presente la riga . /etc/init.d/functions che in SUSE dovrebbe essere . /etc/rc.status. Allo stesso modo al posto di chiamare success, com'è corretto in RedHat, dovrebbe essere chiamato, in SUSE, rc_status -v.
Se qualcuno vuole provare ad apportare queste modifiche allo script prima di eseguirlo e riportare in un commento a questo post i risultati, ve ne sarei grato (anche Marco).Riconfigurazione del sottosistema grafico
L'installazione degli IC determina la perdita di configurazione di X Server che può essere ripristinata eseguendo SaX2.
A questo punto abbiamo spento la macchina virtuale SUSE, quindi, in Hyper-V Manager:
- abbiamo tolto dalla configurazione hardware della VM la scheda di rete emulata (Legacy Network Adapter)
- abbiamo aggiunto una scheda di rete di tipo sintetico (Network Adapter)
- abbiamo aggiunto un controller SCSI e collegato a questo un hard disk virtuale
Riavviando la macchina virtuale con SUSE abbiamo trovato il nuovo hardware (basato sui device sintetici) perfettamente funzionante.
Output di ifconfig: la scheda seth0 è la scheda basata su device sintetici
Device SCSI sintetico: da notare il vendor MSFT
La configurazione degli Integration Component per Linux è "tutta qui", e tenete conto che siamo solo alla Beta 1.
Per quanto riguarda il miglioramento delle prestazioni, non abbiamo fatto ancora alcun test, ma la "sensazione" è che ci sia un notevole miglioramento, almeno per quel che riguarda la rete, e su questo concorda anche Marco, che è ora decisamente meno scettico...
Approfondimenti
https://www.microsoft.com/virtualization
https://blogs.technet.com/virtualization/https://blogs.technet.com/pgmalusardi/archive/2007/08/28/windows-server-virtualization-architettura-parte-5.aspx
https://blogs.technet.com/pgmalusardi/archive/2007/06/25/windows-server-virtualization-architettura-parte-4.aspx
https://blogs.technet.com/pgmalusardi/archive/2007/05/21/windows-server-virtualization-architettura-parte-3.aspx
https://blogs.technet.com/pgmalusardi/archive/2007/05/08/windows-server-virtualization-architettura-parte-2.aspx
https://blogs.technet.com/pgmalusardi/archive/2007/05/02/windows-server-virtualization-architettura-parte-1.aspx
https://blogs.technet.com/pgmalusardi/archive/2007/11/22/installazione-di-hyper-v-il-video.aspx
https://blogs.technet.com/pgmalusardi/archive/2007/12/17/hyper-v-configurazione-di-rete-il-video.aspx
https://blogs.technet.com/pgmalusardi/archive/2007/12/19/hyper-v-creare-una-macchina-virtuale-il-video.aspx
Ciao a tutti
Giorgio e... Marco
Comments
Anonymous
January 01, 2003
Buongiorno a tutti. Sul mio blog, tempo fa, ho mostrato come installare SUSE Linux Enterprise ServerAnonymous
January 01, 2003
The comment has been removedAnonymous
January 01, 2003
Buongiorno a tutti. Sul mio blog , tempo fa, ho mostrato come installare SUSE Linux Enterprise ServerAnonymous
January 01, 2003
Buongiorno a tutti. Su questo blog vi ho mostrato come installare SUSE Linux Enterprise Server 10 inAnonymous
January 01, 2003
WOW!! Guardate questo link che mi hanno segnalato! Grazie Fujtsu-Siemens! Adesso guardate questo articoloAnonymous
January 01, 2003
Sono stati da poco rilasciti gli Integration Components per VM Linux eseguite su Hyper-V RC0 . Come comunicatoAnonymous
January 01, 2003
Qualche tempo fa avevo fatto un post su come installare gli Integration Component di Hyper-V Beta1 in