vai alla Homepage di Apogeonline

 



Cos'è OpenPress
Glossario
Linux-FAQ
Documenti:

Open Source Definition

GNU General Public License

La cattedrale e il bazaar

Colonizzare la noosfera

Il calderone magico


Libri:

Italian crackdown

Open Sources

MediaMorfosi

GTK+/GNOME
sviluppo applicazioni


Telematica per la pace

Linux HOWTO: Installazione e configurazione

Linux HOWTO: Networking


Risorse
Feedback
vai alla Homepage di Apogeo Editore

Vai alla homepage di OpenPress

Linux HOWTO - Installazione e configurazione


Che cos'è una partizione?

Poco dopo che dischi fissi furono inventati, la gente volle installare più di un sistema operativo, anche se disponevano di un solo disco. Nacque così la necessità di un meccanismo che dividesse un singolo disco fisico in tante unità logiche. Quindi ecco cos'è una partizione: un insieme di blocchi contigui sul vostro hard disk che viene trattato dal sistema operativo come se fosse un disco completamente autonomo e separato.

È abbastanza evidente che le partizioni non devono sovrapporsi: un sistema operativo non sarebbe felice se un altro sistema operativo installato sulla stessa macchina gli sovrascrivesse informazioni importanti a causa della sovrapposizione delle due partizioni. Non ci dovrebbe neanche essere dello spazio vuoto tra una partizione e un'altra, in quanto anche se non comporterebbe alcun danno, significherebbe sprecare prezioso spazio su disco lasciandolo inutilizzato.

Un disco non ha bisogno di essere completamente partizionato. Potete decidere di lasciare un po' di spazio alla fine senza assegnarlo ad alcun sistema operativo e, successivamente, quando sarà chiaro quale userete per la maggior parte del tempo, potrete partizionare questo spazio vuoto rimanente e metterci sopra un file system.

Le partizioni non possono essere spostate né ridimensionate senza distruggere il file system che contengono. Il ripartizionamento quindi comporta il backup e il ripristino di tutti i file system coinvolti nel ripartizionamento. In effetti, è molto facile fare dei pasticci durante il ripartizionamento, così dovreste in ogni caso fare una copia di backup di tutto prima ancora di usare cose come fdisk.

Beh, veramente alcuni tipi di partizione che contengono alcuni tipi di file system possono essere divisi in due senza alcuna perdita di dati (se siete fortunati). Per esempio, esiste un programma chiamato ``fips'' per dividere le partizioni MS-DOS in due per far spazio a una partizione Linux senza dover reinstallare MS-DOS. In ogni caso, non andreste a maneggiare queste cose senza aver prima fatto un accurato e completo backup, vero?

I backup sono importanti

I nastri sono molto utili per fare i backup. Sono veloci, affidabili e facili da usare, quindi potrete effettuare il backup spesso, preferibilmente in modo automatico e senza disagi.

Parlando di cassette: quello di cui sto parlando sono i veri nastri, non quelle porcherie pilotate dal controller dei dischetti. Tenete in considerazione SCSI: Linux lo supporta in modo nativo. Non occorre caricare driver ASPI, non sprecate preziosa HMA e una volta che l'adattatore SCSI è installato, potete attaccarci anche dischi, nastri, scanner e CD-ROM. Niente più indirizzi I/O, acrobazie con IRQ né master/slave e livelli PIO da abbinare.

In aggiunta: un buon adattatore SCSI fornisce alte prestazioni di I/O senza occupare troppo la CPU. Anche durante una pesante attività di disco, avrete tempi di risposta molto buoni. Se intendete usare un sistema Linux come un server USENET o se volete entrare nel mercato degli ISP, non pensate nemmeno di impostare un sistema senza SCSI.

Numeri e nomi di device

Il numero di partizioni di un sistema basato su Intel è stato limitato fin dall'inizio: la tabella delle partizioni era installata come parte del settore di boot e aveva spazio solo per 4 partizioni. Queste partizioni adesso sono chiamate partizioni primarie. Quando divenne chiaro che la gente voleva più partizioni nei loro sistemi, sono state inventate le partizioni logiche. Il loro numero non è limitato: ogni partizione logica contiene un puntatore alla prossima, così da avere una catena potenzialmente illimitata di partizioni.

Per ragioni di compatibilità, lo spazio occupato da tutte le partizioni logiche deve essere tenuto in conto. Se state usando partizioni logiche, una partizione primaria viene marcata come ``partizione estesa'' e il suo blocco di inizio e di fine segnano l'area occupata dalle partizioni logiche in essa contenute. Questo implica che lo spazio assegnato a tutte le partizioni logiche deve essere contiguo. Ci può essere solo una partizione estesa per disco: nessun programma fdisk può creare più di una partizione estesa.

Linux non può gestire più di un limitato numero di partizioni per disco. Così in Linux potrete avere 4 partizioni primarie (3 delle quali usabili, se state usando partizioni logiche) e al massimo 15 partizioni totali su un disco SCSI (63 in tutto su un disco IDE)

