Por que o tamanho de alocação padrão do exFAT no Windows é tão alto?

12

Referenciando esta página: https://support.microsoft.com/en-us/kb/140365

O NTFS não ultrapassa o tamanho do cluster de 4KB até que o volume ultrapasse os 16 TB, e o FAT32 atinge o máximo de 16 KB no intervalo de volume de 16 GB a 32 GB nas versões modernas do Windows.

O exFAT, no entanto, apenas assume o padrão de 4KB na faixa de volume de 7 MB a 256 MB. Depois disso, ele salta para 32 KB na faixa de 256 MB a 32 GB e 128 KB além disso.

Por que é que? Um tamanho de cluster relativamente alto parece um desperdício, especialmente em um formato projetado para dispositivos externos menores, como unidades flash. Duplamente, se você estiver formatando a memória flash, porque, pelo que entendi, o principal benefício para um tamanho de cluster maior é a E / S mais rápida, devido à menor fragmentação e menos clusters gerais para leitura. Corrija-me se estiver errado, mas a memória flash é muito, muito menos propensa a lentidão causada por fragmentação. Então, por que tornar o tamanho do cluster tão alto?

InsanityOnABun
fonte
"Tamanho" e "alto" não combinam. Os números podem ser "altos". "Grande" é a palavra do apostador em vez de "alto".
sawdust
Só queria mencionar que eu apenas formatei uma unidade de 1 TB usando o tamanho padrão do cluster e o Windows usou um tamanho de cluster de 2048 KB !!! Isto não só é desafiando as especificações em sua página, este é sempre wayy muito alto
woojoo666
Para quem alcançou isso no Google e pode fazer backup de um diretório git para a unidade / cartão em questão, é importante conhecer também os aspectos negativos de grandes setores: cada arquivo de ~ 200 bytes em um diretório git ocupa 1 unidade de alocação completa. Setores grandes podem fazer com que os dirs dev (que podem ter 10k + arquivos pequenos) ocupem um grande múltiplo de seus tamanhos normais de HDD. Por exemplo: superuser.com/questions/704218/… superuser.com/questions/1370780/…
kcrumley

Respostas:

11

Como o exFAT é usado principalmente para coisas como cartões SD de grande capacidade, e nos cartões SD, você deve apagar um setor antes de poder escrever nele. Se você usasse pequenos clusters em um cartão com um tamanho grande de setor de apagamento, isso resultaria em muitos comandos de apagar e gravar no mesmo setor, gravar vários clusters sequenciais de dados em disco, não apenas reduzindo o desempenho, mas também desgastando prematuramente o flash células. O tamanho do setor de apagamento geralmente não está documentado nas folhas de dados do cartão, mas pode ser encontrado no registro CSD do cartão. O conteúdo deste registro varia de cartão para cartão, dependendo do seu design interno. Como os cartões SD geralmente são usados ​​em câmeras como arquivos que armazenam arquivos grandes, o espaço desperdiçado de um tamanho de cluster grande não é importante,

Esta página contém o conteúdo deste registro para cerca de uma dúzia de cartões:

http://goughlui.com/2014/01/03/project-read-collect-decode-sd-card-csd-register-data/

E se você inserir seu conteúdo na calculadora a seguir, poderá ver em alguns dos cartões de 32/64 GB o tamanho do setor de apagamento é de 128 blocos, sendo um bloco de 512 bytes. E para um cartão de 2 GB, o tamanho do setor de apagamento é de 32 blocos, sendo 1024 bytes.

http://goughlui.com/static/csdecode2.htm

Se o Windows é ou não inteligente o suficiente para consultar o registro do CSD e sugerir um tamanho de cluster, ou se ele simplesmente adivinha que o tamanho da partição ou do disco é desconhecido. Se você emular um cartão SD com um microcontrolador, poderá descobrir.

Muh Fugen
fonte
11
eu não sabia sobre a necessidade de apagar a memória flash antes que você pudesse escrever nela. Isso faz sentido agora. Obrigado!
InsanityOnABun
11
Você parece estar assumindo que os cartões SD não possuem camada de conversão de flash, ou seja, que setores lógicos adjacentes sempre serão fisicamente adjacentes no NAND. Caso contrário, os setores lógicos em um cluster não precisariam pertencer ao mesmo bloco de apagamento. Que evidência você tem para apoiar essa suposição?
sawdust
De fato, alguns cartões SD e drives flash de alto desempenho têm uma camada de conversão e ainda são pré-formatados com clusters de 32kb? Eu verifiquei que os clusters de 4kb melhoram o desempenho para gravações e leituras aleatórias
thomasrutter