martedì 29 luglio 2014

Capacità degli hard disk (e delle pendrive USB)

HDD 1 TB o 931 GiB

Acquistiamo un hard disk da 1000 "Giga", lo installiamo nel PC e ne controlliamo la capacità nel BIOS/UEFI o in Windows. Risultato: 931 "Giga" e spiccioli; dove sono i 69 "Giga" che mancano all'appello?
Acquistiamo una pendrive USB da 32 GB, la inseriamo e Windows vede solo 29,8 "Giga". Forse Windows non rileva correttamente le capacità? Ci ingannano i venditori? La pendrive è difettosa oppure ha parte dello spazio nascosto?

Nulla di tutto ciò, in realtà non manca nulla, è una questione di unità di misura: nell'industria, la capacità dei dispositivi di archiviazione si indica con le unità di misura decimali, invece la maggior parte dei sistemi operativi usa le unità binarie (ma le indica erroneamente con i simboli decimali). La differenza tra lo spazio riportato sull'etichetta del disco e quello rilevato dal sistema operativo (o dal BIOS/UEFI) è solo apparente ed è dovuta al fatto che i produttori considerano 1 GB=10003 byte, mentre il sistema considera 1 GB (binario) =10243 byte, utilizzando erroneamente il simbolo decimale (GB) in luogo di quello binario (GiB).

I calcoli per la conversione sono molto semplici:
1 GB=10003 byte, mentre 1 GiB=10243 byte, quindi
poiché 10003/10243≈0,931 (il simbolo "≈" significa "circa uguale a")
significa che 1 GB (decimale) è circa uguale a 0,931 GiB (gibibyte o "gigabyte binari").

Quindi basta moltiplicare il numero di GB (decimali) per 0,931 per avere la capacità in GiB (binari) rilevata da Windows o da un BIOS/UEFI:

  • per il disco da 1 TB si hanno 1000 GB, per cui 1000*0,931≈931 GiB;
  • per la pendrive USB da 32 GB si hanno 32*0.931≈29,8 GiB.
L'equivoco nasce dal fatto che il sistema operativo (o il BIOS/UEFI) indica per il disco "931 GB" e per la pendrive "29,8 GB" (usando erroneamente il simbolo decimale "GB"), invece dovrebbe visualizzare rispettivamente "931 GiB" e "29,8 GiB".

I produttori di dischi sfruttano (con una buona dose di malizia) l'equivoco sulle unità di misura per far apparire i dischi più capienti agli occhi dell'acquirente medio (che in genere non è pratico delle unità di misura della capacità di archiviazione). In passato venne usato un metodo veramente scorretto di vendere i dischi: i produttori indicavano sull'etichetta la capacità NON formattata (oggi, fortunatamente, indicano quella formattata, ossia lo spazio realmente a disposizione del sistema per i dati).

Capacità formattata e capacità non formattata

Riguardo agli HDD (hard disk magnetici) vediamo il concetto di capacità formattata e capacità NON formattata. Per introdurre tale concetto, facciamo un'analogia con un quaderno a quadretti.
Un quaderno è inizialmente un insieme di fogli bianchi su cui è possibile scrivere informazioni in modo "grezzo" (non organizzato); per utilizzarlo in modo ordinato (per esempio per svolgere dei calcoli) i fogli devono essere quadrettati, cioè suddivisi in righe e colonne. La "quadrettatura" (o "formattazione") serve ad organizzare il quaderno ma ne riduce lo spazio di "immagazzinamento dati": per esempio, ai lati di ciascun foglio si lasciano dei margini, ossia una quantità di spazio vuoto non destinato a contenere informazioni.

HDD vergine e formattato
Analogamente, un disco rigido "vergine" è un insieme di superfici magnetizzabili che non contengono alcuna informazione e che non sono organizzate. Affinché possa essere utilizzato, il disco subisce un processo industriale chiamato formattazione fisica (o formattazione a basso livello), che lo suddivide in tracce, a loro volta costituite da elementi chiamati settori (i contenitori dei dati). A livello microscopico un disco è suddiviso in un enorme insieme di settori.

