Avanti Indietro Indice

2. Partizioni

2.1 Introduzione

Oggi gli hard-disk sono sempre più grandi. Partizionare un hard-disk, ossia suddividerlo in più parti, consente in genere di renderne più pratica ed efficiente la gestione, e permette di avere più sistemi operativi installati sullo stesso pc. In questa parte viene spiegato perché e come partizionare, con le istruzioni d'uso del principale programma Dos, e i trucchi per evitare di fare danno ;-). In particolare vedremo come creare spazio per installare Linux. Si raccomanda di leggere l'intero documento, senza saltare direttamente all'uso dei programmi. (NdA: originariamente questa parte era stata scritta per essere pubblicata su un sito italiano di cui non faccio nome per evitare problemi, il quale fornisce informazioni su Linux, ma che alla fine ha carattere commerciale, e doveva spiegare l'uso di vari programmi Dos e Linux per la completa gestione delle partizioni. Per svariate ragioni, legate ad alcuni disservizi del sito e per una mia decisione di rendere tutto libero e non sottostare ad alcuni vincoli imposti, questo progetto è stato abbandonato, e ora una versione ridotta al solo uso di Fips e Fsresize fa parte di questo Howto).

2.2 Nozioni Generali

Cosa sono le partizioni

Le partizioni, come dice la parola stessa, sono una suddivisione dello spazio disponibile su un hard-disk (in effetti si hanno dei metodi per avere una partizione suddivisa su più hard-disk, tramite i sistemi RAID, ma questo esula dallo scopo di questo documento). Esistono 2 tipi principali di partizioni, quelle primarie e quelle estese. Le partizioni primarie sono quelle da cui i sistemi operativi possono effettuare il boot e contengono un file-system. Le informazioni sul numero e tipo di partizioni sono contenute nella parte finale dell'MBR (Master Boot Record, cilindro 0, lato 0, settore 1 dell'hard-disk), e dato lo spazio ridotto, non è possibile avere più di 4 partizioni primarie. Questo limite impone di usare le partizioni estese per suddividere ulteriormente l'hard-disk. Può esistere una sola partizione estesa su un hard-disk, e se presente il numero di partizioni primarie possibili si riduce a 3 (la somma tra primarie ed estesa non può superare 4). Le partizioni estese non possono contenere file-system, ma servono solo per contenere ulteriori suddivisioni in drive (volumi) logici. Tutte queste suddivisioni devono poi essere identificate: il Dos utilizza l'identificazione tramite lettere dell'alfabeto seguite da ":" (a:, c:, x:, ecc.). Le limitazioni di questo approccio sono evidenti, le lettere sono solo 26... (di cui le prime 2, a: e b: sono riservate ai dispositivi floppy). Oltretutto, l'assegnazione delle lettere è dettata da un astruso algoritmo, per cui basta non caricare, ad esempio, il driver del cd per avere le lettere seguenti scalate di una, o partizionare un secondo hard-disk per vedere completamente scombussolate le lettere delle partizioni del primo. Linux e tutti gli Unix in generale usano invece un metodo più avanzato per indicare le partizioni, tramite 4 caratteri: i primi due indicano il tipo di unità (hd: ide/eide, sd: scsi, fd: floppy), il 3° indica il canale cui è collegato il dispositivo fisico (a per il primary ide, b il secondary, ecc., e in modo equivalente per gli scsi, mentre per i floppy si usano 0 e 1, senza il quarto carattere), e l'ultimo carattere è un numero, che indica il numero della partizione (da 1 a 4 le primarie e le estese, da 5 in poi i volumi logici). Quindi anche se staccate il cd o un hard-disk, perdete solo l'accesso a dette unità, ma non vi cambia l'assegnazione per i drive rimasti. L'MBR contiene un puntatore ad una delle partizioni primarie, detta avviabile. Il firmware del BIOS del pc, dopo il POST (il controllo di sistema fatto all'accensione del pc), passa il controllo all'MBR che lo passa al settore di boot della partizione avviabile o al kernel del sistema operativo. A causa di un difetto nei BIOS, questi non riescono ad accedere a partizioni poste oltre il 1024° cilindro, e ciò può creare problemi a Linux, in particolare a LILO, il boot-loader usato di solito (quindi se partite da un floppy di avvio o usate LOADLIN per partire da DOS, non avete questo problema). Altri problemi con Lilo sono che DEVE essere sul primo canale IDE (quindi su hda o hdb) o se SCSI su ID 0 o 1. Al problema del 1024° cilindro si può ovviare modificando i parametri dell'hard-disk nel BIOS, ad esempio dimezzando i cilindri e raddoppiando le testine o i settori, o creando una partizione più piccola (di solito compresa tra i 16 e i 32 Mbyte), più prossima all'inizio dell'hard-disk, da usare per effettuare il mount della directory "/boot", che contiene il kernel e i moduli. Dopo che il kernel ha preso il controllo del pc, il 1024° cilindro non rappresenta più un problema. In genere, se si crea un'unica partizione di grosse dimensioni, più grande di 1024 cilindri, NON è detto che /boot sia all'inizio, quindi conviene comunque creargli una partizione apposta. In Linux non esistono lettere di unità, come abbiamo detto, ed esiste un unico filesystem, in cui sono presenti anche le altre periferiche hardware del sistema, in genere sotto "/dev". Se vogliamo accedere a un'altra unità (cd, hard-disk, file-system condiviso via NFS), dobbiamo effettuarne l'"innesto" (mount), in un punto del file-system principale (mount point). Questo permette anche di suddividere il file-system principale in più parti (e partizioni), che verranno montate durante la procedura di avvio o secondo necessità. ***NOTA DELL'ULTIM'ORA***: sembra che dalla versione 0.21.4.2 Lilo non avrà più il problema del 1024° cilindro, grazie ad un'apposita patch.

Perché (ri)partizionare: partizioni e buonsenso

Tre sono i motivi principali per cui è bene partizionare un hard-disk:

  1. Organizzazione: permette di suddividere il sistema dalle applicazioni e dai dati; si possono installare diversi sistemi operativi in differenti partizioni; avere i dati in una partizione a sè stante facilità le operazioni di backup e rende più facile la (re)installazione di un sistema operativo; è possibile condividere in rete una partizione contenente dati, senza dare accesso anche al sistema.
  2. Ottimizzazione: si recupera fino al 30/40% di spazio grazie a cluster di dimensioni minori; si può mettere il file di swap di Windows in una partizione dedicata, riducendo la frammentazione (Linux usa addirittura una partizione di swap, più efficiente del semplice file, che comunque è possibile usare); se i dati sono separati, la deframmentazione delle applicazioni è più rapida; si può mantenere una partizione FAT16 per i dati, compatibile con molti sistemi operativi (OS/2, Linux, Windows NT).
  3. Sicurezza: si separano i dati da applicazioni e sistema operativo; una singola partizione può contenere dati riservati, nascondendola con utility apposite o non montandola nel file-system principale; diversi sistemi operativi operano in diverse partizioni, riducendo i danni derivanti da aree comuni; si può testare software instabile con tranquillità; si può mantenere il vecchio sistema operativo fino a quando non ci si sente a proprio agio in quello nuovo (questo è l'uso preferito dai pinguini ;-) ); è possibile mantenere copia dei file di sistema importanti o di un immagine dell'hard-disk per un rapido ripristino.

Quando si vuole installare Linux, nasce la necessità di creargli spazio: i "credenti" piallano senza ritegno le eventuali partizioni esistenti di altri SO, mentre i nuovi "adepti" di solito fannno convivere Linux con Windows finchè non se ne ha più bisogno. Se la quantità di dati presenti nella partizione Windows non è elevata (diciamo che con un gigabyte libero si può avere tutto, anche l'ambiente grafico e di sviluppo, mentre se ci si limita alla sola console a caratteri anche mezzo giga basta, avendo comunque molto più di quello che si ha col semplice DOS, ad esempio server web, DB, email, news e altro), si può cercare di ridurre lo spazio occupato, liberandolo alla fine dell'hard-disk, per poi usare lo spazio vuoto per le partizioni EXT2 (Linux native, type 0x83), e in genere 64 Mbyte per la partizione di swap (Linux swap, type 0x82, si va da un minimo utile di 16 a un massimo consentito di 128 per i kernel 2.0.xx, mentre i kernel 2.2.xx consentono un massimo di 2 Gbyte). Un esempio tipico di partizioni per Linux è il seguente:

Altre partizioni che potrebbero essere utili sono:

Filesystem

Il disco durante la formattazione viene suddiviso in settori e tracce: possiamo immaginare le tracce come delle corone circolari concentriche di disco, mentre i settori sono degli spicchi di disco. Usando settore e traccia come coordinate è possibile individuare un blocco, l'unità più piccola indirizzabile su un disco. A questo tipo di suddivizione fanno eccezione i cdrom e i nastri: entrambi usano un tipo di organizzazione sequenziale, i nastri per ovvie ragioni, mentre i cdrom perché sono organizzati in una lunghissima spirale (veramente lo sono solo i cd-r e cd-rw, per facilitare il percorso del laser, per i cdrom normali è leggermente diverso). Nel caso dei cdrom però, la presenza di un filesystem (di solito iso9660, magari arricchito con estensioni joliet nei sistemi microsoft o rock-ridge nei sistemi linux, per gestire nomi e path lunghi, o i permessi) permette di accedervi in lettura in maniera diretta e casuale, come sui normali dischi magnetici. Un filesystem è un sistema per organizzare i file nei dispositivi in modo da avere un accesso diretto, senza il vincolo della sequenzialità. Un filesystem quindi contiene file, mantenendo un elenco di essi e della loro posizione sul disco, eventualmente (quasi sempre...) suddivisi in più settori del dispositivo. L'organizzazione è gerarchica, specie in Unix, l'insieme di sistemi operativi di cui Linux fa parte: esiste un punto d'innesto principale ("/", root), a cui sono collegati altri punti di innesto secondari e così via. Questi punti di innesto si chiamano directory, e non necessariamente devono risiedere sullo stesso disco o addirittura sullo stesso computer. Infatti Unix permette di "montare" (agganciare o innestare) al filesystem principale altri filesystem, locali o remoti, che al termine devono essere smontati per poter essere eventualmente rimossi, ad esempio per floppy e cdrom. L'operazione di "unmount" (smontaggio) di un dispositivo effettua inoltre il "sync" (sincronizzazione) del suo contenuto, garantendo l'integrità dei dati. Infatti Unix non scrive immediatamente le modifiche effettuate, ma aspetta che altri processi più importanti rilascino risorse (tempo e % di occupazione della cpu) per effettuare il sync. Le directory possono contenere altre directory o file. Esiste quindi un'organizzazione ad albero, e per indicare un file se ne specifica il suo "path" (percorso) all'interno del filesystem principale, partendo da "/" e separando ogni nodo (directory) con il simbolo "/", ad esempio: /home/utente/testi/tesi.txt . Il filesystem Unix permette inoltre di avere informazioni aggiuntive sulla natura del file, tipo permessi di lettura, scrittura ed esecuzione, utente e gruppo proprietario, e genere del file in questione. Per sapere il tipo di file, basta dare "ls -la" e guardare il primo carattere della riga del file in questione, ad esempio:


..........
drwxr-xr-x   2 utente   gruppo   1024 Mar 23   1999   docs
-rw-------   2 utente   gruppo   1024 Apr 12   2000   testo
..........

elenco dei tipi di file (in base al primo carattere):

Le periferiche o dispositivi a caratteri permettono di accedervi solo un carattere alla volta (es: console, porta seriale, ecc.), mentre quelle a blocchi permettono di accedervi solo a blocchi di dimensioni stabilite (es: dischi). Solo quest'ultimo tipo di periferiche o dispositivi possono contenere un filesystem. Da notare che non necessariamente, per il solo fatto di essere un dispositivo a blocchi, un disco deve contenere un filesystem. Un disco può comunque essere usato alla "vecchia maniera" sequenziale: infatti un disco senza filesystem è solo una serie di settori a partire dalla prima testina del primo cilindro. In questo senso, a volte si utilizzano i dischi come se fossero nastri, registrando e rileggendo i dati nella stessa sequenza naturale di settori, testine e cilindri. Tipici esempi sono i dischetti di avvio con l'immagine del kernel o i dischi di archivio multivolume creati da tar. Ricordate che i dischi senza filesystem non possono essere montati normalmente, ma necessitano del cosiddetto "loopback device", compilato insieme al kernel. Le partizioni di swap sono gestite a blocchi, senza filesystem.

La maggior parte delle distribuzioni Unix e Linux seguono il Filesystem Structure Standard ("FSSTND", ora evolutosi in "FHS", Filesystem Hierarchy Standard), in modo da garantire una certa uniformità o comparibilità. Il FSSTND parte dall'idea di separare i file locali alla macchina da quelli condivisi (in rete locale o altro), e quelli a sola lettura da quelli accessibili anche in scrittura. Vediamo alcuni punti del FSSTND:

2.3 Prerequisiti generali

Prima di tutto createvi un dischetto di boot con un minimo di utility d'emergenza. Inserite un floppy da 1.44" vuoto e dal prompt date il comando:


format a:/u/s

Alla fine copiateci dentro dalla directory c:\windows\command oppure c:\dos i file:


fdisk.exe, format.com e sys.com

Prima di iniziare (escludiamo naturalmente il ripartizionamento distruttivo e il caso di hard-disk nuovo o comunque vuoto, nel cui caso si può procedere come esposto nella prima parte), l'hard-disk va preparato. Prima di tutto è bene controllare che non ci siano errori sul disco, con (in ordine dal programma peggiore al migliore) Chkdsk, Scandisk, Ndd (Norton Disk Doctor). I primi due fanno parte del Dos (scandisk dalla versione 6, mi sembra), il terzo fa parte delle Norton Utilities. DOVETE fare il test della superficie, è per essere sicuri che non ci siano settori danneggiati, o almeno che essi vengano individuati e annotati nella FAT.

Poi un bel backup, che male non fa mai, quindi cogliete l'attimo e salvatevi le cose importanti (anche nel caso di più partizioni di cui una dedicata apposta ai dati, conviene sempre fare un backup su floppy, zip o meglio CD-R o CD-RW).

Ancora, opzionalmente, una bella passata di antivirus non farebbe male, l'importante è che lo lanciate da floppy DOPO AVER SPENTO il pc (non semplicemente ctrl-alt-canc). Naturalmente l'antivirus DEVE essere aggiornato frequentemente e serve a poco installarlo su un pc già infetto, per questo lo si deve installare su un pc SICURAMENTE sano e crearsi i dischetti di emergenza al più presto (chiaramente se aggiornate l'antivirus sul pc dovete ricreare i dischetti).

Se non vengono segnalati errori, si procede alla deframmentazione. ALT! Credevate di cavarvela così facilmente? Allora non conoscete il Dos (e il suo figlio illeggittimo Windows ;-) )! Se avete solo il Dos potrebbe (POTREBBE) andarvi anche bene, ma con Windows e' tutto un altro paio di maniche. Vediamo i possibili problemi:


attrib -r -s -h image.idx" oppure "attrib -r -s -h mirorsav.fil

e poi cancellateli normalmente.


cd \
dir /s /b /a:h >>t.bat
dir /s /b /a:s >>t.bat
edit t.bat

IMPORTANTE: prima di procedere, eliminate dal file "t.bat" TUTTE le righe che riportano "c:\io.sys" e "c:\msdos.sys" oppure "c:\ibmbio.com" e "c:\ibmdos.com" (dovrebbero esserci 2 righe per ognuno dei file elencati). Se saltate questo punto e deframmentate, è probabile che al riavvio il sistema non parta più (se comunque dovesse succedere, se avete creato il disco di avvio come vi ho detto prima basta che partiate con quello e diate "a:sys c:" dal prompt). Sostituite nel file "t.bat" tutte le occorrenze di "c:\" con "attrib -r -s -h c:\", uscite da Edit salvando e lanciate dal prompt il file "t.bat". Questo elimina gli attributi che potrebbere creare problemi a Defrag.

A questo punto partite in modalità provvisoria e deframmentate, finalmente! Un ultimo consiglio: quando Defrag ha finito il suo lavoro, anche se la procedura può sembrare poco ortodossa, conviene aspettare una decina di secondi e se la luce dell'hard-disk non da segni di vita (non dovrebbe, non essendoci niente in background né attiva la memoria virtuale) conviene RESETTARE, invece di chiudere Defrag e Sessione per riavviare. Questo perché Windows in fase di chiusura potrebbe andare a riscrivere nella zona appena deframmentata (esperienza personale). ATTENZIONE: io ho eseguito questa procedura più volte senza riscontrare problemi, nemmeno la partenza di Scandisk, ma il Reset potrebbe causare danni al file-system esistente se non anche all'hard-disk in rari casi. Il sottoscritto non si assume alcuna responsabilità per eventuali danni provocati da questa procedura: se temete di fare danno chiudete normalmente Windows e incrociate le dita (d'altronde, tutta la procedura di mettere mano al file-system è pericolosa, quindi...).

Ancora una cosa: il Dos standard stabilisce che non ci sia più di una partizione primaria, anche se nella pratica ciò è tollerato e permette di realizzare un sistema multiboot come ho esposto all'inizio.

2.4 FIPS

Introduzione

Fips e' un programma molto potente, che permette di ridurre le dimensioni delle partizioni primarie FAT (Fips 1.5 e 2.0) e FAT32 (solo Fips 2.0). Fips riduce lo spazio di una partizione PRIMARIA modificando alcuni valori nella Tavola delle Partizioni e nel settore di boot, creando nello spazio che rimane vuoto una nuova partizione PRIMARIA (NON formattata, quindi se vi serve di nuovo per Dos/Windows, dovete formattarla, mentre se vi serve per Linux potete o cambiarle l'identificativo con fdisk DI LINUX o eliminarla per poi creare le partizioni che servono da Linux, come esposto nella prima parte). Per questo Fips NON funziona su partizioni estese, ma solo su quelle primarie, e funziona solo se NON avete già raggiunto il limite di 4 partizioni primarie per hard-disk. Fips non cambia la dimensione dei cluster né il tipo di FAT della partizione originaria, mentre per quella nuova i cluster saranno generati in base alla dimensione della partizione, come fa usualmente Format, tranne se si ha una FAT32, nel cui caso i cluster saranno di 4 kbyte.

Prerequisiti all'uso di FIPS

Preparate il dischetto come spiegato prima e dalla directory dove avete scompattato Fips copiateci dentro i file:


restorrb.exe, fips.exe e errors.txt.

Leggere tutte le istruzioni generali date in precedenza. ATTENZIONE: se usate Stacker/Superstor/DoubleSpace per comprimere una parte del vostro hard-disk, o se usate On Track Disk Manager o EZdrive per estendere le capacità di riconoscimento degli hard-disk eide da parte dei vecchi bios, o ancora nel caso di hard-disk SCSI, leggete il file SPECIAL.txt che accompagna Fips e gli altri documenti.

Uso di FIPS

Infilate il floppy preparato prima e riavviate il pc. Al prompt lanciate Fips, il quale dopo aver controllato di non essere in ambiente multitasking incomincerà a controllare quanti hard-disk ci sono nel pc, permettendo di scegliere, poi mostra la tabella delle partizioni dell'hard-disk scelto, effettua il controllo del settore principale e nel caso di più partizioni primarie, permette di scegliere quella su cui operare. Mostra quindi il settore di avvio della partizione scelta, fa degli altri controlli e verifica che le due copie della FAT siano congruenti, poi verifica lo spazio vuoto alla fine della partizione. In ognuno di questi casi, se viene riscontrato un errore, Fips esce al prompt fermandosi e segnalando l'errore riscontrato. Viene chiesto quindi di salvare lo stato attuale della tabella delle partizioni sul floppy, per poter tornare indietro in caso di errori. FATELO! Se tutto va bene, viene permesso di ridimensionare la partizione in modo visuale, tramite i tasti cursore. Quando avete raggiunto una situazione accettabile, premete Invio. Fips rifà di nuovo tutti i controlli, vi mostra la nuova tabella delle partizioni e vi chiede se volete continuare, premendo "C". Fips rifà ancora tutti i controlli (pignolo, eh? ;-) ) e vi chiede se volete scrivere la nuova tabella delle partizioni su disco. Se premete "Y" essa viene scritta sul disco e ritornate al prompt. Tutto fatto! Ora RIAVVIATE il pc per rendere attivi i cambiamenti e verificate il tutto. NON fate niente sul disco prima di aver riavviato. Se qualcosa non vi soddisfa, ripristinate la situazione precedente ripartendo dal dischetto su cui avete salvato la tabella delle partizioni (perché l'avete fatto, vero? ;-) ) usando "restorrb". Controllate di nuovo la vecchia partizione con Scandisk o altro, riavviate il pc per vedere che parta come prima. Per usare la partizione sotto Dos o Windows, oppure per suddividerla ancora, DOVETE prima formattarla (ATTENZIONE alle lettere, sicuramente sono cambiate!). Per usarla sotto Linux, usate il suo fdisk per cambiarle l'ID di tipo da FAT a Linux Native o Linux Swap, e usate MKFS per creare un file-system EXT2. Dovreste a questo punto essere a posto (più o meno, fino a quando la metà oscura del vostro hard-disk (Dos/Win) non sarà stata eliminata ;-) ).

2.5 FSRESIZE

Fsresize è un tool per Linux abbastanza recente (attualmente in versione 0.08) che permette di modificare le dimensioni delle partizioni FAT16 e 32 in modo veloce e senza bisogno di deframmentare prima il file-system. Ha quindi grosse potenzialità, ma alcuni pesanti difetti: infatti, poichè non può cambiare il tipo di FAT in uso, il numero di cluster deve rimanere costante, e in caso di allargamento della partizione il numero non può eccedere quello stabilito dalla FAT (es.: se anche aveste 4 GB liberi, ma usate FAT16, non potete avere una partizione di più di 2 GB). Prima di usarlo, valgono sempre le considerazioni fatte in precedenza, fate un dosfsck o una scandisk e un bel backup. Esempi d'uso (tratti dalla man page):


fsresize /dev/hda9 -i

mostra delle informazioni sulla partizione specificata


fsresize /dev/hda2 324M --backup=dosc.backup

esegue il resize della partizione specificata impostandola a 324 MB e facendo il backup nel file indicato


fsresize /dev/hda1 5654k

esegue il resize della partizione specificata impostandola a 5654 KB senza fare il backup


fsresize /dev/hda3 2545

esegue il resize della partizione specificata impostandola a 2545 KB senza fare il backup (se non si specifica M o m, oppure K o k, il default è k, per kilobytes)


fsresize /dev/hda5 --restore dosd.backup

ripristina la partizione specificata a partire dal file indicato

Usate SEMPRE l'opzione --backup, che in caso di errori permette tramite --restore di ripristinare il tutto. È possibile che LILO non funzioni al riavvio, quindi prima di riavviare date /sbin/lilo da root per risistemarlo.


Avanti Indietro Indice