Linux Partition HOWTO

Anthony Lissot

   Diario delle Revisioni
   Revisione 3.5 26 Dicembre 2005
   Riorganizzato l'ordine delle pagine. Aggiunta pagina sulla
   configurazione dello spazio di swap. Aggiunta pagina sulle
   etichette delle partizioni. Aggiornati i valori per la
   dimensione massima di swap nella sezione 4. Aggiunte istruzioni
   sulla creazione di file system ext2/3. I collegamenti
   interrotti individuati da Richard Calmbach sono stati corretti.
   Creata una versione XML.
   Revisione 3.4.4 08 Marzo 2004
   Sincronizzata la versione SGML con la versione HTML. Aggiornata
   la trattazione della posizione di lilo e della dimensione di
   swap.
   Revisione 3.3 04 Aprile 2003
   Sincronizzate le versioni SGML e HTML.
   Revisione 3.3 10 Luglio 2001
   Corretta la sezione 6, calcolo del numero dei cilindri.
   Revisione 3.2 1 Settembre 2000
   Dan Scott ha fornito la conversione sgml, 2 Ott. 2000.
   Riscritta l'introduzione. Riscritta l'analisi dei nomi di
   device in device logici. Riorganizzata la sezione su i tipi di
   partizioni. Modificata la sezione sui requisiti delle
   partizioni. Aggiunta la sezione su come recuperare una tabella
   delle partizioni cancellata.
   Revisione 3.1 12 Giugno 2000
   Corretto il limite alla dimensione di swap nei requisiti delle
   partizioni, aggiornati vari collegamenti nell'introduzione,
   aggiunto un contributo con un esempio in come partizionare con
   fdisk, aggiunta un'analisi sul file system nei requisiti delle
   partizioni.
   Revisione 3.0 1 Maggio 2000
   Prima revisione a cura di Anthony Lissot basata su Linux
   Partition HOWTO di Kristian Koehntopp.
   Revisione 2.4 3 Novembre 1997
   Ultima revisione a cura di Kristian Koehntopp.

   Questo Mini-HOWTO Linux insegna come pianificare e creare
   partizioni su dischi fissi IDE e SCSI. Esamina la terminologia
   legata alle partizioni e prende in considerazione questioni
   legate a dimensioni e posizionamento. Viene trattato l'uso di
   fdisk come utilità di partizionamento per creare e recuperare
   tabelle delle partizioni. La versione più recente di questo
   documento è qui. La traduzione in turco è qui.

   Traduzione in italiano di Beatrice Torracca, beatricet (at)
   libero.it. Revisione a cura di Elisa Chiorrini, elisa.chiorrini
   (at) gmail.com
     __________________________________________________________

   Sommario
   1. Introduzione

        1.1. Che cosa è una partizione?
        1.2. Altro software per il partizionamento
        1.3. HOWTO correlati
        1.4. Informazioni aggiuntive sul proprio sistema

   2. Device

        2.1. Nomi di device

              2.1.1. Convenzioni per i nomi
              2.1.2. Assegnazione dei nomi
              2.1.3. Partizioni logiche

        2.2. Numeri di device

   3. Tipi di partizioni

        3.1. Tipi di partizioni
        3.2. Tipi di partizione estranei
        3.3. Partizioni primarie
        3.4. Partizioni logiche
        3.5. Partizioni di swap

   4. Requisiti per il partizionamento

        4.1. Quali partizioni sono necessarie?
        4.2. Analisi
        4.3. File system

              4.3.1. Quali file system hanno bisogno di una loro
                      propria partizione?

              4.3.2. Tempo di vita dei file e cicli di backup come
                      criteri per il partizionamento

        4.4. Partizioni di swap

              4.4.1. Quanto grande deve essere lo spazio di swap?
              4.4.2. Quanto grande può essere lo spazio di swap?
              4.4.3. Dove dovrebbe essere posto lo spazio di swap?

   5. Partizionare con fdisk

        5.1. Uso di fdisk
        5.2. Quattro partizioni primarie
        5.3. Partizioni primarie e logiche coesistenti
        5.4. Esempi presentati

   6. Etichette

        6.1. Etichette di volume

              6.1.1. Esecuzione semplice
              6.1.2. Istruzioni per l'uso

        6.2. Etichette di device

   7. Formattare una partizione ext2/3

        7.1. Semplice esecuzione
        7.2. Blocchi riservati

   8. Ripristinare una tabella delle partizioni cancellata
   9. Configurare lo spazio di swap

        9.1. File di swap
        9.2. File di swap
        9.3. Aree di swap multiple

   10. Appendice

        10.1. Formattare le partizioni
        10.2. Attivare lo spazio di swap
        10.3. Montare le partizioni
        10.4. Alcuni dati sui file system e la frammentazione

1. Introduzione

