[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]
Le partizioni che contengono già un file system, possono essere rimaneggiate attraverso l'uso di strumenti specializzati per la loro copia, per lo spostamento e per il ridimensionamento. Tali strumenti sono utili quando sono in grado di tenere conto del tipo di file system e di fare tutti gli adattamenti necessari di conseguenza.
|
Tabella 163.1. Riepilogo dei programmi comuni per la gestione delle partizioni che ospitano già dei dati.
|
Il programma gpart (1) consente di scandire un disco o un file-immagine per ricostruire la sua suddivisione in partizioni:
gpart [opzioni] file_di_dispositivo |
gpart -C cilindri,testine,settori -g [altre_opzioni] file_immagine |
Per poter fornire informazioni corrette, il programma deve conoscere la geometria del disco da controllare, cosa che ottiene normalmente dal sistema operativo; tuttavia, quando il valore ottenuto automaticamente non è valido, oppure quando si tratta di un file-immagine, tale informazione deve essere fornita attraverso le opzioni della riga di comando, come si vede nel modello proposto a proposito della lettura di un file-immagine.
Si osservi che la ricerca eseguita da gpart è più semplice e più attendibile se la suddivisione in partizioni del disco da scandire non prevede la presenza di partizioni «logiche»; in pratica, va meglio se ci sono solo partizioni primarie, che si annotano nel primo settore di avvio.
Viene mostrato un solo esempio, molto semplice, di un disco che ha una tabella delle partizioni coerente con la suddivisione reale; per un approfondimento dell'uso del programma si può consultare la pagina di manuale gpart(8).
# gpart /dev/hdb[Invio]
Si richiede la scansione del secondo disco ATA; in questo caso si ottiene il risultato seguente:
Begin scan... Possible partition(Linux swap), size(8259mb), offset(0mb) Possible partition(Linux ext2), size(13350mb), offset(8259mb) Possible partition(Linux ext2), size(21603mb), offset(21610mb) Possible partition(Linux ext2), size(34944mb), offset(43213mb) End scan. Checking partitions... Partition(Linux swap or Solaris/x86): primary Partition(Linux ext2 filesystem): primary Partition(Linux ext2 filesystem): primary Partition(Linux ext2 filesystem): primary Ok. Guessed primary partition table: Primary partition(1) type: 130(0x82)(Linux swap or Solaris/x86) size: 8259mb #s(16916376) s(63-16916438) chs: (0/1/1)-(1023/15/63)d (0/1/1)-(16782/2/57)r Primary partition(2) type: 131(0x83)(Linux ext2 filesystem) size: 13350mb #s(27342624) s(16916445-44259068) chs: (1023/15/63)-(1023/15/63)d (16782/3/1)-(43907/12/57)r Primary partition(3) type: 131(0x83)(Linux ext2 filesystem) size: 21603mb #s(44243008) s(44259075-88502082) chs: (1023/15/63)-(1023/15/63)d (43907/13/1)-(87799/10/61)r Primary partition(4) type: 131(0x83)(Linux ext2 filesystem) size: 34944mb #s(71565312) s(88502085-160067396) chs: (1023/15/63)-(1023/15/63)d (87799/11/1)-(158797/0/21)r |
La gestione delle partizioni di un disco, in un sistema GNU/Linux, può essere fatta con Parted, (2) che consente anche il loro spostamento, il ridimensionamento e l'inizializzazione, con i file system comuni nei sistemi GNU/Linux. L'utilizzo di Parted richiede comunque una buona conoscenza del problema e di conseguenza conviene prima fare esperienza con gli strumenti tradizionali.
Per svolgere il suo compito, Parted richiede di specificare inizialmente il file di dispositivo corrispondente al disco nel quale vanno gestite le partizioni (può trattarsi anche di un file-immagine che rappresenta un disco suddiviso o da suddividere in partizioni); successivamente, attraverso dei comandi si fa riferimento alle partizioni indicando un numero, che rappresenta precisamente il numero secondario (minor number) del file di dispositivo corrispondente. Per esempio, volendo fare riferimento a una partizione, il cui file di dispositivo è normalmente /dev/hda2, con i comandi di Parted si deve specificare il numero 2, che corrisponde al numero secondario di tale file:
$ ls -l /dev/hda2[Invio]
brw-rw---- 1 root disk 3, 2 2005-01-01 13:15 /dev/hda2 |
Parted si avvia attraverso l'eseguibile parted, che ha due modalità di funzionamento: una interattiva e l'altra no.
parted [opzioni] [file_di_dispositivo] |
parted [opzioni] file_di_dispositivo comando_e_argomenti |
Nel primo modello sintattico si vede l'avvio di Parted per funzionare in modo interattivo; nel secondo, aggiungendo in coda il comando desiderato, il programma smette di funzionare al termine dell'esecuzione dello stesso.
È da osservare che il file di dispositivo, che appare formalmente come facoltativo nella riga di comando, serve a specificare su quale disco si intende lavorare; se non viene specificato all'avvio, occorre poi usare il comando select per indicarlo durante il funzionamento in modalità interattiva.
Le opzioni previste per l'avvio di Parted sono utili sono in poche occasioni; in particolare, merita di essere ricordata solo l'opzione -s, ovvero --script, con la quale si vuole precisare che il programma non deve tentare di interagire con l'utente (presumibilmente perché viene avviato all'interno di uno script.
Diversi comandi di Parted fanno riferimento a una porzione del disco, individuata come un punto iniziale e un punto finale. Per delimitare questi intervalli, si fa riferimento a dimensioni espresse in mebibyte (simbolo «Mibyte», ovvero multipli di 1 048 576 byte). Al contrario, con programmi tradizionali per la gestione delle partizioni, si deve fare riferimento ai cilindri, ma questo approccio è stato evitato volutamente nella realizzazione del programma.
|
Tabella 163.4. Alcuni comandi di Parted.
|
I comandi di Parted sono «semplici», ma richiedono la conoscenza di ciò che si sta facendo, soprattutto delle caratteristiche dello schema di partizionamento utilizzato. Tanto per fare un esempio, il comando mkpart richiede, eventualmente, l'indicazione di un tipo di file system, ma questa informazione serve in modo indiretto, per determinare il codice da attribuire al tipo di partizione. Per esempio, se con il comando mkpart si indicasse un file system di tipo ext3, si otterrebbe una partizione di tipo 8316, ovvero di tipo «Linux».
Vengono descritti alcuni esempi, che fanno parte di una sequenza coerente di operazioni, dove Parted viene usato in modo interattivo. Questi esempi non esauriscono le potenzialità di Parted; per maggiori dettagli e per conoscere lo stato dello sviluppo di questo programma, occorre fare riferimento alla documentazione originale.
# parted /dev/sda[Invio]
Si avvia il programma specificando di intervenire con i comandi nel disco corrispondente al file di dispositivo /dev/sda.
GNU Parted 1.6.11 with HFS shrink patch 12.5 Copyright (C) 1998 - 2004 Free Software Foundation, Inc. This program is free software, covered by the GNU General Public License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Using /dev/sda |
Inizia quindi il funzionamento interattivo di Parted, caratterizzato dall'invito seguente:
(parted)
(parted) mklabel msdos[Invio]
Crea uno schema di partizionamento conforme a quello usato dal sistema operativo Dos.
(parted) mkpartfs primary fat16 0 100[Invio]
Crea una partizione primaria con un file system di tipo Dos-FAT 16, dall'inizio (zero) fino ai primi 100 Mibyte circa. La partizione viene inizializzata.
(parted) print[Invio]
Mostra lo stato attuale delle partizioni:
Disk geometry for /dev/sda: 0.000-158.277 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.016 100.000 primary fat16 lba |
(parted) mkpartfs primary ext2 100 159[Invio]
Crea una partizione primaria di tipo Ext2, subito dopo i primi 100 Mibyte, fino a raggiungere la posizione di 159 Mibyte circa. Questo esempio è collegato a quelli precedenti, pertanto la seconda partizione occupa tutto lo spazio rimanente nel disco.
(parted) print[Invio]
Mostra lo stato attuale delle partizioni:
Disk geometry for /dev/sda: 0.000-158.277 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.016 100.000 primary fat16 lba 2 100.000 158.250 primary ext2 |
(parted) rm 1[Invio]
Cancella la prima partizione.
(parted) print[Invio]
Mostra lo stato attuale delle partizioni:
Disk geometry for /dev/sda: 0.000-158.277 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 2 100.000 158.250 primary ext2 |
(parted) move 2 0[Invio]
Sposta la seconda partizione, nella posizione iniziale del disco, lasciando intendere che la posizione finale sia quella necessaria a contenere la dimensione originale:
End? [58.2495]? [Invio]
raw block copying... |
(parted) print[Invio]
Mostra lo stato attuale delle partizioni:
Disk geometry for /dev/sda: 0.000-158.277 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 2 0.016 58.312 primary ext2 |
(parted) resize 0 70[Invio]
Ingrandisce la partizione, estendendola fino ai primi 70 Mibyte circa.
(parted) print[Invio]
Mostra lo stato attuale delle partizioni:
Disk geometry for /dev/sda: 0.000-158.277 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 2 0.016 70.000 primary ext2 |
(parted) mkpart primary 70 159[Invio]
Crea una partizione primaria, senza specificare il tipo di file system che si vuole usare al suo interno, nello spazio rimanente del disco.
(parted) print[Invio]
Mostra lo stato attuale delle partizioni:
Disk geometry for /dev/sda: 0.000-158.277 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 2 0.016 70.000 primary ext2 1 70.000 158.250 primary |
(parted) cp 2 1[Invio]
Copia la partizione 2 nella partizione 1, estendendo il file system nella destinazione.
raw block copying... growing file system... |
(parted) print[Invio]
Mostra lo stato attuale delle partizioni:
Disk geometry for /dev/sda: 0.000-158.277 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 2 0.016 70.000 primary ext2 1 70.000 158.250 primary ext2 |
(parted) quit[Invio]
Termina il funzionamento del programma.
Partimage(3) è un programma che può essere usato in modo interattivo o meno, per la copia e la riproduzione delle partizioni di un disco. In particolare, la copia di una partizione implica normalmente anche l'archiviazione del primo settore del disco (MBR).
partimage [opzioni_e_argomenti] |
L'eseguibile partimage va avviato con i privilegi necessari per accedere alle partizioni; in pratica, va usato in qualità di utente root. Se non si usano opzioni o argomenti di alcun tipo, si ottiene un funzionamento interattivo.
Nelle sezioni successive viene mostrato l'uso di Partimage in modo interattivo; per un uso diverso, conviene consultare la pagina di manuale partimage(1) ed eventualmente anche partimaged(8) per la gestione dell'archiviazione delle partizioni attraverso la rete.
Viene mostrato un esempio di archiviazione di una partizione in modo interattivo; per la precisione, si archivia la partizione /dev/sda1:
# partimage[Invio]
.---------------------| Partition Image 0.6.4 |---------------------. | * Partition to save/restore | | hdd7 ext3fs 15.38 GiB | | hdd8 ext3fs 24.03 GiB | | hdd9 ext3fs 39.41 GiB | | md0 ext3fs 14.42 GiB | | # sda1 ############################### ext3fs ##### 15.32 GiB ## | | sda2 ext3fs 53.62 GiB | | sda4 swap (v1) 7.38 GiB | | | | * Image file to create/use | | [/tmp/immagine_______________________________________________] | | | | Action to be done: <Next (F5)> | | (*) Save partition into a new image file | | ( ) Restore partition from an image file <About> | | ( ) Restore an MBR from the imagefile | | <Exit (F6)> | | [ ] Connect to server | | IP/name of the server: _________________________ Port: 4025__ | | [X] Encrypt data on the network with SSL | `-------------------------------------------------------------------' |
Attraverso una barra di scorrimento si seleziona sda1, come si vede nella schermata di esempio; inoltre, si specifica il nome del file in cui salvare l'immagine della partizione: in questo caso si tratta di /tmp/immagine, ma in realtà, il nome esatto contiene un'estensione numerica (.000).
Una volta compilata la maschera iniziale, come nell'esempio, si passa alla maschera successiva premendo il tasto [F5]:
.-----------------------| save partition to image file |-----------------------. | | | Compression level | | ( ) None (very fast + very big file) | | (*) Gzip (.gz: medium speed + small image file) | | ( ) Bzip2 (.bz2: very slow + very small image file) | | | | | | Options If finished successfully: | | [X] Check partition before saving (*) Wait | | [X] Enter description ( ) Halt | | [ ] Overwrite without prompt ( ) Reboot | | ( ) Quit | | Image split mode ( ) Last | | (*) Automatic split (when no space left) | | ( ) Into files whose size is:............ 2037____ MiB | | [ ] Wait after each volume change | | | | | | | | <Continue (F5)> <Exit (F6)> <Main window (F7)> | `------------------------------------------------------------------------------' |
In questa fase viene richiesto, in particolare, di specificare il metodo di compressione e se si vuole ottenere un file unico o una serie di file di dimensione stabilita. Anche qui, si prosegue con il tasto [F5]:
.--------------------| Partition description |--------------------. | | | You can enter a description of the saved partition: | | | | [Prima partizione del disco USB esterno ___________________] | | | | | | | | | | | | | | | | | | | | .----. | | | Ok | | | `----' | | | | | `-----------------------------------------------------------------' |
Conviene mettere una descrizione, per annotare di che cosa si tratta, come si vede nell'esempio. Si conferma l'inizio dell'archiviazione con il pulsante grafico <Ok>.
.---------.-----------------| Ext3fs informations |-----------------.----------. | Partitio| | | | Size of | Space usage:..................2 % | | | Image fi| Used space....................374.71 MiB | | | | Free space....................14.95 GiB | | | | Bitmap size...................1.92 MiB | | | Detected| Label......................... | | | Compress| Number of groups..............123 | | | | First block...................0 | | | | Ext3fs journalization.........yes | | | | Sparse super block............yes | | | | Large files support...........no | | | | File system revision..........1 | | | | | | | | .----. | | | | | Ok | | | | | `----' | | | | | | | | | | | `---------------------------------------------------------' | | | `------------------------------------------------------------------------------' |
Terminato il controllo della partizione, si conferma ancora con il pulsante grafico <Ok>:
.-----------------------| save partition to image file |-----------------------. | Partition to save:.........../dev/sda1 | | Size of the Partition:.......15.32 GiB = 16450527744 bytes | | Current image file:........../tmp/immagine.000 | | Image file size:.............56.00 KiB | | Available space for image:...17.51 GiB = 18796441600 bytes | | Detected file system:........ext3fs | | Compression level:...........gzip | | | | | | Time elapsed:................3sec | | Estimated time remaining:....21sec | | Speed:.......................930.00 MiB/minn | | Data copied:.................46.50 MiB / 374.71 MiBB | | | | | | | | | | | | #########_________________________12%_________________________________ 12 % | | | `------------------------------------------------------------------------------' |
Come si può vedere, la partizione viene archiviata nel file /tmp/immagine.000; se dovessero essere utilizzati più file, l'estensione progredirebbe: .001, .002,...
Al termine appare una schermata di conferma.
.------------| Success |-------------. | | | Operation successfully finished: | | | | Time elapsed:...27sec | | Speed:..........832.69 MiB/min | | Data copied:....374.71 MiB | | | | .----. | | | Ok | | | `----' | | | | | `------------------------------------' |
Viene mostrato un esempio di ripristino di una partizione in modo interattivo; per la precisione, si ripristina un file nella partizione /dev/sda2, che è più grande di quella originaria:
# partimage[Invio]
.---------------------| Partition Image 0.6.4 |---------------------. | * Partition to save/restore | | hdd7 ext3fs 15.38 GiB | | hdd8 ext3fs 24.03 GiB | | hdd9 ext3fs 39.41 GiB | | md0 ext3fs 14.42 GiB | | sda1 ext3fs 15.32 GiB | | # sda2 ############################### ext3fs ##### 53.62 GiB ## | | sda4 swap (v1) 7.38 GiB | | | | * Image file to create/use | | [/tmp/immagine.000___________________________________________] | | | | Action to be done: <Next (F5)> | | ( ) Save partition into a new image file | | (*) Restore partition from an image file <About> | | ( ) Restore an MBR from the imagefile | | <Exit (F6)> | | [ ] Connect to server | | IP/name of the server: _________________________ Port: 4025__ | | [X] Encrypt data on the network with SSL | `-------------------------------------------------------------------' |
Come si vede, si prende il primo e unico file ottenuto dall'archiviazione eseguita nella sezione precedente, per ripristinare i dati nella partizione /dev/sda2. Si prosegue premendo il tasto [F5]:
.--------------------| restore partition from image file |---------------------. | | | Options | | [ ] Simulation of the restoration (nothing is written) | | [ ] Erase free blocks with zero values | | | | If finished succ.--------| Partition description |---------. | | (*) Wait | | | | ( ) Halt | Prima partizione del disco USB esterno | | | ( ) Reboot | | | | ( ) Quit | .----. | | | | | Ok | | | | | `----' | | | | | | | | | | | `------------------------------------------' | | | | | | | | | | <Continue (F5)> <Exit (F6)> <Main window (F7)> | `------------------------------------------------------------------------------' |
Viene mostrata la descrizione del file, prima di procedere.
.--------------------| restore partition from image file |---------------------. | | | Options | | [ ] Simulation of the restoration (nothing is written) | | [ ] Erase free blocks with zero values | | | | If finished successfully: | | (*) Wait | | ( ) Halt | | ( ) Reboot | | ( ) Quit | | | | | | | | | | | | | | | | | | | | <Continue (F5)> <Exit (F6)> <Main window (F7)> | `------------------------------------------------------------------------------' |
Nella maschera finale si può ancora richiedere di simulare il recupero; in questo caso viene eseguito realmente. Si procede con il tasto [F5]:
.---------.-----------------| Ext3fs informations |-----------------.----------. | Partitio| | | | Size of | Space usage:..................2 % | | | Current | Used space....................374.71 MiB | | | File sys| Free space....................14.95 GiB | | | Compress| Bitmap size...................1.92 MiB | | | Partitio| Label......................... | | | Image cr| Number of groups..............123 | | | Size of | First block...................0 | | | | Ext3fs journalization.........yes | | | | Sparse super block............yes | | | | Large files support...........no | | | | File system revision..........1 | | | | | | | | .----. | | | | | Ok | | | | | `----' | | | | | | | | | | | `---------------------------------------------------------' | | | `------------------------------------------------------------------------------' |
.--------------------| restore partition from image file |---------------------. | Partition to restore:............./dev/sda2 | | Size of partition to restore:.....53.62 GiB = 57576960000 bytes | | Current image file:.............../tmp/immagine.000 | | File system:.........--------| Confirmation |---------. | | Compression level:..| | | | Partition was on dev| Do you really want to restore | | | Image created on:...| /dev/sda2 from the image file | 06 | | Size of the original| /tmp/immagine.000 ? | 4 bytes | | | | | | | .-----. .----. | | | | | Yes | | No | | | | | `-----' `----' | | | | | | | | | | | `---------------------------------' | | | | | | | | 0% | | | `------------------------------------------------------------------------------' |
.--------------------| restore partition from image file |---------------------. | Partition to restore:............./dev/sda2 | | Size of partition to restore:.....53.62 GiB = 57576960000 bytes | | Current image file:.............../tmp/immagine.000 | | File system:......................ext3fs | | Compression level:................gzip | | Partition was on device:........../dev/sda1 | | Image created on:.................Tue Apr 25 11:12:13 2006 | | Size of the original partition:...15.32 GiB = 16450527744 bytes | | | | Time elapsed:.....................10m:41sec | | Estimated time remaining:.........16m:35sec | | Speed:............................13.73 MiB/minn | | Data copied:......................146.73 MiB / 374.71 MiB | | | | | | | | | | | | ##############################____39%_________________________________ 39 % | | | `------------------------------------------------------------------------------' |
.--------------------| restore partition from image file |---------------------. | Partition to restore:............./dev/sda2 | | Size of partition to restore:.....53.62 GiB = 57576960000 bytes | | Current image file:.............../tmp/immagine.000 | | File system:........------------| Success |-------------. | | Compression level:.| | | | Partition was on de| Operation successfully finished: | | | Image created on:..| | | | Size of the origina| Time elapsed:...10m:52sec | bytes | | | Speed:..........34.48 MiB/min | | | Time elapsed:......| Data copied:....374.71 MiB | | | Estimated time rema| | | | Speed:.............| .----. | | | Data copied:.......| | Ok | | | | | `----' | | | | | | | | | | | `------------------------------------' | | | | 100% 100 % | | | `------------------------------------------------------------------------------' |
A questo punto, dal momento che i dati recuperati riproducono una partizione più piccola dello spazio effettivo, se si dispone degli strumenti appropriati, si può tentare di estenderne le dimensioni allo spazio disponibile:
# fsck.ext2 -f /dev/sda2[Invio]
e2fsck 1.39-WIP (31-Dec-2005) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/sda2: 12/2011296 files (0.0% non-contiguous), 95926/4016242 blocks |
# resize2fs /dev/sda2[Invio]
resize2fs 1.39-WIP (31-Dec-2005) Resizing the filesystem on /dev/sda2 to 14056875 (4k) blocks. The filesystem on /dev/sda2 is now 14056875 blocks long. |
Appunti di informatica libera 2009.11.27 anteprima --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com> <http://informaticalibera.net> Edizione di prova: si prega di segnalare i difetti.
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome memoria_di_massa_gestione_delle_partizioni.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]