Virtualismi avanzati di ordine superiore

Dall’ultima volta che ho messo mani al Cray-1 un sacco di novità positive:

  • l’ultima LTS supporta ZFS nativamente
  • il boot della Workstation pseudo-virtuale spara direttamente sul monitor ergo è possibile guardare anche le fasi antecedenti all’avvio di sistema; un po’ arzigogolato ma funziona
  • la nuova versione di libvirt supporta molto bene il boot di OSX

Ci sono solo un paio di fastidi:

  • se il boot della Workstation non è completo con tanto di caricamento dei driver da parte del guest OS (Windows), la scheda grafica si inceppa in uno stato di limbo che previene l’avvio della macchina virtuale fino al riavvio completo dell’host
  • il bios della macchina virtuale (Seabios) non supporta l’emulazione PS/2 della tastiera USB. Se c’è bisogno di pigiare qualche tasto, ad esempio premere F8 prima dell’avvio di Windows, la tastiera collegata all’hub USB assegnato non funziona

Entrambi i problemi però sono risolvibili con un’unica operazione: sostituire il BIOS tradizionale della macchina virtuale, che parla alle schede grafiche secondo un protocollo inventato 30 anni fa, con uno basato su UEFI, praticamente il futuro.

Affinché le fasi di pre-boot siano visibili sul monitor con questa modalità, la scheda grafica necessita del supporto UEFI. Ho provato ad aggiornare il BIOS della mia vetusta Quadro 2000 con una versione che aggiunge tale supporto ma non sono stato in grado di osservare le fasi di pre-boot. Presumo che una scheda di nuova generazione come la K2200 faccia tutto ciò: me ne sono procurata una e presto sperimenterò direttamente questo tipo di configurazione.

Nel frattempo ho giochicchiato un po’ con il boot di OSX. Un po’ di cose sono cambiate con El Capitan a rendere il tutto non proprio liscio come l’olio. Ad esempio i nuovi driver USB di Apple si fidano ciecamente della configurazione del DSDT e se questo non è proprio allineato alla configurazione della macchina virtuale, l’USB passthrough non funziona. Per fortuna ci sono un paio di soluzioni per questo specifico problema e qualche ora fa ho digitato i primi tasti attraverso un adattatore PCI-express –> USB 3.0.

Adesso mi chiedo:

  • è possibile creare una macchina virtuale UEFI e fare il boot di Windows 7? Windows 7 supporta UEFI, ma bisogna magheggiare un po’
  • è possibile creare una tale macchina virtuale capace di fare il dual boot di Windows 7 e OSX?

Credo di sì. Roba da virtualismi avanzati di ordine superiore, per l’appunto.

-quack

P.S. l’interesse per OSX virtualizzato i.e. vacchintosh, ora che possiedo un MacBook, è puramente accademico.

Pubblicato sabato 3 dicembre 2016 alle 5:32 AM - 4 commenti so far
Archiviato in: Virtualizzazione

Feature Parity

Oggi, nella migrazione da XEN a KVM/VFIO, sono riuscito a raggiungere una milestone eccezionale: feature parity tra i due sistemi, ma con estrema – molto estrema – semplificazione di architettura. Ho dovuto fare una quantità di esperimenti interessanti, tempo che non considero perso in quanto per me altamente educativo.

Ad esempio all’inizio ero indeciso su quale distro scegliere tra le tre papabili:

  • arch-Linux, scartata immediatamente quando ho scoperto di cosa si tratta il repository AUR: roba distribuita in codice sorgente e mantenuta a tempo perso; anche Crashplan è distribuito purtroppo così e non mi fido di affidare l’applicazione per il backup a gente che dedica spiragli di tempo come me.
  • Fedora: VFIO è nato e sviluppato in Red-Hat. Però santa pazienza, su Fedora bisogna combattere coi draghi solo per installare un server XRDP. Non sto scherzando. La tentazione è stata grande perché le istruzioni più complete su VFIO sono scritte con Fedora in mente.
  • Ubuntu. Familiarità uber all. Ma anche qui il dilemma: LTS o no? Alla fine ho scelto LTS ferma a due anni fa ben conscio che alcune feature interessanti saranno disponibili nella nuova LTS in dirittura di arrivo per Aprile.

Il risultato interessante è che il servizio rippatutto, non senza dolori, adesso gira su una Micro-VM con XP. Avessi più tempo lo riscriverei in Java, ma le funzionalità Text To Speech su Linux sono alquanto primitive (le voci ricordano il SAM dei tempi andati su un C64). Il software di backup e il pool ZFS girano finalmente direttamente sull’host. Nel frattempo ho dovuto imparare come configurare AppArmor e una quantità non irrilevante di cosette, come ad esempio il fatto che il file da configurare per AppArmor è /etc/apparmor.d/abstractions/libvirt-qemu (aggiungere il file di script e sed alla lista).

Risultato finale: anche se parziale, sono soddisfatto.

-quack

P.S. ho comprato un case nuovo, vista l’abbondanza di spazio verticale nella nuova ubicazione. Ho intenzione di installare un adattatore 4x3 e rendere i dischi dati facilmente raggiungibili scopo creazione di un futuro server ridondante per la pace dei sensi.

Pubblicato martedì 16 febbraio 2016 alle 3:36 AM - 7 commenti so far
Archiviato in: Virtualizzazione

2016, fuga da

È arrivato il nuovo anno e approfittando delle vacanze natalizie ho messo a punto il mio piano di fuga. Della fuga da Windows ne ho già parlato, ma in questi giorni sto fuggendo da Solaris. Non è bello sapere di avere un sistema che gira su software in fin di vita. Il mio fedele Solaris para-virtualizzato, in esecuzione su XCP 1.5 BETA, non è più supportato nelle versioni successive. Ho guardato nel frattempo verso KVM che mi sembra molto più stabile con l'idea di avere un host che faccia anche da server SMB e risparmiare una macchina virtualizzata coi suoi costi. Armato di un nuovo HD di provenienza saldi da Black Friday ho fatto il backup del Pool. La mossa successiva è stata quella di installare il Pool su una VM Ubuntu con supporto ZFS ora che pare sia abbastanza stabile: ovviamente non tutto è filato liscio, la tabella delle partizioni di 3 HD su 4 era corrotta: strano che Solaris riuscisse a far partire il Pool in queste condizioni, ma armato di backup ho provato parted. Ho rifatto la tavola delle partizioni da zero e recuperato la partizione, un HD alla volta, e provato che i dati fossero ancora lì. Sistemato l'ultimo HD il Pool è stato importato con successo su Ubuntu. Purtroppo per chissà quale baco misterioso il Pool non è più importabile su Solaris, ma a questo punto poco importa.
Il passo successivo è stato quello di configurare SMB coi suoi permessi, piccoli grattacapi, ma dal punto di vista del Server Windows su cui gira CrashPlan tutto sembra uguale e la cosa è molto, estremamente incoraggiante (il backup di 1.8TB di dati spalmati su 125.701 file è appena completato con successo).
Prossimo passo è quello di spostare CrashPlan da Windows ad Ubuntu, ma sembrerebbe un gioco da ragazzi ampiamente documentato. Se tutto dovesse andare liscio il passaggio a KVM da Xen dovrebbe essere praticamente indolore. Reinstallerei la Workstation di Windows 7 da zero su KVM, visto che l'HD su cui gira al momento è quasi privo di spazio, ma terrò da parte i tre vecchi HD che non si sa mai.
Sorprese positive: SMB è stato più facile da configurare di Solaris una volta letta la paginetta di documentazione appropriata. E siccome Solaris usava CIFS la banda è pressoché raddoppiata: non che sia una cosa importantissima, ma come piccolo bonus extra non ci si può lamentare.
Il passo finale è quello di fare qualche test e decidere il sistema operativo host: sono indeciso tra Ubuntu per la velocità di messa in piedi e ArchLinux per il footprint incredibilmente limitato. Ma questa è una decisione che posso prendere con calma. L'importante è essere uscito da quel brutto vicolo cieco di un ammasso di sistemi arrivati a fine corsia (XCP, Windows Home Server, Solaris). Per i prossimi 4-5 anni dovrei essere a posto.

-quack

Pubblicato giovedì 7 gennaio 2016 alle 12:29 AM - 3 commenti so far
Archiviato in: Virtualizzazione

Upgrading Cray-1

È passato un bel po’ di tempo dal momento in cui “ho chiuso i giochi” su Cray-1. Credo ferventemente nella legge 0 dell’informatica per cui “se qualcosa funziona non si tocca”.

Ma se qualcosa comincia a non funzionare… Ad esempio la strategia di backup si basa su CrashPlan che gira su Windows Home Server. I file però risiedono su un pool RAID-Z gestito da una macchina OpenIndiana para-virtualizzata a cui WHS vi ci accede usando una modalità poco ortodossa. Un paio di volte è già capitato che il mount delle share non è partito in tempo causando un backup parziale. In poche parole ci sono troppi ingranaggi in moto anche se tendenzialmente “tutto funziona”.

Poi mi è capitato di leggere che KVM nel frattempo è migliorato parecchio e il VGA passthrough pare superiore anche a quello di XEN.

E poi ho provato ZFSONLINUX, migrando un pool da Nexenta 3.0 (stessa versione usata per creare il mio pool) a Ubuntu senza tanto dolore; scoprendo che è possibile usare un server SAMBA decente e anche le ACL Posix con ZFS con semplicemente:

# zfs set acltype=posixacl <dataset>

E allora fatti due conti… un nuovo setup basato su Ubuntu eliminerebbe la necessità di una VM per Solaris. Eliminerebbe la necessità di far girare CrashPlan su Windows Home Server, che eliminerei completamente affidandone i due ultimi compiti rimasti ad altri PC già esistenti. Risulterebbe in una virtualizzazione di Windows 7 migliore. E possibilmente in una virtualizzazione di OSX, magari in dual boot con Windows ora possibile visto che il BIOS viene sparato sull’uscita della VGA anziché in maniera cieca.

La tentazione è forte.

-quack

Pubblicato mercoledì 25 marzo 2015 alle 6:19 PM - 2 commenti so far
Archiviato in: Virtualizzazione

XenRecipes #5 - OpenIndiana PV su XCP 1.6

Sono riuscito finalmente a trovare una versione di pygrub/pvgrub che supporti il boot da ZFS. Ovviamente come spesso accade con progetti distribuiti solo come codice sorgente, ho dovuto smadonnare un bel po’ prima di ottenere dei binari funzionanti. Poi giacche’ c’ero, ci ho aggiunto un tocco personale rimuovendo un po’ di messaggi diagnostici sparati alla console.

PvGrub consente di risolvere il problema dell’uovo o della gallina dovuto al fatto che bisogna far partire un kernel da un file-system che solo il kernel può “interpretare”. PvGrub emula un mini-OS che fa il boot e lancia una versione di Grub in grado di interpretare i file-system tra i più disparati.

Ricetta:

  1. scaricare l’ISO di OpenIndiana in /var/opt/xen/iso (creare il folder se già non esiste).
    cd /var/opt/xen/iso && wget [openindiana.iso url]
  2. copiare alcuni il kernel ed il boot_archive in /guests (creare il folder in caso)
    mkdir /iso
    mount -o loop /var/opt/xen/iso/openindiana.iso /iso
    cp /iso/platform/i86xpv/kernel/amd64/unix /guests/unix
    cp /iso/platform/i86pc/amd64/boot_archive /guests/boot_archive
    umount /iso
  3. scaricare mini-os.quiet.gz in /guests
    cd /guests && wget [url pvgrub]
  4. creare la macchina virtuale via XenCenter e assegnare l’ISO ma non avviarla
  5. switchare la macchina virtuale in modalità PV con avvio da CD
    export UUID=[uuid della VM]
    xe vm-param-set uuid=$UUID PV-kernel=/guests/unix
    xe vm-param-set uuid=$UUID PV-ramdisk=/guests/boot_archive
    xe vm-param-set uuid=$UUID PV-args=
    '/platform/i86xpv/kernel/amd64/unix -B console=ttya'
    xe vm-param-set uuid=$UUID HVM-boot-policy=
    xe vm-param-set uuid=$UUID PV-bootloader=
  6. installare Solaris e fare shutdown
  7. switchare il loader a pv-grub
    xe vm-param-set uuid=$UUID PV-kernel=/guests/mini-os.gz
    xe vm-param-set uuid=$UUID PV-ramdisk=
    xe vm-param-set uuid=$UUID PV-args='(hd0,0,a)/boot/grub/menu.lst'
  8. riavviare Solaris, creare gli utenti, le share, ridurre il timeout in grub, ecc.

Questo tipo di setup non richiede ulteriore manutenzione, ovvero non bisogna copiare o forzare l’update del boot_archive o altro.

PV-grub e’ scaricabile qui oppure qui in versione “quiet”.

-quack

Pubblicato mercoledì 7 maggio 2014 alle 11:55 PM - 0 commenti so far
Archiviato in: Virtualizzazione