viernes, 16 de enero de 2015

¿Qué sucede cuando hacemos la extracción segura de un dispositivo USB?

La consideración popular es que pulsar el icono de la barra de tareas de Windows y realizar la "extracción segura" -o "expulsar"- es más seguro tanto para el dispositivo de almacenamiento como los propios datos — ya sea una memoria Flash o disco duro externo. Es de esas costumbres que es mejor hacer, como si de un peligro de mal agüero se tratase.
Pero no se explican los motivos reales y el trasfondo de esta acción que tantas garantías parece ofrecer. ¿Qué sucede realmente? ¿Cuál es el grado de seguridad que proporciona? ¿Y cuál es el peligro en concreto? En este artículo vamos a analizar y dar respuesta a esas y otras dudas de forma sencilla pero minuciosa.

Veamos primero por qué puede ser seguro para el dispositivo.


El dispositivo


El sistema de conexión que emplean los dispositivos USB 1.0 y 2.0 transmite los datos empleando una tensión eléctrica de 5 voltios y una corriente máxima de medio amperio (en concreto, 5 cargas de 100 miliamperios). Como es de sobra conocido, el estándar USB (hasta su versión 3.0) no se diseñó con la máxima velocidad y estabilidad en mente, de forma que su rendimiento no es el más eficiente ni sus conectores son los más ergonómicos. Pero sí se diseño con un objeto bien claro: seguridad.

USB es seguro, duradero y resistente. De entrada, se concibió para ser des/conectable de un sistema en funcionamiento (hot-plug) sin riesgo de accidente eléctrico. Es popular la broma/meme que dice que los conectores USB tienen un tercer estado cuántico porque hasta la tercera vez no se suele acertar aunque sólo tengan dos caras alargadas. Esto ocurre porque, exteriormente, su diseño no es asimétrico. (Por cierto, la cara donde se encuentra el logotipo USB, el tridente que todos los conectores deberían tener -o, si no lo tuviera, la cara sin corte-, siempre va hacia arriba. Y, si el conector es vertical, hacia la derecha, visto de frente.)

Volviendo a la electricidad. Para que un dispositivo USB pueda ser perjudicado por esos valores el cable tiene que haber sido alterado. ¿Por qué no puede ocurrir de otra forma? Dos motivos.
Primero, porque los conectores están construidos para soportar un considerable máximo de des/conexiones físicas (1.500 para el USB clásico, 5.000 para mini-USB y 10.000 para micro-USB) y el uso de un dispositivo en tiempo muy rara vez acaba superando este número de ciclos, junto al desgaste que haya podido sufrir el conector.
Y segundo, porque el propio diseño lo impide. Los contactos eléctricos de un conector USB están contenidos por una lengüeta de plástico duro que los afianza e inmoviliza, y el conjunto se encuentra protegido por una resistente funda metálica. Esta funda no sólo se encarga de impedir que los contactos se vean afectados por el trasiego sino que su labor esencial es de toma de tierra, puesto que el diseño del conector asegura que la funda siempre haga contacto con su contrapartida opuesta -disipando las cargas electroestáticas- antes de que los contactos realicen un intercambio eléctrico. Además, sirve como un eficiente aislante de interferencias (una pequeña jaula de Faraday). Todo esto hace que las conexiones y desconexiones sean siempre eléctricamente seguras. De nuevo: el cable tiene que haber sido alterado.

