Como posso formatar um cartão SD com um sistema de arquivos mais robusto e utilizável em Linux, com um tamanho de cluster específico, para melhor performace de gravação?

5

Objetivo: cartão microSD formatado ...

  • para melhor desempenho de gravação
  • para uso somente com o Linux incorporado
  • para melhor confiabilidade (falhas de energia aleatórias podem ocorrer)
  • usando um tamanho de cluster de 64 kB

Estou usando um cartão microSD de 8 GB para armazenamento de dados em um dispositivo Linux / ARM incorporado. O cartão SD não é removível. Eu tenho usado o ext3 em vez do FAT32 pré-instalado porque ele parece lidar melhor com falhas de energia aleatórias durante as gravações. No entanto, eu continuei percebendo que o meu desempenho de gravação é sempre melhor com o FAT32 pré-instalado da Kingston. Se eu reformatar o cartão com FAT32, o desempenho ainda sofre. Depois de navegar na Wikipédia, me deparei com o seguinte comentário dizendo que algumas placas são otimizadas para tamanhos de clusters específicos. No meu caso, o Kingston vem pré-formatado para um tamanho de cluster de 64kB.

Risks of reformatting

Reformatting an SD card with a different file system, or even with the same one, may make the card slower, or shorten its lifespan. Some cards use wear leveling, in which frequently modified blocks are mapped to different portions of memory at different times, and some wear-leveling algorithms are designed for the access patterns typical of the file allocation table on a FAT16 or FAT32 device.[60] In addition, the preformatted file system may use a cluster size that matches the erase region of the physical memory on the card; reformatting may change the cluster size and make writes less efficient.

    
por Harvey 22.01.2012 / 20:08

2 respostas

3

A maioria dos cartões SD (assim como drives USB) estão otimizados para uso com o FAT32. Usá-los com qualquer outro FS fará com que seu desempenho sofra.

Mais informações em LWN .

    
por 06.02.2012 / 15:21
3

Observação: a ferramenta de formatação SD Card Association faz o seguinte para você.

Ainda não tenho a resposta completa para todos os dispositivos. No entanto, aqui está a resposta para cartões de 8GiB usando FAT32.

Particione a placa de forma que a partição FAT32 inicie no setor 8.192, que é 4MiB desde o início do disco. Em seguida, formate a partição FAT32 com clusters de 32kiB e defina o número de "setores reservados" de modo que a área de dados, cluster 2, da partição FAT32 inicie no setor lógico 8.192 (ou 8MiB desde o início do disco (4MiB desde o início) da partição).

Use 32kiB clusters
| 4MiB      | 4MiB                                | remainder of disk    |  
| -------   | ---------------------------------   | ------------------   |  
| MBR       | First Partition Header + FAT tables | First Partition Data |  

Raciocínio de resumo: a SD Card Association recomendou esses limites de 4 MiB como zonas otimizadas e recomenda o FAT32 como o sistema de arquivos para esses tamanhos de cartões. O chip controlador no cartão é otimizado para pequenas leituras / gravações naquela segunda área de 4 MiB.

Há muito mais do que isso, mas essa é a resposta rápida e suja. O método acima só funciona para discos < 16GiB para clusters de 32kiB e < 32GiB para clusters de 64kB. Eu suspeito que em tamanhos de disco maiores, a área de dados é enviada para 8MiB lógico, mas eu não tenho um disco maior que 8GiB para usar.

    
por 13.05.2013 / 23:06