1.1. Che cosa è una partizione?

   Partizionare significa dividere un singolo disco fisso in
   diversi dispositivi logici. Una partizione è un insieme
   contiguo di blocchi su un dispositivo che vengono trattati come
   un disco indipendente. Una tabella delle partizioni (la cui
   creazione è l'argomento di questo HOWTO) è un indice che mette
   in correlazione le sezioni del disco fisso con le partizioni.

   Perché avere partizioni multiple?

     * Per incapsulare i propri dati. Dato che la corruzione di un
       file system è limitata ad una partizione, se accade un
       imprevisto si corre il rischio di perdere solo parte dei
       propri dati.
     * Per aumentare l'efficienza dello spazio su disco. Si
       possono formattare partizioni con dimensioni dei blocchi
       diverse, a seconda dell'uso. Se i propri dati sono in forma
       di un grande numero di piccoli file (meno di 1k) e la
       propria partizione usa blocchi di 4k, si stanno sprecando
       3k per ogni file. In generale, si spreca in media la metà
       di un blocco per ogni file, perciò, se si hanno molti file,
       far corrispondere la dimensione dei propri blocchi alla
       dimensione media dei propri file è importante.
     * Per limitare la crescita dei dati. Processi alla deriva o
       utenti irragionevoli possono consumare così tanto spazio su
       disco da non lasciare più al sistema operativo abbastanza
       spazio sul disco fisso per le sue operazioni di gestione
       del sistema. Ciò porta a disastri. Segregando gli spazi, ci
       si assicura che cose diverse dal sistema operativo muoiano
       quando lo spazio allocato su disco è esaurito.
     __________________________________________________________

1.2. Altro software per il partizionamento

     * sfdisk: una versione a riga di comando di fdisk.
     * cfdisk: una versione basata su curses di fdisk.
     * parted: editor di partizioni Gnu.
     * Partition Magic: un'utilità commerciale per creare,
       ridimensionare, fondere e convertire partizioni, senza
       perdere dati.
     * Disk Drake: un programma Perl/Gtk per creare,
       ridimensionare ed eliminare partizioni.
     __________________________________________________________

1.3. HOWTO correlati

   Tabella 1. HOWTO correlati
   Titolo Autore Descrizione
   Dual boot install strategies Gjoen Stein Come stimare i vari
   requisiti di spazio e velocità per parti differenti del file
   system.
   Linux Multiple Disk System Tuning Gjoen Stein Come stimare i
   vari requisiti di spazio e velocità per parti differenti del
   file system.
   Linux Large Disk Andries Brouwer Istruzioni e considerazioni
   riguardanti dischi con più di 1024 cilindri.
   Linux Quota Ralf van Dooren Istruzioni su come limitare l'uso
   dello spazio su disco per ciascun utente (le quote).
   Partition-Rescue mini-HOWTO Jean-Daniel Dodin Come ripristinare
   partizioni Linux dopo che siano state cancellate da una
   installazione di Windows. Non sembra preservare i dati.
   Linux ADSM Backup Thomas Koenig Istruzioni sull'integrazione di
   Linux in un sistema di backup IBM ADSM.
   Linux Backup with MSDOS Christopher Neufeld Informazioni su
   backup di Linux basati su MS-DOS.
   Linux HOWTO Index Tim Bynum Istruzioni su come scrivere e
   sottoporre un documento HOWTO.
     __________________________________________________________

1.4. Informazioni aggiuntive sul proprio sistema

     * /usr/src/linux/Documentation
          + ide.txt: informazioni sui propri driver IDE.
          + scsi.txt: informazioni sui propri driver SCSI.
     __________________________________________________________

2. Device

   C'è una speciale nomenclatura che Linux usa per fare
   riferimento alle partizioni sui dischi fissi e che deve essere
   capita per potere seguire gli argomenti trattati nelle pagine
   seguenti.

   In Linux, le partizioni sono rappresentate da file di device.
   Questi sono file fittizi posizionati in /dev. Ecco alcune voci:
brw-rw----    1 root     disk       3,   0 May  5  1998 hda
brw-rw----    1 root     disk       8,   0 May  5  1998 sda
crw-------    1 root     tty        4,  64 May  5  1998 ttyS0

   Un file di device è un file di tipo c (sta per device a
   "caratteri", device che non usano la buffer cache) o b (sta per
   device a "blocchi", che passano attraverso la buffer cache). In
   Linux, tutti i dischi sono rappresentati esclusivamente come
   device a blocchi.
     __________________________________________________________

2.1. Nomi di device

2.1.1. Convenzioni per i nomi

   Per convenzione, alle unità IDE vengono assegnati i nomi di
   device da /dev/hda a /dev/hdd. Hard Drive A (/dev/hda) è la
   prima unità e Hard Drive C (/dev/hdc) è la terza.

   Tabella 2. Convenzioni per i nomi dei controller IDE
   nome dell'unità controller dell'unità numero dell'unità
   /dev/hda        1                     1
   /dev/hdb        1                     2
   /dev/hdc        2                     1
   /dev/hdd        2                     2

   Un PC tipico ha due controller IDE, ognuno dei quali può avere
   connesse due unità. Per esempio, /dev/hda è la prima unità
   (master) sul primo controller IDE e /dev/hdd è la seconda unità
   (slave) sul secondo controller (la quartà unità IDE nel
   computer).

   Si può scrivere su questi device in modo diretto (usando cat o
   dd). Tuttavia, dato che questi device rappresentano l'intero
   disco, partendo dal primo blocco, si può per errore
   sovrascrivere il master boot record e la tabella delle
   partizioni, il che renderebbe l'unità inutilizzabile.

   Tabella 3. Nomi delle partizioni
   nome dell'unità controller dell'unità numero dell'unità tipo di
   partizione numero di partizione
   /dev/hda1 1 1 primaria 1
   /dev/hda2 1 1 primaria 2
   /dev/hda3 1 1 primaria 3
   /dev/hda4 1 1 swap ND
   /dev/hdb1 1 2 primaria 1
   /dev/hdb2 1 2 primaria 2
   /dev/hdb3 1 2 primaria 3
   /dev/hdb4 1 2 primaria 4

   Una volta che un'unità è stata partizionata, le partizioni
   saranno rappresentate da numeri alla fine dei nomi. Per
   esempio, la seconda partizione sulla seconda unità sarà
   /dev/hdb2. Il tipo di partizione (primaria) è per chiarezza
   elencato nella tabella soprastante, anche se il concetto non
   verrà spiegato prima de la Sezione 3.3.

   Tabella 4. Unità SCSI
   nome dell'unità controller dell'unità numero dell'unità tipo di
   partizione numero di partizione
   /dev/sda1 1 6 primaria 1
   /dev/sda2 1 6 primaria 2
   /dev/sda3 1 6 primaria 3

   Le unità SCSI seguono uno schema simile; sono rappresentate da
   "sd" invece di "hd". La prima partizione della seconda unità
   SCSI sarà pertanto /dev/sdb1. Nella tabella soprastante, il
   numero dell'unità, cioè 6, è scelto arbitriamente per
   introdurre il concetto che i numeri identificativi SCSI non
   hanno corrispondenza nei nomi di device in Linux.
     __________________________________________________________

2.1.2. Assegnazione dei nomi

   In (Sun) Solaris e (SGI) IRIX, il nome di device assegnato ad
   un'unità SCSI ha una relazione con il punto in cui essa è
   connessa. In Linux, c'è solo pianto e stridore di denti.

   Prima
SCSI ID #2        SCSI ID #5       SCSI ID #7        SCSI ID #8
 /dev/sda          /dev/sdb         /dev/sdc          /dev/sdd

   Dopo
SCSI ID #2                         SCSI ID #7        SCSI ID #8
 /dev/sda                           /dev/sdb          /dev/sdc

   Le unità SCSI hanno numeri identificativi, ID, che vanno da 1 a
   15. A numeri identificativi SCSI più bassi sono assegnate
   lettere di ordine inferiore. Per esempio, se si hanno due unità
   con numeri 2 e 5, allora la numero 2 è /dev/sda e la 5 è
   /dev/sdb. Se si rimuove una qualunque di esse, tutte le unità
   con numero più alto avranno al successivo avvio un nuovo nome.

   Se si hanno due controller SCSI nella propria macchina Linux, è
   necessario esaminare l'output di /bin/dmesg al fine di vedere
   quale nome è stato assegnato a ciascuna unità. Se si rimuove
   uno dei due controller, tutte le unità del controller rimanente
   potrebbero essere rinominate. Grrr...

   Ci sono due modi di aggirare l'ostacolo; entrambi comportano
   l'uso di un programma per assegnare un'etichetta a ciascuna
   partizione (vedere la la Sezione 6). L'etichetta persiste anche
   quando l'unità viene spostata fisicamente. Ci si riferisce in
   seguito alla partizione direttamente o indirettamente tramite
   la sua etichetta.
     __________________________________________________________

2.1.3. Partizioni logiche

   Tabella 5. Partizioni logiche
   nome dell'unità controller dell'unità numero dell'unità tipo di
   partizione numero di partizione
   /dev/hdb1 1 2 primaria 1
   /dev/hdb2 1 2 estesa ND
   /dev/hda5 1 2 logica 2
   /dev/hdb6 1 2 logica 3

   La tabella soprastante illustra un misterioso salto
   nell'assegnazione dei nomi. Ciò è dovuto all'uso di partizioni
   logiche (vedere la la Sezione 3.4), che partono sempre dal
   numero 5, per ragioni spiegate più avanti.

   Questo è tutto ciò che si deve sapere per avere a che fare con
   unità a disco in Linux. Per amor di completezza, si veda la
   spiegazione di Kristian sui numeri di device qui sotto.
     __________________________________________________________

2.2. Numeri di device

   Le uniche cose importanti di un file di device sono i suoi
   numeri di device primario e secondario, che vengono mostrati al
   posto della dimensione del file:
$ ls -l /dev/hda

   Tabella 6. Attributi dei file di device
   brw-rw---- 1 root disk 3, 0 Jul 18 1994 /dev/hda
   permessi   proprietario gruppo numero primario del device
   numero secondario del device data nome del device

   Quando si accede ad un file di device, il numero primario
   seleziona quale driver di device viene chiamato per effettuare
   l'operazione di input/output. Questa chiamata viene fatta con
   il numero secondario come parametro e l'interpretazione del
   numero secondario è totalmente a carico del driver. La
   documentazione del driver normalmente descrive come il driver
   usa i numeri secondari. Per i dischi IDE, questa documentazione
   si trova in /usr/src/linux/Documentation/ide.txt. Per i dischi
   SCSI, ci si aspetterebbe tale documentazione in
   /usr/src/linux/Documentation/scsi.txt, ma lì non c'è. Si deve
   guardare il sorgente dei driver per essere sicuri (
   /usr/src/linux/driver/scsi/sd.c:184-196). Per fortuna c'è
   l'elenco dei numeri e nomi di device di Peter Anvin in
   /usr/src/linux/Documentation/devices.txt; vedere le voci per i
   device a blocchi, numero primario 3, 22, 33, 34 per i dischi
   IDE e numero primario 8 per i dischi SCSI. I numeri primario e
   secondario sono rappresentati da un byte ciascuno ed è per
   questo che il numero di partizioni per ciascun disco è
   limitato.
     __________________________________________________________

3. Tipi di partizioni

3.1. Tipi di partizioni

   Una partizione è etichettata per ospitare un certo tipo di file
   system (da non confondersi con l'etichetta di volume; vedere la
   la Sezione 6). Tale file system potrebbe essere un file system
   Linux standard ext2 o spazio di swap Linux o anche file system
   estranei come (Microsoft) NTFS o (Sun) UFS. C'è un codice
   numerico associato ad ogni tipo di partizione. Per esempio, il
   codice per ext2 è 0x83 e per lo swap Linux è 0x82. Per vedere
   un elenco dei tipi di partizione e dei loro codici, eseguire
   /sbin/sfdisk -T.
     __________________________________________________________

3.2. Tipi di partizione estranei

   I codici dei tipi di partizione sono stati scelti
   arbitrariamente (non si può calcolare quale deve essere il loro
   valore) e sono specifici di un dato sistema operativo. Perciò è
   in teoria possibile che se si usano due sistemi operativi con
   lo stesso disco fisso, lo stesso codice sia usato per indicare
   due diversi tipi di partizione.

   OS/2 segna le sue partizioni con tipo 0x07 e così fa l'NTFS di
   Windows NT. MS-DOS assegna diversi codici di tipo per le
   diverse versioni dei file system FAT: si conoscono 0x01, 0x04 e
   0x06. DR-DOS usava 0x81 per indicare partizioni FAT protette,
   creando, a quel tempo, un conflitto di tipo con Linux/Minix, ma
   sia Linux/Minix sia DR-DOS non sono più molto usati.
     __________________________________________________________

3.3. Partizioni primarie

   Il numero delle partizioni in un sistema Intel è stato limitato
   sin dagli esordi: la tabella originale delle partizioni è stata
   installata come parte del settore di avvio e conteneva lo
   spazio per solo quattro voci di partizione. Queste partizioni
   vengono ora chiamate partizioni primarie.
     __________________________________________________________

3.4. Partizioni logiche

   Una partizione primaria di un disco fisso può essere
   ulteriormente partizionata. Quelle che si ottengono sono
   partizioni logiche. Questo permette di fatto di aggirare la
   limitazione storica a quattro partizioni.

   La partizione primaria usata per contenere le partizioni
   logiche è chiamata partizione estesa ed ha il suo tipo di file
   system (0x05). A differenza delle partizioni primarie, le
   partizioni logiche devono essere contigue. Ogni partizione
   logica contiene un puntatore alla seguente partizione logica,
   il che implica che il numero delle partizioni logiche è
   illimitato. In ogni caso Linux impone dei limiti sul numero
   totale di ciascun tipo di partizione su un'unità, perciò in
   effetti pone un limite al numero delle partizioni logiche.
   Questo è 15 partizioni totali al massimo su un disco SCSI e 63
   totali su un disco IDE.
     __________________________________________________________

3.5. Partizioni di swap

   Ad ogni processo in esecuzione sul computer è assegnato un
   numero di blocchi di RAM. Questi blocchi sono chiamati pagine.
   L'insieme delle pagine nella memoria a cui farà riferimento il
   processore nell'immediato futuro è chiamato "insieme di
   lavoro". Linux cerca di prevedere questi accessi alla memoria
   (ipotizzando che le pagine usate di recente lo saranno ancora
   nell'immediato futuro) e, se possibile, mantiene queste pagine
   nella RAM.

   Se ci sono troppi processi in esecuzione su una macchina, il
   kernel cerca di liberare della RAM scrivendo parte delle pagine
   su disco. Questo è lo scopo per cui esiste lo spazio di swap.
   Aumenta di fatto la quantità di memoria a disposizione. L'I/O
   su disco è tuttavia circa cento volte più lento della lettura e
   scrittura dalla RAM. Considerare questa come memoria di
   emergenza, non come memoria aggiuntiva.

   Se la memoria diventa così poca che il kernel toglie pagine
   dall'insieme di lavoro di un processo al fine di dare pagine ad
   un altro, si usa dire cha la macchina è in trashing. Alcuni dei
   lettori potranno averlo sperimentato inavvertitamente: il disco
   fisso macina da pazzi, ma il computer è lento a tal punto da
   essere inutilizzabile. Lo spazio di swap è qualcosa che si deve
   avere, ma non è un sostituto per una RAM insufficiente. Vedere
   la trattazione nella la Sezione 4.4 per suggerimenti su come
   determinare la dimensione dello spazio di swap di cui si ha
   bisogno.
     __________________________________________________________

4. Requisiti per il partizionamento

4.1. Quali partizioni sono necessarie?

   a) Per l'unità di avvio. Se si vuole avviare il sistema
   operativo dall'unità che ci si accinge a partizionare, sono
   necessarie:

     * una partizione primaria;
     * una o più partizioni di swap;
     * zero o più partizioni primarie o logiche.

   b) Per ogni altra unità:

     * una o più partizioni primarie o logiche;
     * zero o più partizioni di swap.
     __________________________________________________________

