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. Sui sistemi Alpha, queste parti sono chiamate partizioni.

4.b. Impostare uno schema di partizionamento

Schema di partizionamento predefinito

Come esempio si segue il seguente schema di partizioni:

Partizione Descrizione
/dev/sda1 Partizione swap
/dev/sda2 Partizione root
/dev/sda3 Intero disco (richiesto)

Se si è interessati ad avere informazioni su quanto dovrebbe essere grande una partizione, o anche su quante partizioni (o volumi) si ha bisogno, seguono alcuni suggerimenti. Altrimenti continuare con Usare fdisk per partizionare il disco (solo SRM) o Usare fdisk per partizionare il disco (solo ARC/AlphaBIOS).

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), ecc.

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 per partizionare il disco (solo SRM)

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

Partizione Descrizione
/dev/sda1 Partizione swap
/dev/sda2 Partizione root
/dev/sda3 Intero disco (richiesto)

Cambiare le partizioni in base alle proprie impostazioni.

Identificare i dischi disponibili

Per vedere quali sono i dischi che si stanno usando, usare i seguenti comandi:

Codice 3.1: Identificare i dischi disponibili

# dmesg | grep 'drive$'        (Per dischi IDE)
# dmesg | grep 'scsi'          (Per dischi SCSI)

Da questo output dovreste vedere quali dischi sono stati rilevati e il loro rispettivo /dev. Nelle parti seguenti si assume che il disco è SCSI su /dev/sda.

Aprire fdisk:

Codice 3.2: Aprire fdisk

# fdisk /dev/sda

Rimuovere tutte le partizioni

Se il disco è completamente vuoto, allora si dovrà prima creare una etichetta BSD.

Codice 3.3: Creare una etichetta BSD

Command (m for help): b
/dev/sda contains no disklabel.
Do you want to create a disklabel? (y/n) y
Saranno mostrate alcune informazioni del disco
3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  c:        1      5290*     5289*    unused        0     0

Si comincia con eliminare tutte le partizioni tranne quella 'c' (un requisito per le etichette BSD). La parte seguente mostra come eliminare una partizione (nell'esempio si usa 'a'). Ripetere il processo per eliminare tutte le altre partizioni (di nuovo, tranne la 'c').

Usare p per vedere tutte le partizioni esistenti. d è usato per eliminare una partizione.

Codice 3.4: Eliminare una partizione

BSD disklabel command (m for help): p

8 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  a:        1       235*      234*    4.2BSD     1024  8192    16
  b:      235*      469*      234*      swap
  c:        1      5290*     5289*    unused        0     0
  d:      469*     2076*     1607*    unused        0     0
  e:     2076*     3683*     1607*    unused        0     0
  f:     3683*     5290*     1607*    unused        0     0
  g:      469*     1749*     1280     4.2BSD     1024  8192    16
  h:     1749*     5290*     3541*    unused        0     0

BSD disklabel command (m for help): d
Partition (a-h): a

Dopo aver ripetuto questo processo per tutte le partizioni, si dovrebbe vedere un elenco come questo:

Codice 3.5: Vedere uno schema vuoto

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  c:        1      5290*     5289*    unused        0     0

Creare la partizione swap

Sui sistemi Alpha non si ha bisogno di una partizione separata di boot. Tuttavia, il primo cilindro non può essere usato poichè l'immagine di aboot sarà messa lì.

Sarà creata una partizione swap partendo dal terzo cilindro, per una grandezza totale di 1 GB. Usare n per creare una nuova partizione. Dopo averla creata, si cambierà il suo tipo a 1 (uno), cioè swap.

Codice 3.6: Creare la partizione swap

BSD disklabel command (m for help): n
Partition (a-p): a
First cylinder (1-5290, default 1): 3
Last cylinder or +size or +sizeM or +sizeK (3-5290, default 5290): +1024M

BSD disklabel command (m for help): t
Partition (a-c): a
Hex code (type L to list codes): 1

Dopo questi passi si dovrebbe vedere uno schema simile al seguente:

Codice 3.7: Partizioni dopo aver creato la partizione swap

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  a:        3      1003      1001       swap
  c:        1      5290*     5289*    unused        0     0

Creare la partizione root

Sarà creata la partizione root, partendo dal primo cilindro dopo la partizione swap. Usare il comando p per vedere dove finisce la partizione swap. In questo esempio, finisce a 1003, e così la partizione root comincierà a 1004.

Un altro problema è che c'è attualmente un bug in fdisk, il quale pensa che il numero dei cilindri disponibili sia uno in più rispetto al reale numero di cilindri. In altre parole, quando si chiederà il numero dell'ultimo cilindro, si deve diminuire il numero del cilindro (nell'esempio: 5290) di uno.

Dopo aver creato la partizione, cambiare il tipo a 8, per ext2.

Codice 3.8: Creare la partizione root

D disklabel command (m for help): n
Partition (a-p): b
First cylinder (1-5290, default 1): 1004
Last cylinder or +size or +sizeM or +sizeK (1004-5290, default 5290): 5289

BSD disklabel command (m for help): t
Partition (a-c): b
Hex code (type L to list codes): 8

Lo schema dovrebbe essere simile a questo:

Codice 3.9: Vedere lo schema

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  a:        3      1003      1001       swap
  b:     1004      5289      4286       ext2
  c:        1      5290*     5289*    unused        0     0

Salvare lo schema delle partizioni e uscire

Salvare fdisk digitando w. Questo salverà anche lo schema delle partizioni.

Codice 3.10: Salvare ed uscire da fdisk

Command (m for help): w

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

4.d. Usare fdisk per partizionare il disco (solo ARC/AlphaBIOS)

La parte seguente spiega come partizionare un disco con uno schema di partizioni simile a quello descritto precedentemente:

Partizione Descrizione
/dev/sda1 Partizione boot
/dev/sda2 Partizione swap
/dev/sda3 Partizione root

Cambiare lo schema di partizioni in base alle proprie preferenze.

Identificare i dischi disponibili

Per vedere quali sono i dischi che si stanno usando, usare i seguenti comandi:

Codice 4.1: Identificare i dischi disponibili

# dmesg | grep 'drive$'        (Per dischi IDE)
# dmesg | grep 'scsi'          (Per dischi SCSI)

Da questo output dovreste vedere quali dischi sono stati rilevati e il loro rispettivo /dev. Nelle parti seguenti si assume che il disco è SCSI su /dev/sda.

Aprire fdisk:

Codice 4.2: Aprire fdisk

# fdisk /dev/sda

Rimuovere tutte le partizioni

Se il disco è completamente vuoto, allora si dovrà prima creare una etichetta DOS.

Codice 4.3: Creare una etichetta DOS

Command (m for help): o
Building a new DOS disklabel.

Si comincia con eliminare tutte le partizioni. Il seguente esempio mostra come eliminare una partizione (nell'esempio la '1'). Ripetere il processo per eliminare tutte le altre partizioni.

Usare p per vedere tutte le partizioni esistenti. Per eliminare una partizione si usa d.

Codice 4.4: Eliminare una partizione

command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         478      489456   83  Linux
/dev/sda2             479        8727     8446976    5  Extended
/dev/sda5             479        1433      977904   83  Linux Swap
/dev/sda6            1434        8727     7469040   83  Linux

command (m for help): d
Partition number (1-6): 1

Creare la partizione boot

Sui sistemi Alpha che usano MILO per avviarsi, si deve creare una piccola partizione boot vfat.

Codice 4.5: Creare la partizione boot

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-8727, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-8727, default 8727): +16M

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

Creare la partizione swap

Si creerà una partizione di swap con una dimensione totale di 1 GB. Usare n per creare una nuova partizione.

Codice 4.6: Creare la partizione swap

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (17-8727, default 17): 17
Last cylinder or +size or +sizeM or +sizeK (17-8727, default 8727): +1000M

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)

Dopo questi passi si dovrebbe vedere uno schema simile al seguente:

Codice 4.7: Partizioni dopo aver creato la partizione swap

Command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap

Creare la partizione root

Si creerà la partizione root. Si usa il comando n.

Codice 4.8: Creare la partizione root

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (972-8727, default 972): 972
Last cylinder or +size or +sizeM or +sizeK (972-8727, default 8727): 8727

Dopo questi passi si dovrebbe vedere uno schema simile al seguente:

Codice 4.9: Partizioni dopo aver creato la partizione root

Command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap
/dev/sda3             972        8727     7942144   83  Linux

Salvare lo schema delle partizioni e uscire

Salvare fdisk digitando w. Questo salverà anche lo schema delle partizioni.

Codice 4.10: Salvare ed uscire da fdisk

Command (m for help): w

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

4.e. 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

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.

Nota: aboot supporta il boot solo da partizioni ext2 e ext3.

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 mkfs.reiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Per esempio, per avere la partizione root (/dev/sda2 nell'esempio) in ext3, si usa:

Codice 5.1: Applicare un filesystem su una partizione

# mkfs.ext3 /dev/sda2

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

Attivare la partizione swap

mkswap è il comando usato per inizializzare le partizioni swap:

Codice 5.2: Creare una signature swap

# mkswap /dev/sda1

Per attivare la partizione swap, usare swapon:

Codice 5.3: Attivare la partizione swap

# swapon /dev/sda1

Creare e attivare swap con il comando menzionato sopra.

4.f. 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 di root:

Codice 6.1: Montare le partizioni

# mount /dev/sda2 /mnt/gentoo

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 (un'interfaccia virtuale con il kernel) su /proc. Ma prima si devono mettere i file sulle partizioni.

Continuare con 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 è necessario creare delle partizioni. Questo capitolo descrive come partizionare un disco.

Sven Vermeulen
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

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.