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

I sistemi Itanium usano EFI per avviarsi, la Extensible Firmware Interface. Il formato di tabella delle partizioni che viene riconosciuto da EFI è GPT, o GUID Partition Table. Il programma per la gestione delle partizioni che riconosce GPT è parted e questo è lo strumento che si utilizza in seguito. Inoltre EFI è in grado di leggere solo partizioni FAT, quindi tale è il formato da utilizzarsi per la partizione di boot EFI, mentre il kernel viene installato da elilo.

Memorizzazione avanzata dei dati

I CD di Installazione ${arch} forniscono anche supporto per LVM2. LVM2 aumenta la flessibilità della propria configurazione di partizioni. Durante le istruzioni di installazione ci si concentra sulle partizioni tradizionali ma è opportuno sapere che anche LVM2 è supportato.

1.  Impostare uno schema di partizionamento

Schema di partizionamento predefinito

Se non si è interessati a elaborare uno schema di partizionamento per il sistema, si può usare quello di questo Manuale:

Partizione Filesystem Grandezza Descrizione
/dev/sda1 vfat 32M Partizione di boot EFI
/dev/sda2 (swap) 512M Partizione swap
/dev/sda3 ext3 Resto dello spazio su disco Partizione di root

Se si è interessati ad avere informazioni su quanto dovrebbe essere grande una partizione primaria (o volume logico), o anche su quante partizioni si ha bisogno, seguono alcuni suggerimenti. Altrimenti continuare con il partizionamento del disco.

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. E' importante che /usr sia grande a sufficienza, perchè contiene oltre a tutte le applicazione anche l'archivio di Portage che occupa da solo 500MB, esclusi i sorgenti.

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.

Come esempio di partizionamento, ecco quello di un disco da 20Gb, usato come un laptop di dimostrazione (contenente webserver, mailserver, gnome, ...):

Codice 1.1: Esempio di uso del filesystem

$ df -h
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext3    509M  132M  351M  28% /
/dev/sda2     ext3    5.0G  3.0G  1.8G  63% /home
/dev/sda7     ext3    7.9G  6.2G  1.3G  83% /usr
/dev/sda8     ext3   1011M  483M  477M  51% /opt
/dev/sda9     ext3    2.0G  607M  1.3G  32% /var
/dev/sda1     ext2     51M   17M   31M  36% /boot
/dev/sda6     swap    516M   12M  504M   2% <not mounted>
(Spazio non partizionato per uso futuro: 2 Gb)

/usr è quasi pieno (83% dello spazio già in uso), ma una volta installato tutto il software, non cresce molto. Sebbene allocare diversi GigaByte per /var può sembrare eccessivo è opportuno ricordare che Portage utilizza questa locazione per compilare i pacchetti. Se si desidera mantenere /var su una dimensione ragionevole di 1GB è necessario modificare la variabile PORTAGE_TMPDIR in /etc/portage/make.conf in modo da farla puntare ad una partizione grande a sufficienza per compilare grossi software, quali OpenOffice.

1.  Utilizzare parted per partizionare il disco

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

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

Cambiare le partizioni in base alle proprie impostazioni.

Vedere la disposizione delle partizioni

