Gentoo Logo

[ << ] [ < ] [ Home ] [ > ] [ >> ]


4. Preparazione dei dischi

Indice:

4.a. Introduzione ai dispositivi a blocchi

Dispositivi a blocchi

Si dà ora un'occhiata approfondita agli aspetti relativi ai dischi in Gentoo Linux e in Linux in generale, tra cui i filesystem Linux, le partizioni e i dispositivi a blocchi. Quindi, una volta acquisita familiarità con i dischi e i filesystem, si viene guidati attraverso il processo di configurazione delle partizioni e dei filesystem per l'installazione di Gentoo Linux.

Per cominciare, si introducono i dispositivi a blocchi. Il dispositivo a blocchi più famoso è probabilmente quello che rappresenta la prima unità IDE in un sistema Linux, /dev/sda. I dischi SCSI e Serial ATA vengono entrambi etichettati come /dev/sd*; anche i dischi IDE sono etichettati come /dev/sd* con il nuovo framework libata nel kernel. Se si sta usando un vecchio framework per le periferiche, allora il primo disco IDE sarà /dev/hda.

I dispositivi a blocchi rappresentano un'interfaccia astratta ai dischi. I programmi utente possono usare questi dispositivi a blocchi per interagire con i dischi, senza doversi chiedere se si tratta di unità IDE, SCSI o di qualsiasi altro tipo. Il programma può semplicemente indirizzare la memorizzazione su disco attraverso dei blocchi contigui, accessibili in modalità casuale, e di dimensione pari a 512 byte ciascuno.

Partizioni

Sebbene in linea teorica sia possibile usare un intero disco per il sistema Linux, in pratica ciò non viene quasi mai fatto. Invece, i dispositivi a blocchi del disco sono divisi in parti più piccole e più maneggevoli. Queste parti sono chiamate partizioni.

4.b. Impostare uno schema di partizionamento

Numero e dimensione delle partizioni

Il numero delle partizioni dipende fortemente dal proprio ambiente. Per esempio, se si hanno molti utenti su una stessa macchina, molto probabilmente si desidera tenere separate le directory /home, aumentando così la sicurezza e rendendo più facile il backup. Se si sta installando Gentoo per utilizzarlo come mailserver, /var dovrebbe essere separata poichè tutta la posta viene memorizzata in essa. Una buona scelta del filesystem è quella che massimizza le prestazioni. I gameserver è bene che abbiano una partizione separata per /opt, visto che la maggior parte dei server di gioco sono installati lì. La stessa cosa vale per /home: sicurezza e backup. Si dovrebbe tenere una grande /usr: questa contiene non solo la maggior parte delle applicazioni, il solo Portage tree occupa 500 MB di spazio, esclusi i sorgenti che sono in esso.

Come si è visto, molto dipende da cosa si desidera realizzare. Partizioni o volumi separati hanno i seguenti vantaggi:

  • Si può scegliere il filesystem con maggiori prestazioni per ogni partizione o volume
  • L'intero sistema non può esaurire lo spazio libero se uno strumento malfunzionante scrive all'infinito su una partizione od un volume
  • Nel caso si rendano necessari, i controlli sul filesystem sono ridotti, poichè possono essere condotti in parallelo diverse analisi (questo vantaggio è più per i dischi multipli che per le partizioni multiple)
  • La sicurezza può essere aumentata montando alcune partizioni o volumi in sola lettura, nosuid (i bit setuid vengono ignorati), noexec (i bit executable sono ignorati) etc.

Anche le partizioni multiple hanno però degli svantaggi: se non sono configurate correttamente, si potrebbe avere un sistema con moltissimo spazio libero in una partizione e niente più spazio in un'altra. Un altro inconveniente è che partizioni separate - specialmente per punti di montaggio importanti come /usr o /var - spesso richiedo all'amministratore di avviare il sistema con un initramfs per montare le partizioni stesse prima che altri script di avvio siano eseguiti. Tuttavia questo non accade sempre, perciò il risultato può essere vario.

4.c. Usare fdisk su MIPS per partizionare il disco

Macchine SGI: Creare un SGI Disk Label

Tutti i dischi in un sistema SGI richiedono un SGI Disk Label, che serve per una funzione simile a quella di Sun & MS-DOS disklabels -- Memorizza informazioni sulle partizioni dei dischi. Con la crezione di un nuovo SGI Disk Label si creeranno due partizioni speciali sul disco:

  • Intestazione del volume SGI (9na partizione): Questa partizione è importante. E' dove c'è il bootloader, e in alcuni casi, anche le immagini del kernel.
  • Volume SGI (11ma partizione): Questa partizione è simile nello scopo alla terza partizione del Sun Disklabel di "Whole Disk". Questa partizione occupa l'intero disco, e non dovrebbe essere toccata. Non ha uno scopo speciale, tranne quello di aiutare il PROM in qualche modo non documentato (o è usata da IRIX).

