La capacità di archiviazione sembra un concetto semplice, almeno finché non si comincia a guardare oltre il numero stampato sul lato di una chiavetta USB. Un’unità USB può essere venduta come 32GB, Windows può indicare un valore leggermente diverso, uno strumento di produzione può chiedere la capacità in MB e, da qualche altra parte, il dispositivo può riportare un numero di LBA che sembra completamente scollegato da tutti gli altri valori.
In realtà sono tutti collegati.
Il rapporto tra capacità, dimensione del settore e LBA è piuttosto semplice una volta capito che cosa rappresenta ciascun numero. È anche un’informazione molto utile quando si lavora con le chiavette USB a livello di produzione o duplicazione, dove specificare semplicemente “32GB” a volte non è abbastanza preciso.
Che cos’è un LBA?
LBA significa Logical Block Addressing, ovvero indirizzamento logico a blocchi. Invece di considerare la posizione fisica dei dati all’interno della memoria flash NAND, il computer vede il dispositivo di archiviazione come una lunga sequenza di blocchi logici numerati.
LBA 0 è il primo blocco logico, LBA 1 è quello successivo, poi LBA 2 e così via, fino a raggiungere l’ultimo LBA disponibile sul dispositivo.
La parte importante è che un LBA, da solo, non ci dice quanta capacità di archiviazione è disponibile. Dobbiamo conoscere anche la dimensione di ogni settore logico.
La relazione di base è:
Capacità in byte = numero di LBA × dimensione del settore logico
Per la maggior parte delle chiavette USB, la dimensione del settore logico è di 512 byte.
Questo ci offre una scorciatoia molto utile.
In un MiB ci sono 1.048.576 byte. Se ogni settore logico contiene 512 byte:
1.048.576 ÷ 512 = 2.048
Di conseguenza, con settori logici da 512 byte:
2.048 LBA = 1 MiB
E questo significa:
Numero di LBA ÷ 2.048 = capacità in MiB
Tecnicamente, MiB è il termine corretto in questo caso perché stiamo utilizzando 1.048.576 byte anziché il valore decimale di 1.000.000 di byte utilizzato per MB. Alcune utility di produzione e alcuni MPTool continuano comunque a indicare questo valore come “MB”, quindi è importante capire che cosa intende per MB lo strumento specifico che si sta utilizzando.
Un esempio reale di LBA
Supponiamo che una chiavetta USB riporti il seguente numero di LBA:
60.125.184
Supponendo che il dispositivo utilizzi settori logici da 512 byte, possiamo calcolare la sua capacità indirizzabile:
60.125.184 × 512 = 30.784.094.208 byte
Oppure possiamo utilizzare la scorciatoia:
60.125.184 ÷ 2.048 = 29.358 MiB
Il dispositivo dispone quindi esattamente di 29.358 MiB di spazio di archiviazione indirizzabile, pari a circa 28,67 GiB, oppure 30,78 GB quando la capacità viene espressa utilizzando gigabyte decimali.
Questo è anche il motivo per cui definire semplicemente qualcosa come una “chiavetta USB da 32GB” non ci dice quale sia la sua geometria esatta.
Due chiavette USB vendute entrambe come prodotti da 32GB non hanno necessariamente lo stesso identico numero di LBA disponibili. La configurazione NAND, le impostazioni del controller, la capacità riservata, la gestione dei blocchi difettosi, l’over-provisioning e il modo in cui il dispositivo è stato configurato durante la produzione possono influire sulla capacità indirizzabile finale presentata al computer host.
Per la maggior parte degli utenti, una piccola differenza non ha alcuna importanza.
Nella duplicazione di un disco, invece, può avere parecchia importanza.
Fare il calcolo nella direzione opposta
Il calcolo può anche essere eseguito al contrario.
Se conosciamo il numero esatto di LBA che vogliamo ottenere e la dimensione del settore logico è di 512 byte, possiamo convertire quel numero di LBA in una capacità e configurare di conseguenza la chiavetta USB utilizzando un MPTool, sempre che il controller e l’MPTool offrano questa possibilità.
La formula è:
Numero di LBA ÷ 2.048 = MiB
Possiamo quindi calcolare la capacità necessaria partendo dal numero di LBA desiderato dal cliente e impostare la capacità corrispondente nell’MPTool.
Se l’MPTool utilizza settori logici da 512 byte e il suo campo relativo alla capacità rappresenta MiB binari, l’impostazione di quella capacità dovrebbe produrre il numero di LBA desiderato.
Questo può essere particolarmente utile quando si producono chiavette USB che devono corrispondere a un dispositivo master conosciuto. È anche uno dei motivi per cui l’hardware di duplicazione USB si comporta diversamente da una semplice copia dei file. Un duplicatore può lavorare con la struttura effettiva del dispositivo di archiviazione invece di limitarsi a copiare i file visibili da un file system a un altro.
Per esempio, immaginiamo che un cliente crei un’immagine master avviabile utilizzando un determinato lotto di chiavette USB. Sei mesi dopo arriva un altro lotto di unità da 32GB nominalmente identiche, ma la NAND è cambiata e le nuove unità prodotte espongono un numero leggermente inferiore di LBA.
L’etichetta continua a dire 32GB.
Il sistema operativo continua a riconoscerle come dispositivi da circa 32GB.
Ma dal punto di vista di un’immagine disco copiata settore per settore, non sono identiche.
Se l’immagine master prevede più LBA di quanti ne metta a disposizione il dispositivo di destinazione, l’immagine potrebbe non entrare. I supporti basati su GPT aggiungono un’ulteriore complicazione perché GPT mantiene un header di backup alla fine del disco. La posizione di questa struttura è legata alla fine del dispositivo indirizzabile.
Questo è uno dei motivi per cui i supporti avviabili e le immagini disco meritano un po’ più di attenzione rispetto a una normale raccolta di file. Abbiamo anche spiegato perché i supporti USB avviabili non si comportano sempre allo stesso modo in ogni ambiente, e il filo conduttore è che la struttura del disco può essere importante tanto quanto i file presenti sull’unità.
Controllare la capacità effettivamente prodotta può quindi essere molto più utile rispetto alla semplice specifica di una capacità commerciale come 32GB, 64GB o 128GB.
La dimensione del settore cambia il calcolo
C’è però un’importante precisazione da fare riguardo alla scorciatoia vista sopra:
Numero di LBA ÷ 2.048 = MiB funziona soltanto con settori logici da 512 byte.
Un LBA è un indirizzo. Non significa necessariamente 512 byte.
Se invece un dispositivo di archiviazione presenta settori logici da 4.096 byte, ogni LBA rappresenta una quantità di dati otto volte maggiore.
Prendiamo, per esempio, lo stesso numero di LBA utilizzato in precedenza:
60.125.184
Con settori logici da 512 byte:
60.125.184 × 512 = 30.784.094.208 byte
Si tratta di circa 30,78 GB, ovvero circa 28,67 GiB.
Ma se quegli stessi identici 60.125.184 LBA rappresentassero settori logici da 4.096 byte:
60.125.184 × 4.096 = 246.272.753.664 byte
Ora il dispositivo rappresenterebbe circa 246,27 GB, ovvero circa 229,36 GiB.
Stesso numero di LBA. Capacità completamente diversa.
Ecco perché è necessario conoscere la dimensione del settore prima di convertire un numero di LBA in una capacità.
Perché utilizzare qualcosa di diverso da 512 byte?
A questo punto la domanda più ovvia è perché i dispositivi di archiviazione non utilizzino semplicemente settori da 512 byte in ogni situazione.
Storicamente, i settori da 512 byte sono diventati lo standard per gli hard disk e, con il tempo, si sono profondamente radicati nei sistemi operativi, nelle implementazioni BIOS, nei boot loader, nelle utility per dischi e in molti altri software. La compatibilità è uno dei motivi principali per cui i settori logici da 512 byte rimangono ancora così comuni, anche sulle chiavette USB.
Ma i moderni dispositivi di archiviazione sono internamente molto più complessi.
La memoria flash NAND non opera fisicamente in piccoli e ordinati blocchi da 512 byte. La NAND utilizza page ed erase block molto più grandi, mentre anche i moderni hard disk sono passati a settori fisici di dimensioni maggiori. Un controller deve tradurre il modo in cui il computer pensa che sia strutturato il dispositivo di archiviazione nelle strutture molto più grandi effettivamente utilizzate dal supporto sottostante.
È qui che entrano in gioco geometrie dei settori come 512e e 4Kn.
Un dispositivo 512e utilizza settori fisici più grandi, comunemente da 4.096 byte, continuando però a presentare al sistema host settori logici da 512 byte. Il computer mantiene così la compatibilità dei tradizionali settori da 512 byte, mentre il dispositivo di archiviazione può funzionare internamente utilizzando una geometria fisica più efficiente.
Un dispositivo 4Kn fa un passo ulteriore ed espone direttamente al sistema host settori logici da 4.096 byte.
Settori più grandi possono ridurre l’overhead di indirizzamento, migliorare l’efficienza delle informazioni di correzione degli errori e adattarsi meglio alle caratteristiche fisiche dei moderni supporti di archiviazione. Nei dispositivi di archiviazione di capacità molto elevata, settori logici più grandi significano inoltre che è necessario un numero inferiore di singoli blocchi logici per descrivere la stessa capacità.
Ci sono però dei compromessi.
I sistemi operativi più vecchi, gli ambienti di avvio, i dispositivi embedded e l’hardware specializzato possono aspettarsi settori logici da 512 byte. Anche il software che fa determinate supposizioni sulla dimensione dei settori può comportarsi diversamente quando si trova davanti a supporti 4Kn. Questo è uno dei motivi per cui i produttori di dispositivi di archiviazione e i fornitori di controller a volte offrono la geometria dei settori come opzione configurabile, invece di imporre una sola configurazione a ogni possibile applicazione.
Per una normale chiavetta USB utilizzata per spostare documenti Word e fotografie da un computer all’altro, nulla di tutto questo è particolarmente emozionante. L’utente collega l’unità, vede più o meno la capacità prevista e continua con la propria giornata.
Per duplicatori, supporti USB avviabili, sistemi embedded, apparecchiature industriali e ambienti di produzione controllati, invece, la geometria esatta può diventare parte integrante delle specifiche del prodotto.
“32GB” descrive il quartiere.
La dimensione del settore e il numero di LBA indicano l’indirizzo esatto.
Nota editoriale: GetUSB.info si occupa di memoria flash USB, sistemi di duplicazione e comportamento dei supporti di archiviazione rimovibili dal 2006. Questo articolo si basa sull’esperienza pratica maturata lavorando con la geometria delle chiavette USB, la configurazione dei controller e la duplicazione a livello di settore.