Por otra parte, existe una preocupación común en caso de los dispositivos con partes móviles internas, como son los discos duros externos. Se suele hablar de cabezales de lectura/escritura (la parte que está al final del brazo actuador del disco duro) que pueden, a raíz de un corte eléctrico en los modelos sin alimentación externa, arañar la superficie del disco y destruir irremediablemente tanto el dispositivo como los datos.
¿Cómo? La distancia a la que se encuentra un cabezal de lectura/escritura del plato magnético donde están los datos -cuando se encuentra en funcionamiento- es tan nimia que casi parece tocarlo: 2.000 veces menor que el grosor de un cabello. Es fácil imaginar el desastre que puede producirse si un plato o disco (que gira a un mínimo de 5.400 revoluciones por minuto) recibe el roce de un cabezal que está diseñado para poder desplazarse de una a otra posición del plato en unos milisegundos (considerando un disco duro actual de escritorio, la trasición de un cabezal desde un punto a otro del disco se realiza en unos 15 milisegundos). No sería incorrecto definir el suceso como fatal.
Pero, si el cabezal no roza el disco, ¿por qué tendría que importar lo que ocurra cuando esté desconectado? En realidad, sólo deja de rozarlo cuando la unidad está encendida, algo que ocurre debido a la corriente de aire generada por las altas revoluciones de los platos. Este efecto secundario, este colchón de aire, permite -junto con otros mecanismos- que el cabezal se eleve lo justo para, sin tocar la superficie, poder ser funcional.
La fortuna, volviendo a la preocupación del arañazo, es que todas las unidades modernas de disco duro poseen auto-aparcado de cabezales; de tal modo que un sistema electrónico o mecánico (dependiendo del modelo y fabricante) realiza el aparcado justo cuando se produce un corte en el suministro eléctrico de la unidad. Así pues, no es posible que los cabezales se queden en medio de un plato y puedan arañarlo al desconectar un dispositivo USB.
Sin embargo, lo que sí puede ocurrir es que, debido a una disposición inestable o precaria del dispositivo en la superficie donde reposa, al ir a desconectarlo se realice un movimiento inintencionadamente brusco y se produzca el disgusto. Es por esto que debe tenerse tanta cautela como sea posible a la hora de maniobrar discos duros en funcionamiento; es decir, tanta como para no tocarlos.

Como queda claro, la extracción segura no afecta al dispositivo ni para bien ni para mal.


Veamos ahora por qué puede ser seguro para los datos.


Los datos


Lo primero que es necesario entender es que los ficheros y carpetas en un dispositivo de almacenamiento de datos -sea del tipo que sea- se encuentran organizados dentro de un sistema de archivos, y éste se estructura, grosso modo, de la siguiente forma (aunque con otra nomenclatura): un prólogo, un índice, uno o varios capítulos y un contenido. Igual que si fuera un libro.
El prólogo hace las veces de arranque y sólo es relevante cuando se instala un sistema operativo. Para acceder a un fichero en ese dispositivo se busca en el índice (llamado tabla de asignación) con el fin de averiguar en qué capítulo (partición) y página (sector) se encuentra el contenido a consultar. Ese contenido no se accede todo de una vez, sino en párrafos (caché/buffers) de cierta cantidad. Estos párrafos se usan como una memoria rápida y temporal. Y tienen tamaños diferentes tanto para leer como para escribir, puesto que los dispositivos poseen velocidades de acceso distintas en cada caso y se busca inmediatez de respuesta para el usuario.
Lo que ocurre con la lectura de un dispositivo no es trascendente ya que no manipula datos, por tanto no afecta al sistema de archivos. Sin embargo, con la escritura es donde empiezan las preocupaciones. Lo ideal es que lo escrito no se pierda por el camino y, al modificar la información, el índice refleje apropiadamente los cambios.

Vuelta al principio: ¿qué sucede cuando hacemos la extracción segura de un dispositivo USB? 
Todos los dispositivos USB están, de serie en sistemas Windows, marcados como 'de extracción rápida' en su página de propiedades del Administrador de Dispositivos. Y, como su propia descripción detalla: "Deshabilita la memoria caché de escritura (lo que antes llamábamos 'párrafos') en el dispositivo y en Windows, pero puede desconectar el dispositivo de forma segura sin tener que usar el icono de notificación 'Quitar hardware de forma segura'".

Windows acaba de aclarar que, de serie, salvo que se haya modificado el mencionado ajuste, no es necesario realizar la extracción segura. Es decir, como queda claro otra vez, la extracción segura no afecta a los datos ni para bien ni para mal.