parted è lo strumento GNU per la gestione delle partizioni. Eseguire parted sul proprio disco (nell'esempio si utilizza/dev/sda):

Codice 1.1: Eseguire parted

# parted /dev/sda

Una volta in parted, viene visualizzata una schermata di questo genere:

Codice 1.1: Prompt di parted

GNU Parted 1.6.22
Copyright (C) 1998 - 2005 Free Software Foundation, Inc.
This program is free software, covered by the GNU General Public License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

Using /dev/sda
(parted)

A questo punto uno dei comandi disponibili è help, utile per visualizzare tutti gli altri comandi disponibili. Un altro comando è print che serve a mostrare l'attuale partizionamento del disco in esame:

Codice 1.1: Un esempio di partizionamento

(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017    203.938  fat32                             boot
2        203.938   4243.468  linux-swap
3       4243.469  34724.281  ext3

Questa particolare configurazione è molto simile a quella raccomandata in precedenza. Notare sulla seconda linea che il tipo di tabella è GPT. Nel caso fosse differente, il sistema ia64 non sarebbe in grado di avviare da questo disco. Nel corso di questa guida vengono rimosse tutte le partizioni e create nuovamente.

Rimuovere tutte le partizioni

Nota: Al contrario di fdisk ed altri programmi per le partizioni che ritardano l'applicazione dei cambiamenti fino a che non viene ordinato di scrivere sul disco, il comandi di parted hanno effetto immediato. Quindi una volta che si comincia ad aggiungere e rimuovere partizioni, non si può semplicemente uscire senza applicare i cambiamenti, perchè sono già attivi.

Il modo più semplice di rimuovere tutte le partizioni ed iniziare da capo, operazione che garantisce l'utilizzo del tipo corretto di tabella, è di creare una nuova tabella della partizioni con il comando mklabel. Una volta fatto questo si ha a disposizione una nuova tabella delle partizioni in formato GPT.

Codice 1.1: Creazione di una nuova tabella

(parted) mklabel gpt
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags

Ora che la tabella è vuota, si è pronti a creare le partizioni. Come esempio, si fa riferimento allo schema di partizionamento visto precedentemente: non si deve seguire queste istruzioni alla lettera se non si desidera implementare lo stesso schema.

Creazione della partizione di avvio EFI

Innanzitutto si crea una piccola partizione di avvio EFI. E' importante che essa sia un filesystem FAT perchè il firmware ${arch} sia in grado di leggerla. Nell'esempio viene create di 32MB che è più che sufficiente per contenere i kernel e la configurazione di elilo. Ciascun kernel ${arch} occupa circa 5MB quindi questa configurazione lascia comunque modo di lavorare agevolmente e sperimentare.

Codice 1.1: Creazione della partizione di avvio

(parted) mkpart primary fat32 0 32
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017     32.000  fat32

Creare la partizione swap

Si procede ora alla creazione della partizione di swap. La dimensione classica della partizione di swap è il doppio della RAM presente sul sistema. Nei sistemi moderni con memoria abbondante questo non è più necessario. Per la maggior parte dei sistemi desktop una partizione di 512MB è più che sufficiente. Per un server si può riservare qualcosa di più a seconda dello scopo della macchina.

Codice 1.1: Creazione della partizione di swap

(parted) mkpart primary linux-swap 32 544
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017     32.000  fat32
2         32.000    544.000

Creare la partizione root

Si crei infine la partizione di root. La configurazione in considerazione alloca per tale partizione il resto del disco. In questo esempio si utilizza ext3 ma è possibile scegliere anche ext2, jfs, reiserfs o xfs se lo si desidera. Il filesystem vero e proprio non viene creato subito, ma la partizione contiene informazioni a proposito del filesystem contenuto nella partizione ed è bene impostare la tabella in modo corretto.

Codice 1.1: Creazione della partizione di root

(parted) mkpart primary ext3 544 34732.890
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017     32.000  fat32
2         32.000    544.000
3        544.000  34732.874

Uscire da parted

Per uscire da parted eseguire quit. Non c'è bisogno di provvedere all'applicazione delle impostazioni definite perchè sono già state salvate. Parted ricorda infine di aggiornare il proprio /etc/fstab, cosa che viene fatta successivamente.

Codice 1.1: Uscire da parted

(parted) quit
Information: Don't forget to update /etc/fstab, if necessary.

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 str umenti per ogni filesystem possibile:

Filesystem Comando per la creazione
vfat mkdosfs
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 in questo esempio) vfat e la partizione di root (/dev/sda3 in questo esempio) ext3, si usa:

Codice 1.1: Applicare un filesystem su una partizione

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

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 i comandi illustrati.

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. Nell'esempio ecco come montare le partizioni root e boot:

Codice 1.1: Montare la partizione di root

# mount /dev/sda3 /mnt/gentoo

Nota: Al contrario di alcune delle altre architetture supportate da Gentoo, /boot non viene montata su ia64. Il motivo è che la partizione di avvio EFI viene automaticamente montata e scritta dal comando elilo ogni volta che viene lanciato. Per questo /boot risiede sul filesystem di root ed è il luogo in cui vengono conservati i kernel a cui la configurazione di elilo fa riferimento.

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 intefaccia 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).

Aggiornato il 6 ottobre 2012

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.