4.2. Analisi

   Partizione di avvio
          La partizione di avvio dovrebbe essere una partizione
          primaria, non una partizione logica. Questo facilita il
          ripristino in caso di disastri, ma non è tecnicamente
          necessario. Deve essere di tipo 0x83 "nativa Linux". Se
          si usa una versione di lilo antecedente la 21-3 (cioè,
          degli anni '90), la propria partizione di avvio deve
          essere contenuta all'interno dei primi 1024 cilindri
          dell'unità. Tipicamente è necessario solamente che la
          partizione di avvio contenga l'immagine del kernel.

          Se si ha più di una partizione di avvio (da altri SO,
          per esempio) le si mantenga tutte nei primi 1024
          cilindri (tutte le partizioni DOS devono essere
          all'interno dei primi 1024). Se si sta usando una
          versione moderna di lilo, o un meccanismo diverso da
          lilo per caricare il proprio kernel (un disco di avvio,
          per esempio, o il caricatore di Linux basato su MS-DOS
          LOADLIN.EXE), la partizione può essere ovunque. Per
          dettagli, vedere il Large-disk HOWTO.

   Partizione di swap
          A meno che non si faccia lo swap verso file (vedere la
          la Sezione 9.2) è necessaria una partizione swap
          dedicata. Deve essere di tipo 0x82 "swap Linux". Può
          essere posizionata ovunque sul disco (ma vedere la la
          Sezione 4.4.3). Per lo swap può essere usata sia un
          partizione primaria sia una logica. Su un'unità può
          esistere più di una partizione di swap. Ne sono permesse
          8 in totale (fra tutte le unità). Vedere le note sulla
          dimensione di swap più sotto (la Sezione 4.4).

   Partizione logica
          Una singola partizione primaria deve essere usata da
          contenitore (partizione estesa) per le partizioni
          logiche. La partizione estesa può essere in qualunque
          punto del disco. Le partizioni logiche devono essere
          contigue, ma non è necessario che occupino tutta la
          partizione estesa.
     __________________________________________________________

4.3. File system

4.3.1. Quali file system hanno bisogno di una loro propria
partizione?

   Tutto il proprio file system Linux può andare nella stessa
   (unica) partizione. Tuttavia, ci sono circostanze in cui
   potrebbe essere preferibile contenere la crescita di certi file
   system. Per esempio, se lo spool di posta fosse nella stessa
   partizione del file system radice e riempisse lo spazio
   restante nella partizione, il computer praticamente si
   pianterebbe.

   /var
          Contiene le directory di spool come quelle per la posta
          e la stampa. In aggiunta, contiene la directory con i
          log di errore. Se la propria macchina è un server e
          sviluppa un errore cronico, i messaggi risultanti
          possono riempire la partizione. I computer server
          dovrebbero avere /var in una partizione diversa da /.

   /usr
          Qui si trova la maggior parte degli eseguibili. In
          aggiunta, l'albero dei sorgenti del kernel è qui, così
          come molta documentazione.

   /tmp
          Alcuni programmi scrivono qui file di dati temporanei.
          Di norma sono piuttosto piccoli. Tuttavia, se si
          eseguono compiti molto intensi dal punto di vista del
          calcolo, come applicazioni scientifiche o di
          progettazione, potrebbero essere necessarie centinaia di
          megabyte per brevi periodi di tempo. In questo caso,
          tenere /tmp in una partizione diversa da /.

   /home
          Qui si trovano le directory home degli utenti. Se non
          vengono imposte quote agli utenti, questa dovrebbe
          essere in una partizione propria.

   /boot
          Qui si trova l'immagine del kernel. Vedere quanto detto
          sopra per il suo posizionamento in sistemi vecchi.
     __________________________________________________________

4.3.2. Tempo di vita dei file e cicli di backup come criteri per il
partizionamento

   Con ext2, le decisioni circa il partizionamento dovrebbo essere
   governate da considerazioni sui backup e sull'evitare la
   frammentazione esterna la Sezione 10.4 dovuta ai tempi di vita
   differenti dei file.

   I file hanno un tempo di vita. Dopo che un file è stato creato,
   rimarrà per qualche tempo nel sistema e poi sarà rimosso. Il
   tempo di vita dei file varia moltissimo sul sistema ed è in
   parte dipendente dal nome di percorso del file. Per esempio,
   file in /bin, /sbin, /usr/sbin, /usr/bin e directory simili
   probabilmente avranno un tempo di vita molto lungo: molti mesi
   o più. File in /home probabilmente avranno un tempo di vita
   medio: diverse settimane o giù di lì. File in /var hanno di
   solito vita breve: quasi nessun file in /var/spool/news rimarrà
   più a lungo di alcuni giorni, la vita dei file in
   /var/spool/lpd si misura in minuti o meno.

   Per i backup è utile che la dimensione del backup giornaliero
   sia inferiore alla capacità del singolo supporto di backup. Un
   backup giornaliero può essere un backup completo o un backup
   incrementale.

   Si può decidere di mantenere le dimensioni delle proprie
   partizioni piccole abbastanza da essere completamente contenute
   in un unico supporto di backup (scegliere il backup completo
   giornaliero). In ogni caso una partizione dovrebbe essere
   abbastanza piccola da far sì che il suo delta (tutti i file
   modificati) giornaliero possa essere contenuto in un unico
   supporto di backup (scegliere il backup incrementale e
   aspettarsi di cambiare il supporto di backup per il backup
   completo settimanale/mensile; non è possibile il funzionamento
   senza supervisione).

   La propria strategia di backup dipende da tale decisione.

   Quando si pianifica e si compra spazio disco, ricordarsi di
   accantonare una quantità di denaro sufficiente per il backup!
   Dati senza backup non valgono nulla! I costi di ricostruzione
   dei dati sono molto più alti dei costi di backup praticamente
   per chiunque!

   Nell'ottica delle prestazioni è utile tenere file con tempi di
   vita diversi in partizioni diverse. In questo modo i file con
   vita breve nella partizione dei messaggi Usenet possono essere
   fortemente frammentati. Ciò non ha alcun impatto sulle
   prestazioni della partizione / o /home.
     __________________________________________________________

4.4. Partizioni di swap

4.4.1. Quanto grande deve essere lo spazio di swap?

   La prassi convenzionale vuole che si crei uno spazio di swap
   uguale alla quantità di RAM.

   Si tenga però a mente che questa è solo una regola empirica.
   Facilmente si possono immaginare scenari in cui i programmi
   hanno insiemi di lavoro estremamente grandi o estremamente
   piccoli (vedere la la Sezione 3.5). Per esempio, un programma
   di simulazione con un ampio insieme di dati a cui si accede in
   modo molto casuale non avrebbe nel suo segmento dati quasi
   nessuna localizzazione preferenziale di riferimenti, perciò il
   suo insieme di lavoro sarebbe piuttosto grande.

   All'opposto, un programma grafico con molti file JPEG aperti
   contemporaneamente, tutti ridotti ad icona tranne uno, avrebbe
   un segmento dati molto grande. Le modifiche alle immagini sono
   però fatte tutte su una singola immagine; non si accede alla
   maggior parte della memoria occupata dal programma. Lo stesso
   vale per un elaboratore di testi con molte finestre aperte in
   cui solo una finestra alla volta è modificata. Questi programmi
   hanno, se sono progettati correttamente, una alta
   localizzazione preferenziale dei riferimenti e una loro grande
   parte può essere mantenuta nello spazio di swap senza un
   impatto eccessivamente grave sulle prestazioni. Un utente che
   non chiude mai i programmi una volta che li ha avviati potrebbe
   volere, per questa stessa ragione, molto spazio di swap.

   I server tipicamente sono configurati con più spazio di swap
   delle loro controparti desktop. Anche se una certa quantità di
   swap è sufficiente per il suo funzionamento, il server può
   trovarsi temporaneamente con carichi pesanti che lo portano a
   spostare pagine in swap ad un ritmo elevato. Alcuni
   amministratori preferiscono questo al fare andare il server
   completamente in crash. In questi casi, lo spazio di swap può
   essere diverse volte la dimensione della RAM.
     __________________________________________________________

4.4.2. Quanto grande può essere lo spazio di swap?

   Attualmente la dimensione massima della partizione di swap
   dipende dall'architettura. Per i386, m68k, ARM e PowerPC, è
   "ufficialmente" 2GB. È 128GB su alpha, 1GB su sparc e 3TB su
   sparc64. Un opteron con kernel 2.6 può scrivere su una
   partizione di swap di 16 TB. Per i kernel Linux 2.1 e
   precedenti, il limite è 128MB. La partizione può essere più
   grande di 128 MB, ma lo spazio in eccesso non viene mai
   utilizzato. Se si vuole più di 128 MB di swap per un kernel 2.1
   o precedente, si devono creare partizioni di swap multiple
   (massimo 8). Dopo il 2.4, 32 aree di swap sono "ufficialmente"
   possibili. Per dettagli vedere la la Sezione 9.

   Nota a margine: dimensione massima di swap "ufficiale". Con
   kernel 2.4, il limite è 64 aree di swap con un massimo di 64GB
   ciascuna, anche se ciò non trova riscontro nella pagina man di
   mkswap. Con opteron a 64 bit e kernel 2.6, sono permesse 128
   aree di swap, ciascuna di 16 giganteschi TB! (Grazie a Peter
   Chubb per il calcolo).
     __________________________________________________________

4.4.3. Dove dovrebbe essere posto lo spazio di swap?

   La risposta breve è: va bene ovunque. Tuttavia, se si è
   interessati ad ottenere la maggior velocità possibile, ci sono
   due strategie di base (oltre a comprare più RAM).

     * Dividere lo spazio di swap su diverse unità o almeno
       metterlo sull'unità su cui si scrive di meno.
     * Posizionare ogni partizione di swap nelle tracce più
       esterne.

   Ecco le considerazioni:

     * Se si ha un disco con molte testine e uno con meno testine
       che sono identici per ciò che riguarda gli altri parametri,
       il disco con molte testine sarà più veloce. Leggere dati da
       testine diverse è veloce, dato che è puramente elettronico.
       Leggere dati da tracce diverse è lento, dato che comporta
       uno spostamento fisico della testina.
       Ne consegue pertanto che scrivere lo swap su un'unità
       separata sarà più veloce che non muovere la testina avanti
       e indietro su un'unità singola.
     * Posizionamento: i dischi più vecchi hanno lo stesso numero
       di settori in tutte le tracce. Con tali dischi sarà più
       veloce mettere lo swap in mezzo al disco, supposto che la
       testina del disco si muova da una traccia casuale verso
       l'area di swap.
     * I dischi più recenti usano lo ZBR (zone bit recording).
       Hanno più settori nelle tracce esterne. Con un numero
       costante di rpm, questo porta a ben più alte prestazioni
       nelle tracce esterne che non in quelle interne. Mettere il
       proprio spazio di swap nelle tracce veloci. (In generale,
       cilindri con un numero basso sono associati a partizioni
       con numero basso. Comunque vedere i più recenti commenti di
       Kristian sull'argomento - Tony).
     * Uso: naturalmente la testina del disco non si muoverà in
       modo casuale. Se lo spazio di swap è nel mezzo del disco
       tra una partizione home costantemente attiva e una quasi
       inutilizzata partizione di archiviazione, sarebbe meglio se
       l'area di swap fosse vicino alla partizione home per avere
       movimenti ancora più brevi della testina. Sarebbe però
       ancora meglio avere lo swap in un altro disco, altrimenti
       inutilizzato.
     * Striping: la velocità può essere aumentata scrivendo su
       aree multiple di swap simultaneamente. Gli spazi di swap
       con la stessa priorità verranno scritti come in un RAID.
       Vedere la la Sezione 9.3.

   Sintesi: mettere lo spazio di swap su un disco veloce con molte
   testine che non sia occupato a fare altro. Se si hanno dischi
   multipli: dividere lo swap e spargerlo su tutti i dischi o
   perfino su controller diversi.
     __________________________________________________________

5. Partizionare con fdisk

   Questa sezione spiega in pratica come partizionare il proprio
   disco fisso con l'utilità fdisk. Linux consente solo 4
   partizioni primarie. Si può avere un numero molto più grande di
   partizioni logiche dividendo ulteriormente una delle partizioni
   primarie. Solo una delle partizioni primarie può essere
   suddivisa.

   Esempi:

    1. Quattro partizioni primarie (vedere la la Sezione 5.2)
    2. Partizioni primarie e logiche coesistenti (vedere la la
       Sezione 5.3)
     __________________________________________________________

5.1. Uso di fdisk

   Per avviare fdisk digitare (come superutente) fdisk device al
   prompt dei comandi. device potrebbe essere qualcosa del tipo
   /dev/hda o /dev/sda (vedere la la Sezione 2.1.1). I comandi
   base di fdisk di cui si ha bisogno sono:

   p visualizza la tabella delle partizioni

   n crea una nuova partizione

   d cancella una partizione

   q esce senza salvare i cambiamenti fatti

   w scrive la nuova tabella delle partizioni ed esce

   I cambiamenti che vengono fatti alla tabella delle partizioni
   non hanno alcun effetto fino a che non si dà il comando di
   scrittura (w). Ecco un esempio di tabella delle partizioni:
Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hdb1   *         1       184    370912+  83  Linux
/dev/hdb2           185       368    370944   83  Linux
/dev/hdb3           369       552    370944   83  Linux
/dev/hdb4           553       621    139104   82  Linux swap

   La prima riga mostra la geometria del disco fisso. Può non
   essere accurata fisicamente, ma la si può accettare come se lo
   fosse. Il disco fisso in questo esempio è composto da 32 piatti
   a doppia faccia con una testina per ogni lato (probabilmente
   non è vero). Ogni piatto ha 621 tracce concentriche. Una
   traccia a 3 dimensioni (la stessa traccia su tutti i dischi)
   viene chiamata un cilindro. Ogni traccia è divisa in 63
   settori. Ogni settore contiene 512 byte di dati. Perciò la
   dimensione dei blocchi nella tabella delle partizioni è di 64
   testine * 63 settori * 512 byte ahemmm... diviso per 1024.
   (Vedere 4 per un esame dei problemi che questo calcolo
   comporta.) I valori "start" (inizio) e "end" (fine) sono
   espressi in cilindri.
     __________________________________________________________

5.2. Quattro partizioni primarie

   In breve

   Decidere la dimensione dello spazio di swap (vedere la la
   Sezione 4.4) e dove esso dovrà essere (vedere la la Sezione
   4.4.3). Dividere lo spazio restante nelle tre altre partizioni.

   Esempio

   Avviare fdisk dal prompt della shell:
# fdisk /dev/hdb

   si è indicato che si sta usando la seconda unità sul controller
   IDE. (Vedere la la Sezione 2.1.) Quando si visualizza la
   tabella delle partizioni (vuota), si ottengono solo le
   informazioni sulla configurazione.
Command (m for help): p

Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

   Si sapeva di avere un disco di 1.2GB, ma ora lo si sa davvero:
   64 * 63 * 512 * 621 = 1281982464 byte. Si decide di riservare
   128MB di tale spazio per lo swap, lasciandone 1153982464. Se si
   usa una delle partizioni primarie per lo swap, significa che ne
   rimangono ancora tre per le partizioni ext2. Dividendo in
   maniera uguale lo spazio, ciò significa 384MB per partizione.
   Al lavoro.
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-621, default 1):<RETURN>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +384M

   Successivamente impostare la partizione che si vuole usare per
   lo swap:
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (197-621, default 197):<RETURN>
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): +128M

   Adesso la tabella delle partizioni ha questo aspetto:
   Device Boot    Start       End    Blocks   Id  System
/dev/hdb1             1       196    395104   83  Linux
/dev/hdb2           197       262    133056   83  Linux

   Impostare le ultime due partizioni restanti come si è fatto per
   la prima. Infine, rendere avviabile la prima partizione:
Command (m for help): a
Partition number (1-4): 1

   E rendere la seconda partizione una partizione di tipo swap:
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)
Command (m for help): p

   Il risultato finale:
Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hdb1   *         1       196    395104+  83  Linux
/dev/hdb2           197       262    133056   82  Linux swap
/dev/hdb3           263       458    395136   83  Linux
/dev/hdb4           459       621    328608   83  Linux

   Da ultimo, dare il comando di scrittura (w) per scrivere la
   tabella sul disco.

   Argomenti correlati:

     * la Sezione 10.2
     * la Sezione 10.1
     * la Sezione 10.3
     __________________________________________________________

