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! ;-)

@:\>

7 commenti:

  1. Talora ho avuto l'impressione, peraltro non confermata, che SVS possa in qualche modo corrompere il sistema.
    Infatti ho avuto dei problemi provando ad installare un programma in un layer, e successivamente (par altri motivi) facendo un "Ripristino configurazione di sistema" (funzionalità nativa di Windows) ad un punto precedente all'uso di SVS.
    Mi è successo 2 volte. Potrebbe essere solo una combinazione, non c'entrare nulla con SVS e dipendere da mille altri motivi, ma mi è venuto il dubbio.
    Al momento ho disinstallato SVS...
    A te risultano malfunzionamenti analoghi?

    RispondiElimina
  2. Ciao Michele.

    Gran bella domanda... con una risposta che è: SI! e NO!

    SI, usando SVS si può andare incontro a problemi inaspettati.
    NO, perché quasi sempre non è SVS in se a causare problemi, ma l'uso disinvolto che l'utente ne fa.

    Il problema è: cosa si virtualizza e come.

    Non si può virtualizzare tutto.
    In generale tutti i software che hanno bisogno di interagire a basso livello con il sistema operativo, o addirittura direttamente con l'hardware, è meglio installarli direttamente in Windows. Esempi: antivirus, firewall, programmi di deframmentazione, di partizionamento, di controllo dell'hardware del PC, gli aggiornamenti di Windows, solo per dirne qualcuno.

    Nessun problema invece per la nostra suite di produttività personale (un OpenOffice.org per esempio), il programma di grafica, il browser, il nostro programma preferito di masterizzazione; personalmente ho virtualizzato anche il runtime di Java, vari codec e player video-audio senza alcun problema.

    E smanettando con le opzioni più avanzate di SVS (di cui questi post sono la premessa per capire cosa si va a fare), in realtà ho virtualizzato con successo anche programmi di deframmentazione! ;-)

    Ora, non so nello specifico quali programmi hai virtualizzato e cosa sia accaduto di preciso, ma, no, non ho avuto malfunzionamenti simili, forse perché seguo gli accorgimenti che dicevo (quasi sempre), forse perché, una delle cose che ho eliminato da quando uso SVS, è proprio il "Ripristino configurazione di sistema". ;-)
    O magari entrambi.

    Il dubbio che mi viene è che SVS e "Ripristino configurazione di sistema" interagiscano molto male tra loro.

    Ma qui mi fermo, il vero esperto è Riva11... :-D

    Riva11, se ci sei, batti un colpo!
    Come stanno le cose? Esperienze in merito? Ti va di condividerle?

    Ok Michele, alla prossima allora; ciao ciao! :)

    @:\>

    RispondiElimina
  3. Per quanto posso aggiungere in merito, concordo pienamente con la spiegazione (e l'ottima documentazione pubblicata dall'amico Giornale di sistema) e per esperienza posso dire che la maggior parte delle applicazioni posso essere virualizzate tramite Altiris SVS senza nessun problema.
    Le uniche eccezioni riguardano prodotti quali Antivirus, firewall e altri programmi che interagiscono con il sistema operativo utilizzando dei driver di sistema.
    In questo caso , vistà la non compatibilità con l'applicativo SVS potrebbero verificarsi delle anomalie.
    Per quanto riguarda il problema causato con il ripristino di sistema , a dire il vero non posso darti molti chiarimenti in quanto come già fatto da Giornale di sistema, ho rimosso da tempo questa configurazione del SO.

    Un cordiale saluto,
    Riva11

    RispondiElimina
  4. Come ulteriore commento, vi sono anche alcuni (pochi) programmi che hanno un pessimo comportamento con la virtualizzazione di SVS, ad es. Adobe Acrobat putropo ha la pessima abitudine di "rompere" il layer e intereferire nel sistema operativo, con le ovvie conseguenza del caso. E' cmq possibile con alcuni trucchi virtualizzare in maniera sicura questo programma.

    RispondiElimina
  5. Ahimé, confermo!
    2 settimane fa la sua cartella è misteriosamente scomparsa... mi sono detto: beh, è l'occasione per virtualizzarlo. Ho fatto vari tentativi senza che uno di questi andasse a buon fine.
    Beh, ho risolto virtualizzando Foxit Reader: funziona benissimo e fa le stesse cose di Acrobat in 3 megabyte invece che una ventina! ;-)

    RispondiElimina
  6. A proposito della disattivazione di "Ripristino configurazione di sistema", qualcuno in Juice ha già scritto qualche riflessione a riguardo (in inglese, spero ve la caviate meglio di me): http://juice.altiris.com/tech-tip/1319/the-benefits-of-disabling-system-restore

    In realtà può sempre capitare qualcosa che ci costringa a tornare indietro nella configurazione del sistema. Con l'utiliy di sistema di Windows ho avuto qualche problema in passato, non mi fido più, semplicemente.
    Meglio è affidarsi ad un software di "disk imaging", ossia quei programmi che fanno un'istantanea di tutto la partizione dove è installato Windows e la salvano da qualche parte. Giusto qualche nome: Acronis True Image, Norton Ghost.

    Non volete pagare nulla? Allora altre 2 soluzione:

    -sul numero di agosto di una rivista in edicola, nel DVD vi trovate in regalo l'ultima versione di Paragon Drive Backup 8.5;

    - DriveImage XML (http://www.runtime.org/dixml.htm) alternativa completamente free ma efficacissima. E' stato il mio primo programma del genere e funziona benissimo. Ha un solo limite: se abbiamo salvato un Windows contenuto in una partizione da 100 GB, al successivo ripristino dopo un crash, la partizione su cui andiamo a ripristinare Windows non può essere più piccolo di 100 GB.

    @:\>

    RispondiElimina
  7. Salve a tutti e complimenti per l'ottimo articolo su SVS.Ho intenzione di virtualizzare Adobe Acrobat 9,ma ho letto nel post di riva11 che questo programma può rompere il layer e interferire nel sistema operativo.Poteri sapere quali sono i trucchi di cui parla riva11 per virtualizzare il programma in maniera sicura?

    RispondiElimina

L'autore del commento si assume la totale responsabilità del suo contenuto. Commenti ritenuti offensivi o non attinenti potranno essere cancellati.