Gentoo Logo

1.  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 conosciute come partizioni o slices.

La prima partizione sul primo disco SCSI è /dev/sda1, la seconda /dev/sda2 e così via.

La terza partizione su sistemi Sun, è una slice speciale: "whole disk". Questa partizione non deve contenere un filesystem.

Gli utenti che hanno usato lo schema di partizioni DOS, dovrebbero notare che le Sun disklabel non hanno partizioni "primarie" e "estese". Invece, sono disponibili otto partizioni per disco, con la terza di queste riservata.

1.  Impostare uno schema di partizionamento

Schema di partizionamento predefinito

Se non si è interessati a elaborare uno schema di partizionamento, la tabella sotto mostra un buon punto di partenza per la maggior parte dei sistemi.

Notare che una partizione separata /boot, non è generalmente raccomandata su SPARC, poichè diventa complicata la configurazione del bootloader.

Partizione Filesystem Dimensione Punto del mount Descrizione
/dev/sda1 ext3 <2 GB / Partizione root. Per sistemi SPARC64 con versioni vecchie di OBP deve essere inferiore a 2GB e la prima partizione sul disco.
/dev/sda2 swap 512 MB nessuno Partizione swap. Per bootstrap e alcune compilazioni più grandi, è richiesta di almeno 512 MB di RAM (inclusa swap).
/dev/sda3 nessuno Whole disk nessuno Partizione Whole Disk. Questa è richiesta sui sistemi SPARC.
/dev/sda4 ext3 almeno 2 GB /usr Partizione /usr. Qui sono installate le applicazioni. Di default questa partizione è usata anche per i dati di Portage (che occupano circa 500 MB escluso il codice sorgente).
/dev/sda5 ext3 almeno 1 GB /var Partizione /var. Usata per i dati generati dai programmi. Portage usa in modo predefinito questa partizione per lo spazio temporaneo mentre compila. Alcune applicazioni più grandi come Mozilla e OpenOffice.org, possono richiedere più di 1 GB di spazio temporaneo quando si compilano.
/dev/sda6 ext3 spazio rimanente /home Partizione /home. Usata per le directory della home degli utenti.

1.  Usare fdisk per partizionare il disco

La parte seguente spiega come creare lo schema di partizione di esempio descritto precedentemente:

Partizione Descrizione
/dev/sda1 /
/dev/sda2 swap
/dev/sda3 whole disk slice
/dev/sda4 /usr
/dev/sda5 /var
/dev/sda6 /home

Cambiare le partizioni come richiesto. Ricordarsi di mantenere la partizione root nei primi 2 GB del disco per i sistemi più vecchi. C'è anche un limite di 15 partizioni per SCSI e SATA.

Eseguire fdisk

Aprire fdisk per il proprio disco:

Codice 1.1: Aprire fdisk

# fdisk /dev/sda

Si visualizzerà un prompt come questo:

Codice 1.1: Prompt di fdisk

Command (m for help):

Digitare p per visualizzare le partizioni disponibili:

Codice 1.1: Elencare le partizioni disponibili

Command (m for help): p

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

   Device Flag    Start       End    Blocks   Id  System
/dev/sda1             0       488    499712   83  Linux native
/dev/sda2           488       976    499712   82  Linux swap
/dev/sda3             0      8635   8842240    5  Whole disk
/dev/sda4           976      1953   1000448   83  Linux native
/dev/sda5          1953      2144    195584   83  Linux native
/dev/sda6          2144      8635   6646784   83  Linux native

Notare il Sun disk label. Se manca, il disco sta usando il partizionamento DOS, non quello Sun. In questo caso, usare s per assicurarsi che il disco abbia una tabella di partizioni Sun:

Codice 1.1: Creare un Sun Disklabel

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

Drive type
   ?   auto configure
   0   custom (with hardware detected defaults)
   a   Quantum ProDrive 80S
   b   Quantum ProDrive 105S
   c   CDC Wren IV 94171-344
   d   IBM DPES-31080
   e   IBM DORS-32160
   f   IBM DNES-318350
   g   SEAGATE ST34371
   h   SUN0104
   i   SUN0207
   j   SUN0327
   k   SUN0340
   l   SUN0424
   m   SUN0535
   n   SUN0669
   o   SUN1.0G
   p   SUN1.05
   q   SUN1.3G
   r   SUN2.1G
   s   IOMEGA Jaz
Select type (? for auto, 0 for custom): 0
Heads (1-1024, default 64):
Using default value 64
Sectors/track (1-1024, default 32):
Using default value 32
Cylinders (1-65535, default 8635):
Using default value 8635
Alternate cylinders (0-65535, default 2):
Using default value 2
Physical cylinders (0-65535, default 8637):
Using default value 8637
Rotation speed (rpm) (1-100000, default 5400): 10000
Interleave factor (1-32, default 1):
Using default value 1
Extra sectors per cylinder (0-32, default 0):
Using default value 0

Si possono trovare i valori corretti nella documentazione del proprio disco. L'opzione 'auto configure' solitamente non funziona.

Rimuovere tutte le partizioni

Si procede ora alla rimozione di tutte le partizioni esistenti. Per fare questo, digitare d e premere invio. Si visualizzerà il numero della partizione che si desidera eliminare. Per rimuovere /dev/sda1 già presente, digitare:

Codice 1.1: Eliminare una partizione

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

Non si dovrebbe rimuovere la partizione 3 (whole disk). Questa è richiesta. Se non esiste, seguire le istruzioni fornite sopra per "Creare un Sun Disklabel".

Dopo aver rimosso tutte le partizioni tranne la Whole disk, si dovrebbe avere uno schema come questo:

Codice 1.1: Schema di partizioni vuoto

Command (m for help): p

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

   Device Flag    Start       End    Blocks   Id  System
/dev/sda3             0      8635   8842240    5  Whole disk

Creare la partizione root

Si procede ora alla creazione della partizione root. Digitare n per creare una nuova partizione, poi 1 per creare la partizione. Quando si visualizza il prompt per il primo cilindro, premere invio. Quando si visualizza il prompt per l'ultimo cilindro, digitare +512M per creare una partizione di 512MB. Assicurarsi che tutta la partizione root sia contenuta nei primi 2 GB del disco. Segue l'output di questi passi:

Codice 1.1: Creare un partizione root

Command (m for help): n
Partition number (1-8): 1
First cylinder (0-8635): (press Enter)
Last cylinder or +size or +sizeM or +sizeK (0-8635, default 8635): +512M

Ora, digitando p si dovrebbe avere una tabella partizionata come questa:

Codice 1.1: Schema di partizioni

Command (m for help): p

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

   Device Flag    Start       End    Blocks   Id  System
/dev/sda1             0       488    499712   83  Linux native
/dev/sda3             0      8635   8842240    5  Whole disk

Creare una partizione swap

Si procede ora alla creazione della partizione swap. Per farlo, digitare n per creare una nuova partizione, poi 2 per creare la seconda partizione, /dev/sda2. Quando si visualizza il prompt per il primo cilindro, premere invio. Quando si visualizza il prompt per l'ultimo cilindro, digitare +512M per creare una partizione di 512MB. Dopo aver fatto questo, digitare t per impostare il tipo di partizione, digitare 82 per impostare il tipo di partizione a "Linux Swap". Finiti questi passaggi, digitando p si dovrebbe avere una tabella partizionata simile a questa:

Codice 1.1: Elenco delle partizioni disponibili

Command (m for help): p

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

   Device Flag    Start       End    Blocks   Id  System
/dev/sda1             0       488    499712   83  Linux native
/dev/sda2           488       976    499712   82  Linux swap
/dev/sda3             0      8635   8842240    5  Whole disk

Creare le partizioni /usr, /var e /home

Infine si creano le partizioni /usr, /var e /home. Digitare n per creare una nuova partizione, poi digitare 4 per creare la terza partizione, /dev/sda4. Quando si visualizza il prompt per il primo cilindro, premere invio. Quando si visualizza il prompt per l'ultimo cilindro, digitare +2048M per creare una partizione di 2 GBs. Ripetere il processo per sda5 e sda6, usando le dimensioni desiderate. Fatto ciò, si dovrebbe vedere qualcosa come questo:

Codice 1.1: Elenco della tabella di partizioni completa

Command (m for help): p

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

   Device Flag    Start       End    Blocks   Id  System
/dev/sda1             0       488    499712   83  Linux native
/dev/sda2           488       976    499712   82  Linux swap
/dev/sda3             0      8635   8842240    5  Whole disk
/dev/sda4           976      1953   1000448   83  Linux native
/dev/sda5          1953      2144    195584   83  Linux native
/dev/sda6          2144      8635   6646784   83  Linux native

Salvare e uscire

Per salvare lo schema delle partizioni e uscire da fdisk, digitare w:

Codice 1.1: Salvare e uscire da fdisk

Command (m for help): w

Ora che le partizioni sono create, si può continuare con la sezione riguardante come Creare i filesystem.

1.  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 ad una partizione. Altrimenti ecco una descrizione dei filesystem disponibili.

Filesystem

Il kernel di Linux supporta diversi tipi di partizione. Seguono le descrizioni di ext2, ext3, ext4, ReiserFS, XFS e JFS, visto che sono i più comuni sui sistemi Linux.

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

Per esempio, per creare la partizione root (/dev/sda1) come ext2, e le partizioni /usr, /var e /home (/dev/sda4, 5 e 6) come ext3, si usa:

Codice 1.1: Applicare un filesystem su una partizione

# mkfs.ext2 /dev/sda1
# mkfs.ext3 /dev/sda4
# mkfs.ext3 /dev/sda5
# mkfs.ext3 /dev/sda6

Attivare la partizione swap

mkswap è il comando usato per inizializzare le partizioni swap:

Codice 1.1: Inizializzare la partizione swap

# mkswap /dev/sda2

Per attivare la partizione swap, usare swapon:

Codice 1.1: Attivare la partizione swap

# swapon /dev/sda2

Creare e attivare swap con il comando menzionato sopra.

1.  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:

Codice 1.1: Montare le partizioni

# mount /dev/sda1 /mnt/gentoo
# mkdir /mnt/gentoo/usr
# mount /dev/sda4 /mnt/gentoo/usr
# mkdir /mnt/gentoo/var
# mount /dev/sda5 /mnt/gentoo/var
# mkdir /mnt/gentoo/home
# mount /dev/sda6 /mnt/gentoo/home

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.

Continuare con la (Copia dei file di installazione di Gentoo).

Aggiornato il 4 settembre 2011

La versione originale di questo documento è più recente ed è stata aggiornata il 17 dicembre 2013

Donate to support our development efforts.

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