In Linux, le partizioni sono rappresentate come file di device. Un file di device è un file con tipo c (che sta per ``carattere'', cioè device che non usano un buffer di cache) oppure b (ossia device a ``blocchi'', che passano dal buffer di cache). In Linux, tutti i dischi sono rappresentati solo come device a blocchi. A differenza di altri unix, Linux non offre ``pure'' versioni a caratteri dei dischi e delle loro partizioni.

La sola cosa importante con un file di device sono il suo numero primario e secondario, visualizzato invece delle dimensioni del file:


$ ls -l /dev/hda
brw-rw----   1 root     disk       3,   0 Jul 18  1994 /dev/hda
                                   ^    ^
                                   |    numero secondario di device
                                   numero primario di device
cm
Quando un file di device viene aperto, il numero primario indica quale driver viene usato per effettuare l'operazione di input/output. Alla chiamata viene passato il numero secondario come parametro e spetta al driver l'interpretazione del numero secondario. Di solito la documentazione del driver riporta come viene usato il numero secondario. Per i dischi IDE, questa documentazione è in /usr/src/linux/Documentation/ide.txt. Per i dischi SCSI, ci si aspetterebbe questa documentazione in /usr/src/linux/Documentation/scsi.txt, ma non c'è. Per accertarsene, occorrerebbe leggere il sorgente del driver, (/usr/src/linux/driver/scsi/sd.c:184-196). Fortunatamente, c'è la lista dei numeri e dei nomi di device curata da Peter Anvin in /usr/src/linux/Documentation/devices.txt; vedere le voci per i device a blocchi, primario 3, 22, 33, 34 per i dischi IDE e primario 8 per gli SCSI. Il numero primario e secondario sono un byte ognuno ed è per questo che il numero di partizioni per disco è limitato.

Per convenzione, i file di device hanno determinati nomi e molti programmi di sistema riconoscono questi nomi essendo stati compilati nel loro codice. Si aspettano che i vostri dischi IDE si chiamino /dev/hd* e i dischi SCSI /dev/sd*. I dischi sono numerati come a, b, c e così via, quindi /dev/hda è il primo disco IDE e /dev/sda il primo disco SCSI. Entrambi rappresentano interi dischi, iniziando dal primo blocco. Scrivere su questi device con il programma sbagliato distruggerà il master boot loader e la tabella delle partizioni dei dischi, rendendo così tutti i dati inutilizzabili o facendo sì che il sistema non possa più eseguire il boot. Siate sicuri di quello che fate e, ripeto, copiate su backup prima di farlo.

Le partizioni primarie su un disco sono numerate 1, 2, 3 e 4. Così /dev/hda1 è la prima partizione primaria del primo disco IDE eccetera. Le partizioni logiche hanno numeri che vanno da 5 in su, così /dev/sdb5 è la prima partizione logica del secondo disco SCSI.

Ogni voce nella tabella delle partizioni è contrassegnata da un blocco di inizio, uno di fine, e un tipo. Il tipo è un codice numerico (a un byte) che indica l'appartenenza di quella partizione a un determinato sistema operativo. Per la gioia dei consulenti informatici i codici dei tipi di partizione non sono del tutto univoci, cioè esiste la probabilità che due sistemi operativi usino lo stesso codice.

Linux riserva per le sue partizioni di swap il codice 0x82, e lo 0x83 per il filesystem ``nativo'' (che è ext2 per quasi tutti). L'oramai sorpassato e una volta famoso Linux/Minix filesystem usava il codice 0x81. OS/2 segna le sue partizioni con il tipo 0x07, lo stesso del NTFS di Windows NT. MS-DOS usa diversi codici per i vari tipi di filesytem FAT: 0x01, 0x04 e 0x06. DR-DOS usava il codice 0x81 per indicare partizioni FAT protette, creando una ambiguità con Linux/Minix, ma ormai né Linux/Minix, né DR-DOS vengono largamente usati. Per finire, le partizioni estese che fungono da contenitori per le partizioni logiche hanno codice 0x05.

Le partizioni vengono create e cancellate con il programma fdisk. Ogni sistema operativo che si rispetti viene fornito con una versione di fdisk e per tradizione si chiama proprio fdisk (oppure FDISK.EXE) in quasi tutti i sistemi operativi. Qualcuno di questi fdisk, come ad esempio quello del DOS, mostra qualche limitazione quando ha a che fare con partizioni di altri sistemi operativi. Queste limitazioni includono l'impossibilità di gestire altri tipi di codice, l'impossibilità di trattare numeri cilindro superiori a 1024, e l'impossibilità di creare o gestire partizioni che non terminano esattamente su un cilindro. Per esempio, fdisk di MS-DOS non può cancellare le partizioni NTFS, quello di OS/2 è conosciuto per ``correggere'' senza preavviso le partizioni create con fdisk di Linux che non terminano esattamente sul cilindro e entrambi, sia quello DOS sia quello OS/2, hanno problemi con i dischi che risultano avere più di 1024 cilindri (vedere il Mini-HOWTO ``Large disk'' per i dettagli)


Copyright © 1995-2000 Apogeo srl, Milano