Avvertenza: L'intestazione del volume SGI deve iniziare al cilindro 0. Altrimenti non si potrà fare il boot dal disco.

Il seguente, è un esempio preso da fdisk. Dopo averlo letto, adattarlo in base alle proprie necessità.

Codice 3.1: Creare un SGI Disklabel

# fdisk /dev/sda

Command (m for help): x

Expert command (m for help): m
Command action
   b   move beginning of data in a partition
   c   change number of cylinders
   d   print the raw data in the partition table
   e   list extended partitions
   f   fix partition order
   g   create an IRIX (SGI) partition table
   h   change number of heads
   m   print this menu
   p   print the partition table
   q   quit without saving changes
   r   return to main menu
   s   change number of sectors/track
   v   verify the partition table
   w   write table to disk and exit

Expert command (m for help): g
Building a new SGI disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content will be irrecoverably lost.

Expert command (m for help): r

Command (m for help): p

Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 17482 cylinders
Units = cylinders of 2048 * 512 bytes

----- partitions -----
Pt#     Device  Info     Start       End   Sectors  Id  System
 9:  /dev/sda1               0         4     10240   0  SGI volhdr
11:  /dev/sda2               0     17481  35803136   6  SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----

Command (m for help):

Nota: Se il disco ha già un SGI Disklabel, allora fdisk non creerà una nuova label. Ci sono due modi per evitare questo. Il primo è quello di creare un Sun o MS-DOS disklabel, scrivere i cambiamenti sul disco, e far ripartire fdisk. Il secondo è quello di sovrascrivere la tabella di partizioni con dati vuoti, con il seguente comando: dd if=/dev/zero of=/dev/sda bs=512 count=1.

Ottenere l'intestazione del volume SGI della giusta dimensione

Importante: Questo passo è spesso necessario, a causa di un bug in fdisk. L'intestazione del volume non è creata in modo corretto, la fine comincia e finisce al cilindro 0. Questo evita la creazione di partizioni multiple. Continuare a leggere per sapere come superare questo problema.

Ora che è creato il SGI Disklabel, le partizioni devono essere definite. Nell'esempio sopra, ci sono già due partizioni definite. Ci sono le partizioni speciali che non dovrebbero essere cambiate. Tuttavia, per installare Gentoo, si ha bisogno di caricare un bootloader, e immagini del kernel multiple (dipende dal tipo di sistema) direttamente nell'intestazione del volume. L'intestazione del volume può contenere otto immagini di ogni grandezza, un'immagine può avere un nome di otto caratteri.

Il processo di rendere più larga l'intestazione del volume non è esattamente diretto; c'è un piccolo trucco per farlo. Non si può cancellare e riaggiungere l'intestazione del volume con fdisk. Nell'esempio sotto, si creerà un'intestazione del volume di 50MB insieme a una partizione di boot di 50MB. La disposizione del proprio disco può variare, ma l'esempio è solo a scopo illustrativo.

Codice 3.2: Ridurre l'intestazione del volume SGI

Command (m for help): n
Partition number (1-16): 1
First cylinder (5-8682, default 5): 51
 Last cylinder (51-8682, default 8682): 101

(Notare come fdisk permetta solo che la Partizione #1 sia ricreata            )
(cominciando come minimo dal cilindro 5? Si tenta di cancellare & ricreare    )
(l'intestazione del volume SGI, è lo stesso problema che si sarebbe           )
(incontrato. Nell'esempio, si desidera che /boot sia di 50MB, così si         )
(comincia al cilindro 51 (si ricordi che l'intestazione del volume deve       )
(iniziare al cilindro 0), e si imposta il cilindro finale a 101, che saranno  )
(approssimativamente 50MB (con uno scarto di 1-5MB)                           )

Command (m for help): d
Partition number (1-16): 9

(Cancellare la Partizione #9 (intestazione del volume SGI))

Command (m for help): n
Partition number (1-16): 9
First cylinder (0-50, default 0): 0
 Last cylinder (0-50, default 50): 50

(Ricreare la Partizione #9, finendo prima della Partizione #1)

Se non si hanno conoscenze buone per usare fdisk leggere le istruzioni sul partizionamento su Cobalts. I concetti sono gli stessi: ricordarsi di lasciare l'intestazione del volume e le partizioni del disco.

Si può creare il resto delle partizioni. Dopo che tutte le partizioni sono state create assicurarsi di impostare l'ID della partizione swap a 82, Linux Swap. Il valore predefinito è 83, Linux Native.

Ora che le partizione sono create, si può continuare con Creare i filesystem.

Macchine Cobalt: Partizionare il disco

Sulle macchine Cobalt, il BOOTROM si aspetta di vedere un MS-DOS MBR, in modo che il partizionamento del disco sia diretto: è lo stesso che si fa per una macchina x86. Comunque ci sono alcune cose da tenere in mente.

  • Cobalt firmware si aspetterà che /dev/sda1 sia una partizione Linux formattata EXT2 Revision 0. EXT2 Revision 1 partizioni non funzioneranno! (Il Cobalt BOOTROM comprende solo EXT2r0)
  • La partizione appena menzionata deve contenere una immagine gzippata ELF, vmlinux.gz in root di questa partizione, che carica il kernel

Per questa ragione, si raccomanda di creare una partizione /boot di circa 20MB formattata EXT2r0, sulla quale installare CoLo & i kernel. Questo permette di eseguire un filesystem moderno (EXT3 o ReiserFS) per la partizione root.

Si assume che sia stata creato /dev/sda1 da montare successivamente come partizione di /boot. Se si desidera renderla come /, si dovranno ricordare le aspettative di PROM.

Per creare le partizioni digitare fdisk /dev/sda al prompt. I principali comandi che si devono sapere sono questi:

  • o: Elimina la vecchia tabella di partizioni, comincia con una vuota MS-DOS
  • n: Nuova Partizione
  • t: Cambia il tipo di partizione
    • Usare 82 per Linux Swap, 83 per Linux FS
  • d: Elimina una partizione
  • p: Visualizza la tabella di partizioni
  • q: Quit -- lascia così come è la vecchia tabella di partizioni
  • w: Quit -- salva la tabella di partizioni

Codice 3.3: Partizionare il disco

# fdisk /dev/sda

The number of cylinders for this disk is set to 19870.
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., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

(Eliminare ogni partizione esistente)
Command (m for help): o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.


The number of cylinders for this disk is set to 19870.
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., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

(Si può ora verificare che la tabella di partizioni sia vuota, con il comando 'p')

Command (m for help): p

Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System

(Creare la partizione boot)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1

(Premere invio per accettare le impostazioni predefinite)

First cylinder (1-19870, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-19870, default 19870): +20M

(se si digita 'p', si vede la nuova partizione)
Command (m for help): p

Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          40       20128+  83  Linux

(Si è preferito mettere una partizione estesa)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2

(Di nuovo, va bene l'impostazione predefinita, premere invio)

First cylinder (41-19870, default 41):
Using default value 41

(Si desidera usare qui l'intero disco, premere invio)
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870):
Using default value 19870

(La partizione / -- Si usano separate partizioni per /usr, /var etc, / può essere piccola. Seguire le proprie preferenze.)

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (41-19870, default 41):<Press ENTER>
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870): +500M

(...simile per le altri partizioni...)

(Lo spazio swap. Si raccomanda 250MB, ancora meglio 1GB)

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (17294-19870, default 17294): <Press ENTER>
Using default value 17294
Last cylinder or +size or +sizeM or +sizeK (1011-19870, default 19870): <Press ENTER>
Using default value 19870

(Tutta la tabella di partizioni dovrebbe essere corretta, tranne una cosa)

Command (m for help): p

Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot      Start         End      Blocks      ID  System
/dev/sda1               1          21       10552+  83  Linux
/dev/sda2              22       19870    10003896    5  Extended
/dev/sda5              22        1037      512032+  83  Linux
/dev/sda6            1038        5101     2048224+  83  Linux
/dev/sda7            5102        9165     2048224+  83  Linux
/dev/sda8            9166       13229     2048224+  83  Linux
/dev/sda9           13230       17293     2048224+  83  Linux
/dev/sda10          17294       19870     1298776+  83  Linux

(La partizione swap, la #10, è ancora di tipo 83)

Command (m for help): t
Partition number (1-10): 10
Hex code (type L to list codes): 82
Changed system type of partition 10 to 82 (Linux swap)

(Verificare che tutto sia corretto)

Command (m for help): p

Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot      Start         End      Blocks      ID  System
/dev/sda1               1          21       10552+  83  Linux
/dev/sda2              22       19870    10003896    5  Extended
/dev/sda5              22        1037      512032+  83  Linux
/dev/sda6            1038        5101     2048224+  83  Linux
/dev/sda7            5102        9165     2048224+  83  Linux
/dev/sda8            9166       13229     2048224+  83  Linux
/dev/sda9           13230       17293     2048224+  83  Linux
/dev/sda10          17294       19870     1298776+  82  Linux Swap

(Salvare la nuova tabella di partizioni)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

#

Continuare con Creare i filesystem.

4.d. Creare i filesystem

Introduzione

Ora che le partizioni sono state create, è il momento di inserire il filesystem. Se non si è interessati alla scelta del filesystem e vanno bene quelli che si usano in modo predefinito in questo Manuale, continuare con la sezione su come Applicare un filesystem a una partizione. Altrimenti ecco una descrizione dei filesystem disponibili.

Filesystem

Sono disponibili molti filesystem. ReiserFS, EXT2, EXT3 ed EXT4 sono giudicati stabili sull'architettura MIPS, gli altri sono sperimentali.

ext2 è il vero e proprio filesystem di Linux ma non possiede il supporto per il metadata journaling, il che significa che le routine che effettuano all'avvio i controlli sul filesystem ext2 possono impiegare diverso tempo. Al momento esiste una scelta abbastanza ampia di filesystem journaled di nuova generazione che sono in grado di effettuare controlli sulla consistenza molto velocemente e sono generalmente preferiti alle controparti non-journaled. I filesystem journaled prevengono i lunghi tempi di attesa che solitamente si riscontrano quando viene riavviato il sistema e il filesystem si trova in uno stato inconsistente. Se si ha intenzione di installare Gentoo su un disco molto piccolo (meno di 4GB), in tal caso si dovrà indicare ad ext2 di riservare un numero sufficiente di inode quando si crea il filesystem. Il comando mke2fs usa l'opzione "bytes-per-inode" per calcolare quanti inode un filesystem dovrebbe avere. Se si usa mke2fs -T small /dev/<device> il numero degli inode sarà generalmente il quadruplo per un dato filesystem secondo il suo "bytes-per-inode" riduce da 16kB a 4kB. E' possibile ottimizzare ulteriormente usando mke2fs -i <ratio> /dev/<device>.

ext3 è la versione journaled del filesystem ext2, fornisce il metadata journaling per un veloce recupero dei dati in aggiunta ad altre caratteristiche di journaling avanzate come full data e ordered data journaling. Utilizza un indice Htree che abilita alte prestazioni in quasi tutte le situazioni. In breve, ext3 è un filesystem davvero molto valido e affidabile, ed è raccomandato per qualsiasi sistema e scopo. Se si ha intenzione di installare Gentoo su un disco molto piccolo (meno di 4GB), in tal caso si dovrà indicare ad ext3 di riservare un numero sufficiente di inode quando si crea il filesystem. Il comando mke2fs usa l'opzione "bytes-per-inode" per calcolare quanti inode un filesystem dovrebbe avere.Se si usa mke2fs -j -T small /dev/<device> il numero degli inode sarà generalmente il quadruplo per un dato filesystem secondo il suo "bytes-per-inode" riduce da 16kB a 4kB. E' possibile ottimizzare ulteriormente usando mke2fs -j -i <ratio> /dev/<device>.

ext4 è un filesystem creato da una ramificazione del progetto ext3 con l'introduzione di nuove funzionalità, miglioramenti nelle prestazioni e la rimozione di limiti di dimensioni, con piccoli cambiamenti ai formati interni del disco. Può arrivare fino a volumi di 1 EB con la dimensione massima per i file di 16 TB. Invece della allocazione a blocchi classica di ext2/3 basata sulla mappatura a bit, ext4 usa le extent, che migliorano le prestazioni per i file grandi e riducono la frammentazione. Ext4 inoltre è provvisto di algoritmi più sofisticati per l'assegnazione dei blocchi (assegnazione ritardata e assegnazione multiblocco) che danno ai driver del filesystem maggiori opportunità di ottimizzare l'uso dello spazio sul disco. Il filesystem ext4 è un compromesso tra la stabilità del codice sei sistemi in produzione e il desiderio di introdurre estensioni ad un filesystem vecchio di almeno un decennio.

JFS è il filesystem con journaling ad alte prestazioni di IBM. JFS è un filesystem leggero, veloce ed affidabile basato su B+Tree con buone prestazioni in varie condizioni.

ReiserFS è un filesystem basato su B+tree che offre ottime prestazioni generali, specialmente nella gestione di una grande quantità di piccoli file, al costo di più cicli di CPU. ReiserFS sembra avere una manutenzione più ridotta degli altri filesystem.

XFS è un filesystem con metadata journaling ricco di caratteristiche interessanti e ottimizzato per una forte scalabilità. XFS sembra essere poco tollerante a vari problemi hardware.

Applicare un filesystem a una partizione

Per creare un filesystem su una partizione o volume, sono disponibili gli strumenti per ogni filesystem possibile:

Filesystem Comando per la creazione
ext2 mkfs.ext2
ext3 mkfs.ext3
ext4 mkfs.ext4
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Per esempio, per avere la partizione di boot (/dev/sda1) ext2 e la partizione root (/dev/sda3) ext3, si usa:

Codice 4.1: Applicare un filesystem su una partizione

# mkfs.ext2 /dev/sda1
# mkfs.ext3 /dev/sda3

Ora si procede alla creazione dei filesystem sulle partizioni (o volumi logici) create precedentemente.

Avvertenza: Se si sta installando su un server Cobalt, ricordare che /dev/sda1 deve essere di tipo EXT2 revision 0; le altre (EXT2 revision 1, EXT3, ReiserFS, XFS, JFS) non funzioneranno. Si può formattare la partizione usando il comando mkfs.ext2 -r 0 /dev/sda1.

Attivare la partizione swap

mkswap è il comando usato per creare e inizializzare le partizioni swap:

Codice 4.2: Inizializzare la partizione swap

# mkswap /dev/sda2

Per attivare la partizione swap, usare swapon:

Codice 4.3: Attivare la partizione swap

# swapon /dev/sda2

Creare e attivare swap con il comando menzionato sopra.

4.e. Montare

Ora che le partizioni sono inizializzate e hanno un filesystem, è il momento di montarle. Usare il comando mount. Non dimenticarsi di creare le necessarie directory di mount per ogni partizione creata. Come esempio si monta la partizione root e boot:

Codice 5.1: Montare le partizioni

# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot

Nota: Se si vuole che /tmp risieda in una partizione separata, assicurarsi di cambiare i permessi dopo il mount: chmod 1777 /mnt/gentoo/tmp. Questo vale anche per /var/tmp.

E' necessario inoltre montare il filesystem proc (una interfaccia virtuale con il kernel) su /proc. Ma prima si devono mettere i file sulle partizioni.

Ora continuare con la Copia dei file di installazione di Gentoo.


[ << ] [ < ] [ Home ] [ > ] [ >> ]


Stampa

Visualizza tutto

Aggiornato il 6 ottobre 2012

La versione originale di questo documento è più recente ed è stata aggiornata il 23 gennaio 2014

Oggetto: Per poter installare Gentoo, bisogna creare le partizioni necessarie. Questo capitolo descrive come partizionare un disco per un suo successivo utilizzo.

Sven Vermeulen
Autore

Grant Goodyear
Autore

Grant Goodyear
Autore

Roy Marples
Autore

Daniel Robbins
Autore

Chris Houser
Autore

Jerry Alexandratos
Autore

Seemant Kulleen
Sviluppo x86

Tavis Ormandy
Sviluppo Alpha

Jason Huebel
Sviluppo AMD64

Guy Martin
Sviluppo HPPA

Pieter Van den Abeele
Sviluppo PPC

Joe Kallar
Sviluppo SPARC

John P. Davis
Redazione

Pierre-Henri Jondot
Redazione

Eric Stockbridge
Redazione

Rajiv Manglani
Redazione

Jungmin Seo
Redazione

Stoyan Zhekov
Redazione

Jared Hudson
Redazione

Colin Morey
Redazione

Jorge Paulo
Redazione

Carl Anderson
Redazione

Jon Portnoy
Redazione

Zack Gilburd
Redazione

Jack Morgan
Redazione

Benny Chuang
Redazione

Erwin
Redazione

Joshua Kinard
Redazione

Stuart Longland
Redazione

Tobias Scherbaum
Redazione

Xavier Neys
Redazione

Joshua Saddler
Redazione

Gerald J. Normandin Jr.
Revisione

Donnie Berkholz
Revisione

Ken Nowack
Revisione

Lars Weiler
Contributi

Marco Mascherpa
Traduzione

Stefano Pacella
Traduzione

Enrico Morelli
Traduzione

Davide Cendron
Traduzione

Sergio Vaccaro
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.