Ojo


Que nadie se lleve a confusión, se supone que estamos hablando de:
  • ordenadores con sus controladores para Windows apropiados de cada dispositivo instalado y sin percances de rendimiento, sin configuraciones erróneas y funcionando a temperaturas razonables para su operación,
  • dispositivos que Windows reconozca como de almacenamiento externo y apropiadamente configurados (esto es importante porque, en ocasiones, algunos dispositivos extraíbles no son reconocidos como tales -no aparece la opción de "expulsar" al hacer click derecho sobre la unidad del dispositivo en el Explorador de ficheros de Windows- ),
  • dispositivos sin ReadyBoost activado,
  • la interacción de Windows (generalmente, el Explorador de ficheros) con el dispositivo, no la de programas con cualidades especiales para el tratamiento de ficheros,
  • sistemas sin procesos que ralenticen la interacción entre dispositivos; tales como analizadores o monitores de transferencias o actividad, antivirus con protección en tiempo real, etc.,
  • gestión de ficheros y carpetas (copia/movimiento/borrado) — no las secuelas de programas ejecutados desde el dispositivo (y desatendidos) o de documentos abiertos y lo que pase con ellos;
  • y no se trata la particularidad de programas que puedan hacer escrituras periódicas, cambios sin informar o con servicios y procesos-hijo que cierran -y realizan operaciones en disco- después del programa tras un lapso de tiempo. (En estos casos hay una dependencia del vaciado de caché automático de Windows cuya información no parece estar documentada pública y oficialmente, habiendo sólo suposiciones del tipo '30 o 45 segundos').


En el peor caso...


Pero vamos a ser meticulosos. Supongamos que hemos alterado manualmente la opción de Windows para que tenga un "Mejor rendimiento" en lugar de una "Extracción rápida". ¿Qué puede ocurrir?
La causa principal para que ocurra pérdida de datos en esta situación es que la velocidad del dispositivo de lectura sea mucho más rápida que el de escritura. De ese modo, el "párrafo" mencionado -que se usa de memoria intermedia- tendría aún información por enviar al dispositivo USB donde estamos escribiendo datos, pero Windows ya ha cerrado la interfaz o informado de que ha terminado. El dispositivo USB, que no es tan rápido, sigue escribiendo información del párrafo desde el que le dictan. Si, en ese momento, extraemos manualmente el conector USB o apagamos el dispositivo -si tiene un interruptor- pasará uno o varios de estos percances: Los datos que quedan por escribir no se habrán grabado; habrá algún fichero incompleto -normalmente quedará como de tamaño cero- o corrompido; la información no quedará actualizada en el índice -porque aún no había terminado de escribir- y el fichero no existe; y, con muy mala suerte, es posible que los desajustes del índice afecten al capítulo — es decir, que "desaparezca" la partición entera debido a una inconsistencia de datos (y Windows solicite formatear el disco tras la próxima conexión). No se habrían perdido todos los datos pero sería necesario contactar con un especialista para realizar una tarea de recuperación.

¿Se sabe de forma estandarizada el tiempo que puede tomar hasta el vaciado del "párrafo" de escritura? No. Cada dispositivo y ordenador rinden de una manera distinta. Incluso los programas en ejecución pueden alterar la velocidad de transmisión del USB, por lo que hablar en frío de tiempo es, de entrada, gratuito.
Pero sí podemos argumentar sobre los datos, porque sabemos el tamaño estándar de un "párrafo" y sabemos las velocidades óptimas y promedias de transmisión de datos del USB 2.0.

USB 1.0 es, evidentemente, un estándar muy obsoleto y de rendimiento extremadamente limitado, pero sus valores son de sobra conocidos: unos 175 KiB (los kilobytes de toda la vida) por segundo en modo de bajo rendimiento y 1.4 MiB (los megas de toda la vida) por segundo en el modo de rendimiento completo.
Para USB 2.0 tenemos el modo de rendimiento completo de 1.4 MiB/s -que no se utiliza salvo que haya un percance en el dispositivo o en el controlador de Windows- y un modo, el estándar, de alto rendimiento a 57 MiB/s.