5.3. Partizioni primarie e logiche coesistenti

   In breve: creare e usare una delle partizioni primarie per
   ospitare tutte le partizioni extra. Creare quindi le partizioni
   logiche al suo interno. Creare le altre partizioni primarie
   prima o dopo la creazione delle partizioni logiche.

   Esempio

   Avviare fdisk dal prompt della shell:
# fdisk /dev/sda

   si è indicato che si sta usando la prima unità nella catena
   SCSI. (Vedere la la Sezione 2.1).

   Dapprima decidere quante partizioni si vogliono. Si sa che
   l'unità ha una capacità di 183GB e si vogliono partizioni da
   26GB (magari perché si hanno nastri di back-up all'incirca di
   quelle dimensioni).

   183GB / 26GB = ~7

   perciò saranno necessarie 7 partizioni. Anche se fdisk accetta
   dimensioni delle partizioni espresse in MB e KB, si decide di
   calcolare il numero dei cilindri che verrà contenuto in
   ciascuna partizione, dato che fdisk mostra le posizioni di
   inizio e fine in cilindri. Avviando fdisk si vede che si hanno
   22800 cilindri.
> The number of cylinders for this disk is set to 22800.  There is
> nothing wrong with that, but this is larger than 1024, and could in
> certain setups cause problems with: 1) software that runs at boot
> time (e.g., LILO) 2) booting and partitioning software from other
> OSs  (e.g., DOS FDISK, OS/2 FDISK)

   Allora, 22800 cilindri totali divisi per sette partizioni fa
   3258 cilindri. Ogni partizione sarà all'incirca grande 3258
   cilindri. Ignorare il messaggio di avvertimento poiché non si
   sta usando l'unità di avvio. (la Sezione 4).

   Dato che si hanno 4 partizioni primarie, 3 di esse possono
   essere grandi 3258 cilindri. La partizione estesa dovrà essere
   grande (4 * 3258), o 13032, cilindri per poter contenere le 4
   partizioni logiche.

   Inserire i seguenti comandi per impostare la prima delle 3
   partizioni primarie (ciò che viene inserito dall'utente è
   mostrato in grassetto):
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-22800, default 1): <RETURN>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-22800, default 22800): 325
8

   L'ultima partizione è la partizione estesa:
