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

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

Objetivo: cartão microSD formatado...

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

Estou usando um cartão microSD de 8 GB para armazenamento de dados dentro de um dispositivo Linux/ARM incorporado. O cartão SD não é removível. Tenho usado o ext3 em vez do FAT32 pré-instalado porque parece lidar melhor com falhas aleatórias de energia durante as gravações. No entanto, continuei percebendo que 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 será prejudicado. Depois de navegar na Wikipedia, me deparei com o seguinte comentário dizendo que alguns cartões são otimizados para tamanhos de cluster específicos. No meu caso, o Kingston vem pré-formatado para um tamanho de cluster de 64kB.

Riscos da reformatação

Reformatar um cartão SD com um sistema de arquivos diferente, ou mesmo com o mesmo, pode tornar o cartão mais lento ou reduzir sua vida útil. Algumas placas usam nivelamento de desgaste, no qual blocos frequentemente modificados são mapeados para diferentes partes da memória em momentos diferentes, e alguns algoritmos de nivelamento de desgaste são projetados para os padrões de acesso típicos da tabela de alocação de arquivos em um dispositivo FAT16 ou FAT32. Além disso, o sistema de arquivos pré-formatado pode usar um tamanho de cluster que corresponda à região de apagamento da memória física no cartão; a reformatação pode alterar o tamanho do cluster e tornar as gravações menos eficientes.

Responder1

A maioria dos cartões SD (bem como unidades USB) disponíveis no mercado são otimizados para uso com FAT32. Usá-los com qualquer outro FS prejudicará seu desempenho.

Mais informações emLWN.

Responder2

Note oFerramenta de formatação de associação de cartão SDfaz o seguinte para você.

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

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

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

Resumo do raciocínio: a SD Card Association recomendou esses limites de 4 MiB como zonas otimizadas e recomenda FAT32 como sistema de arquivos para esses cartões de tamanho. 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 funciona apenas para discos <16GiB para clusters de 32kiB e <32GiB para clusters de 64kiB. Suspeito que em tamanhos de disco maiores, a área de dados é aumentada para 8 MiB lógicos, mas não tenho um disco maior que 8 GiB para usar.

informação relacionada