¿Has tenido problemas copiando archivos a pendrives desde un sistema linux?, haz memoria.. seguro que sí.
Y si usas Linux desde hace tiempo, probablemente llevas años cayendo en las mismas trampas... pero, nadie te lo explica, nadie lo documenta, y lo peor no se informa al usuario de nada, ninguna distro, ningún vídeo en 'Youtube', ningún post de ayuda... silencio absoluto.
Que quede claro: esto no es una crítica al sistema linux. Es simplemente un aviso que debería de 'venir de serie' para evitar problemas reales al usuario. Hay que tratar el asunto con honestidad. Por que nadie lo hace, y ya va siendo hora.
Imagina lo siguiente: tienes un pendrive y quieres formatearlo. Algo habitual.
Usas la herramienta que ya trae tu sistema -en este caso Linux Mint o una derivada como Guadalinex modificada-
Te lanzas con confianza al "formateador de memorias USB" (o cualquier herramienta similar que venga preinstalada)
Hasta aquí todo bien, te vas al menú de "Sistemas de archivos" y ves la opción NTFS :)
Y claro, tiene sentido elegirlo: es compatible con Windows y con la mayoría de televisores, reproductores, consolas...
En teoría.. si la opción está ahí, es por que es compatible, usable y recomendable, ¿no?
Así que seleccionas NTFS, pulsas 'Formatear'... y el sistema tira 'palante' como un campeón.
Ni una advertencia. Ni un aviso. Ni una nota informativa. Nada.
Ni si quiera un "Oye, esto puede tardar bastante... y no te extrañe que incluso me quede colgado indefinidamente"
NTFS es un sistema de archivos desarrollado por Microsoft. No es abierto, ni estándar fuera de Windows, y su implementación en Linux no es nativa.
Lo que usamos en Linux para manejar NTFS es una capa llamada ntfs-3g, una solución basada en ingeniería inversa.
Traducción: Linux no entiende NTFS de forma natural; lo imita lo mejor que puede.
Y sí, funciona… pero a costa de varios problemas:
No hay integración total con el sistema: Linux tiene que tratar a NTFS como un “extra” extraño. Eso ralentiza todo.
No se aprovechan bien las cachés ni las escrituras diferidas, lo que puede hacer que parezca que una operación terminó, cuando en realidad los datos siguen “pendientes” en memoria. (y ojo que la escritura diferida es otro punto que debemos tratar aparte, por que con NTFS se agrava pero ocurre lo mismo con su propio sistema ext3 o ext4)
Las herramientas gráficas (como el Formateador USB) simplemente llaman a procesos por debajo sin controlar ni informar sobre este detalle. No hay barra de carga 'fiel' para saber si la operación terminó correctamente... es un... 'espera que voy a ver lo que se puede hacer'.
NTFS no está pensado para las estructuras de permisos de Linux, así que se aplican parches por encima que a veces fallan.
Y lo peor: si algo sale mal, no suele haber recuperación limpia. NTFS no tiene las mismas garantías que un ext4 o incluso FAT32 en entorno Linux.
Entonces… ¿por qué sigue ahí como opción?
Porque técnicamente se puede usar. Y porque hay mucha demanda por su compatibilidad con otros sistemas.
Pero eso no significa que sea recomendable, es más, debería evitarse a toda costa en linux. (Y NADIE AVISA)
Recomendación: Si vas a usar un pendrive en Linux y también en Windows o una Smart TV, macOS etc considera usar exFAT en lugar de NTFS. Tiene menos restricciones de tamaño que NTFS/FAT32 y un soporte más moderno (y nativo en Windows 10+).
Sí, exFAT es compatible con Linux de forma nativa desde hace ya unos años, sin necesidad de emulación ni capas como ntfs-3g. Aquí tienes los puntos clave para que lo entiendas rápido y claro:
Desde el kernel 5.4 (2019), Linux incluye soporte nativo para exFAT, gracias a que Microsoft liberó públicamente las especificaciones y autorizó su uso.
El soporte ya está incluido en la mayoría de distribuciones modernas, como Linux Mint, Ubuntu, Fedora, Arch, etc. No necesitas instalar nada extra en la mayoría de casos.
No usa FUSE (como ntfs-3g), sino que está implementado directamente en el kernel. Resultado: es mucho más rápido, estable y confiable.
Bien, ya tenemos claro y solucionado el primer tema correctamente, ¡nos han avisado! y como 'ti@s list@s' que somos ya no vamos a elegir NTFS para ir andando por casa con pendrives o discos duros en linux...
Pero.. ¡es que hay otro problema! (y tampoco advierten de nada)
Has copiado unos archivos, cierras la ventana del gestor de archivos, el sistema "no dice nada", y tú crees que todo ha terminado… pero NO!.. vas a desmontar la unidad ¡y no se puede!.
Explicación: Gran parte de esos archivos todavía están en RAM y no se han escrito físicamente al pendrive
Bienvenido al mundo de la escritura diferida.
Linux (y otros sistemas también) usa un sistema de caché de escritura para mejorar el rendimiento. ¿Cómo funciona?
Tú copias un archivo.
El sistema lo coloca primero en la RAM, en lo que se llama páginas sucias (Dirty pages).
Luego, en segundo plano, se encarga de ir escribiéndolo poco a poco al disco o pendrive.
Esto es eficiente... pero engañoso para el usuario: ni el entorno gráfico ni la terminal te avisan de que la copia real aún no terminó.
Y claro.. vas a extraerlo de tu pc.. y el sistema te dice 'Espera que está ocupado', o peor, lo quitas directamente, con lo que:
Puedes perder archivos parcialmente escritos.
Corromper el sistema de archivos del pendrive.
Creer que la copia fue exitosa… y luego darte cuenta de que no está el archivo (y pendrive corrupto)
Tiene costes para el usuario, perdida de tiempo + cabreo adicional :)
Esto pasa incluso usando ext3, ext4, exFAT o cualquier otro formato. No es exclusivo de NTFS.
Desde hace ya bastante tiempo, este comando de terminal es uno de mis favoritos y que tiene que formar parte del vuestro, (sí o sí, si usáis linux habitualmente y trabajais con pendrives/discos duros, claro)
watch "grep -e Dirty: -e Writeback: /proc/meminfo"
Este comando actualiza cada 2 segundos y te muestra:
Dirty: datos aún pendientes de escribir a disco.
Writeback: datos en proceso de escritura.
Cuando ambos estén a 0 (o muy cercano a 0, pocos Kb), es totalmente seguro 'expulsar' y luego 'extraer' el pendrive :)
¿Por que no hay advertencias al usar NTFS?, sería lógico avisar.. 'Oye tú.. NTFS es de la competencia.. y no está correctamente implementado, si luego esto no funciona/tarda bastante o incluso, el proceso 'puede quedarse colgado indefinidamente', no te quejes :)
¿Por que no hay 'un monitoreo real del final de la escritura en linux a pendrives'?
¿Por qué tenemos que recurrir a comandos como watch grep Dirty o sync como si estuviéramos desarmando una bomba?
¿De quien es la culpa?: ¿Del escritorio GNOME/KDE?, ¿Del Kernel?, ¿de ntfs-3g?, ¿de las distros? (si, no se salva ninguna).
Nadie sabe, nadie responde. Todos asumen que "ya lo arreglará otro"
Resultado:
El usuario 'casual' sufre el perjuicio y posible pérdida de datos personales + tiempo en reparar el pendrive.
El sistema parece fallar sin explicación.
Y al final el usuario vuelve a Windows (aunque sea solo para formatear), porque "ahí al menos ésto si va bien" (son segundos lo que tarda en formatear un pendrive o disco duro de alta capacidad en NTFS, lógico, es su sistema de ficheros propietario)
Pero lo irónico del asunto es que linux es capaz de hacer todo esto bien. Tiene el control, tiene los drivers (si sabes que formato elegir) y tiene la potencia. Lo único que falta es la voluntad de hacer que la experiencia por defecto en el escritorio linux 'sea confiable' y aquí, en esta tarea cotidiana y normal de la vida, hay trabajo pendiente.