Partition number (1-4): 4
First cylinder (9775-22800, default 9775): <RETURN>
Using default value 9775
Last cylinder or +size or +sizeM or +sizeK (9775-22800, default 22800):
<RETURN>
Using default value 22800

   Il risultato, quando si usa il comando di visualizzazione è:
/dev/sda1             1      3258  26169853+  83  Linux
/dev/sda2          3259      6516  26169885   83  Linux
/dev/sda3          6517      9774  26169885   83  Linux
/dev/sda4          9775     22800 104631345    5  Extended

   In seguito dividere la partizione estesa in 4 partizioni
   logiche, iniziando dalla prima partizione logica, facendo
   segmenti di 3258 cilindri. Le partizioni logiche partono
   automaticamente da /dev/sda5.
Command (m for help):  n
First cylinder (9775-22800, default 9775): <RETURN>
Using default value 9775
Last cylinder or +size or +sizeM or +sizeK (9775-22800, default 22800):
13032

   Il risultato finale è:
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1             1      3258  26169853+  83  Linux
/dev/sda2          3259      6516  26169885   83  Linux
/dev/sda3          6517      9774  26169885   83  Linux
/dev/sda4          9775     22800 104631345    5  Extended
/dev/sda5          9775     13032  26169853+  83  Linux
/dev/sda6         13033     16290  26169853+  83  Linux
/dev/sda7         16291     19584  26459023+  83  Linux
/dev/sda8         19585     22800  25832488+  83  Linux

   Da ultimo, inserire il comando di scrittura (w) per scrivere la
   tabella sul disco. Per rendere le partizioni utilizzabili, si
   dovrà formattare (la Sezione 10.1) ciascuna partizione e poi
   montarla (la Sezione 10.3).
     __________________________________________________________

5.4. Esempi presentati

   Vorrei presentare l'organizzazione delle mie partizioni, perché
   funziona bene con qualunque distribuzione Linux (anche quelle
   grandi basate su RPM). Ho un disco fisso che [...] è 10 giga,
   esattamente. Windows non può vedere più di 9.3 giga di esso, ma
   Linux lo vede tutto e lo utilizza tutto. Esso ha anche molto
   più di 1024 cilindri.

   Tabella 7. Esempio di tabella delle partizioni
   Partizione    Punto di mount        Dimensione
   /dev/hda1  /boot                 (15 mega)
   /dev/hda2  partizione windows 98 (2 giga)
   /dev/hda3  estesa                (N/D)
   /dev/hda5  spazio di swap        (64 mega)
   /dev/hda6  /tmp                  (50 mega)
   /dev/hda7  /                     (150 mega)
   /dev/hda8  /usr                  (1.5 giga)
   /dev/hda9  /home                 (resto del disco)
   Io faccio test sui nuovi kernel per le memorie di massa USB e
   questo spiega la grande partizione /boot. Installo LILO
   nell'MBR e in modo predefinito avvio windows (non sono l'unico
   ad usare questo computer).

   Ho anche notato che non ci sono esempi REALI di tabelle di
   partizioni e per i novizi suggerisco FORTEMENTE di metterne più
   di uno. Sono appena uscito dalla stadio di novellino e il
   partizionamento è stato l'aspetto che più mi ha confuso.

   Valkor
     __________________________________________________________

6. Etichette

   In Linux, ci si riferisce ai dischi fissi come a device e i
   device sono pseudo-file in /dev. Per esempio, la prima
   partizione della seconda unità SCSI con numero più basso è
   /dev/sdb1. Se l'unità a cui si fa riferimento con /dev/sda
   viene rimossa dalla catena, allora la partizione suddetta è
   automaticamente rinominata in /dev/sda1 all'avvio successivo.
     __________________________________________________________

6.1. Etichette di volume

   Le etichette di volume rendono possibile mantenere per le
   partizioni un nome costante indipendentemente dal punto in cui
   sono connesse e indipendentemente da cosa altro sia connesso.
   Le etichette non sono obbligatorie per volumi Linux. Ognuna può
   essere lunga al massimo 16 caratteri.

   Ci sono tre strumenti per creare etichette di volume: mke2fs,
   tune2fs e e2label.
     __________________________________________________________

6.1.1. Esecuzione semplice

   e2label /dev/hdb1 pubsw

   tune2fs -L pubsw /dev/hdb1

   Entrambi questi comandi mettono l'etichetta "pubsw" alla prima
   partizione della seconda unità. Quella etichetta rimane con
   quella particolare partizione anche se l'unità viene spostata
   su un altro controller o perfino su un altro computer.

   mke2fs pubsw /dev/hdb1

   mke2fs -L pubsw /dev/hdb1

   fanno la stessa cosa dei due comandi precedenti, dopo aver
   creato il file system. Ciò significa che ciascuno di
   quest'ultimi due comandi cancella ogni dato esistente nella
   partizione.
     __________________________________________________________

6.1.2. Istruzioni per l'uso

   Ecco un esempio di fstab. Esso è un file di testo che si trova
   in /etc, che viene di solito configurato durante
   l'installazione del sistema operativo. Descrive dove sarà
   montata ciascuna partizione e come verrà montata. Può essere
   modificato o usando un'utilità o manualmente quando si
   aggiungono o rimuovono device.

LABEL=/        /                    ext3    defaults        1 1
LABEL=/boot    /boot                ext2    defaults        1 2
none           /dev/pts             devpts  gid=5,mode=620  0 0
none           /dev/shm             tmpfs   defaults        0 0
LABEL=HOME     /home                ext3    defaults        1 2
none           /proc                proc    defaults        0 0
none           /sys                 sysfs   defaults        0 0
LABEL=/usr     /usr                 ext3    defaults        1 2
/dev/hdc1      /k-space             ext3    defaults        1 2
/dev/hda6      swap                 swap    defaults        0 0
/dev/hdd       /media/cdrecorder    auto    pamconsole,ro,exec,noauto,ma
naged 0 0
/dev/fd0       /media/floppy        auto    pamconsole,exec,noauto,manag
ed 0 0

   La prima colonna a sinistra elenca i device e la seconda i
   punti di mount. Questo esempio contiene un misto di device ed
   etichette. L'unità master del secondo controller viene sempre
   montata in /k-space. La partizione con etichetta "HOME" è
   sempre montata in /home, indipendentemente dalla unità sulla
   quale si trovi o da quale numero di partizione abbia. Notare
   che è possibile usare punti di mount come etichette, come
   "/usr".
     __________________________________________________________

6.2. Etichette di device

   devlabel è uno script che crea collegamenti simbolici a device.
   Per esempio,

   devlabel -d /dev/hdb1 -s /dev/home

   crea un collegamento da /dev/hdb1 a /dev/home. È fondamentale
   come archivi un identificatore univoco per l'hardware che si
   trova su /dev/hdb1 e memorizzi quell'identificatore, insieme al
   nome del collegamento che è stato specificato, in
   /etc/sysconfig/devlabel. Se l'hardware è successivamente
   spostato in /dev/hdc1, il suo identificatore univoco sarà
   interrogato (usando /usr/bin/partition_uuid), verrà trovata la
   voce corrispondente in /etc/sysconfig/devlabel e sarà
   nuovamente collegato a /dev/home.
     __________________________________________________________

7. Formattare una partizione ext2/3

   Quando un disco fisso viene partizionato, ne viene creata una
   mappa con sezioni, ma le sezioni sono vuote. È come una
   biblioteca appena costruita; devono essere sistemate mensole,
   segnali e un sistema di catalogazione prima di mettere via i
   libri.

   La struttura dell'organizzazione interna di una partizione è
   chiamata file system. In Linux, i file system standard sono
   ext2 e ext3. Il file system ext3 è come ext2, più un registro
   delle operazioni di scrittura su disco chiamato journal
   (diario). Il journal permette al sistema, tra le altre cose, di
   riprendersi facilmente da mancanze accidentali di corrente
   elettrica.

   Il principale strumento per creare un file system ext2/3 in una
   partizione è mke2fs. Si trova di solito in /sbin. mkfs.ext2 e
   mkfs.ext3 sono frontend che passano opzioni specifiche a
   mke2fs.
     __________________________________________________________

7.1. Semplice esecuzione

   mke2fs /dev/hdb1

   mkfs.ext2 /dev/hdb1

   entrambi creano un file system ext2 sulla prima partizione
   della seconda unità e

   mke2fs -j /dev/hdb1

   mkfs.ext3 /dev/hdb1

   creano un file system ext3.
     __________________________________________________________

7.2. Blocchi riservati

   L'opzione -m è probabilmente quella di maggiore utilità per i
   non esperti. Se il file system diventa pieno e non c'è più
   spazio per scrivere, è praticamente inutilizzabile perché il
   sistema operativo è perennemente in fase di scrittura su disco.
   Come valore predefinito, il cinque percento della partizione è
   riservato per l'uso da parte del superutente. Ciò permette al
   superutente di fare attività di amministrazione sulla
   partizione e forse di spostare via alcuni dati. Questo,
   tuttavia, è cruciale soprattutto quando la partizione contiene
   le directory / o home. Per partizioni puramente di dati, questo
   risulta solo spazio sprecato. Il cinque percento di una
   partizione da 250Gb è 12.5 Gb. Specialmente nel caso di grandi
   partizioni, si può impostare tranquillamente lo spazio
   riservato al minimo, che è l'uno percento.

   mkfs.ext3 -m 1/dev/hdb1

   crea un file system con solo l'1% dello spazio riservato per il
   superutente. Si può usare tune2fs -m per ritoccare i blocchi
   riservati dopo che siano stati caricati dati sulla partizione.
     __________________________________________________________

8. Ripristinare una tabella delle partizioni cancellata

   Di seguito sono indicate le istruzioni per recuperare
   manualmente una tabella delle partizioni cancellata. Ci sono
   utilità quali gpart o TestDisk che possono rendere questo
   compito considerevolmente più facile. Se tuttavia si sta
   leggendo questo documento perché si è stati sfortunati, questo
   è ciò che si deve fare:

    1. Creare una partizione che sia grande almeno quando lo era
       la prima partizione. La si può creare più grande, di un
       valore qualsiasi, della partizione originale. Se si
       sottostima il valore, ci sarà solo dolore e stridore di
       denti.
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-23361, default 1): <RETURN>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-22800, default 22800): 130
32

Command (m for help): w

    2. Eseguire dumpe2fs sulla prima partizione e con grep
       estrarre il conteggio dei blocchi.
       Esempio:
           % dumpe2fs /dev/sda1 | grep "Block count:"
           Block count:              41270953

       Se non si è sicuri di questo valore, ripetere il passo 1
       con una dimensione di partizione maggiore. Se il conteggio
       dei blocchi cambia, allora si era sottostimata la
       dimensione della partizione originale. Ripetere il passo 1
       fino a che non si ottiene un conteggio dei blocchi
       costante.
    3. Rimuovere la partizione che si è appena creata
         Command (m for help): d
         Partition number (1-4): 1

    4. Creare una nuova partizione con esattamente la dimensione
       che si è ottenuta dal conteggio dei blocchi. Dato che non
       si può inserire la dimensione in blocchi in fdisk, è
       necessario calcolare quanti cilindri indicare. Ecco la
       formula:
  (numero di cilindri necessari) = (numero dei blocchi) / (dimensione de
i blocchi)

  (dimensione dei blocchi) = (dimensione dell'unità) / 1024

  (dimensione dell'unità) = (numero delle testine) * (numero dei settori
/cilindro) * (numero di byte/settore)

       Si consideri l'esempio seguente, in cui un disco fisso è
       stato partizionato in quattro partizioni primarie di 1, 2,
       4 e 8 cilindri.
disk /dev/sda: 16 heads, 63 sectors, 23361 cylinders
Units = cylinders of 1008 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1             1         2       976+  83  Linux
/dev/sda2             3         5      1512   83  Linux
/dev/sda3             6        10      2520   83  Linux
/dev/sda4            11        19      4536   83  Linux

       fdisk fornisce nella testata del suo output le informazioni
       sulla configurazione di cui si ha bisogno. La dimensione
       dell'unità è 516096 (16 testine * 63 settori/cil * 512
       byte/settore). La dimensione dei blocchi è 504 (516096 /
       1024). Il numero dei cilindri necessari per la seconda
       partizione è pertanto 3 (1512 blocchi / 504). La tabella
       delle partizioni mostra che è proprio così: il primo
       cilindro è il 3, il secondo il 4 e l'ultimo è il 5, per un
       totale di tre cilindri. Il numero dei cilindri necessari
       per la terza partizione è calcolato in modo simile: 2520
       blocchi / 504 = 5, il che corrisponde ai cilindri
       6,7,8,9,10. Si noti che questo calcolo non funziona per la
       prima partizione, perché il conteggio dei blocchi è
       sbagliato (976 invece di 1008). Il segno più indica che non
       tutti i blocchi sono inclusi nel valore di fdisk. Quando si
       tenta di fare il calcolo (976 / 504) si ottiene 1.937.
       Sapendo che il numero dei cilindri deve essere un intero,
       si può semplicemente arrotondare per eccesso.
    5. Eseguire e2fsck su di essa per verificare che sia possibile
       leggere la nuova partizione.
    6. Ripetere i passi da 1 a 5 per le partizioni restanti.

   Montare nuovamente le partizioni. Sorprendentemente, tutti i
   propri dati saranno presenti.

   Il merito va a: Mike Vevea, jedi sys admin, per aver fornito la
   strategia di base.
     __________________________________________________________

9. Configurare lo spazio di swap

9.1. File di swap

   Normalmente ci sono solo due passaggi da eseguire per
   configurare lo spazio di swap, creare la partizione ed
   aggiungerla ad /etc/fstab. Una voce tipica in fstab per una
   partizione swap su /dev/hda6 sarà di questo tipo:
/dev/hda6       swap    swap    defaults        0       0

   Al successivo avvio, lo script di inizializzazione la attiverà
   automaticamente e non è necessario fare altro.

   Tuttavia, se si vuole usarla subito, è necessario attivarla
   manualmente. Da superutente digitare:
mkswap -f /dev/hda6
swapon /dev/hda6
     __________________________________________________________

9.2. File di swap

   Ci potranno essere momenti in cui si è a corto di spazio di
   swap e non è pratico ripartizionare un'unità o aggiungerne uno
   nuovo. In questo caso si può utilizzare un file regolare in una
   partizione normale. Tutto ciò che si deve fare è creare un file
   della dimensione voluta

   dd if=/dev/zero of=/var/mio_swap bs=1024 count=131072

   ed attivarlo
        mkswap -f /var/mio_swap
        swapon /var/mio_swap

   Con questa sintassi si crea un file chiamato mio_swap in /var.
   È grande 128 Mb (128 x 1024 = 131072). Inizialmente è riempito
   da zeri. mkswap, tuttavia, lo marca come spazio di swap e
   swapon dice al kernel di iniziare ad usarlo some spazio di
   swap. Quando non serve più, digitare