Gap tra settori e tracce
La dimensione di ciascun settore fisico è di circa 600 byte, di cui solo 512 sono per i dati, il resto è per altri scopi: marcatori di inizio e fine settore, alcuni byte per il numero (ID) del settore, altri byte per il codice di correzione degli errori (ECC), byte di spazio inutilizzato (gap, servono a separare fisicamente i settori l'uno dall'altro). Inoltre una parte dei settori sono di riserva, destinati a sostituire eventuali settori danneggiati. I 512 byte riservati ai dati sono la capacità "netta" del settore; la dimesione fisica reale di un settore (circa 600 byte) è una sorta di capacità "lorda" del settore. I settori equidistanti dal centro del disco giacciono sulla stessa corona circolare, chiamata traccia. Quindi una traccia è formata da una sequenza di settori e di gap; su un disco ci sono migliaia di tracce, separate tra loro da un ulteriore gap chiamato gap intertraccia. Di fatto i gap sono spazio sprecato: sono superficie magnetizzabile (quindi bit e byte) presente ma inutilizzabile.
La dimensione di un settore fisico dipende dal produttore del disco; può essere 600 byte, di più o di meno (dipende da quanti byte si usano per l'ECC ed il preambolo, che contiene ID del settore ed altri marcatori speciali). Da Gennaio 2011 i produttori di dischi adottano ufficialmente una nuova tecnologia di formattazione, nota genericamente come Advanced Format (formattazione avanzata), con cui la dimensione della parte riservata ai dati (la capacità formattata) viene portata a 4 KiB (4096 byte invece di 512) e che permette di limitare i gap. La data di Gennaio 2011 indica di fatto l'abbandono del processo di formattazione a basso livello col vecchio standard a settori da 512 byte (i primi dischi con Advanced Format risalgono al 2009).
Essendo un hard-disk magnetico un enorme insieme di settori, si può estendere il discorso all'intero disco e distinguere due tipi di capacità:
  • CAPACITÀ FORMATTATA: è il numero totale dei byte destinati all'immagazzinamento dati (comprese le strutture dati destinate al/ai file system) ed immediatamente disponibili al sistema; si conteggiano solo 512 byte per ogni settore e si escludono settori di riserva e gap.
  • CAPACITÀ NON FORMATTATA: è il numero totale di byte del disco. Comprende sia i settori disponibili da subito al sistema per l'immagazzinamento dati sia i settori di riserva; inoltre si conteggiano tutti i byte che costituiscono fisicamente un settore (circa 600 byte per ogni settore) compresi tutti i gap.
La formattazione a basso livello organizza fisicamente un disco ma, inevitabilmente, ne riduce la capacità di immagazzinamento dati. Il prof. Tanenbaum (si veda "Modern Operating Systems" 3° edizione, pag 375–376, Prentice Hall) afferma che la differenza tra capacità formattata e non formattata è considerevole: ad esempio, un disco con capacità NON formattata di 200 GB può rendere disponibili per i dati solo 170 GB (capacità formattata); tuttavia tale disco può essere venduto in due modi differenti, a discrezione del produttore:
  • un produttore corretto lo commercializza come disco da 170 GB dichiarandone la capacità formattata (prassi attualmente seguita, dopo anni di nefandezze commerciali);
  • un produttore scorretto lo commercializza come disco da 200 GB dichiarandone la capacità non formattata: questa condotta disonesta è stata seguita intenzionalmente per molti anni dai fabbricanti di hard-disk, in modo da far apparire i dischi più grandi di quanto fossero in realtà. 
In entrambi i casi sia il BIOS che i sistemi operativi "vedono" un disco da circa 158,32 GiB (binari) ossia la capacità formattata di 170 GB (decimali). Chi lo avesse acquistato come disco da 200 GB si sarebbe sentito truffato per aver pagato anche lo spazio inutilizzabile.

Formattazione logica e spazio libero

Un disco formattato a basso livello non è ancora pronto per essere utilizzato: innanzitutto occorre suddividerlo in una o più partizioni (una partizione è una porzione di disco costituita da settori numerati in modo consecutivo). Infine bisogna eseguire la formattazione logica di ciascuna partizione, che crea un file system appropriato (dipendente dal Sistema Operativo che utilizzerà la partizione); il file system è costituito da strutture dati (per esempio da tabelle) che servono a gestire i file (programmi e dati) che verranno registrati sulla partizione. Il file system occupa in genere da pochi MiB ad alcune decine di MiB (o anche di più) all'interno della partizione su cui risiede.
Quindi la formattazione logica riduce ulteriormente lo spazio realmente utilizzabile dall'utente per programmi e/o dati in quanto parte dello spazio deve essere riservato al file system.
Partizione NTFS vuota

ESEMPIO
Con un'applicazione di gestione delle partizioni è stata creata una partizione da 16 GiB (capacità formattata della partizione), formattandola con file system NTFS. Il sistema operativo è Windows XP Professional Service Pack 3, dove sono stati disattivati il "Servizio di indicizzazione" ed il "Servizio di ripristino configurazione di sistema" (che avrebbe occupato spazio sulla partizione). In questo modo la partizione è vuota (sono vuote anche le 2 cartelle create automaticamente da Windows, ossia "RECYCLER" e "System Volume Information"). Entrando in "Risorse del computer", con un click con il tasto destro del mouse sulla lettera della partizione (nell'esempio è la "J") e selezionando "Proprietà" si ottiene la finestra di informazioni visibile nella figura a lato.

Nella partizione vuota, risultano già occupati 68.112.384 byte: è lo spazio occupato dalle strutture dati del file system NTFS. Lo spazio disponibile agli utenti per programmi e dati è di 17.114.464.256 byte (circa 15,94 GiB). Si verifica facilmente che la capacità formattata della partizione è pari alla somma delle 2 quantità precedenti. Si noti come il sistema operativo utilizzi erroneamente i simboli decimali "MB" e "GB" invece di quelli binari "MiB" e "GiB".
Partizione NTFS spazio libero