Todos estos valores son teóricos y, como es bien sabido, los 57 MiB/s del modo de alto rendimiento de USB 2.0 se quedan en unos 30 MiB/s; o que los 1.4 MiB/s acaban resultando en unos 800 KiB/s. Estos son valores prácticos pero, de nuevo, óptimos y suceden cuando USB puede enviar una transmisión de datos suficientemente larga. Es decir, en el día a día, la transmisión de numerosos ficheros de pocos kilobytes bajo USB 2.0 da un triste promedio de unos 3 MiB/s en el modo de rendimiento completo.
Por tanto: la velocidad de transmisión y, por tanto, el vaciado del "párrafo" que nos interesa depende completamente de qué contenido estemos escribiendo.

Ahora falta por conocer qué tamaño tiene el "párrafo" que emplea Windows. Bueno, sabemos -porque Microsoft lo ha publicado- que, en Windows 7, el tamaño predeterminado es de 64 KiB. Pero, desde una actualización publicada en enero del año 2013, actualización que es opcional -y se envía, a petición, a una dirección de correo-, este valor se puede ampliar hasta los 2 MiB. A partir de Windows 8 esta actualización viene integrada pero el ajuste manual hay que hacerlo igualmente.


Bien. Datos teóricos en mano, ¿cuánto tardaría Windows en vaciar un "párrafo" de un dispositivo USB 2.0 si Windows almacena en el mismo 2 MiB en el mejor de los casos? ¿Y en el peor? ¿Y de promedio?

Para vaciar 2 MiB a una tasa de 30 MiB/s se tardarían unas 7 centésimas de segundo.
Para vaciar 2 MiB a una tasa de 15 MiB/s se tardarían exactamente 1.3 décimas de segundo.
Para vaciar 2 MiB a una tasa de 3 MiB/s se tardarían casi 7 décimas de segundo.

Y para vaciar 64 KiB (caso de tener un Windows 7, 8 o 10 normal y corriente, es decir, como lo tiene casi el 100% del parque de PCs, sin las modificaciones de registro pertinentes realizadas a cada dispositivo USB) a una tasa de 3 MiB/s se tardarían 2 centésimas de segundo.


Conclusión


Incluso en la la peor de las peores circunstancias -con pegas y muy mal rendimiento-, desde que desaparece la ventana de interfaz (la que indica que el Explorador de ficheros de Windows está copiando ficheros) y hasta que un dispositivo USB 2.0 (con la opción de "Mejor rendimiento" activada, la actualización emitida por Microsoft y las modificaciones de registro realizadas) termina de copiar los datos restantes, transcurre un segundo y medio. Si quisiéramos sumar el tiempo que tarda el dispositivo en actualizar el índice (la tabla de asignación) y que el rendimiento fuera aún peor, e incluso sumando los rumores de mentideros -o tal vez verdaderos- que dicen que las unidades Flash tipo pendrive/USB stick necesitan un voltaje estable durante, aproximadamente, un cuarto de segundo adicional para garantizar una escritura: 2 segundos.
Hay que tener mucha prisa para extraer un dispositivo que acaba de terminar de copiar en menos de dos segundos.

En cualquier otra circunstancia, antes de mirar, el dispositivo ya ha terminado: 2 centésimas en cualquier Windows 7 y 8 sin modificar.
De nuevo, no olvidemos lo mencionado anteriormente en la sección "Ojo".


Finalmente, ¿qué sucede cuando hacemos la extracción segura de un dispositivo USB? Simplemente que Windows inicia una petición de vaciado a las aplicaciones que tengan algún fichero abierto en modo de escritura y espera a que el "párrafo" se termine de leer (la caché de escritura), tras lo cual desmonta la letra de unidad del dispositivo haciéndolo inaccesible al usuario y aplicaciones.


En la siguiente entrada relacionada veremos qué diferencias tangibles hay entre "Mejor rendimiento" y "Extracción rápida". Además, para los recalcitrantes, se mostrará cómo crear un acceso directo -sin programas externos- que realice la extracción segura sin más esfuerzo que una combinación de teclas.

16 comentarios:

  1. Sobre lo de introducir el USB, a veces es la propia entrada la que está al revés. No me acuerdo en qué ordenador, televisor o consola me ha pasado, pero es un hecho.

    ResponderEliminar
  2. olvidas mencionar el funcionamiento interno de los discos duros, los que no son de tipo "flash". Esos llevan genralmente un HDD de portátil con agujas y discos . estos dispositivos precisan de una extraccion segura debido a q las agujas se pueden encontrar encima del disco. igual q en los vinilos estas agujas son susceptibles de rascar el dsco con el consiguiente estropicio de la superficie . sin embargo llevan un sistema de fijacion de las agujas fuera de la superficie del disco , igual que los vinilos ;) . en ese caso la extraccion segura asegura ( valga laredundancia) de que las agujas se han guardado en su posicion de apagado antes de la interrupcion de la alimentacion.

    ResponderEliminar
    Respuestas
    1. Esa tarea no se encuentra a cargo del sistema operativo o de operaciones de usuario - deviene en el propio diseño del dispositivo y los actuadores. El artículo está en perpetua revisión pero me aferro a él, pese a los errores y erratas, que no dudaré en corregir.

      Eliminar
  3. En la parte de pedir la extracción segura se te ha olvidado incluir el paso por el mensaje de "el dispositivo se encuentra en uso" que indefectiblemente aparece

    ResponderEliminar
    Respuestas
    1. Esperemos que ocurra cada vez menos y menos. Siempre hay que tener en cuenta los programas residentes y documentos abiertos.
      Admirable nick el tuyo.

      Eliminar
  4. Interesante artículo, sólo un detalle, se dice "grosso modo" la "a" sobra, sería tal que así:
    "...y éste se estructura, grosso modo, de la siguiente forma..."

    ResponderEliminar
    Respuestas
    1. Gracias. Muy bien observado. Lo he corregido de inmediato.

      Eliminar
  5. Que articulo mas enredado, si lo que no quierenes hacer docencia y explicar bien lo lograron
    jauncho

    ResponderEliminar
    Respuestas
    1. Acepto la crítica. Con esa redacción comprendo que no lo entiendas, pero aún así voy a revisarlo para que sea todo lo más claro posible.

      Eliminar
  6. "transmite los datos empleando una corriente de 5 voltios", ahí he dejado de leer.

    ResponderEliminar
    Respuestas
    1. Corregido. Lástima que nadie lo hubiera señalado antes. Es una errata de concepto muy fea. Pido disculpas.

      Eliminar
  7. " los conectores están construidos para soportar un considerable máximo de des/conexiones físicas.1.500 para el USB clásico, 5.000 para mini-USB y 10.000 para micro-USB"
    Soy técnico electrónico. Semanalmente sustituyo más de cuatro conectores microUSB de teléfonos y tablets. Sin embargo el numero de conectores USB de portátiles, pueden ser cuatro o cinco por año.
    Una cosa son las especificaciones que ponen los ingenieros en las hojas de datos y otra es la realidad del día a día.
    Y si, en lo de la "corriente de 5V" se ha columpiado.

    ResponderEliminar
    Respuestas
    1. Cierto. Una cosa son las estimaciones por parte de personal técnico y otra el desgaste real por parte de usuarios que no tienen por qué respetar el material -o no son conscientes de que deberían hacerlo- y los resultados contantes y sonantes de vida útil. Especialmente cuando se trata del uso cotidiano de un dispositivo al que se le tiene cada vez en menos consideración, dada la reposición constante de estos aparatos.

      Lo último ya quedó corregido y, de nuevo, pido disculpas por el disparate.

      Eliminar