Usuarios On-Line 362
  I n i c i o
  Temas
  • Guías Informatica
  • Artículos
  • Trucos
  • Trucos Juegos
  • Guía Web
  • Webmasters

  •   Directorio Web
  • Novedades
  • Destacados
  • Más Visitados
  • Añadir Web

  •   Software
  • Novedades
  • Destacados
  • Más Descargados
  •  
      Manuales
  • Novedades
  • Destacados
  • Más Descargados

  •   Más Contenidos
  • Zona MSN
  • Foro
  • Más Trucos
  • Seguridad Informática
  • Alojamiento Web
  • Lista de Correo

  •   Novedades Software
    01/12 VSO Image Resizer
    01/12 BlindWrite
    01/12 NOD32 Anti-Virus System
    01/12 Troyan Explore
    01/12 Total Uninstall



    EVIDALIA HOSTING
    Pack Inicio
    100 MB espacio en disco
    1 GB transferencia/mes
    25 E-Mail's POP3
    mySQL, php, CGI-BIN

    Pack Inicio
    Pack Standard
    200 MB espacio en disco
    2 GB transferencia/mes
    50 E-Mail's POP3
    mySQL, php, CGI-BIN

    Pack Standard


      Guías Informática:  
    Fotografía (13)
    Trucos fotografía y retoque fotográfico.
    Hardware (38)
    Internet (94)
    MSN Messenger (65)
    Multimedia (28)
    Programación (92)
    S. Operativos (371)
    Seguridad (47)
    Software (126)
    Webmasters (81)
    Inicio
    Más vistos
    Más Remitidos
    Más Imprimidos
    Categoría: Linux
      Grabación USB lenta  

    Recientemente me he comprado un dispositivo de almacenamiento USB en memoria flash y aunque el rendimiento en lectura es "razonable" (960KB/s, de un máximo teórico de 1.4MB/s), la escritura es muy lenta. En mi máquina SUSE 10.0, escribo en ese dispositivo a unos 200KB/s. Es decir, unas cinco veces más lento de lo que debería.

    Lo primero es descartar que el dispositivo USB tenga algún tipo de defecto, cosa que se comprueba con facilidad conectando el dispositivo a una máquina Windows. La comprobación experimental fue grabar 30 megabytes en la memoria USB, proceso que supuso un minuto de tiempo, aproximadamente. Es decir, unos 500KB/s, poco más o menos.

    Así pues, la grabación es bastante lenta, pero en mi linux Suse es incluso más lenta todavía. Desesperantemente lenta, de hecho. ¡¡Llenar el gigabyte de capacidad de la memoria USB me supone casi una hora y media!!.

    Investigando el asunto con detenimiento y la ayuda de Google, veo que el problema es que el subsistema "submount", utilizado por SUSE y otras distribuciones Linux para gestionar dispositivos removibles como USB o CDs/DVDs, "monta" los dispositivos USB con la opción de "sync".

    Utilizar la opción "sync" tiene su lógica para así poder desenchufar el USB sin necesidad de realizar una operación explícita en el GUI, como la típica aplicación de Windows para "desenchufar dispositivo de forma segura". En Linux SUSE (y posiblemente otras distribuciones que empleen "submount"), se puede desenchufar el USB directamente porque el dispositivo se monta con la opción "sync", que implica que cuando escribimos algo se fuerza inmediatamente al dispositivo, sin pasar por la caché interna del sistema previamente. Por tanto, en cuanto el ordenador nos dice que ha terminado de grabar algo, realmente ha terminado de grabar en el dispositivo. De verdad.

    El problema es que "sync" implica escrituras síncronas en el USB o, lo que es lo mismo, no envía al dispositivo el bloque X hasta que éste no haya confirmado que ha almacenado correctamente el bloque X-1. Ello supone un gran desperdicio de ancho de banda USB (y por tanto, tiempo de grabación), a cambio de ganar comodidad y conveniencia. Asimismo, puede haber efectos de segundo orden debido a que las memorias flash tienen un número de escrituras limitados, y en modo síncrono un sector determinado puede reescribirse varias veces durante una sesión de grabación.

    Para comprobar si es el caso en vuestros sistemas, probad a conectar un dispositivo de almacenamiento USB, montadlo (o dejad que lo haga el sistema, si es automático), y ved el resultado. En Linux SUSE 10.0, que utiliza "submount", parecerá algo parecido a:

    # mount
    ...
    /dev/sdb1 on /media/usbdisk type subfs (rw,nosuid,nodev,sync,fs=floppyfss,procuid,utf8=true)

    El punto delicado es el "sync" resaltado en el listado anterior.

    Una vez localizado el problema, la solución es muy simple. Basta con montar el dispositivo manualmente, pero indicándole que queremos utilizar escrituras asíncronas, más rápidas pero que exigen desconectar el USB de forma "controlada" (más sobre esto después).

    La primera opción es desmontar el dispositivo y montarlo manualmente, con las opciones que nos interesan:

    # mount
    ...
    /dev/sdb1 on /media/usbdisk type subfs (rw,nosuid,nodev,sync,fs=floppyfss,procuid,utf8=true)
    # umount /media/usbdisk
    # mount -t subfs /dev/sdb1 /media/usbdisk -o rw,nosuid,nodev,fs=floppyfss,procuid,utf8=true
    # mount
    ...
    /dev/sdb1 on /media/usbdisk type subfs (rw,nosuid,nodev,fs=floppyfss,procuid,utf8=true)

    En el ejemplo anterior primero vemos las opciones con las que se monta el dispositivo USB. Seguidamente lo desmontamos manualmente y lo volvemos a montar con las mismas opciones que acabamos de ver PERO eliminando el modo "sync". Volviendo a visualizar las opciones, vemos que ya no aparece "sync". Como debe ser.

    Otra opción más limpia es utilizar las funcionalidades "remount" de los kernel Linux modernos, para realizar las operaciones de forma más simple:

    # mount
    ...
    /dev/sdb1 on /media/usbdisk type subfs (rw,nosuid,nodev,sync,fs=floppyfss,procuid,utf8=true)
    # mount /media/usbdisk -o remount,async
    # mount
    ...
    /dev/sdb1 on /media/usbdisk type subfs (rw,nosuid,nodev,fs=floppyfss,procuid,utf8=true)

    Usemos la opción que usemos, si nuestro sistema emplea "submount" (el tipo de ficheros "subfs", como se puede ver en los ejemplos anteriores), el sistema operativo desmontará automáticamente el dispositivo USB cuando lo desenchufemos, como siempre.

    No obstante, ahora tenemos que asegurarnos de que los datos se han almacenado realmente en el dispositivo de almacenamiento USB, ya que ahora las escrituras pasan por la caché de disco interna de Linux. Para ello hay varias opciones. Por ejemplo, en el escritorio KDE de SUSE hay un menú para "desenchufar de forma segura", muy semejante a Windows (aunque con la configuración estándar de SUSE, al emplear escrituras síncronas, es innecesario). Otra opción, ya que tenemos una ventana de terminal abierta, es utilizar el comando "sync" de Unix para asegurarnos de que todos los datos modificados en la caché de escritura de Linux son volcados a los sistemas de almacenamiento del ordenador. Este comando puede tardar bastante tiempo en "terminar" (lo que tarde en grabar todo lo pendiente que mantenía en RAM, la caché), pero cuando acabe significará que no queda nada pendiente y podemos desenchufar el USB sin problemas.

    Por tanto, utilizando un simple comando "mount /media/usbdisk -o remount,async" consigo pasar de grabar a una velocidad de 200KB/s a grabar a 560KB/s. Casi tres veces más rápido. E igual de rápido que con Windows.

    Por supuesto las velocidades concretas dependerán de cada dispositivo USB. El mío es bastante "cutre", ya se ve, porque incluso a su velocidad de "pico" graba a la mitad de la capacidad del estándar USB 1.1. Pero menos da una piedra...

    Pero vuelvo a reiterar: ¡mucho cuidado con asegurarnos de que todos los datos se han grabado en el dispositivo de almacenamiento USB ANTES de desenchufarlo del ordenador!. Recuerda utilizar el comando "sync" o similares, al terminar la grabación.

    El único efecto secundario de trabajar en modo asíncrono, aparte de requerir que seamos cuidadosos, es que una vez que el sistema nos dice que ha terminado de grabar, todavía puede tardar varios minutos en completar realmente todas las operaciones pendientes que contenga en su caché en RAM. Y el acceso de lectura a un dispositivo USB mientras se está grabando en él a toda velocidad, suele ser bastante lento y poco cómodo. Por ejemplo, si durante la grabación pulsamos "cancelar", aún se pueden almacenar muchos megas adicionales y podemos tener que esperar fácilmente un minuto o dos hasta que realmente aborta la operación. Exactamente igual que en Windows...


    Visitas: 1218    Fecha: 2008-08-21

      Páginas Amigas
    Hosting
    Programas Gratis
    Trucos Juegos
    Trucos y Manuales
    Trucos Juegos
    Tutoriales
    Servidores VPS
    Trucos PC
    Manuales Gratis
    Trucos
    Certificados de Seguridad SSL
    Tucos Informática
    Blog Informatica
    Descarga Programas
    Manuales Gratis
    Listas
    Alta en Buscadores
    Tienda Informatica
    PHP Adictos
    Noticias Informatica
    Webmasters
    Manuales Online
    Foros Informática
    Juegos
    Humor
    Foros para compartir
    Portatiles
    Software Gratis
    Tutoriales de Flash y ActionScript
    Web Tutoriales
    ADSLTodo
    Blog Tecnologia
    Fonts
    Tutoriales
    Soft Download
    Recursos Webmaster
    Muestras gratis
    Juegos y Trucos
    Logratis.com
    Algrano
    Trucos Windows
    Boonic
    MaxiTrucos.com
    ManualesGratis.com
    Programar.net
    WebExperto
    Programas Gratis
    Aclantis
    Programatium
    Gamarod JavaScript
    Descargas
    ElGuruProgramador
    Seguridad informática
    Movitec
    Joomla, minijuegos
    Aprender, cursos gratis
    ADSL
    Webpanto Informática
    Recursos Web
    ADR Formación, Cursos online
    Juegos Gratis

    ¿Disponible?
     
    .com .net .org .biz .info
    Registro Dominio
    + Redirección
    + 5 cuentas correo

    Solo 12 euros año
    © Evidalia Web SL, 2000-2008.
    Registro de Dominios :: Servidores Dedicados :: Publicidad :: Diseño Web :: Contactar