Como posso testar um cartão de memória quanto a desempenho e setores defeituosos?

10

Acabei de comprar um novo cartão CF para minha DSLR. Testei-o usando o Xbench (Mac OS X) e ele executa conforme o esperado. No entanto, eu gostaria de fazer uma "varredura de superfície" (termo do prato móvel) para verificar se há "setores defeituosos" (termo do prato móvel). Eu poderia basear scripts em processos usando dd, mas tenho a sensação de que há uma maneira melhor por aí. Meu objetivo é saber conclusivamente que um cartão de memória (CF, SD etc.) é seguro para uso em uma sessão de fotos, e isso não precisa ser devolvido antes que a janela de política de fornecedores de 30 dias expire.

Eu definitivamente quero soluções para Mac fornecidas aqui. Eu também gostaria de receber algumas sugestões do Linux. Vamos até agradar os usuários do Windows apenas para que essa pergunta possa atender às necessidades de todos.

Bruno Bronosky
fonte
Entendo que a memória de estado sólido é diferente de pratos giratórios. Eu não preciso de uma lição nisso. O que preciso é de uma maneira de verificar os dispositivos que possuo. O processo é simples: encha o dispositivo com conteúdo conhecido. Leia a partir do dispositivo e verifique o conteúdo. Se você receber erros de leitura ou gravação, falha óbvia. Se o conteúdo que sua leitura difere do que você escreveu, essa é a falha menos óbvia. A data deve ser aleatória e vários ciclos devem ser usados. O que eu preciso é de uma ferramenta que faça isso. Eu escrevi um, mas é um hack.
Bruno Bronosky

Respostas:

8

Como o controlador pode mover os blocos para onde quiser (consulte nivelamento de desgaste), a única chance de um teste de leitura / gravação completo é encher o disco e comparar. Várias vezes com diferentes padrões, é claro, para ter certeza.

E você ainda não detectará regiões defeituosas, pois elas também ficam ocultas pelo controlador, desde que ele tenha peças de reposição.

Leonidas
fonte
6

A memória flash não funciona da mesma maneira que os discos com pratos. O conceito de "setor defeituoso" não existe realmente com a memória flash. Hoje em dia, com memória flash e SSDs, o controlador interno cuida da identificação e marcação de blocos de memória inutilizáveis, movendo dados dinamicamente para mitigar as limitações de gravação de blocos etc. Esses recursos são muito mais comuns nos SSDs, mas alguns também existem em cartões flash de qualidade (como SanDisk).

A maioria das ferramentas de verificação de sistemas de arquivos faz suposições específicas sobre a estrutura física do dispositivo de armazenamento (ou seja, com base em prato, com cilindros físicos, setores, clusters etc.), ou trabalha em um nível abstrato e faz reparos "virtualmente" usando arquivo ou diretório tabelas. Você precisaria de uma ferramenta projetada especificamente para marcar blocos defeituosos em um dispositivo de memória flash, pois qualquer outra coisa causará mais problemas (supondo que ele possa corrigir os problemas da mesma maneira que faria com um dispositivo baseado em prato) ou tornar virtual correções que não levam em consideração os recursos dinâmicos do flash no nível do hardware. Mesmo se você pudesse marcar um "setor" ou "cluster" específico como 'ruim', isso não seria necessariamente bom, pois esses conceitos físicos não existem realmente na memória flash. Se o dispositivo flash for mais avançado e mover dados dinamicamente para ignorar automaticamente os blocos defeituosos e atenuar as limitações de gravação, a localização física dos dados poderá residir em um bloco defeituoso um momento e em um bom bloco um momento depois. (Observe que a idéia de um bloco "ruim" na memória flash é muito mais confusa do que nos discos de bandeja ... um bloco de memória flash tende a morrer lentamente, e não repentinamente, e pode "piscar" entre um legível e um não legível. pouco antes de se tornar totalmente inutilizável.)

De um modo geral, quando se trata de flash, permita que o dispositivo se gerencie de uma perspectiva de bloco ruim. Diferentes fabricantes estruturam e armazenam dados de maneiras diferentes, e cada um pode ter níveis e quantidades diferentes de comportamento dinâmico que move os dados para evitar algumas limitações da memória flash. Tentar gerenciar você mesmo provavelmente causará mais problemas do que resolve e pode tornar seus discos flash inúteis a longo prazo.

Se você deseja evitar cartões de memória ruins, recomendo o uso de marcas respeitáveis. Eu tentei uma variedade de cartões flash no passado, no entanto, a SanDisk é a única marca que eu usei que, pelo menos até o momento, nunca falhou. Eu tenho vários cartões SDHC de 4, 8 e 16 GB que uso muito, e regularmente tiro a câmera e insiro no laptop ou computador, e eles ainda estão funcionando perfeitamente. (Alguns têm vários anos.)

jrista
fonte
11
Blocos defeituosos podem existir com qualquer dispositivo de bloco: se eu gravar alguns dados em um bloco específico, mas não consigo lê-los novamente, é um bloco ruim. O controlador pode ocultar esse problema para gravações, gravando os dados em outro lugar, mas não para leituras.
Vaddadi Kartick
3

No Linux, o comando que você deseja é badblocks. Parece haver uma porta disso para o Mac OS X como parte dessa porta ext2-for-os-x - instale tudo e ignore tudo, menos o /usr/local/sbin/badblockscomando.

Dito isso, isso ajudará no teste, mas não acho que seja conclusivo, porque, primeiro, como diz Leonidas, você realmente não tem acesso bruto à memória flash, por isso é difícil fazer uma varredura completa e também porque novas falhas podem aparecer após o teste, talvez até desencadeadas por ele.

Por favor, leia meu perfil
fonte
1

Lendo seu comentário abaixo da pergunta, acredito que a F3 faz exatamente o que você deseja. Compila no Linux / Mac OS X e também está disponível via Homebrew.

Sam Brightman
fonte
-1

Achei isso no google, não estou usando cartões SD para armazenamento de câmeras, mas sim a minha classe 10 de 32 GB de sdhc sandisk completamente corrompida depois de menos de 2 anos de uso na minha galáxia S2 da Samsung.

Estou usando badblocks para ver onde os primeiros badblocks começam e, em seguida, farei partições nessa área, se possível. esta é a minha solução atual, muito, muito ruim: /

user172681
fonte
você poderia elaborar sua resposta? Com base em uma pesquisa rápida, acho que "badblocks" é um programa Linux? Ele faz o que o OP exigia?
MikeW