mercoledì 8 agosto 2007

SVS: virtualizzazione, come funziona (1a parte)

Era da un po' che non mi occupavo di SVS.

Rinfreschiamoci allora rapidamente la memoria: a cosa serve SVS?
In poche parole, se programmi come VirtualBox vi permettono di virtualizzare un intero sistema operativo, SVS vi permette di virtualizzare “solo” le applicazioni installate sul sistema operativo (cioè Windows, per ora SVS esiste solo per questo sistema operativo).

Dell'utilità di virtualizzare un'applicazione e delle varie possibilità offerte da SVS vi avevo già parlato nel post “SVS: installare programmi per finta” e nei successivi. Vi consiglio di leggerne quanti più possibile prima di affrontare la lettura di questo post in quanto in qualche modo propedeutici alla sua comprensione.

Sarà infatti un post di approfondimento: scopriremo insieme come SVS gestisce la virtualizzazione di un'applicazione.

Questo mi permetterà sia di illustrarvi il dietro le quinte di una tecnologia così affascinante come quella della virtualizzazione, sia di illustrarvi, in futuri post, le funzionalità più avanzate di SVS. Questa volta non ci saranno molte immagini (per la verità, una sola), ma confido nella vostra pazienza e curiosità per approfondire un argomento non proprio semplicissimo. Cominciamo.

Il processo di virtualizzazione di un'applicazione inizia con la cattura della sua installazione all'interno di un Layer appositamente predisposto. In quel mentre, tutti i file del programma che verrebbero copiati sul disco rigido, e tutte le modifiche che verrebbero apportate al registro di Windows, vengono intercettati e dirottati verso il Layer.

Esistono perciò 2 meccanismi software che lavorano in concerto fra di loro nella virtualizzazione di un'applicazione (fig. 1):

- il Layer, che cattura tutto al suo interno;
- il meccanismo di re-direzione (detto SVS File System Filter Driver) che intercetta i file e le chiavi di registro dell'applicazione che stiamo virtualizzando deviando il tutto verso il layer.

Fig. 1 - schema redirezione input-output tramite SVS File System Filter Driver
Fig. 1

Vediamo come lavorano insieme questi 2 meccanismi.

Supponiamo abbiate virtualizzato Microsoft Office, oppure OpenOffice.org, o una qualunque altra applicazione che volete provare. Terminata la virtualizzazione, se date un'occhiata con l'Esplora Risorse nella cartella Programmi, vedrete la cartella del programma al suo posto. Provate anche a creare un documento con la vostra applicazione e salvatela nella cartella Documenti, poi visualizzatela nell'Esplora risorse: vedrete il file al suo posto.

Ora chiudete il programma virtualizzato e disattivatene il layer: vedrete in tempo reale, scomparire il file dalla cartella Documenti, scomparire l'intera cartella del programma dalla cartella Programmi di Windows, e addirittura, scomparirà anche la voce del programma dal menù Start di Windows.

Insomma, come se non fosse mai esistita, che è appunto quanto ci aspettavamo. Tutto infatti è rimasto nel layer che abbiamo disattivato, pertanto ora è invisibile all'intero sistema tutto ciò che questi contiene: il programma virtualizzato, i documenti prodotti dal programma, le impostazioni e le modifiche al registro di Windows sempre relative al programma.

Ma cosa succede esattamente dietro le quinte? Come viene gestita questa magia, queste “apparizioni/sparizioni” (era la frase di una gag di Ezio Greggio al Drive In di 20 anni fa, ricordate? :-D)?

Riattivate il layer e tenete d'occhio fig. 1 mentre vi spiego; nel frattempo tutta l'applicazione, i suoi documenti, i menù in Start, e anche i settaggi e le modifiche al registro di Windows, saranno già riapparsi al loro posto. Quello che ora state osservando nella finestra dell'Esplora Risorse è in realtà la visualizzazione congiunta di informazioni provenienti da 2 diverse fonti:

- i file reali contenuti nel vostro sistema grazie all'installazione tradizionale delle varie applicazione;
- i file contenuti nel layer dell'applicazione virtualizzata.

Quando il layer è attivo come in questo momento (guardate sempre fig. 1), l'SVS File System Filter Driver (d'ora in poi semplicemente Filter), intercetta tutte le chiamate al sistema operativo che riguardano in qualche modo l'applicazione virtualizzata, e risponde al suo posto. In questo modo, l'Esplora Risorse viene in un certo senso ingannato, perché non sa che sta visualizzando informazioni provenienti anche dal Filter invece che solo da Windows, a cui inizialmente aveva chiesto e con cui comunque crede ancora e solo di avere a che fare.

Il Filter quindi è il cuore di SVS: analizza tutte le richieste fatte al sistema operativo e controlla se ve ne sono per applicazioni presenti nei layer attivi. Se ne trova, intercetta al volo la richiesta e la dirotta verso il layer. Se non ve ne sono, o ve ne sono ma indirizzate a layer in quel momento disattivi, semplicemente le ignora.

Ecco allora spiegata la magica sparizione avvenuta alla disattivazione del layer: da quel momento in poi il Filter non intercettava più le chiamate a Windows relative all'applicazione virtualizzata; queste non venivano più reindirizzate correttamente verso il layer ove l'applicazione è stata catturata, pertanto risultava semplicemente invisibile a tutto il sistema.

Appena è stato riattivato il layer, il Filter ha ricominciato a fare il suo lavoro di intercettazione relativamente a questo layer, presentando ad ogni applicazione Windows (e non solo all'Esplora Risorse che ho usato come esempio), tutti i dati che riguardano l'applicazione virtualizzata.

Dato che ogni applicazione virtualizzata ha il suo layer, potete ben capire come sia facile attivare e disattivare specifiche applicazioni.

Il layer diventa come una navicella, una capsula (questo era anche il termine scelto nella prima traduzione in italiano di layer) che ingloba tutta l'applicazione ed i suoi documenti. A questo punto, potete immaginare gli immensi vantaggi che questo approccio può portare all'uso ed alla gestione di un programma.

Tanto per cominciare, non c'è più da spaventarsi di fronte all'installazione di un nuovo programma. Se il programma si dimostrasse incompatibile con la vostra macchina e le applicazioni già installate, oppure semplicemente non è quello che stavate cercando, o magari era una trial che nel frattempo è scaduta e non vi interessa acquistarla, basterà cancellare il layer e la macchina ritornerà pulita come prima dell'installazione.

Niente più file orfani in giro per il vostro hard disk, niente più chiavi di registro pendenti lasciate lì da una disinstallazione approssimativa; in realtà, non vi servirà più disinstallare: basterà cancellare il layer.

E che dire delle nuove frontiere della trasportabilità che potete raggiungere grazie ad SVS?
Immaginate di volervi portare dietro tutta l'installazione di OpenOffice.org, compresi i documenti su cui state lavorando. Niente di più semplice: basterà salvare il layer, ad esempio su una chiavetta USB, e sarete liberi di portarvi dietro ovunque vogliate, l'applicazione con tutto il vostro lavoro! :-D

Bene, per ora ci fermiamo qui, il post è davvero lunghissimo... ed è solo l'inizio!

Finora infatti, abbiamo sempre parlato genericamente di layer, e anche dopo questa serie di post di approfondimento, continueremo a farlo. Già dal prossimo post però, ci insinueremo ancora più in profondità nei meandri dell'architettura di SVS parlando di Virtual Software Package (VSP): scopriremo cos'è e cosa ha a che fare con i layer. Scopriremo anche dove vengono salvati i layer, e come vengano resi trasportabili grazie ai Virtual Software Archive (VSA), i file che vengono prodotti grazie alla funzione di esportazione dei layer.

Niente paura, sarà tutto semplice come al solito; vi aspetto! ;-)

@:\>