La caché de escritura: qué es y para qué sirve
Cuando copiamos archivos de gran volumen a una memoria USB o a un disco duro externo, estamos atentos a esa barra de progreso a la espera de que termine. Cuando llega al 100 %, el explorador deja de mostrar actividad e incluso desaparece (en un entorno gráfico). ¿Significa eso que todos los datos ya están almacenados físicamente en el dispositivo?
Es una pregunta que casi todos responderían «sí». Y, sin embargo, da pie a explicar qué es la caché de escritura, el papel del kernel, el motivo por el que existen sync y umount, e incluso por qué conviene expulsar correctamente una unidad USB.
Así es que mi respuesta a esa pregunta es:
No.
Entendamos el procedimiento.
Copia de un archivo grande
Cuando realizamos una copia cp, movemos archivos con mvo incluso eliminamos con rm, no existe ninguna garantía de que todos los cambios se hayan escrito físicamente en el dispositivo.
Linux utiliza una caché de escritura para mejorar el rendimiento. Es decir:
- Tú copias, mueves o borras los archivos.
- El sistema registra esas operaciones y las deja pendientes de escritura.
- Parte de ese trabajo puede quedarse unos segundos o incluso más tiempo en la memoria RAM.
- Más tarde, el kernel envía esos datos al dispositivo.
«Has terminado de copiar 12 GB a una memoria USB. La barra de progreso desaparece y piensas que ya puedes retirarlo. ¿Seguro?»
¿Ya está realmente escrito?
Mientras los datos permanecen en la caché de escritura, si desconectas esos dispositivos de almacenamiento estás arriesgando que no se hayan sincronizado todos los datos correctamente. Y cuando, en otro momento, quisieras volver a conectar la memoria externa, o discos duros, podrías encontrarte con que esos datos están corruptos e ilegibles. Muchas veces podemos encontrarnos con la mala sorpresa de que ese archivo tenga 0 bytes.
📌 No, no hay que fiarse.

¿Qué es la caché de escritura?
La caché de escritura es una zona de memoria temporal que Linux utiliza para almacenar los datos antes de escribirlos definitivamente en el dispositivo de almacenamiento.
En lugar de guardar cada cambio inmediatamente en el disco o en una memoria USB, el sistema los conserva en la memoria RAM. De este modo puede agrupar varias operaciones y escribirlas de una forma más eficiente, reduciendo el tiempo de espera y mejorando el rendimiento general.
Por este motivo, que una copia de archivos haya finalizado no siempre significa que todos los datos se encuentren ya almacenados físicamente en el dispositivo. En determinadas situaciones todavía pueden quedar operaciones pendientes de escritura.
¿Por qué Linux no escribe inmediatamente?
En muchas ocasiones agrupa varias operaciones y decide el momento más adecuado para enviarlas al dispositivo.
Esto lo hace para evitar accesos innecesarios a tus dispositivos, reduciendo el número de escrituras físicas ayuda a prevenir un desgaste prematuro de las unidades de almacenamiento.
¿Cómo nos aseguramos de que todos los datos se han escrito?
Después de este tostón teórico, aunque necesario para comprender los procesos, vamos a lo que seguro estabais pensando, ¿qué comando nos va a enseñar hoy?
Uno no, ¡TRES!
sync, fuerza el vaciado de la caché de escritura.umount, desmonta el sistema de archivos.udisksctl, desmonta el sistema de archivos y expulsa el dispositivo.
sync
$ sync
Con este comando, sin atributos, obliga a escribir de manera inmediata todos los cambios pendientes en los dispositivos de almacenamiento y no devuelve el control hasta que termina.
Una orden escueta, pero necesaria, para asegurar que la caché se vacíe.
umount
Desmonta el sistema de archivos. En este caso se necesitan privilegios administrativos con sudo.
sudo umount /dev/nombre_partición
$ sudo umount /dev/sdk1
o
sudo umount /media/nombre_usuario/nombre_dispositivo
$ sudo umount /media/1973sobreruedas/5CB3-72E1
Puedes utilizar cualquiera de las dos rutas. Ambas hacen referencia al mismo sistema de archivos montado.
udisksctl
udisksctl permite realizar las mismas acciones que normalmente hacemos desde el entorno gráfico al pulsar «Expulsar» sobre una memoria USB.
Primero desmonta el sistema de archivos para asegurarse de que no quedan operaciones pendientes de escritura y, posteriormente, puede apagar lógicamente el dispositivo. De este modo, el sistema deja de utilizar la memoria USB y podremos retirarla con mayor seguridad.
Desmontar la partición:
$ udisksctl unmount -b /dev/sdk1
Nota: sdk1, es una partición de ejemplo, para conocer las particiones montadas en tu sistema, usa previamente lsblk -f.
Apagar lógicamente el dispositivo:
$ udisksctl power-off -b /dev/sdk
Una vez completados ambos pasos, la memoria USB puede retirarse físicamente.
El verdadero valor añadido de udisksctl no es unmount, sino power-off que deja el dispositivo en un estado seguro para poder retirarlo. Incluso, en algunos equipos, puede cortar la alimentación del puerto o apagar el LED del dispositivo. La combinación de ambos comandos es la diferencia respecto a umount, este último no apaga el dispositivo USB, sólo desmonta el sistema de archivos.
Nota: ¿Por qué existe udisksctl unmount si hace lo mismo que umount? Porque udisksctl no pretende sustituir a umount. Forma parte de una herramienta más amplia (udisks2) diseñada para trabajar con dispositivos de almacenamiento de forma integrada con el escritorio y con políticas de permisos. Imita la integración de un modo gráfico: esto quiere decir que utiliza la misma herramienta que emplean muchos entornos gráficos para gestionar dispositivos USB.
Sus ventajas son:
- Permite que un usuario normal desmonte un USB sin usar
sudoen muchos casos. - Se integra con los gestores de archivos.
- Entiende conceptos como «dispositivo», «partición», «apagar el dispositivo», etc.
Sin embargo, si continúo me desvío del concepto inicial de esta entrada.
🟢 La próxima vez que copies archivos a una memoria USB o a un disco externo, recuerda que terminar una copia no siempre significa que los datos ya estén escritos físicamente.
🟡 Antes de retirar el dispositivo, asegúrate de que las operaciones de escritura han finalizado. Ese pequeño gesto puede marcar la diferencia entre conservar tus datos… o perderlos.

