Fiabilidad de la memoria flash del reproductor MP3

Más
6 años 1 mes antes #16485 por MiguelMS
¿Son fiables *algunas* memorias flash respecto a la integridad de la información almacenada? ¿Tienen *todas* memorias flash algún tipo de control de errores?

Recientemente, el mismo reproductor MP3 del que hablaba en este otro hilo http://www.fermu.com/es/foro46/hardware/16230-reproductor-mp3-reinicia-al-elegir-cancion , ha empezado a fallar (tras dos años y ocho meses desde la compra) de una manera que me parece preocupante...

Resulta que los datos en la memoria del reproductor se empezaron a alterar por si solos, resultando en chasquidos y cortes en las canciones. Empezó por ocurrir en una canción (supongo que afectando a un bloque de la memoria) y en menos de una semana acabó ocurriendo en muchos bloques, dañando no sólo archivos de canciones sino directorios y FATs, acabando con una unidad ilegible y todos los archivos perdidos). Comparando con una copia de seguridad de los archivos y usando un editor hexadeciamal se observa que en cada byte alterado, uno o más bits habían cambiado de 1 a 0 (nunca el cambio inverso).

Ahora bien... incluso habiendose producido estas alteraciones en los datos almacenados en la memoria... El dispositivo, conectado al ordenador seguía indicando que todas las lecturas se realizaban correctamente y sin errores. ¿Es que estas memorias flash no tienen ningún tipo de control de errores como cualquier otro dispositivo de almacenamiento, como los discos duros, los disquetes antiguos, los CDs, los DVDs...?


Es decir, los discos duros, disquetes, CDs, DVDs... tienen por cada sector de datos una pequeña información adicional de control y corrección de errores, de forma que si se produjera una alteración de los datos almacenados por la causa que fuera, dicha alteración se detecta en la lectura y se corrige si es posible. Y asumiendo que no se corrigiera o no fuera posible corregirla, el dispositivo informa al sistema de un error en la lectura, pero en ningún caso se entrega al sistema y al usuario unos datos alterados e incorrectos, lo cual debería ser considerado inadmisible.

En un disco duro, la situación de un sector de datos alterado y que no es posible corregir, resulta en un "error de lectura no corregible" (y un "Uncorrectable sector" mostrado en los datos SMART). En disquetes y CDs se informaría de un "error de CRC" o "error de redundancia cíclica" y tal... Estos errores serían seran lo normal y lo correcto antes esa situación.


Pero en el caso de la memoria de este reproductor MP3 no había ningún tipo de error en las lecturas al intentar copiar archivos dañados (cuando la unidad aún era legible) o leer sectores cuyos datos estaban ya alterados. Al usuario no se le habría informado de que los archivos que intentaba copiar desde dicho reproductor MP3 están dañados y sólo lo habría descubierto tiempo después cuando escuchara sus canciones desde el ordenador o un nuevo reproductor y todas tuvierasn chasquidos y daños variados. Una comprobación con CHKDSK tampoco podría detectar ningún problema, tan sólo quizá el antiguo ScanDisk de Windows 95/98/ME, que sí realizaba lecturas y escrituras de patrones, si es que las alteraciones se producen suficientemente rápido.


Ahora bien... ¿¡¿Esto es asi en *algunas* las memorias flash?!? De ser así, *algunas* memorias flash no deberían considerarse en absoluto fiables para almacenar datos, a no ser que se almacenen dentro de archivos (por ejemplo, comprimidos ZIP o RAR) que comprueben la integridad de los datos por sus propios medios...

¿Hay alguna manera de comprobar si una determinada memoria flash dispone de control de errores o si por el contrario, en caso de una alteración de los datos no habría ningún tipo de aviso al usuario de que la memoria ha dañado sus datos?

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
6 años 1 mes antes #16489 por Perseverante
Me parece un tema apasionante Miguel.
Especialmente si lo extrapolo al campo de los presentes (y prometedores) discos de estado sólido.

Ultimamente con el tema virus, al cancelar la red de área local , utilicé el llavero usb para paso de archivos esenciales de una terminal a otra.
Lo cierto es que esas unidades no están preparadas para copias múltiples de carpetas. O para copias en un sentido, mientras ejecutas un archivo en el dispositivo usb hacia el disco duro.
Se me corrompían los archivos que se llenaban de símbolos extraños y de tamaños falsos.
Al final formateaba e iba más despacio.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
6 años 1 mes antes #16494 por MiguelMS

Me parece un tema apasionante Miguel.
Especialmente si lo extrapolo al campo de los presentes (y prometedores) discos de estado sólido.


En los discos duros SSD no creo que se de esta situación. Si bien los discos SSD probablemente no utilizarán el mismo método de detección y corrección de los discos tradicionales... posiblemente la detección se base en los bloques internos de memoria que no tienen que ver en tamaños con lo que el disco SSD muestra al sistema operativo... Sería interesante mirar también como funciona realmente la detección y corrección de errores en este tipo de discos.

Pienso que este caso de la no detección de errores se dará sólo en memorias flash malas (como el caso de estos reproductores MP3 de mala calidad y quizá "pendrives" de marcas malas desconocidas o más baratas de lo normal), pero sería interesante que hubiera alguna manera de comprobar si las memorias flash disponen de la capacidad de detección de errores para así desechar (o devolver a la tienda si se acaban de comprar) aquellas que no tengan control de errores y por tanto no den fiabilidad.

Ultimamente con el tema virus, al cancelar la red de área local , utilicé el llavero usb para paso de archivos esenciales de una terminal a otra.
Lo cierto es que esas unidades no están preparadas para copias múltiples de carpetas. O para copias en un sentido, mientras ejecutas un archivo en el dispositivo usb hacia el disco duro.
Se me corrompían los archivos que se llenaban de símbolos extraños y de tamaños falsos.



Yo hasta ahora ninguna otra memoria "pendrive" me ha dado ningún problema, tengo algunas de marca Kingston y otra de marca PNY. A esta última le he dado mucho uso casi todos los días desde hace por lo menos cinco años (llevar archivos de un equipo a otro, trabajar directamente con los archivos en la memoria, distintos formatos con FAT32, NTFS y ExFAT, incluso desfragmentar en alguna ocasión) y nunca ha fallado.

Por supuesto, siempre hay que respetar el usar el icono de "Extraer hardware con seguridad" antes de desconectarla del ordenador para evitar que haya datos a medio escribir todavía. Ese tipo de daños no estarían debidos a la propia memoria, sino al haber desconectado sin que estuvieran completamente escritos; sería como sacar un disquete antiguo cuando se estuviera aún guardando algo.

Pero vamos, ver que la memoria del reproductor MP3 no tenía ningún tipo de control de errores me hace desconfiar ahora. Probablemente sea el caso de una memoria mala y no haya que extrapolar a las de marcas buenas, pero me gustaría tener alguna forma de comprobarlo.

Al final formateaba e iba más despacio.


Al formatear o particionar memorias USB y discos SSD (y también discos duros tradicionales que tengan sectores mayores de 512 bytes), hay que tener en cuenta el alinear las particiones de forma que los bloques (clústeres) que resulten en el formato estén alineados con los bloques de memoria del dispositivo e idealmente sean del mismo tamaño. Si no se hace así, se pierde un poquito de rendimiento.

En el caso de las memorias USB "pendrives", los fabricantes no indican el tamaño de los verdaderos bloques de memoria, con lo que en esos casos, si se formatea o particiona la memoria, suele ser buena idea alinear la partición por ejemplo a una cifra más o menos genérica, como a posiciones de megabytes (como hace el Administrador de Discos de Windows Vista o 7), en lugar de las posiciones tradicionales de cilindros (como hace el Administrador de Discos de Windows XP o 2000). De esa manera, se supone que se produce esa alineación y no se pierde el poquito de rendimiento. Pero vamos, como en cualquier caso es probable que los bloques del sistema de ficheros sean de 4 KB y quizá los de la memoria flash sean mayores, en muchos casos de escrituras dará igual.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
6 años 1 mes antes #16500 por fermu
pues confieso mi ignorancia sobre el tema, me he puesto investigar un poco y las conclusiones que he extraido son que hay dos tipos principales de memorias flash, las basadas en NOR y las basada en NAND, La fiabilidad de los dispositivos basados en NOR es realmente muy alta, es relativamente inmune a la corrupción de datos y tampoco tiene bloques erróneos frente a la escasa fiabilidad de los sistemas NAND que requieren corrección de datos y existe la posibilidad de que queden bloques marcados como erróneos e inservibles.
En resumen, los sistemas basados en NAND son más baratos y rápidos pero carecen de una fiabilidad que los haga eficientes, lo que demuestra la necesidad imperiosa de un buen sistema de archivos. Dependiendo de qué sea lo que se busque, merecerá la pena decantarse por uno u otro tipo.

Extraido de:
es.wikipedia.org/wiki/Memoria_flash

Las memorias USB y tarjetas de memoria suelen utilizar NAND, pero como dicen en la wiki carecen de fiabilidad....
Por otra parte, en este otro artículo aseguran que las memorias antes citadas (USB y tarjetas) llevan un controlador embebido que lleva a cabo las funciones de corrección de errores. Total que lo leas tu mismo... :-P y nos cuentas las conclusiones :-D
en.wikipedia.org/wiki/Flash_memory

(el artículo en ingles es que es más completo que el que viene en español) :-P