swapoff /var/mio_swap
rm /var/mio_swap
     __________________________________________________________

9.3. Aree di swap multiple

   Sullo stesso sistema può essere utilizzata più di una
   partizione di swap. Si consideri un fstab di esempio con una
   sola partizione di swap:
/dev/hda5   /        ext3   defaults        1   1
/dev/hda1   /boot    ext2   defaults        1   2
none        /dev/pts devpts gid=5,mode=620  0   0
none        /proc    proc   defaults        0   0
/dev/hda7   /usr     ext3   defaults        1   2
/dev/hda6   swap     swap   defaults        0   0

   Si immagini di rimpiazzare la voce riguardante la partizione di
   swap con queste tre righe:
/dev/hda6   none    swap    sw,pri=3    0       0
/dev/hdb2   none    swap    sw,pri=2    0       0
/dev/hdc2   none    swap    sw,pri=1    0       0

   Questa configurazione farà sì che il kernel usi per prima
   /dev/hda6 che ha associata la più alta priorità (pri=3). La
   massima priorità consentita è 32767 e la minima 0. Se quello
   spazio fosse insufficiente, il kernel inizierebbe ad usare
   /dev/hdb2 e dopo di essa /dev/hdc2. Perché una simile
   configurazione? Si immagini di dare la priorità più alta alle
   unità più nuove (più veloci); ciò minimizzerebbe la perdita di
   velocità al crescere dello spazio di swap.

   È possibile scrivere su tutte e tre contemporaneamente. Se
   ognuna ha la stessa priorità, il kernel scriverà su di esse
   come in un RAID, con un aumento della velocità proporzionale.
/dev/hda6   none   swap   sw,pri=3   0   0
/dev/hdb2   none   swap   sw,pri=3   0   0
/dev/hdc2   none   swap   sw,pri=3   0   0

   Si noti che queste tre partizioni sono su unità separate, il
   che è l'ideale in termini di miglioramento della velocità.
     __________________________________________________________

10. Appendice

10.1. Formattare le partizioni

   Al prompt della shell, iniziare creando i file system sulle
   partizioni. Proseguendo l'esempio nella la Sezione 5.3, si
   tratta di fare:
# mke2fs /dev/sda1

   È necessario farlo per ognuna delle partizioni, ma non per
   /dev/sda4 (la partizione estesa). Linux supporta altri tipi di
   file system oltre a ext2. Si può vedere quali siano supportati
   dal proprio kernel guardando in:
   /usr/src/linux/include/linux/fs.h

   I file system più comuni possono essere creati con i programmi
   in /sbin che iniziano con le lettere "mk" come mkfs.msdos e
   mke2fs.
     __________________________________________________________

10.2. Attivare lo spazio di swap

   Per impostare una partizione di swap:
# mkswap -f /dev/hda5

   Per attivare l'area di swap:
# swapon  /dev/hda5

   Normalmente l'area di swap è attivata dagli script di
   inizializzazione all'avvio del sistema.
     __________________________________________________________

10.3. Montare le partizioni

   Montare una partizione significa unirla al file system Linux.
   Per montare una partizione linux:
# mount -t ext2 /dev/sda1 /opt

   -t ext2
          Tipo di file system. Altri tipi comunemente usati sono:

          + ext3 (file system con journaling basato su ext2)
          + msdos (DOS)
          + hfs (mac)
          + iso9660 (CDROM)
          + nfs (network file system)

   /dev/sda1
          Nome del device. Altri nomi di device comunemente usati:

          + /dev/hdb2 (seconda partizione nella seconda unità IDE)
          + /dev/fd0 (unità floppy A)
          + /dev/cdrom (CDROM)

   /opt
          Punto di mount. Qui è dove si desidera "vedere" la
          propria partizione. Quando si digita ls /opt, si può
          vedere cosa ci sia in /dev/sda1. Se ci sono già alcune
          directory o file dentro a /opt, essi saranno invisibili
          dopo questo comando mount.
     __________________________________________________________

10.4. Alcuni dati sui file system e la frammentazione

   Lo spazio su disco è gestito dal sistema operativo in unità di
   blocchi e frammenti di blocchi. Nel file system ext2, i
   frammenti ed i blocchi devono avere la stessa dimensione, per
   cui si può limitare questa analisi ai blocchi.

   I file sono di dimesioni disparate. Non finiscono esattamente
   al confine tra i blocchi. Per cui con ogni file una parte
   dell'ultimo blocco di ciascun file è sprecata. Supponendo che
   le dimensioni dei file siano casuali, c'è aprrossimativamente
   uno spreco di metà blocco per ogni file su disco. Tanenbaum,
   nel suo libro "Operating Systems", la chiama "frammentazione
   interna".

   Si può calcolare il numero dei file sul proprio disco in base
   al numero degli inode allocati sul disco. In questo disco
# df -i
Filesystem           Inodes   IUsed   IFree  %IUsed Mounted on
/dev/hda3              64256   12234   52022    19%  /
/dev/hda5              96000   43058   52942    45%  /var

   ci sono circa 12000 file in / e circa 44000 file in /var. Con
   una dimensione dei blocchi di KB, circa 6+22 = 28 MB di spazio
   su disco sono persi nei blocchi di coda dei file. Se si fosse
   scelta una dimensione dei blocchi di 4 KB, si sarebbe perso una
   spazio 4 volte più grande.

   Il trasferimento di dati, però, è più veloce per grossi pezzi
   di dati contigui. È per questo che ext2 cerca di preallocare
   spazio in unità di 8 blocchi contigui per i file in crescita.
   Lo spazio preallocato inutilizzato viene liberato quando il
   file è chiuso, perciò non c'è spreco di spazio.

   Il posizionamento in blocchi non contigui di un file è un male
   per le prestazioni, dato che ai file si accede spesso in
   maniera sequenziale. Esso costringe il sistema operativo a
   dividere l'accesso su disco e il disco a muovere la testina.
   Questa è chiamata "frammentazione esterna" o semplicemente
   "frammentazione" ed è un problema comune con i file system
   MS-DOS. Uniti alla orribile buffer cache usata da MS-DOS, gli
   effetti della frammentazione dei file sulle prestazioni sono
   molto evidenti. Gli utenti DOS sono abituati a deframmentare i
   propri dischi a intervalli di poche settimane ed alcuni hanno
   sviluppato alcune credenze ritualistiche riguardanti la
   deframmentazione.

   Nessuna di queste abitudini dovrebbe essere trasposta in Linux
   ed ext2. I file system nativi Linux non necessitano di
   deframmentazione nell'uso comune e quest'ultimo include ogni
   situazione con almeno 5% dello spazio su disco libero. C'è uno
   strumento di deframmentazione per ext2 chiamato defrag, ma gli
   utenti sono avvertiti di non usarlo alla leggera. Una mancanza
   di corrente durante una tale operazione può rovinare il file
   system. Dato che si deve comunque fare il backup dei propri
   dati, basterà semplicemente riscrivere tutto dalla propria
   copia.

   Il file system MS-DOS è noto anche per la perdita di grosse
   quantità di spazio su disco a causa della frammentazione
   interna. Per partizioni più grandi di 256 MB, la dimensione dei
   blocchi in DOS diviene così grande che essi non sono più utili
   (questo è stato in parte corretto con FAT32). Ext2 non
   costringe a scegliere blocchi grossi per file system grandi,
   tranne che per file system estremamente grandi dell'ordine di
   0.5 TB (cioé terabyte con 1 TB che equivale a 1024 GB) o
   superiore, dove blocchi di piccole dimensioni diventano
   inefficienti. Perciò, a differenza di quanto accade con il DOS,
   non è necessario dividere dischi grandi in partizioni multiple
   per mantenere bassa la dimensione dei blocchi.

   Usare una dimensione dei blocchi di 1Kb se si hanno molti file
   piccoli. Per partizioni grandi, vanno bene blocchi di 4Kb.