Tuve problemas similares antes, pero no recuerdo cómo lo resolví.
Cuando intento copiar algo en una memoria USB, con FAT, se detiene cerca del final, a veces al 100%. Y, por supuesto, cuando transfiero la tarjeta de memoria a otro lugar, no contiene el archivo completo. (¡el archivo es una película!)
Intenté montar el dispositivo con mount -o flush, pero obtengo el mismo problema.
Además, formateé la memoria USB con una nueva partición FAT ...
¿Alguna idea de lo frío que hago?
PD: Creo que no está relacionado con el sistema operativo, que es Debian, y creo que hacer frente a la unidad SSD no lo bloquea.
Respuestas:
La razón por la que sucede de esa manera es que el programa dice "escribir estos datos" y el kernel de Linux los copia en un búfer de memoria que está en cola para ir al disco, y luego dice "ok, hecho". Entonces el programa piensa que ha copiado todo. Luego, el programa cierra el archivo, pero de repente el kernel lo hace esperar mientras ese búfer se extrae al disco.
Entonces, desafortunadamente, el programa no puede decirle cuánto tiempo llevará vaciar el búfer porque no lo sabe.
Si desea probar algunos trucos para usuarios avanzados, puede reducir el tamaño del búfer que utiliza Linux configurando el parámetro del núcleo
vm.dirty_bytes
en algo como15000000
(15 MB). Esto significa que la aplicación no puede obtener más de 15 MB antes de su progreso real. (Puede cambiar los parámetros del kernel sobre la marcha,sudo sysctl vm.dirty_bytes=15000000
pero hacer que se mantengan durante un reinicio requiere cambiar un archivo de configuración como el/etc/sysctl.conf
que podría ser específico para su distribución).Un efecto secundario es que su computadora puede tener un rendimiento de escritura de datos más bajo con esta configuración, pero en general, me resulta útil ver que un programa se ejecuta durante mucho tiempo mientras escribe muchos datos frente a la confusión de tener un El programa parece estar hecho con su trabajo, pero el sistema está muy retrasado ya que el núcleo hace el trabajo real. Establecer
dirty_bytes
un valor razonablemente pequeño también puede ayudar a evitar que su sistema deje de responder cuando tenga poca memoria libre y ejecute un programa que de repente escriba muchos datos.¡Pero no lo configure demasiado pequeño! Utilizo 15 MB como una estimación aproximada de que el núcleo puede vaciar el búfer a un disco duro normal en 1/4 de segundo o menos. Evita que mi sistema se sienta "lento".
fuente
Antigua pregunta, pero parece que el problema aún surge. Establecer el búfer en 15 MB como se sugiere aquí no funcionó en Ubuntu 19.04, y detuvo mi sistema.
Intenté copiar un archivo de 1,5 GB en una unidad FAT32 de 16 GB vacía (recién formateada). Lo dejé correr durante unos 10 minutos solo para ver si terminaría, sin suerte.
Reformatear a NTFS permite que la operación finalice en menos de 10 segundos. No sé por qué esto sería importante porque FAT32 debería permitir algo inferior a 2 GB, pero parecía funcionar bien. No es una solución ideal para las unidades que desea usar con MacOS, sino una solución fácil para todos los demás casos de uso. Me imagino que exFAT habría funcionado de manera similar, pero no lo probé.
fuente