¿Cómo puedo probar el rendimiento y los sectores defectuosos de una tarjeta de memoria?

10

Acabo de comprar una nueva tarjeta CF para mi DSLR. Lo probé usando Xbench (Mac OS X) y funciona como se esperaba. Sin embargo, me gustaría hacer un "escaneo de superficie" (término de plato móvil) para verificar si hay "sectores defectuosos" (término de plato móvil). Podría bash script en un proceso usando dd, pero tengo la sensación de que hay una mejor manera de hacerlo. Mi objetivo es saber de manera concluyente que una tarjeta de memoria (CF, SD, etc.) es segura de usar en una sesión de fotos, y que no es necesario devolverla antes de que caduque el plazo de 30 días de la política del proveedor.

Definitivamente quiero soluciones para Mac aquí. También me gustaría obtener algunas sugerencias de Linux. Echemos incluso un hueso a los usuarios de Windows para que esta pregunta pueda satisfacer las necesidades de todos.

Bruno Bronosky
fuente
Entiendo que la memoria de estado sólido es diferente a los platos giratorios. No necesito una lección en eso. Lo que necesito es una forma de verificar los dispositivos que poseo. El proceso es simple: llene el dispositivo con contenido conocido. Lea desde el dispositivo y verifique el contenido. Si obtiene errores de lectura o escritura, falla obvia. Si el contenido que lee difiere de lo que escribió, ese es el fracaso menos obvio. La fecha debe ser aleatoria y deben usarse ciclos múltiples. Lo que necesito es una herramienta que lo haga. He escrito uno, pero es un truco.
Bruno Bronosky

Respuestas:

8

Como el controlador puede mover los bloques donde quiera (ver nivelación de desgaste), la única posibilidad de una prueba completa de lectura / escritura es llenar el disco y luego comparar. Varias veces con diferentes patrones, por supuesto, para estar seguro.

Y aún así, no capturará regiones defectuosas, ya que también están ocultas por el controlador siempre que tenga repuestos.

Leonidas
fuente
6

La memoria flash no funciona de la misma manera que los discos con platos. El concepto de "sector defectuoso" no existe realmente con la memoria flash. En estos días, con memoria flash y SSD, el controlador incorporado se encarga de identificar y marcar bloques de memoria inutilizables, mover datos dinámicamente para mitigar las limitaciones de escritura en bloque, etc. Estas características son mucho más frecuentes en SSD, pero algunas también existen en tarjetas flash de calidad (como SanDisk).

La mayoría de las herramientas de verificación del sistema de archivos hacen suposiciones específicas sobre la estructura física del dispositivo de almacenamiento (es decir, en base a un plato, con cilindros físicos, sectores, grupos, etc.) o trabajan en un nivel abstracto y hacen reparaciones "virtualmente" usando un archivo o directorio mesas. Necesitaría una herramienta diseñada específicamente para marcar bloques defectuosos en un dispositivo de memoria flash, ya que cualquier otra cosa causará más problemas (suponiendo que pueda solucionar los problemas de la misma manera que lo haría con un dispositivo basado en un plato) o hacer que sea virtual correcciones que no tienen en cuenta las características dinámicas de nivel de hardware de flash. Incluso si pudiera marcar un "sector" o "clúster" en particular como 'malo', no necesariamente sería bueno, ya que esos conceptos físicos no existen en la memoria flash. Si el dispositivo flash es más avanzado y mueve datos dinámicamente para evitar automáticamente los bloques defectuosos y mitigar las limitaciones de escritura, la ubicación física de los datos puede residir en un bloque defectuoso un momento y en un bloque bueno un momento después. (Tenga en cuenta que la idea de un bloque "malo" en la memoria flash es mucho más difusa que con los discos de disco ... un bloque de memoria flash tiende a morir lentamente, en lugar de repentinamente, y puede "parpadear" entre un elemento legible / no legible poco antes de que se vuelva completamente inutilizable.)

En términos generales, cuando se trata de flash, deje que el dispositivo se administre solo desde una perspectiva de bloque defectuoso. Los diferentes fabricantes estructuran y almacenan datos de diferentes maneras, y cada uno puede tener diferentes niveles y cantidades de comportamiento dinámico que mueve los datos para evitar algunas de las limitaciones de la memoria flash. Es probable que intentar administrarlo usted mismo cause más problemas de los que resuelve, y puede hacer que sus discos flash sean inútiles a largo plazo.

Si desea evitar las tarjetas flash malas, le recomiendo usar marcas de buena reputación. He probado una variedad de tarjetas flash en el pasado, sin embargo, SanDisk es la única marca que he usado que, al menos hasta la fecha, nunca ha fallado. Tengo varias tarjetas SDHC de 4, 8 y 16 gigas que uso bastante, y saco regularmente de mi cámara e inserto en mi computadora portátil o computadora, y todavía funcionan perfectamente. (Algunos tienen varios años).

jrista
fuente
1
Pueden existir bloques defectuosos con cualquier dispositivo de bloque: si escribo algunos datos en un bloque en particular, pero no puedo volver a leerlo, es un bloque defectuoso. El controlador puede ocultar este problema para las escrituras, escribiendo los datos en otro lugar, pero no para las lecturas.
Vaddadi Kartick
3

En Linux, el comando que quieres es badblocks. Parece que hay un puerto de esto para Mac OS X como parte de este puerto ext2-for-os-x : instale todo e ignore todo menos el /usr/local/sbin/badblockscomando.

Dicho esto, esto ayudará a probar, pero no creo que sea concluyente, porque primero, como dice Leonidas, realmente no obtienes acceso sin procesar a la memoria flash, por lo que es difícil hacer un escaneo completo, y también porque podrían aparecer nuevas fallas después de la prueba, tal vez incluso desencadenadas por ella.

Por favor lea mi perfil
fuente
1

Al leer tu comentario debajo de la pregunta, creo que F3 hace exactamente lo que quieres. Se compila en Linux / Mac OS X y también está disponible a través de Homebrew.

Sam Brightman
fuente
-1

Encontré esto en google, no estoy usando tarjetas SD para el almacenamiento de cámaras, sino que obtuve mi sandisk sdhc de clase 10 de 32 conciertos completamente dañado después de menos de 2 años de uso en mi Samsung Galaxy S2.

Estoy usando bloques malos para ver dónde comienzan los primeros bloques malos y luego haré particiones alrededor de esa área si es posible. Esta es mi solución actual, muy, muy mala: /

usuario172681
fuente
¿Podría dar más detalles sobre su respuesta? Basado en una búsqueda rápida, supongo que "badblocks" es un programa de Linux? ¿Hace lo que requiere el OP?
MikeW