Esta función de almacenamiento de Linux parece una trampa una vez que la comprendes

El almacenamiento es una de esas partes de Linux en las que la mayoría de la gente sólo piensa cuando algo se estropea. Usted elige un sistema de archivos durante la instalación, le confía sus archivos y luego olvida que existe. Se encuentra debajo de todo: su sistema operativo, su carpeta de inicio, sus registros, sus descargas, su trabajo y todos los pequeños errores que comete al cambiar cosas. Durante años, eso significa principalmente una cosa: cuando un archivo cambia, los datos antiguos se sobrescriben con los nuevos y usted sigue adelante.

Copy-on-write (CoW) cambia ese trato de una manera que casi parece una trampa. En lugar de apresurarse a sobrescribir bloques antiguos, un sistema de archivos CoW escribe los datos modificados en otro lugar y luego actualiza su mapa. Ese simple cambio es lo que hace posibles las instantáneas, los clones baratos, las reversiones y las copias de seguridad más inteligentes.

CoW cambia la regla que creías arreglada

Las nuevas escrituras dejan en paz los viejos bloques

En un sistema de archivos simple, cambiar un archivo a menudo significa cambiar los bloques antiguos existentes. En un sistema de archivos CoW, los bloques antiguos se dejan en paz y los datos modificados se escriben en bloques nuevos. Sólo después de eso el sistema de archivos actualiza sus punteros.

Esto significa que el sistema de archivos puede mantener una vista antigua de los datos sin realizar una segunda copia completa al principio. Esa idea está detrás de la mayoría de las características que hacen que CoW se sienta injusto la primera vez que te salva. Una instantánea puede contener el estado anterior. Un archivo clonado puede compartir bloques con el primer archivo. Una secuencia de respaldo puede enviar solo lo que cambió después de una instantánea anterior.

Los datos modificados todavía ocupan espacio. Si guardas meses de instantáneas mientras reescribes archivos enormes todos los días, tu disco aún se llenará y luego te mirará como si te lo mereces. El verdadero problema no es que el almacenamiento sea gratuito, sino que los datos no modificados no necesitan copiarse nuevamente para poder conservarlos de otra manera.

La forma más sencilla de sentir que CoW funciona es pensar en un archivo grande, como una imagen de disco de VM. Si lo copia de la forma habitual, obtendrá otra copia completa. Si lo copia con enlaces de referencia en Btrfs, el segundo archivo comienza compartiendo los mismos bloques de datos que el primero. Ambos archivos parecen reales, se pueden abrir y modificar. Sin embargo, el segundo no necesita otro montón de espacio a la vez.

Cuando una copia cambia, sólo las partes modificadas necesitan nuevos bloques. Las partes sin cambios siguen siendo compartidas. Ésta es la razón por la que las instantáneas son tan útiles. Se puede tomar una instantánea de un subvolumen casi de inmediato, porque comienza como otra vista de los mismos bloques. A medida que cambia el sistema en vivo, la instantánea sigue manteniendo los bloques antiguos. Eso hace que las instantáneas sean perfectas antes de las actualizaciones del sistema, las ediciones de configuración arriesgadas, la limpieza de paquetes y los experimentos nocturnos que comienzan con «esto solo debería tomar un minuto».

Btrfs es la forma compatible con Linux

Está cerca del núcleo y es de fácil acceso.

En Linux, Btrfs es la forma más sencilla de empezar a utilizar el almacenamiento CoW. Vive en el árbol del núcleo, sus herramientas de espacio de usuario están ampliamente empaquetadas y muchas distribuciones saben cómo instalarlas directamente en él. Debian puede utilizar Btrfs durante la instalación y, en un disco de repuesto, puede empezar a probarlo con sólo unos pocos comandos.

Btrfs le ofrece subvolúmenes, instantáneas, sumas de comprobación, enlaces de referencia y envío/recepción. Esto lo hace útil en computadoras portátiles, de escritorio, pequeños servidores domésticos, unidades de respaldo y cajas de prueba. Puede mantener su sistema de archivos raíz en un subvolumen, su directorio de inicio en otro y sus instantáneas en algún lugar fácil de administrar.

OpenZFS es el otro gran nombre en este espacio y hay casos en los que es la mejor opción. Si está creando un servidor de almacenamiento con espejos, RAIDZ, conjuntos de datos, cuotas, limpieza, instantáneas y replicación, OpenZFS a menudo parece más maduro. Sus herramientas son claras, su modelo de grupo es sólido y su historial en configuraciones con mucho almacenamiento es difícil de ignorar.

Hacer una copia de seguridad no es suficiente: una guía moderna de ZFS en Linux

Es asombroso, pero lamentablemente tiene algunas desventajas.

El problema es la compatibilidad con Linux, OpenZFS en Linux ha mejorado mucho y las versiones recientes se mantienen al día con los kernels más nuevos mejor que antes. Aún así, no está tan cerca de Linux como Btrfs. Btrfs es parte del kernel mientras que OpenZFS no lo es, principalmente debido a la licencia, por lo que en Debian aparece contrib y paquetes DKMS que crean un módulo de kernel para su sistema. Esto funciona bien para muchos usuarios, pero sigue siendo otra parte móvil.

Configure una configuración segura de btrfs en Debian

Utilice un disco loopback antes de tocar datos reales

La mejor manera de aprender sobre CoW es no reinstalar su máquina. Utilice un disco de repuesto, un SSD USB o un archivo loopback. Un archivo loopback es más lento que un disco real, pero es lo suficientemente bueno para aprender instantáneas, enlaces de referencia y subvolúmenes sin arriesgar nada útil.

Instale las herramientas primero:

sudo apt update -y
sudo apt install btrfs-progs -y

Crea una imagen de prueba:

truncate -s 5G ~/btrfs-demo.img
sudo losetup --find --show ~/btrfs-demo.img

El último comando imprime un dispositivo de bucle, como /dev/loop11. Usando el dispositivo, el sistema muestra:

sudo mkfs.btrfs -L cowdemo /dev/loop11
sudo mkdir -p /mnt/cowdemo

Crear un subvolumen y clonar un archivo

Aquí es donde CoW empieza a parecer falso

Cree un subvolumen para sus datos de prueba:

sudo btrfs subvolume create /mnt/cowdemo/@data
sudo mkdir -p /mnt/cowdemo/@data/projects

Un subvolumen parece una carpeta, pero Btrfs lo trata como su propio árbol de archivos. Por eso se puede fotografiar por sí solo.

Ahora cree un archivo de prueba grande:

cd /mnt/cowdemo/@data/projects
sudo dd if=/dev/zero of=bigfile.img bs=1M count=1024 status=progress

Haga una copia del enlace de referencia:

sudo cp --reflink=always bigfile.img bigfile-copy.img
ls -lh
sudo btrfs filesystem du -s .

ls muestra dos archivos grandes, pero Btrfs sabe que comparten bloques. Parece que ha copiado un archivo de 1 GB, pero el sistema de archivos no ha gastado ni un gigabyte completo más de inmediato.

Ahora cambia parte de la copia:

sudo dd if=/dev/urandom of=bigfile-copy.img bs=1M count=50 conv=notrunc,fsync status=progress
sync
sudo btrfs filesystem du -s .

Sólo alrededor de 50 MiB se convirtieron en nuevos datos únicos, mientras que la mayor parte del 1 GiB todavía se comparte. El shell dice que hay dos archivos de 1 GiB, pero Btrfs dice que en realidad solo se comparte 1 GiB en el disco, y esa es la parte que realmente parece hacer trampa.

3 copias, 2 formatos, 1 gran problema: por qué fallan las copias de seguridad modernas

La regla de respaldo ‘3-2-1’ finalmente está obsoleta: esto es lo que debe hacer en su lugar


CoW cambia tu forma de pensar sobre el almacenamiento

CoW es fácil de subestimar si lo describe como una característica más del sistema de archivos, porque el verdadero cambio está en los hábitos que hace posible. En lugar de copiar un directorio completo antes de probar un cambio riesgoso, puede tomar una instantánea, usar estados antiguos, clones baratos y rutas de reversión, y seguir trabajando. Una vez que hace clic, CoW se siente como una de esas características de Linux que desearía haber aprendido hace años.

We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept