Gestione delle immagini dei dischi

Partizioni primarie e secondarie

  • In genere i boot manager sono in grado di avviare qualunque partizione, ma non tutti i sistemi operativi sono in grado di partire da un'unità logica (ad esempio Windows 95 e Windows 98 non lo sono).
  • All'interno della partizione estesa possono essere create tante partizioni secondarie o unità logiche quante si vuole.
  • Come abbiamo visto nella precedente slide, in ogni disco possono esistere solo quattro partizioni primarie.
  • Né la partizione estesa né le unità logiche possono essere avviate dal sistema di avvio standard.

Partizioni primarie e secondarie

  • Di queste quattro partizioni, una può essere estesa
  • Utilizzando un menù di avvio (un boot manager) si può scegliere all'avvio interattivamente la partizione da far partire.

La rete come soluzione

  • Per prima cosa gli studenti salveranno i loro dati sull'unità di rete. Se dovranno cambiare stazione, basterà che si ricolleghino alla stessa unità di rete per ritrovare i loro dati.
  • A questo punto gli studenti non avranno mai il loro materiale sui dischi fissi delle macchine. Una riformattazione quindi non farà perdere alcunché.
  • Se le macchine sono collegate in rete e nella rete c'è un file server, questo è possibile.
  • Naturalmente, una riformattazione della macchina ed una reinstallazione completa del software sono operazioni parecchio lunghe.

Cosa c'è in una partizione

  • All'interno di ogni partizione (eccezion fatta per l'estesa, che contiene altre partizioni) viene sempre creato un file system
  • Un file system è una struttura di dati che consente di suddividere lo spazio di una partizione in pezzi (i file), assegnare a questi pezzi dei nomi, organizzare questi nomi, eventualmente in directory e tener conto di quanto spazio libero è presente sul disco e dove si trova.
  • Esistono vari tipi di file system, in genere usati da sistemi operativi diversi: FAT/FAT32 per Windows 95/98/ME, NTFS per Windows NT/2000/XP, Ext2/3 e swap per Linux.

Cosa c'è su un disco

  • Ogni partizione possiede un tipo, che indica come sono registrati i dati nella partizione.
  • Le partizioni primarie (tra cui ci può essere anche un'estesa) possono quindi essere al massimo quattro
  • Una delle quattro partizioni può essere indicata come attiva, nel qual caso, in mancanza di menù di avvio, il sistema operativo in quella partizione verrà avviato all'accensione della macchina.
  • Un disco fisso o unità fisica è sempre divisa in partizioni (le partizioni primarie). Tra queste una, detta partizione estesa, può essere a sua volta suddivisa in unità logiche o partizioni secondarie

Cosa c'è su un disco

  • All'inizio del disco (nel primo settore) troviamo una tabella delle partizioni di quattro righe, con la seguente forma:
    NTipoInizioFineTipoAttiva
    1-----
    2-----
    3-----
    4-----

Immagini remote

  • Oppure possimao usare il comando netcat (nc) per il trasferimento (controllare le opzioni con il comando man netcat), associato sempre ai comandi delle slide precedenti
  • Se vogliamo immagazzinare le immagini su di un server, dobbiamo trasmetterle tramite la rete. Ci sono almeno tre modi per farlo.

Immagini remote

  • Possiamo usare il comando ftp, trasferendo sul server non un file già esistente ma il risultato di un comando. ad esempio:
    # ftp server.miarete.it
    Connected to server.miarete.it.
    220 compaq.salvi.mn.it FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
    Name (127.0.0.1:salvi):
    nomeutente
    Password: <password non visualizzata>
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp>
    put |"tar --preserve --numeric-owner -cvzf - *" hda1.tgz

Immagini remote

  • Possiamo montare un disco di rete sulla nostra macchina e registrare l'immagine su tale disco di rete (per i particolari si vedrà in seguito)

Ripristino di un'immagine

  • Infine per ripristinare un'immagine compressa con bzip2 dovremo usare i comandi seguenti:
    mkdir /destinazione ; mount /dev/hda1 /destinazione; cd /destinazione; tar --preserve --numeric-owner -xvjf /root/hda1.ar.bz2
    bunzip2 /root/hda1.bzimg -c > /dev/hda1
  • Naturalmente, una volta create le immagini ci interessa anche riuscire a ripristinarle nella partizione originale.

Ripristino di un'immagine

  • Per le immagini non compressi i comandi sono rispettivamente:
    mkdir /destinazone ; mount /dev/hda1 /destinazione; cd /destinazione; tar --preserve --numeric-owner -xvf /root/hda1.tar
    dd of=/dev/hda1 if=/root/hda1.img bs=10240
  • Per ripristinare un'immagine compressa con gzip dovremo usare i comandi:
    mkdir /destinazione ; mount /dev/hda1 /destinazione; cd /destinazione; tar --preserve --numeric-owner -xvzf /root/hda1.tgz
    gunzip /root/hda1.zimg -c &gt: /dev/hda1

Immagini della partizione

  • Svantaggi:
  • L'immagine copia sia i dati, sia lo spazio libero. Lo spazio libero non è cancellato, quindi anche compresso occupa una discreta quantità di spazio.
  • Nell'immagine sono immagazzinati i dati con la loro struttura. Se nel disco di destinazione alcuni settori sono rovinati il ripristino non riesce ad aggirarli.
  • Non richiede che il programma di copiatura conosca perfettamente la struttura del file system da copiare

Immagini della partizione

  • Se la posizione in cui sono registrati alcuni file è importante (alcuni schemi di protezione lo richiedono), questo sistema li rispetta.
  • Vantaggi:
  • Se la partizione nella quale si ripristina l'immagine ha dimensioni diverse da quella originale, l'immagine non si adatta. Se è più grande si perde spazio, se è più piccola, sono guai.

Backup dei file

  • I file riscotruiti sono automaticamente deframmentati (dove ciò ha senso).
  • Può essere utilizzato solo su file system ben supportati dal sistema
  • Il file immagine risultante è sensibilmente più piccolo che per le immagini della parrtizione
  • Se occorre rispettare la disposizione dei dati (per sistemi di protezione o altro), questo sistema non va bene.
  • Vantaggi:

Backup dei file

  • I dati possono essere ripristinati anche su dischi di dimensioni diverse dall'originale (basta che ci stiano i dati)
  • Svantaggi:

Numeri di serie nelle immagini

  • Se registriamo le immagini su ogni macchina, queste informazioni saranno automaticamente salvate insieme con l'immagine, quindi non ce ne dovremo preoccupare.
  • Sui sistemi Windows 95/98/ME il numero di serie è immagazzinato nel registry. Cancellando dal registry (con regedit) la chiave Software->Microsoft->Windows->CurrentVersion->ProductId, al riavvio verrà di nuovo chiesto il numero di serie.

Numeri di serie nelle immagini

  • Per i sistemi Windows 2000/XP, nel disco di installazione si trova il file /support/tools/deploy.cab. Si deve scomapttare questo file clickandovi sopra. Si potrà ora invocare il programma sysprep che cancella dal sistema il numero di serie. Al prossimo riavvio questo verrà quindi richiesto e si rifarà la procedura di registrazione.
  • Una volta eliminato il vecchio numero di codice, si potrà reinserirlo normalmente.
  • Se invece le immagini sono centralizzate, dopo averle ripristinate dovremo personalizzarle con i relativi codici.

Numeri di serie nelle immagini

  • Alcuni sistemi operativi o programmi registrano nel file system informazioni sulla registrazione o sul codice seriale del prodotto.

Che cosa è un'immagine di disco

  • Un'immagine di una partizione può anche essere un archivio contenete i singoli file contenuti nella partizione, con la loro relativa organizzazione.
  • Raramente un'immagine coniene un intero disco, in quanto si preferisce comunque registrare separatamente ogni partizione
  • Naturalmente, di qualunque tipo sia l'immagine che vogliamo creare o ripristinare, la partizione su cui vogliamo operare non potrà essere quella di avvio.
  • Un'immagine di una partizione può essere l'intero contenuto della partizione stessa (aree di dati, aree di servizio e spazio libero) compressa.

Che cosa è un'immagine di disco

  • Un'immagine di disco è un archivio, in genere compresso, che contiene tutti i dati di un disco o di una partizione

Le immagini per evitare la riformattazione

  • Per evitare di reinstallare il software da capo, è possibile creare delle immagini dei dischi utilizzando vari tipi di software
  • In entrambi i casi, le immagini potranno venir ripristinate in un secondo tempo, per riportare la macchina esattamente nello stato in cui era quando si è registrata l'immagine.
  • Le immagini dei dischi possono essere immagazzinate sui dischi stessi
  • In alternativa le immagini possono essere immagazzinate su di un server di rete o su un disco fisso esterno

Dove immagazzinare le immagini

  • In questo caso avremo il vantaggio della massima velocità di trasferimento, inoltre anche se le macchine sono diverse, ognuna avrà la sua immagine personalizzata, contenete anche eventuali chiavi o registrazioni.
  • Se il disco fisso della macchina della quale si vuole fare l'immagine è sufficientemete capiente, le immagini possono essere immagazzinate in una partizione aggiuntiva, direttamente sulla singola macchina
  • Se usiamo il lettore CD/DVD per l'immagine l'immagine può essere registrata in un CD autoavviante con una copia di un Linux LIVE per il ripristino

Dove immagazzinare le immagini

  • In caso contrario occorre avere una partizione sul disco fisso con un sistema operativo minimo, per effettuare il ripristino o usare un CD Live con le opportune utility (naturalmente in questo caso non potremo ripristinare da CD o DVD perché il lettore è occupato).
  • In questo caso, se il laboratorio contiene più macchine identiche, potremo registrare sul server o sull'hard disk un'immagine sola per l'intero gruppo, risparmiando spazio.
  • Altrimenti si potranno salvare le immagini su di un server di rete o su di un disco fisso esterno

Dove immagazzinare le immagini

  • Volendo, le immagini possono poi essere registrate su di un CD o DVD.

Salvataggio e ripristino della tabella delle partizioni

  • Dato che le partizioni sono estremamente legate alla struttura fisica del disco, suggerisco comunque di prepararle prima di ripristinare le immagini, con fdisk
  • E naturalmente, per ripristinarle basta dare il comando:
    dd of=/dev/hda if=/root/partizioni.img bs=512 count=1
  • Salvare e ripristinare le partizioni secondarie, i cui dati sono registrati nella partizione estesa, non è facile (meglio rifarle da capo).
  • Le partizioni primarie (e la estesa) sono invece immagazzinate (nello schema standard) nel primo settore dell'hard disk.

Salvataggio e ripristino della tabella delle partizioni

  • Per salvarle basta dare il comando:
    dd if=/dev/hda of=/root/partizioni.img bs=512 count=1
  • Tutto il lavoro fatto finora, eccezion fatta per la copia fisica dell'intero disco, si svolge su partizioni già fatte

Creazione di un'immagine

  • Per comprimere il file risultante con bzip2 dovremo modificare i comandi come segue:
    mkdir /sorgente ; mount /dev/hda1 /sorgente; cd /sorgente; tar --preserve --numeric-owner -cvjf /root/hda1.ar.bz2 *
    bzip2 /dev/hda1 -c > /root/hda1.bzimg
  • I due precedenti comandi copiano i dati da un disco ad un altro. Se però vogliamo creare un'immagine, dovremo salvare il contenuto in un file, invece che su una partizione.

Creazione di un'immagine

  • Per comprimere il file risultante con gzip dovremo modificare i comandi come segue:
    mkdir /sorgente ; mount /dev/hda1 /sorgente; cd /sorgente; tar --preserve --numeric-owner -cvzf /root/hda1.tgz *
    gzip /dev/hda1 -c > /root/hda1.zimg
  • Naturalmente sarebbe interessante comprimere le immagini, per risparmiare spazio. In Linux esistono due compressori: gzip e bzip2. Il primo è più standard, il secondo più aggressivo.

Creazione di un'immagine

  • Entrambi i comandi possono produrre un file di uscita:
    mkdir /sorgente ; mount /dev/hda1 /sorgente; cd /sorgente; tar --preserve --numeric-owner -cvf /root/hda1.tar *
    dd if=/dev/hda1 of=/root/hda1.img bs=10240

Come copiare una partizione in un'altra

  • Il comando da dare sar&agrave:
    dd if=/dev/hda1 of=/dev/hdb1 bs=10240
  • if indica la partizione originale da copiare
  • bs indica la quantità di dati da copiare ogni volta. Se non la indichiamo o indichiamo un valore troppo piccolo, la sopia sarà lenta, perchè continueremo a passare da un disco all'altro. Se lo indichiamo troppo grande rischiamo che alla fine della copia, non trovando un blocco completo, l'ultimo pezzo non venga copiato.

Come copiare una partizione in un'altra

  • Questo metodo copia partizioni di qualunque tipo, purché abbiano esattamente la stessa dimensione. Dato che vengono anche copiati i dati per l'accesso al disco immagazzinati nel primo settore della partizione, anche i dischi dovranno avere la stessa geometria (almeno lo stesso numero di settori e facce).
  • Dobbiamo stare attenti che questo metodo copia una partizione su una esattamente uguale.
  • Se vogliamo fare una copia esatta di una partizione da un disco all'altro, potremo sfruttare i dispositivi di Linux.
  • of indica la partizione di destinazione

partimage

  • Un'alternativa è il programma partimage.
  • Per finire, è possibile utilizzare un server con il programma partimaged come server per immagazzinare le immagini, da recuperare poi sui client con partimage</b in versione interattiva o da riga di comando.
  • Questo programma può essere usato in maniera interattiva, tramite un'interfaccia a menù testuali.

partimage

  • è anche possibile utilizzarlo da riga di comando, senza bisogno dell'intervento dell'operatore. In questo caso potremo inserire una serie di comandi in un file (script), per eseguire in maniera automatizzata il salvataggio o il ripristino di tutte le immagini di un disco.

Come copiare una partizione in un'altra

  • 4) Effettuare la copia con il comando:
  • Ipotizziamo ora che il sistema che usiamo per la copia sia Linux, quindi:
  • 3) Montare la partizione di origine e quella di destinazione nelle directory create:
    mount /dev/hda1 /sorgente ; mount /dev/hdb1 /destinazione
  • (cd /sorgente; tar --preserve --numeric-owner -cf - *) | (cd /destinazione; tar --preserve --numeric-owner -xvf -)

Come copiare una partizione in un'altra

  • Questa procedura funziona con partizioni FAT, FAT32 (Windows 95/98/ME) o ext2, ext3 (Linux). Le partizioni di swap non vanno copiate perché non contengono dati utili. Basta riformattarle con mkswap /dev/hda2 (dove hda2 è la partizione da copiare).
  • Se abbiamo connesso alla nostra macchina sia il disco con la partizione originale sia quello nel quale fare la copia, potremo usare la seguente procedura:
  • 5) Smontare le due partizioni:
    umount /sorgente; umount /destinazione
  • 2) Creiamo due directory in / per le due partizioni:
    mkdir /sorgente ; mkdir /destinazione

Come copiare una partizione in un'altra

  • 1) Avviare la macchina da un sistema operativo diverso da quello da copiare, che contenga le utility necessarie (un floppy DOS, meglio un Linux su di un'altra partizione o da un CD).

Cosa può accadere

  • Succede spesso che alcune macchine del laboratorio si guastino si sconfigurino o si infettino
  • La seconda cosa che vorremmo è di poter ripristinare la macchina in pochi minuti, a condizione che non sia guasta ma solo sconfigurata/infettata
  • La prima cosa che ci farebbe comodo è che in questo caso lo studente che lavorava con quella macchina possa continuare a lavorare con un'altra
[any material that should appear in print but not on the slide]