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.