Anlan

Disorganizzata cronologia di esperienze IT (e non …)
Options:

Ho ricevuto molte richieste su come sia possibile avviare in automatico una macchina virtuale di VirtualPc all’avvio del computer host.
Va subito premesso che VirtualPc non può essere avviato come servizio di sistema e quindi non può eseguire la propria attività in background, in modo invisibile all’utente, come farebbe VMWare per intenderci.

Ciò nonostante VirtualPc dispone di un discreto set di switch da riga di comando che possono essere utili per il caso specifico. Per un dettaglio completo delle opzioni disponibili da riga di comando è disponibile l’aiuto in linea di Virtual Pc : Menu ? -> Guida in linea Virtual Pc  e quindi navigando al percorso Virtual Pc \ Concetti su Virtual Pc \ Amministrazione di Virtual Pc \ Gestione di Virtual Pc dalla riga di comando \ Informazioni di riferimento sull’utilità della riga di comando per Virtual PC.

Il giochino consiste nel creare un file batch che contenga le istruzioni per l’avvio della macchina virtuale e quindi di inserire questo file nella cartella “Esecuzione Automatica” di Vista in modo che, subito dopo aver effettuato la procedura di login, venga avviato il pc virtuale in automatico.

Nell’immagine qui sotto è rappresentata la tipica console di VirtualPc con alcune delle macchine virtuali cha abitualmente utilizzo.
vpcconsole


Volendo avviare automaticamente, per esempio, la prima macchina dell’elenco, che si chiama “Windows XP Pro” dovrò:

  1. Aprire notepad
  2. Inserire nella prima riga il seguente testo (tutto su una riga):
    "%ProgramFiles%\Microsoft Virtual Pc\Virtual Pc.Exe" -singlepc -quiet -pc "Windows XP Pro" -launch
  3. Salvare il file con nome “Lancia XP Pro.bat” (o altro nome che preferite basta che l’estensione sia .bat o .cmd)
  4. Spostare il file appena salvato nella cartella “Esecuzione Automatica” del menu di avvio

Con questo esempio, dopo il login, viene avviata la macchina “Windows XP Pro” senza che venga avviata la console di VirtualPc

Tra le salienti che potete utilizzare ve ne è una in particolare che è davvero utile in ambienti ad alto rischio (per esempio volete utilizzare il pc per testare l’antivirus su dei nuovi virus): l’opzione è -extnetworking e va inserita dopo il nome della macchina virtuale. Con questo switch attivo tutte le comunicazioni di rete della macchina virtuale avvengono solo con l’ambiente esterno al pc fisico impedendo qualsiasi contaminazione del sistema operativo host.

  • Commenti disabilitati su VirtualPc : avvio (quasi) automatico di una macchina virtuale
 


La deframmentazione dei dischi e i pc virtuali

Gli utilizzatori di VirtualPc o VirtualBox incontrano spesso degradi di perfomance notevoli nell’esecuzione delle loro macchine virtuali dopo un prolungato utilizzo.

La causa principale di questa situazione è da ricercarsi nel modo in cui vengono istanziati i dischi virtuali associati alle macchine virtuali. Per impostazione predefinita, con l’ovvia e giustificata logica di voler risparmiare il massimo dello spazio possibile, i dischi vengono creati in modo dinamico. Ciò significa che il virtualizzatore (VirtualBox o VirtualPc) fa vedere al pc virtuale (guest) uno spazio massimo disco pari alla capacità assegnata in sede di configurazione iniziale ma nella macchina ospitante (il pc vero chiamato host) viene generato un file di dimensioni iniziali minime. A mano a mano che il sistema guest scrive dati sul disco virtuale, il sistema host “ingrandisce” il file che contiene l’immagine del disco secondo necessità.

In definitiva il disco virtuale è per la macchina host nè più nè meno che un normale file di dati: più dati di ci sono … più il file si ingradisce. Questa tecnica dinamica si chiama thin-provisioning: l’host occuperà sul disco fisico solo lo spazio necessario a contenere tutti i dati veri del disco virtuale guest escluso lo spazio vuoto. Ovvero: se la macchina guest ha a disposizione un disco di 10Gb ma occupa spazio complessivo per soli 4Gb, il file/disco virtuale nella macchina host sarà solo di 4Gb.

I vantaggi di una tale impostazione sono facilmente intuibili: posso creare diverse macchine virtuali assegnando ad ognuna 10Gb di disco ma in realtà il vero spazio occupato sul mio disco fisico sarà molto minore. Inoltre, dovendo passare un disco virtuale, da un host ad un altro dovrò copiare molti meno dati. I vantaggi, tuttavia, si esauriscono qui.

Gli svantaggi, per contro, sono facilmente identificabili e gli utilizzatori esperti di sistemi di virtualizzazione desktop (per sistemi professionali tipo VMWare i discorsi cambiano) ben sanno quali pesanti effetti abbiano sulle performance dei pc guest.

  1. L’estensione richiede tempo: un pc virtualizzato (guest) ogni volta che scrive un dato nuovo sul suo disco, di fatto, richiede all’interprete hardware (virtualizzato anche quello) di scrivere una determinata informazione. L’interprete hardware è il virtualizzatore stesso che riceve la richiesta dal pc guest e la gira al file-system del sistema host (il pc vero) il quale la scriverà nel file che assolve alla funzione di disco virtuale. Trattandosi di un nuovo dato il file-system host dovrà estendere la dimensione del file per inserirci la nuova informazione. E qui si apre il problema: c’è spazio alla fine del file per estenderlo di un incremento ? Se la risposta è si siamo fortunati ed i nuovi dati verranno inseriti in settori contigui ai precedenti, se la risposta è no allora il sistema operativo host dovrà andare a cercare su disco una posizione che abbia uno spazio libero sufficiente ad accogliere un incremento del file e, subito dopo, andare ad aggiornare la MFT per indicare che il file/disco virtuale è composto da un nuovo pezzo (frammento) aggiuntivo che si trova alla posizione tal-dei-tali. Questa operazione comporta tempo e, se il file/disco virtuale si trova su un disco fisico molto frammentato, riduce pesantissimamente le prestazioni della macchina guest.
  2. Le frammentazioni si sommano. La macchina guest (il pc virtuale) si comporta come un normale pc, non sa’ di essere virtuale. Per questo quando opera le sue scelte sul come e soprattutto sul dove scrivere i suoi dati all’interno del disco, si comporta come se si trattasse di un normale disco fisico, e come tale è soggetto al normale difetto frammentazione. Ma non basta: a questo si deve aggiungere la frammentazione del “vero disco fisico”, quello del pc vero, che contiene il file che funge da disco virtuale. Anche quello viene frammentato secondo la necessità, non del guest, ma dell’host. Si arriva quindi a situazioni paradossali in cui, giusto per fare un esempio, il pc guest crede di recuperare un file in una catena di 5 frammenti, mentre il sistema host, per assolvere a quella richiesta, deve andare a leggere 15 o 20 o più frammenti del file/disco virtuale. A lungo andare questa situazione fa crollare le prestazioni guest. E non serve nemmeno far girare un deframmentatore sul pc guest perchè il pc virtuale non sa di quanti frammenti è composto il suo disco nel sistema host.

La best practice per gestire il disco (o i dischi) di un pc virtuale all’interno del proprio pc vero è la seguente:

  1. Pianificare la dimensione da assegnare alle unità disco per il pc virtuale: una corretta pianificazione dovrebbe prevedere, per ogni pc virtuale, almeno due unità disco corrispondenti ad altrettanti file sull’host. Il primo da creare come unità a dimensione fissa sul quale installare il sistema operativo, le eventuali partizioni swap (se si tratta di os Linux) ed i programmi che si intende installare. Il secondo, che potrà essere ad allocazione dinamica, che utilizzeremo per memorizzare i dati.
  2. Assicurarsi che sull’unità fisica su cui andranno creati i file/disco disponga di sufficiente spazio per contenere il disco a dimensione fissa ed almeno il 30% della dimensione dell’unità ad allocazione dinamica.
  3. Eseguire, sull’unità fisica, una deframmentazione completa (con compattazione dello spazio libero)
  4. Istanziare il disco a grandezza fissa: il file verrà generato immediatamente pari alla dimensione massima associata all’unità virtuale e riempito con zeri (thik-provisioning). In questo modo saremo sicuri che il file/disco una volta generato, sarà verosimilmente in un blocco unico e non verrà esteso automaticamente (aumentando il numero dei frammenti). Tutte le operazioni di lettura/scrittura che il sistema guest invocherà, verranno eseguite dal sistema host all’interno del file già istanziato
  5. Istanziare il disco a grandezza dinamica
  6. Avviare la macchina virtuale e procedere all’installazione del sistema operativo.

In questo modo apprezzerete che le performance del vostro pc virtualizzato (a meno che non carichiate di altre incombenze il pc host) non degraderanno più così drasticamente.

  • Commenti disabilitati su La deframmentazione dei dischi e i pc virtuali
 


In condizioni ideali le perfomance delle operazioni di lettura e scrittura su disco sono massime quando ogni file è contenuto in posizioni contigue o meglio quando tutti i dati del file sono collocati in cluster consecutivi (uno vicino all’altro) all’interno del volume. L’allocazione contigua dei dati migliora la velocità di lettura (soprattutto) e di scrittura perchè evita numerosi movimenti delle testine del disco alla ricerca di pezzi di file collocati in posizioni diverse. Per questo motivo si dice che quando i file sono spezzettati in tante parti sparse all’interno del volume questi sono frammentati.

Il problema della frammentazione è sempre stato critico per i file-system basati su FAT (File Allocation Table) ovvero il tipo di file-system predefinito dal DOS ai vecchi Windows 3.0, 3.1, 95, 98, ME e ancora largamente adottato per impostazione di base in moltissime installazioni di Windows XP. Questo sistema è molto poco intelligente e presta scarsissima attenzione agli effetti che un alto livello di frammentazione causa alle performance di lettura e scrittura su disco.

Con l’avvento di Windows NT e successivi, Microsoft ha adottato un nuovo sistema per la allocazione dei file su disco denominato NTFS: un sistema molto più sofisticato che prevede, ad esempio, spazi “extra” per l’allocazione di ogni file in modo che questi possano crescere in dimensioni – entro certi limiti – senza per forza andare ad occupare cluster in posizioni molto lontane le une dalle altre. Con questo sistema i problemi e gli effetti della frammentazione sono stati ridotti, certamente, tuttavia non eliminati. Sfortunatamente tutto ciò ha portato all’errato mito popolare secondo cui la frammentazione non è un problema dei sistemi NTFS e che pertanto la deframmentazione di dischi NTFS non è necessaria. A questo si aggiunga il fatto che Microsoft ha impropriamente alimentato questo mito non rendendo disponibile, nel vecchio Windows NT, un tool per la deframmentazione di dischi NTFS. Tuttavia la realtà è ben diversa e, come ben sanno numerosi utenti esperti, l’utilizzo prolungato di dischi NTFS senza un’adeguata pianificazione di deframmentazione porta, alla lunga, a evitabili perdite di performance.

La maggiore complessità di NTFS rispetto a FAT, se da un lato garantisce una maggiore flessibilità nell’allocazione dello spazio, dall’altro, dato l’aumentato numero di informazioni ed attributi di file riportati nella MFT, è soggetta a differenti tipi di frammentazione che portano inevitabilmente a “seminare” pezzi di file in giro per il disco specialmente nel caso di file inizialmente di piccole dimensioni che tendono a crescere. E, infine, anche NTFS scrive la parte fisica dei dati in cluster fisici del disco obbligando le testine a numerosi movimenti di ricerca. Tanto è vero che da Windows 2000 in avanti, incluso XP, Microsoft ha reinserito un tool di deframmentazione basato su tecnologia licenziata da Executive Software, produttrice del celeberrimo Diskeeper: ovviamente si tratta di un prodotto molto più limitato dell’omologo a pagamento, ma in buona sostanza, comunque decente.

Windows Vista, per impostazione predefinita, utilizza NTFS come file-system e, come sicuramente vi sarete accorti, il “caro vecchio” defrag (con tanto di mappa grafica che riporta in vari colori le aree frammentate, le aree libere ecc.) è sparito. Al suo posto un tool di deframmentazione schedulabile, senza indicazione di progresso e dalle capacità ancora molto limitate alcune delle quali addirittura richiamabili solo da riga di comando (per impostazione predefinitia infatti il nuovo defrag non deframmenta i file più grandi di 64MB a meno che non si utilizzi lo switch -w da riga di comando). Certo ci sono stati dei miglioramenti come per esempio la possibilità di interruzione dell’operazione di deframmentazione in qualsiasi momento senza dover attendere a lungo il completo spostamento di file di grandi dimensioni. Ciò nonostante le opzioni di deframmentazione sono molto limitate e, a mio avviso, ne manca una fondamentale: la deframmentazione anche dello spazio libero. Il tool di deframmentazione di Windows Vista, infatti, si limita a deframmentare i file ma non compatta lo spazio libero motivo per cui se dopo un’operazione di deframmentazione ci si trova a dover creare un file di grandi dimensioni (come ad esempio un disco virtuale per un VirtualPc o VirtualBox) questo sarà sicuramente frammentato perchè difficilmente sarà disponibile un singolo blocco contiguo di spazio libero sufficiente a contenere i diversi Gigabyte del disco. Un’altra considerazione importante da fare relativamente alla compattazione dello spazio libero riguarda la velocità di accesso ai file: spostare i file nei settori bassi del disco (all’inizio) aumenta notevolmente la velocità di accesso agli stessi file, mentre lo spazio libero lasciato nei settori alti non richiede accessi continui e quindi i movimenti delle testine sono più ridotti. Tutto questo aumenta considerevolmente anche la vita media del disco stesso.

Fortunatamente esistono diverse soluzioni che permettono di ovviare al problema della frammentazione dei dischi NTFS. Tra quelle a pagamento vale la pena di annoverare l’eccellente Diskeeper, appunto, che costituisce probabilmente il miglior prodotto in circolazione data anche la specializzazione per server o per workstation. Oppure PerfectDisk di Raxco o ancora O&O Defrag di O&O Software.

Ma vi sono anche ottimi prodotti gratuiti che possono aiutarvi a tenere in ordine il vostro hard-disk ed a mantenere il più elevate possibile le performance del vostro Windows Vista. Ne ho testati diversi e vi propongo la mia personalissima classifica dei migliori senza per questo escludere che ce ne possano essere anche altri che mi sono sfuggiti.

MyDefrag (4.x) aka JKDefrag

JKDefrag è la prima utilità di deframmentazione per Windows completamente OpenSource e gratuita. L’accoppiata open e free oltre alle ottime caratteristiche gli fa guadagnare il primo posto nella mia classifica. Il nome è dovuto al suo sviluppatore Jeroen Kessels (JK) il quale utilizzando le API messe a disposizione dalla libreria di deframmentazione standard di Windows 2000, 2003, XP e Vista, ha creato un tool molto sofisticato ed allo stesso tempo facile da utilizzare. La versione 3.x che portava il suo nome è stata ora rimpiazzata dalla versione 4.x che l’autore ha ribattezzato MyDefrag data l’amplissima possibilità di configurazione e di scripting messa a disposizione che rende il software estremamente configurabile nelle opzioni e nel funzionamento: come l’autore stesso ci tiene a sottolineare JKDefrag è diventato il TuoDefrag.

Dispone di diverse strategie di deframmentazione e di ottimizzazione ed opera su qualsiasi unità che Windows veda come unità disco (hd, floppy, dischi USB, memory-stick ecc.). Gli algoritmi utilizzati dallo sviluppatore “ragionano” sulla migliore disposizione dei file all’interno del disco e le chiamate API alla libreria di sistema di Windows comandano lo “spostamento del file da qui a qui” in modo che sia il sistema operativo a spostare i file e non l’applicazione stessa. Eccellente poi la similitudine utilizzata dall’autore per rendere chiaro il concetto di deframmentazione ed ottimizzazione.

Il download di MyDefrag pesa solo 1.6 MB (alla versione attuale 4.1.2) ed è disponibile in lingua italiana (anche se non completamente e perfettamente tradotta). La procedura di installazione è molto “basica” e non confonde l’utente con mille opzioni. Durante l’installazione è possibile selezionare l’attivazione dello screen-saver (che farà partire la deframmentazione appunto quando generalmente parte lo screen-saver ovvero dopo un certo tempo di inattività del computer) oltre a pianificare il lancio schedulato di una ottimizzazione rapida alle 5 del mattino. Nella stragrande maggioranza dei casi il vostro computer non sarà acceso alle cinque del mattino motivo per cui potrete facilmente modificare l’orario di avvio dell’ottimizzazione lavorando con lo strumento Utilità di Pianificazione (Windows Vista) o Lavori Schedulati (Windows XP).

L’esecuzione dei lavori di deframmentazione ed ottimizzazione è basata su un linguaggio di scripting discretamente documentato nel sito. Questa caratteristica tuttavia lo rende poco intuitivo per un’utenza poco esperta che, del resto, non avrà nemmeno bisogno di moltissime e sofisticate opzioni.

Unica nota “strana”. La stragrande maggioranza della applicazioni di deframmentazione rappresentano una mappa grafica del disco con i settori iniziali in alto mentre per mydefrag i settori iniziali sono in basso. Questo potrebbe indurre a pensare che l’applicazione abbia portato all’inizio del disco lo spazio libero … tranquilli … non è così.

defrag-mydefrag

Piriform Defraggler

Dallo stesso sviluppatore del ben più noto CCleaner, ecco un defragger minimalista ma non ridotto, molto ben fatto che mi ha davvero impressionato. Completamente gratuito. Il download di Defraggler pesa solamente 866 Kb e dopo un rapidissimo setup nel quale vi viene chiesto poco più della directory di installazione, potrete avviare l’applicazione ottimamente (anche se non completamente) tradotta in italiano.

I poco esperti apprezzeranno subito il look-and-feel di questo efficace deframmentatore che è stato mantenuto il più vicino possibile al “vecchio” defrag di Windows XP che tanti conoscono. Immediati e subito riconoscibili i comandi per l’analisi dello stato di frammentazione del disco. Tra le caratteristiche salienti la possibilità di effettuare la sola deframmentazione dei file frammentati (tutti o solo quelli selezionati) oppure di procedere con la deframmentazione dell’intera unità disco. In questo secondo caso il programma lavorerà ottimamente spostando tutti i file nei settori iniziali del disco e, di conseguenza, compattando lo spazio libero.

Avrei molto apprezzato fosse disponibile una caratteristica che minimizzasse la finestra di lavoro direttamente nella tray-bar di Windows, cosa particolarmente utile durante l’esecuzione della deframmentazione del disco, giusto per non avere l’ennesimo bottone/applicazione installato nella taskbar. Comunque non è una grossa mancanza.

Per il 95% dei casi il programma funziona al meglio con le impostazioni di base ma per chi volesse cimentarsi con il menu Impostazioni troverà numerosi switch per ottimizzarne le funzionalità. Comodissima la funzionalità di verifica disco (chkdisk) integrata.

In conclusione un prodotto ottimo ed efficace che considero la migliore scelta per un utenza non specializzata.

defrag-piriform

IOBit SmartDefrag

Al terzo posto un’altro freeware. A differenza del precedente questo deframmentatore ha pretese un po’ più professionali (mi si passi la frase) e per questo motivo le dimensioni del download di Smartdefrag sono un po’ più corpose (2.9 MB). L’interfaccia, caratterizzata da un feeling di minor cura ed attenzione ai dettagli – penalizzata oltretutto da una pessima traduzione in italiano -, viene controbilanciata da maggiori funzionalità. Sono disponibili tre strategie di deframmentazione: solo deframmentazione, deframmentazione ed ottimizzazione, Deep Optimize (che tradurrei con Massima Ottimizzazione). La mappa grafica del disco è decisamente familiare ed è facilmente pianificabile l’attività di deframmentazione ad un orario specificato.

Caratteristica saliente di questo prodotto è la funzionalità “Auto Defrag” che possiamo assimilare al downgrade di una deframmentazione permanente offerta da prodotti di ben più alto lignaggio (vedi Diskeeper). Con Auto Defrag attivo il processo di deframmentazione parte automaticamente ogni volta che il computer risulta “idle” (inattivo) per un certo periodo di tempo facilmente configurabile tramite cursori a scorrimento. A differenza dei deframmentatori che si attivano con lo screen-saver (per esempio MyDefrag) SmartDefrag inizia a lavorare in background anche se state lavorando al computer (magari su un documento di testo) senza impegnare le risorse del disco. Chiudendo l’applicazione questa viene ridotta ad icona nella traybar di windows e potrete vedere quando lavora tramite un’animazione della stessa. Se l’icona è fissa invece l’applicazione è inattiva. In funzione di questa caratteristica è consigliabile attivare l’opzione di avvio automatico di SmartDefrag all’avvio di Windows.

Molto apprezzato il checkbox che, se attivato, spegne il computer al termine della deframmentazione: potrete lanciare la deframmentazione prima di andarvene a casa e lasciare che Smartdefrag lavori e spenga il pc per voi.

In conclusione un altro ottimo prodotto. Si classifica solo al terzo posto perchè nei test da me effettuati ha avuto qualche difficoltà nel deframmentare file di grandissime dimensioni (oltre 4Gb) su dischi dove non era disponibile uno spazio libero equivalente e contiguo. Inoltre, seppure apprezzabile, non consiglio l’attivazione della funzionalità di Auto Defrag in quanto, specialmente sulle macchine su cui è presente una protezione antivirus di tipo permanente, può essere causa di rallentamenti inattesi.

defrag-smartdefrag

Menziono anche un’altro prodotto di cui ho trovato molti riferimenti sul web: Auslogics DiskDefrag. Dal test che ho effettuato ha evidenziato ottime caratteristiche di velocità anche se si limita solo alla deframmentazione dei file (non esegue ottimizzazione e compattazione dello spazio libero). Inoltre, la pur ottima interfaccia, è costellata di link “capziosi” che invitano all’acquisto di una applicazione a pagamento (BoostSpeed) che dovrebbe velocizzare in generale il computer. Dal momento che non l’ho provata e generalmente sono piuttosto scettico di fronte a questi tipi di applicazione, non ritengo di dare ulteriori indicazioni.

Nota molto importante !!! Tutte queste applicazioni, durante la loro esecuzione, hanno un notevole impatto sulle prestazioni del computer. Bisogna aspettarsi un miglioramento delle prestazioni del pc dopo che è stato completato il ciclo di deframmentazione, non durante. Sarebbe bene quindi pianificare le attività di deframmentazione in periodi di inattività del computer come la pausa pranzo. Inoltre, se possibile, sarebbe bene, durante la deframmentazione, sospendere la protezione residente dell’antivirus: ogni file letto o sposato (ed il deframmentatore li legge praticamente tutti) verrebbe sottoposto a scansione antivirus allungando notevolmente i tempi di esecuzione. Ovviamente, al termine, ricordatevi di riattivare l’antivirus.

 



 
Loading


Categorie