Saludos
Fernando M. / Registered Linux User #367696

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
6 años 1 mes antes #16501 por Perseverante
Pues yo reconozco que pese a todos los buenos consejos soy el que tiro del pendrive en cuanto "veo" que ha hecho la copia o movimiento.
Lo cual es una alerta a los fallos que se me presentan con operaciones largas o múltiples.
Pero por más que me lo dicen sigo tirando del pendrive y a volar.
Lo que suelo hacer es cerrar la carpeta del pendrive y a continuación tirar de él.
habrá que mejorarlo y esperar un pizco.....

:whistle:

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
6 años 1 mes antes - 6 años 1 mes antes #16512 por MiguelMS
El problema con esto de los dos tipos de memorias flash es que los fabricantes no indican en ningún caso el tipo de memoria utilizando en sus productos... :D

Pero bueno, volviendo a la cuestión, realmente *ningún* dispositivo de almacenamiento es completamente fiable. No sólo por la tecnología en la que se base el dispositivo, o el proceso de fabricación que se utilice, sino también por las circunstancias en que se utilice o en las que se almacene, o por el desgaste o deterioro propio con el paso del tiempo.

Sin embargo, independientemente de la fiabilidad que se le atribuya al dispositivo, en todos ellos existen mecanismos que garantizan que si la información almacenada en ellos se altera, al menos se va a detectar esa alteración (y en muchas ocasiones se va a corregir, si es posible). Nunca se van a entregar al usuario datos dañados haciéndolos pasar por buenos. Si están alterados y no es posible corregirlos, se indicará un error en la lectura.

Es decir, por mucho que las memorias basadas en NOR sean más fiables, quizá dentro de muchos años de uso del dispositivo correspondiente, si algún bloque de memoria falla, se quiere igualmente saber que los datos se han alterado. No nos vale que los datos se alteren y no haya ningún tipo de detección ni aviso, sólo porque esa tecnología de fabricación era mejor que otra. Quizá, si estadísticamente son muchos mejores que las NAND, puedes ahorrarte la corrección de errores y así simplificar la controladora y no necesitar tanta memoria adicional para almacenar información para corrección, pero en cualquier caso se necesita comprobar integridad y almacenar la información adicional necesaria para comprobar integridad.


Por ejemplo, en los discos duros, por cada sector de datos de por ejemplo 512 bytes, existen habitualmente 4 bytes (la cantidad varía según el fabricante y modelo) de código de detección y corrección de errores. Eso permite corregir alteraciones de los bits del sector, y si hay más alteraciones de las que es posible corregir, el disco indica un error de lectura. Pero nunca entrega por las buenas datos dañados. Y todo esto lo hace la controladora (la circuitería) del propio disco. Y estos mismos mecanismos existen en disquetes, CDs, DVDs......

En el caso de las memorias flash, normalmente existirá algo parecido, por cada bloque de memoria interno existe un espacio adicional (cada fabricante lo puede implementar como quiera) en el que se almacena información que permite detectar o corregir errores. Y el controlador (circuitería) del dispositivo es el encargado de comprobar esa información en las lecturas y corregir apropiadamente los errores si es posible, y si no indicar el error de lectura.

Ahora bien, lo que yo veo es que en *esta memoria concreta del reproductor*, sea de la tecnología que fuese, es que no tiene información de detección de errores, ya que el dispositivo da como correcta información alterada y dañada sin indicar en ningún momento un error de lectura. Probablemente hacer eso abarata los costes, porque ya no es necesario tener un espacio de memoria adicional donde almacenar la información de detección de errores, sino que basta tener la memoria suficiente para los datos del usuario, y además la controladora es más simple de diseñar y fabricar.

Pero es muy importante que *todos* los dispositivos de almacenamiento garanticen al menos la integridad (ya no que haya corrección de datos erróneos, sino únicamente comprobar integridad) de datos de alguna manera. De lo contrario, nada asegura que los datos que se extraigan sean los mismos que fueron almacenados, y en caso de que se hayan alterado por la razón que sea, no hay ninguna manera de saberlo.

En este caso de un reproductor de música no es realmente importante, pero seguro que cada cual puede pensar otros casos de uso de un dispositivo de almacenamiento en las que no querría que los datos almacenados se hubieran dañado y no hubiera manera de saberlo seguro hasta que el error se descubriera en algún otro momento y quien sabe si tiempo después. Pensemos por ejemplo en un archivo de hoja de cálculo en que los valores de las celdas pudieran variar mientras están almacenados en esta memoria y cuando la volviéramos a abrir, salvo que nos acordáramos de cabeza de los valores que hubiera antes y nos diéramos cuenta de los cambios repentinos, nada nos avisaría de que los valores se han alterado.


Por eso me gustaría a mi saber si hay alguna forma de comprobar si las memorias flash disponen o no de esta detección de errores, para así saber de cuales me puedo fiar y de cuales no.
Última Edición: 6 años 1 mes antes por MiguelMS.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Tiempo de carga de la página: 0.413 segundos
Gracias a Foro Kunena