L’abc dell’informatica 1

Il disco fisso, partizioni e file system

discofisso.jpg

Navigando in rete, chiacchierando con amici, chattando su IRC ho osservato che più di 15 anni di monopolio Windows sui sistemi operativi hanno da una parte dato accesso ai PC a molte persone e dall’altra abbassato tragicamente il livello medio di decenza sulle competenze informatiche di base. Le difficoltà riscontrate nell’installazione di sistemi operativi alternativi come GNU/Linux (ma non solo quello!) non sono affatto difficoltà insite nel sistema ma vere e proprie lacune di informatiche di base.

Parto con oggi con una mini serie di guide su questioni elementari. Oggi parlo del disco fisso.

Da un punto di vista logico un disco fisso non è nient’altro che un supporto per la memorizzazione. Tuttavia non è possibile né memorizzare dati in un disco né avviare un sistema operativo se non si effettuano tre procedure:

  1. Partizionamento
  2. Formattazione del filesystem
  3. Installazione di un bootmanager

1. Il partizionamento del disco è il modo in cui il disco viene suddiviso. Immaginate di avere una libreria vuota e dovete riempirla di libri. La libreria è il vostro disco, le partizioni gli scaffali e i libri sono i files.

Per poter posizionare i libri dovete mettere prima gli scaffali. Quanti scaffali prevedete? Ogni scaffale rappresenta una partizione. Potete anche scegliere di non utilizzare NESSUNO scaffale equivalentemente avrete scelto di non partizionare il disco. Nelle macchine con Windows preinstallato tipicamente c’è una sola partizione.

Visto che lo spazio disponibile su un disco non aumenta o diminuisce a seconda del numero delle partizioni chiunque potrebbe chiedersi l’utilità nel suddividerlo, perché farlo? Le possibili risposte sono tante. Per quale motivo abbiamo bisogno di tanti scaffali nella nostra libreria? Magari vogliamo dedicare una sezione della libreria alla narrativa e un’altra ai saggi senza avere tutti i libri mescolati assieme. Questa può essere una risposta: desideriamo fare ordine con i files e destinarli ad una partizione piuttosto che ad un’altra a seconda della loro tipologia.

Con questa logica era nato il partizionamento del disco in partizioni primarie che risale agli albori del PC-XT, quando gli hard disc erano da 20 mega. Ora le esigenze possono essere anche diverse: si può desiderare di partizionare il disco per far spazio a diversi sistemi operativi destinando ad ognuno una partizione. La tabella delle partizioni è interamente contenuta nel primo settore del disco che viene spesso chiamato anche MBR (Master Boot Record).

Dal momento che un solo settore è destinato a tali informazioni è necessario che tali informazioni siano molto concise, per questo motivo esiste un limite per il numero di partizioni di un disco e tale limite è quattro.

E se si ha bisogno di una quinta partizione? Se si volesse piazzare un quinto scaffale? A partire dal DOS 4.01 è stata introdotta una caratteristica che permette di aggirare il problema: le partizioni estesa.

Intendiamoci, le partizioni vere rimangono sempre 4 ma una di queste può essere estesa. Che significa? Vuol dire che in realtà si tratta di una metapartizione che contiene altre partizioni al suo interno; la partizione estesa in realtà non è una vera e propria partizione quanto un “contenitore” per altre partizioni e in questo modo si può superare il limite di quattro imposto dall’MBR. L’MBR vedrà sempre le quattro partizioni e sarà contento per questo, ma una di queste in realtà è un contenitore di altre partizioni.

disco.jpg

Partizionamento del disco secondo il modello DOS

Occorre precisare che anche se grazie al DOS si superava il limite delle quattro partizioni in realtà se introducevano altre limitazioni. Ogni disco non poteva e tuttora non può contenere più di una partizione estesa; come dire che è possibile che solo una delle quattro nicchie della nostra libreria contenga altri scaffali non di più. Le partizioni presenti all’interno di una partizione estesa si chiamano partizioni logiche. Le scelte possibili quindi al momento del partizionamento sono al massimo quattro partizioni di cui al massimo una estesa.

All’interno di una partizione estesa possono esser presenti più partizioni logiche per un massimo di sessanta. Queste scelte fatte al tempo del DOS si ripercuotono essenzialmente su molti sistemi operativi moderni.

2. Una volta che il disco è partizionato non possiamo ancora memorizzare i dati. Il partizionamento infatti è soltanto una suddivisione, nient’altro. Per poter scrivere su un disco, per poter leggere i dati su un disco occorre che ogni partizione sia munita di un filesystem. Che cos’è un filesystem? Dobbiamo stabilire dei criteri su come piazzare i libri sui nostri scaffali. Ben inteso, si possono anche piazzare dei dati selvaggiamente senza un filesystem ma non è assolutamente conveniente.

Io spesso sui CD non sto a mettere nessun filesystem se devo salvare un solo file (tipicamente un DivX) ma già se i file sono due la cosa si complicherebbe.

Sarebbe come piazzare libri senza alcun criterio, come saremo in grado di ritrovarli dopo? Un qualsiasi sistema operativo deve essere in grado di capire in che posizione fisica è allocato un file, in quale settore inizia, quanti ne utilizza altrimenti non sarà in grado di leggerlo dopo averlo memorizzato.

Occorre quindi una struttura, una tecnologia che traduca i settori, i cilindri in spazi logici per la destinazione dei dati. Un filesystem è quindi un criterio, un metodo per posizionare dei files all’interno di una partizione. Su una singola partizione che sia logica o primaria non possono ovviamente coesistere due filesystem diversi.

Per questo motivo se non fosse possibile suddividere un disco in più partizioni non si potrebbero avere due filesystem diversi sullo stesso disco.

La scelta varia a seconda del sistema operativo utilizzato. Spesso, all’interno di un solo sistema è anche possibile scegliere tra diversi filesystem. I sistemi Microsoft utilizzano FAT e NTFS, i sistemi GNU/Linux generalmente ext3 e reiserfs.

Una volta scelta una partizione come si può decidere il filesystem con cui sfruttarla? Tale procedura si chiama formattazione (logica); non si formatta quindi un disco (se non fisicamente, a basso livello magnetizzandolo) ma si formatta una partizione ovvero si traducano specifiche fisiche del disco come tracce e settori in locazioni logiche ovvero in directory.

Dal momento che i sistemi non MS, come GNU/Linux, i BSD, BeOS o OS/2 usano filesystem diversi da Windows è necessario creare opportunatamente delle partizioni sul disco per poterli ospitare.

Diversamente da ext3, reiserfs, ufs (filesystem utilizzati da sistemi opensource) FAT e NTFS (utilizzati da Windows) presentano lo spiacevole inconveniente di frammentarsi molto facilmente e tendono ad occupare in breve tempo tutto lo spazio disponibile anche se la mole di dati è nettamente inferiore alla capacità stessa della partizione in cui risiedono. Per questo motivo capita spesso di dover deframmentare una partizione NTFS o FAT se si desidera rimpicciolirla e recuperare spazio su disco al fine di creare nuove partizioni.

ntfs.jpg

Tipica distribuzione dei dati su un disco fisso con un sistema MS

3. Ogni sistema operativo per poter funzionare deve potersi avviare. Da oramai quasi 25 anni i sistemi operativi risiedono su un supporto ottico o magnetico (floppy, disco rigido, CD o DVD, chiavette USB).

Non è affatto scontato pensare che un OS non debba risiedere in ROM dal momento che viene utilizzato dall’utente per fare altro e non viene alterato durante la sessione di lavoro. Il problema è che se sta in ROM per poterlo cambiare occorre sostituire un componente hardware della macchina.

La presenza del sistema operativo su un dispositivo removibile e/o riscrivibile risponde alla continua necessità di aggiornamenti dei sistemi operativi odierni senza dover al contempo sostituire la macchina. Ma quali sono i passi che consentono l’avvio del sistema operativo? Cosa succede nel momento in cui accendiamo il computer?

All’avvio del PC parte in piccolo programma residente in ROM che fa un controllo dell’hardware presente ma che non carica NESSUN sistema operativo, anzi, al contrario se ne lava le mani e passa la palla ad un supporto removibile o riscrivibile. Che vuol dire?

Il CMOS del BIOS dopo aver fatto i suoi controlli su RAM, dischi e tastiera va ad esempio a leggere l’MBR del disco fisso, per la precisione tipicamente il primo settore del primo disco fisso.

Il sistema operativo parte o meno a seconda di quello che è presente nel primo settore del disco fisso. Nell’MBR pertanto oltre ad esserci la tabella delle partizioni del disco ci deve essere un programma di avvio o che in qualche modo gestisca gli avvii.

Sempre grazie al DOS è possibile marcare solo una delle quattro partizione primarie con l’etichetta “avviabile” (o attiva). Nelle intenzioni iniziali la partizione avviabile era quella che a differenza delle altre conteneva il sistema. L’MBR del disco va quindi a leggere il primo settore della partizione avviabile. Ricapitolando quindi la sequenza è la seguente:

Bios —> MBR del primo disco IDE —> Primo settore della partizione avviabile

A questo punto il primo settore della partizione avviabile non ha più scuse e deve iniziare a caricare il sistema operativo iniziando dal kernel.

GNU/Linux sin dal 92 non volendosi sostituire al DOS ma volendoci convivere ha escogitato una strategia: la presenza di un bootmanager.

Un bootmanager, come dice la parola è un programmino residente nell’MBR che gestisce gli avvii. Il bootmanager deve esser per sua natura molto piccolo perché deve risiedere in un solo settore. Cosa fa il bootmanager?

Sceglie quale sistema lanciare e lo fa in almeno due modi diversi a seconda del sistema utilizzato.

Ad esempio Windows vuole trovarsi (almeno molte sue versioni) nella partizione attiva del primo disco pertanto il bootmanager deve
controllare se il disco dove risiede è il primo e nel caso che non lo sia rimappare il disco, verificare che la partizione che lo contiene è quella avviabile e nel caso che non lo sia cambiare le impostazioni nella tabella delle partizioni, dopo di che andare a leggere il primo settore della partizione Windows.

Per l’avvio di Linux si comporta in modo completamente diverso poiché i sistemi GNU/Linux prevedono di poter convivere basta semplicemente che specifichi la partizione di competenza (il cosidetto rootfs) e l’indirizzo del kernel in modo da poterlo leggere.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...


%d blogger hanno fatto clic su Mi Piace per questo: