Como formatar corretamente um cartão SD para minhas necessidades?

0

Eu criei um aplicativo que requer um cartão SD para armazenar mídia. São pequenos JPGs / GIFs / PNGs, pequenos MP3s ... mas cerca de 200.000 deles (!!). Muito poucos deles são maiores que alguns MB. Velocidade não é uma preocupação.

Eu uso um cartão de 32GB (formatado em vfat) para isso, mas está ficando sem espaço. Eu recebi um cartão de 64GB que veio com o formato HPFS / NTFS / exFAT (de acordo com o sfdisk).

O que estou enfrentando agora é que os 25 GB escritos no cartão de 32 GB ocupam + 31 GB no cartão de 64 GB. Então, estou perdendo muito espaço. Eu acho que isso é por causa do tamanho do bloco ou algo semelhante. Eu já enfrentei isso antes.

Então, minha pergunta é: qual seria a melhor formatação de FS / opções para minha situação, para usar mais espaço no disco, mas também levando em consideração a confiabilidade do FileSystem? Eu já tentei o ext3 / 4 no meu dispositivo e não funciona corretamente.

Luis A. Florit
fonte
Talvez tente algo como mkfs.vfat -s 1 - S 512 / dev / sdX1. (Eu não tentei, mas o vfat é muito compatível e, em teoria, isso deve fornecer setores de 512 bytes em vez dos setores de 32k que eu suspeito que o layout padrão tenha. Diga adeus ao desempenho)
davidgo
@ Davididgo: Isso é o que eu não entendo. sfdiskrelatórios Sector size (logical/physical): 512 bytes / 512 bytese I/O size (minimum/optimal): 512 bytes / 512 bytespara ambos os discos. A única diferença é FAT32vs HPFS/NTFS/exFAT.
Luis A. Florit 04/01
11
O SFDisk está, espero, relatando a geometria do próprio "disco". O sistema de arquivos é um mapeamento / índice que define o número de entradas / tamanho mínimo de cada arquivo no disco. Para um cartão SD de 64gig, o mínimo padrão é 128, k - consulte support.microsoft.com/en-us/help/140365/… em oposição a 32k para vfat. (Isso também implica que meu comentário estava errado porque o tamanho prático mínimo do bloco é 32k - então, basta usar "mkfs.vfat / dev / sdX1"
davidgo
Você observa que 25 GB de arquivos estão ocupando 31 GB no cartão de 64 GB, ignorando que os arquivos reais não são o único espaço necessário; todos os sistemas de arquivos requerem alguma "sobrecarga" para o nome do arquivo, datas de criação / acesso / modificação, permissões de acesso e tamanho, além de registros transacionais etc. Essa sobrecarga geralmente varia de 5 a 25% do espaço. A visão geral dos diferentes sistemas de arquivos relacionados ao Windows está em support.microsoft.com/en-us/help/100108/… . Os arquivos excluídos também podem usar espaço, mesmo que não sejam facilmente visíveis.
Debra

Respostas:

-1

Eu acho que você poderia tentar btrfs ou f2fs . O primeiro é um sistema de arquivos CoW e suporta desduplicação de dados (isto é, redundância de dados), o que pode ser útil para você. O último é um sistema de arquivos projetado para dispositivos de armazenamento flash.

mkfs.btrfs <device>

ou

mkfs.f2fs <device>

Luis Lavaire
fonte
Se o ext não funcionar, é improvável que btrfs e f2fs funcionem.
davidgo 4/01
Por que você assume isso?
Luis Lavaire 04/01
11
Experiência e conhecimentos gerais. Se um disco suporta ext, o firmware provavelmente é baseado no Linux, pois é o Linux fs mais amplamente suportado e há uma chance (não muito grande - o firmware em dispositivos embarcados geralmente é bastante enxuto) de que FSs mais essotéricos sejam suportados. Se ext não for suportado, provavelmente significa que o firmware usa código licenciado da Microsoft que não é baseado em Linux, portanto, terá um suporte fs muito mais restrito.
davidgo 4/01
Ele não disse que o sistema operacional não suporta sistemas de arquivos ext *. Ele disse que tentou e aqueles não funcionaram.
Luis Lavaire 04/01
Acho que entendemos a pergunta dele de maneira um pouco diferente. Do meu POV, o ext3 é bastante à prova de balas no Linux e foi / é o sistema de arquivos padrão (e o SFDISK pelo menos implica em Linux). Eu acho que o aplicativo é para o IOS e ainda acredito que o suporte EXT para o IOS é fraco, se é que existe.
davidgo 4/01