A capacidade de armazenamento parece algo simples até você começar a olhar além do número impresso na lateral de uma unidade USB. Um pen drive pode ser vendido como 32GB, o Windows pode mostrar um valor ligeiramente diferente, uma ferramenta de fabricação pode pedir a capacidade em MB e, em outro lugar, o dispositivo pode informar uma quantidade de LBA que parece não ter absolutamente nada a ver com os outros números.
Na verdade, tudo está relacionado.
A relação entre capacidade, tamanho do setor e LBA é bastante simples depois que você entende o que cada número representa. Essa informação também é muito útil ao trabalhar com unidades flash USB em nível de fabricação ou duplicação, onde simplesmente especificar “32GB” às vezes não é preciso o suficiente.
O que é um LBA?
LBA significa Logical Block Addressing, ou endereçamento lógico de blocos. Em vez de pensar na localização física dos dados dentro da memória flash NAND, o computador enxerga o dispositivo de armazenamento como uma longa sequência de blocos lógicos numerados.
LBA 0 é o primeiro bloco lógico, LBA 1 é o seguinte, depois vem LBA 2 e assim por diante, até que o dispositivo chegue ao último LBA disponível.
O ponto importante é que um LBA, sozinho, não nos diz quanto espaço de armazenamento existe. Também precisamos saber o tamanho de cada setor lógico.
A relação básica é:
Capacidade em bytes = quantidade de LBA × tamanho do setor lógico
Na maioria das unidades flash USB, o tamanho do setor lógico é de 512 bytes.
Isso nos dá um atalho de cálculo muito útil.
Existem 1.048.576 bytes em um MiB. Se cada setor lógico contém 512 bytes:
1.048.576 ÷ 512 = 2.048
Portanto, com setores lógicos de 512 bytes:
2.048 LBAs = 1 MiB
E isso significa:
Quantidade de LBA ÷ 2.048 = capacidade em MiB
Tecnicamente, MiB é o termo correto aqui porque estamos usando 1.048.576 bytes, e não os 1.000.000 bytes decimais usados para MB. Alguns utilitários de fabricação e MPTools ainda identificam esse valor como “MB”, portanto é importante entender exatamente o que uma determinada ferramenta quer dizer quando usa MB.
Um exemplo real de LBA
Suponha que uma unidade flash USB informe a seguinte quantidade de LBA:
60.125.184
Considerando que o dispositivo usa setores lógicos de 512 bytes, podemos calcular sua capacidade endereçável:
60.125.184 × 512 = 30.784.094.208 bytes
Ou podemos usar o atalho:
60.125.184 ÷ 2.048 = 29.358 MiB
Portanto, o dispositivo possui exatamente 29.358 MiB de armazenamento endereçável, o que corresponde a aproximadamente 28,67 GiB, ou 30,78 GB quando a capacidade é expressa usando gigabytes decimais.
É também por isso que simplesmente chamar algo de “unidade flash de 32GB” não informa sua geometria exata.
Duas unidades USB vendidas como produtos de 32GB não necessariamente possuem exatamente a mesma quantidade de LBA disponíveis. A configuração da NAND, as definições do controlador, a capacidade reservada, o gerenciamento de blocos defeituosos, o over-provisioning e a forma como o dispositivo foi configurado durante a fabricação podem afetar a capacidade endereçável final apresentada ao computador host.
Para a maioria dos usuários, uma pequena diferença não faz muita diferença.
Para duplicação de discos, porém, ela pode fazer bastante diferença.
Fazendo o cálculo no sentido inverso
O cálculo também pode ser feito ao contrário.
Se sabemos a quantidade exata de LBA desejada e o tamanho do setor lógico é de 512 bytes, podemos converter essa quantidade de LBA em uma capacidade e configurar a unidade flash de acordo usando um MPTool, desde que o controlador e o MPTool ofereçam esse recurso.
A fórmula é:
Quantidade de LBA ÷ 2.048 = MiB
Assim, podemos calcular a capacidade necessária a partir da quantidade de LBA desejada pelo cliente e definir a capacidade correspondente no MPTool.
Se o MPTool utiliza setores lógicos de 512 bytes e o campo de capacidade representa MiB binários, configurar essa capacidade deve resultar na quantidade de LBA desejada.
Isso pode ser particularmente útil ao produzir unidades flash que precisam corresponder a um dispositivo mestre conhecido. Também é uma das razões pelas quais o hardware de duplicação USB se comporta de maneira diferente de uma simples cópia de arquivos. Um duplicador pode estar trabalhando com a estrutura real do dispositivo de armazenamento, em vez de simplesmente copiar arquivos visíveis de um sistema de arquivos para outro.
Por exemplo, imagine que um cliente crie uma imagem mestre inicializável usando um determinado lote de unidades flash USB. Seis meses depois chega outro lote de unidades de 32GB nominalmente idênticas, mas a NAND mudou e as novas unidades fabricadas apresentam uma quantidade ligeiramente menor de LBA.
A etiqueta ainda diz 32GB.
O sistema operacional ainda reconhece esses dispositivos como tendo aproximadamente 32GB.
Mas, do ponto de vista de uma imagem de disco copiada setor por setor, eles não são idênticos.
Se a imagem mestre espera mais LBA do que o dispositivo de destino oferece, a imagem pode não caber. A mídia baseada em GPT acrescenta outra complicação porque a GPT mantém um cabeçalho de backup no final do disco. A posição dessa estrutura está vinculada ao final do dispositivo endereçável.
Essa é uma das razões pelas quais mídias inicializáveis e imagens de disco merecem um pouco mais de atenção do que uma coleção normal de arquivos. Também vale lembrar que unidades USB aparentemente semelhantes podem ser muito diferentes internamente, e o ponto em comum é que a estrutura real do dispositivo pode ser tão importante quanto os arquivos armazenados nele.
Controlar a capacidade realmente produzida durante a fabricação pode, portanto, ser muito mais útil do que simplesmente especificar uma capacidade de marketing como 32GB, 64GB ou 128GB.
O tamanho do setor muda o cálculo
Existe, porém, uma condição importante para o atalho acima:
Quantidade de LBA ÷ 2.048 = MiB só funciona com setores lógicos de 512 bytes.
LBA é um endereço. Ele não significa automaticamente 512 bytes.
Se um dispositivo de armazenamento apresentar setores lógicos de 4.096 bytes, cada LBA representará oito vezes mais dados.
Por exemplo, vamos usar a mesma quantidade de LBA de antes:
60.125.184
Com setores lógicos de 512 bytes:
60.125.184 × 512 = 30.784.094.208 bytes
Isso corresponde a aproximadamente 30,78 GB, ou cerca de 28,67 GiB.
Mas se exatamente esses mesmos 60.125.184 LBA representassem setores lógicos de 4.096 bytes:
60.125.184 × 4.096 = 246.272.753.664 bytes
Agora o dispositivo representaria aproximadamente 246,27 GB, ou cerca de 229,36 GiB.
Mesma quantidade de LBA. Capacidade completamente diferente.
É por isso que o tamanho do setor precisa ser conhecido antes de converter uma quantidade de LBA em capacidade.
Por que alguém usaria algo diferente de 512 bytes?
Neste ponto, a pergunta óbvia é por que os dispositivos de armazenamento não usam simplesmente setores de 512 bytes o tempo todo.
Historicamente, setores de 512 bytes se tornaram o padrão dos discos rígidos e, com o tempo, ficaram profundamente incorporados aos sistemas operacionais, implementações de BIOS, carregadores de inicialização, utilitários de disco e outros softwares. A compatibilidade é uma das principais razões pelas quais os setores lógicos de 512 bytes continuam tão comuns, inclusive em unidades flash USB.
Mas os dispositivos de armazenamento modernos são consideravelmente mais complexos internamente.
A memória flash NAND não opera fisicamente em pequenos blocos organizados de 512 bytes. A NAND utiliza páginas e blocos de apagamento muito maiores, enquanto os discos rígidos modernos também migraram para setores físicos maiores. Um controlador precisa traduzir a forma como o computador acredita que o dispositivo de armazenamento está organizado para as estruturas muito maiores realmente utilizadas pela mídia física.
É aqui que entram em cena geometrias de setor como 512e e 4Kn.
Um dispositivo 512e utiliza setores físicos maiores, normalmente de 4.096 bytes, mas continua apresentando setores lógicos de 512 bytes ao host. O computador mantém a compatibilidade dos tradicionais setores de 512 bytes, enquanto o dispositivo de armazenamento pode operar internamente usando uma geometria física mais eficiente.
Um dispositivo 4Kn vai um passo além e apresenta setores lógicos de 4.096 bytes diretamente ao host.
Setores maiores podem reduzir o overhead de endereçamento, melhorar a eficiência das informações de correção de erros e corresponder melhor às características físicas das mídias de armazenamento modernas. Em dispositivos de armazenamento de capacidade muito alta, setores lógicos maiores também significam que são necessários menos blocos lógicos individuais para representar a mesma capacidade.
No entanto, existem algumas desvantagens.
Sistemas operacionais mais antigos, ambientes de inicialização, dispositivos embarcados e hardware especializado podem esperar setores lógicos de 512 bytes. Softwares que fazem determinadas suposições sobre o tamanho do setor também podem se comportar de maneira diferente quando trabalham com mídia 4Kn. Essa é uma das razões pelas quais fabricantes de armazenamento e fornecedores de controladores às vezes oferecem a geometria de setor como uma opção configurável, em vez de impor uma única configuração para todas as aplicações.
Para uma unidade flash USB comum usada apenas para transferir documentos do Word e fotos entre computadores, nada disso é particularmente empolgante. O usuário conecta a unidade, vê aproximadamente a capacidade esperada e segue com o dia.
Para duplicadores, mídias USB inicializáveis, sistemas embarcados, equipamentos industriais e ambientes de fabricação controlados, no entanto, a geometria exata pode se tornar parte da especificação do produto.
“32GB” descreve o bairro.
O tamanho do setor e a quantidade de LBA informam o endereço exato.
Nota editorial: O GetUSB.info aborda memória flash USB, sistemas de duplicação e o comportamento de mídias de armazenamento removíveis desde 2006. Este artigo é baseado em experiência prática com geometria de unidades flash USB, configuração de controladores e duplicação em nível de setor.