Saltar al contenido

¿Cómo puedo probar la capacidad total de una tarjeta SD en Linux?

Al fin después de mucho luchar ya encontramos la solución de esta impedimento que algunos de nuestros lectores de nuestro espacio presentan. Si deseas compartir algún detalle no dejes de dejar tu conocimiento.

Solución:

Si alguien ve esto más tarde: alguien escribió una herramienta de código abierto llamada “F3” para probar la capacidad de las tarjetas SD y otros medios similares. Se puede encontrar en la página de inicio del proyecto y en Github.

El engaño ahora ha sido confirmado por los siguientes pasos:

  • Genere un archivo de datos aleatorios. (4194304 = 4 × 1024 × 1024 = 4 MiB, tamaño total = 40 × 4 MiB = 160 MiB)

    Dominio:

    dd if=/dev/urandom of=test.orig bs=4194304 count=40
    40+0 records in
    40+0 records out
    167772160 bytes (168 MB) copied, 11.0518 s, 15.2 MB/s
    
  • Copie los datos a la tarjeta SD. (2038340 × 4096 = 8153600 KiB = 7962,5 MiB)

    Dominio:

    sudo dd if=test.orig of=/dev/sde seek=2038399 bs=4096
    40960+0 records in
    40960+0 records out
    167772160 bytes (168 MB) copied, 41.6087 s, 4.0 MB/s
    
  • Vuelva a leer los datos de la tarjeta SD.

    Dominio:

    sudo dd if=/dev/sde of=test.result skip=2038399 bs=4096 count=40960
    40960+0 records in
    40960+0 records out
    167772160 bytes (168 MB) copied, 14.5498 s, 11.5 MB/s
    
  • mostrar el resultado

    Dominio:

    hexdump test.result | less
    ...
    0000ff0 b006 fe69 0823 a635 084a f30a c2db 3f19
    0001000 0000 0000 0000 0000 0000 0000 0000 0000
    *
    1a81000 a8a5 9f9d 6722 7f45 fbde 514c fecd 5145
    
    ...
    

¿Qué sucedió? Observamos un espacio de ceros. Este es un indicador de que los datos aleatorios no se han escrito realmente en la tarjeta. Pero, ¿por qué los datos regresan después 1a81000? Obviamente, la tarjeta tiene un caché interno.

También podemos intentar investigar el comportamiento del caché.

hexdump test.orig | grep ' 0000 0000 '

no proporciona ningún resultado, lo que significa que la basura generada no tiene ese patrón. Sin embargo,

hexdump test.result | grep ' 0000 0000 '
0001000 0000 0000 0000 0000 0000 0000 0000 0000
213b000 0000 0000 0000 0000 0000 0000 0000 0000
407b000 0000 0000 0000 0000 0000 0000 0000 0000
601b000 0000 0000 0000 0000 0000 0000 0000 0000

tiene 4 partidos.

Entonces por eso pasa badblocks controlar. Otras pruebas pueden mostrar que la capacidad real es de 7962,5 MB, o un poco menos de 8 GB.

Concluyo que es muy poco probable que esto sea solo una falla de hardware aleatoria, pero es más probable que sea una especie de trampa (es decir, fraude). Me gustaría saber qué medidas puedo tomar para ayudar a otras víctimas.

Actualización 11/05/2019

  • La gente me preguntó acerca de cómo descubrí el correcto seek el parámetro es 2038399. Hice mucha más experiencia de la que he mostrado en lo anterior. Básicamente tienes que adivinar en primer lugar. Debe adivinar el tamaño adecuado de los datos y debe adivinar dónde estaba la corrupción de datos. Pero siempre puedes usar el método de bisección para ayudar.

  • En el comentario a continuación, pensé que asumí que el segundo paso anterior (copiar los datos a la tarjeta SD) solo copia 1 sector. Pero no cometí este error en mi experimento. En cambio, el seek fue mostrar que en el paso “mostrar resultado” el desplazamiento 1000 simplemente ocurre en el segundo sector de los datos. Si el seek es 2038399 sectores, la corrupción está en el sector 2038400.

En primer lugar, lea el F3 respuesta por @Radtoo. Es la forma correcta.

De alguna manera me lo he perdido, y lo intenté a mi manera:

  1. crear un archivo de prueba de 1 gb:
    dd if=/dev/urandom bs=1024k count=1024 of=testfile1gb

  2. escriba copias de ese archivo en la tarjeta sd (64 es el tamaño de la tarjeta sd en gb):
    for i in $(seq 1 64); do dd if=testfile1gb bs=1024k of=/media/sdb1/test.$i; done

  3. verifique md5 de archivos (todos menos el último, incompleto, deben coincidir):
    md5sum testfile1gb /media/sdb1/test.*

Si sostienes algún pregunta o forma de afinar nuestro ensayo puedes dejar una disquisición y con placer lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *