LINUX

Cómo realizar una copia de seguridad con instantáneas de Btrfs

Realice una copia de seguridad con instantáneas de Btrfs

BTRFS es un sistema de archivos moderno y de código abierto implementado con funciones avanzadas. Funciona con el mecanismo de copia en escritura (CoW).

Está incluido en el kernel de Linux de la línea principal. Las características notables de Btrfs son datos y metadatos de copia en escritura, instantáneas, soporte RAID incorporado, cambio de tamaño y desfragmentación en línea, compresión transparente, almacenamiento eficiente para archivos pequeños, etc.

Instantánea es una copia de tiempo determinado de Btrfs subvolumen. Las instantáneas se pueden escribir de forma predeterminada. Btrfs permite crear instantáneas legibles que son útiles para realizar copias de seguridad.

En este tutorial, aprendemos cómo crear instantáneas Btrfs, copias de seguridad incrementales y restaurarlas.

Información del sistema

Estoy usando Fedora y ahora Fedora 33 tiene Btrfs por defecto. Mi sistema tiene un disco de arranque de 20GB y un disco adicional de 10GB con sistema de archivos Btrfs.

Aquí sda es el disco de arranque, mientras que sdb es el disco adicional que usaremos para la instantánea de btrfs.

Listado de la información del disco:

$ ls -l /dev | grep sd
brw-rw----. 1 root disk      8,     0 Nov 21 08:42 sda
brw-rw----. 1 root disk      8,     1 Nov 21 08:42 sda1
brw-rw----. 1 root disk      8,     2 Nov 21 08:42 sda2
brw-rw----. 1 root disk      8,    16 Nov 21 08:57 sdb
brw-rw----. 1 root disk      8,    17 Nov 21 08:57 sdb1

Para explicar, he creado LVM y lo he montado en / mnt / linoxide_btrfs1 con el sistema de archivos btrfs.

Listado de PV, VG y LV creado:

$ pvs && vgs && lvs
PV         VG          Fmt  Attr PSize   PFree 
/dev/sdb1  linoxide_vg lvm2 a--  <10.00g <5.00g
VG          #PV #LV #SN Attr   VSize   VFree 
linoxide_vg   1   1   0 wz--n- <10.00g <5.00g
LV           VG          Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
linoxide_lv1 linoxide_vg -wi-a----- 5.00g

La salida de la información de montaje:

$ df -h
Filesystem                            Size  Used Avail Use% Mounted on
devtmpfs                              286M     0  286M   0% /dev
tmpfs                                 294M     0  294M   0% /dev/shm
tmpfs                                 294M  4.5M  289M   2% /run
tmpfs                                 294M     0  294M   0% /sys/fs/cgroup
/dev/sda2                              20G  2.3G   18G  12% /
/dev/sda1                             200M   12M  189M   6% /boot/efi
tmpfs                                  59M     0   59M   0% /run/user/1000
tmpfs                                  59M     0   59M   0% /run/user/0
/dev/mapper/linoxide_vg-linoxide_lv1  5.0G   17M  4.5G   1% /mnt/linoxide_btrfs1

Instantánea de Btrfs

Para crear una instantánea btrfs, primero cree una subvolumen.

Paso 1. Cree un subvolumen

Para crear un subvolumen llamado ‘/ mnt / linoxide_btrfs1 / subvol1’, ejecute:

$ sudo btrfs subvolume create /mnt/linoxide_btrfs1/subvol1

Paso 2. Copie los archivos al subvolumen

Copiemos algunos archivos de datos en subvolúmenes. El siguiente comando copia algunos archivos de / etc / a subvol1.

$ cd /mnt/linoxide_btrfs1/subvol1
$ cp /etc/[abc]* .
$ ls -l
-rw-r--r--. 1 root root    16 Nov 21 09:25 adjtime
-rw-r--r--. 1 root root  1529 Nov 21 09:25 aliases
-rw-r--r--. 1 root root 12288 Nov 21 09:25 aliases.db
-rw-------. 1 root root   541 Nov 21 09:25 anacrontab
-rw-r--r--. 1 root root    55 Nov 21 09:25 asound.conf
-rw-r--r--. 1 root root  2853 Nov 21 09:25 bashrc
-rw-r--r--. 1 root root   112 Nov 21 09:25 boto.cfg
-rw-r--r--. 1 root root    37 Nov 21 09:25 centos-release
-rw-r--r--. 1 root root    51 Nov 21 09:25 centos-release-upstream
-rw-r--r--. 1 root root  1053 Nov 21 09:25 chrony.conf

Paso 3. Crea una instantánea

Creemos una instantánea del subvolumen1 (/ mnt / linoxide_btrfs1 / subvol1).

Nota la -r marca para solo lectura. Asegúrese de crear una instantánea como de solo lectura si desea usar los comandos de envío / recepción (explicados en la siguiente sección).

Para crear una instantánea de solo lectura de ‘/ mnt / linoxide_btrfs1 / subvol1’ en ‘/mnt/linoxide_btrfs1/.snapshots/subvol1-day1’, ejecute:

$ sudo btrfs subvolume snapshot -r /mnt/linoxide_btrfs1/subvol1 /mnt/linoxide_btrfs1/.snapshots/subvol1-day1

Verifique el contenido de la instantánea:

$ cd .snapshots/
$ ls -l
drwxr-xr-x. 1 root root 446 Nov 21 09:25 subvol1-day1
$ cd subvol1-day1/
$ ls -l
-rw-r--r--. 1 root root    16 Nov 21 09:25 adjtime
-rw-r--r--. 1 root root  1529 Nov 21 09:25 aliases
-rw-r--r--. 1 root root 12288 Nov 21 09:25 aliases.db
-rw-------. 1 root root   541 Nov 21 09:25 anacrontab
-rw-r--r--. 1 root root    55 Nov 21 09:25 asound.conf
-rw-r--r--. 1 root root  2853 Nov 21 09:25 bashrc
-rw-r--r--. 1 root root   112 Nov 21 09:25 boto.cfg
-rw-r--r--. 1 root root    37 Nov 21 09:25 centos-release
-rw-r--r--. 1 root root    51 Nov 21 09:25 centos-release-upstream
-rw-r--r--. 1 root root  1053 Nov 21 09:25 chrony.conf

Instantánea de Btrfs usando enviar

Hemos tomado una instantánea en el mismo disco que el subvolumen, lo que no es bueno para la estrategia de copia de seguridad. En caso de un desastre como la corrupción del disco, perderá la opción de recuperación.

BTRFS tiene una solución para eso. Podemos enviar instantáneas a un sistema remoto o disco duro externo usando el comando btrfs send y btrfs receive. Están basados ​​en SSH. El sistema remoto también debe formatearse como BTRFS.

Déjame explicarte con un ejemplo.

Cree un nuevo disco con el sistema de archivos btrfs montado en / mnt / linoxide_btrfs2.

$ df -h
Filesystem                             Size  Used Avail Use% Mounted on
devtmpfs                               286M     0  286M   0% /dev
tmpfs                                  294M     0  294M   0% /dev/shm
tmpfs                                  294M  4.5M  289M   2% /run
tmpfs                                  294M     0  294M   0% /sys/fs/cgroup
/dev/sda2                               20G  2.3G   18G  12% /
/dev/sda1                              200M   12M  189M   6% /boot/efi
tmpfs                                   59M     0   59M   0% /run/user/1000
tmpfs                                   59M     0   59M   0% /run/user/0
/dev/mapper/linoxide_vg-linoxide_lv1   5.0G   17M  4.5G   1% /mnt/linoxide_btrfs1
/dev/mapper/linoxide_vg2-linoxide_lv2  5.0G   17M  4.5G   1% /mnt/linoxide_btrfs2

En este ejemplo, el volumen de Btrfs de destino es el segundo disco btrfs montado como / mnt / linoxide_btrfs2.

El siguiente comando para enviar una instantánea a un destino remoto:

$ sudo sudo btrfs send /mnt/linoxide_btrfs1/.snapshots/subvol1-day1 | sudo btrfs receive /mnt/linoxide_btrfs2
At subvol /mnt/linoxide_btrfs1/.snapshots/subvol1-day1
At subvol subvol1-day1

Verifique los archivos de datos:

$ cd /mnt/linoxide_btrfs2/
$ ls -l
drwxr-xr-x. 1 root root 446 Nov 21 09:25 subvol1-day1
$ cd subvol1-day1/
$ ls -l
-rw-r--r--. 1 root root    16 Nov 21 09:25 adjtime
-rw-r--r--. 1 root root  1529 Nov 21 09:25 aliases
-rw-r--r--. 1 root root 12288 Nov 21 09:25 aliases.db
-rw-------. 1 root root   541 Nov 21 09:25 anacrontab
-rw-r--r--. 1 root root    55 Nov 21 09:25 asound.conf
-rw-r--r--. 1 root root  2853 Nov 21 09:25 bashrc
-rw-r--r--. 1 root root   112 Nov 21 09:25 boto.cfg
-rw-r--r--. 1 root root    37 Nov 21 09:25 centos-release
-rw-r--r--. 1 root root    51 Nov 21 09:25 centos-release-upstream
-rw-r--r--. 1 root root  1053 Nov 21 09:25 chrony.conf

Ahora tienes un copia de seguridad completa que también se puede utilizar como DR.

Respaldo incremental

Snapshot también puede enviar copias de seguridad de forma incremental. Cuando se cambia el nombre de algún directorio, Rsync elimina el directorio y transfiere todos los datos nuevamente, mientras que los BTRF solo transfieren algunos bytes de metadatos.

Tomemos otra instantánea.

$ sudo btrfs subvolume snapshot -r /mnt/linoxide_btrfs1/subvol1 /mnt/linoxide_btrfs1/.snapshots/subvol1-day2

Usando -p flag, debe especificar la instantánea base y esta instantánea debe existir en el origen y el destino. El siguiente comando enviará la diferencia entre dos instantáneas base al destino.

$ sudo btrfs send -p /mnt/linoxide_btrfs1/.snapshots/subvol1-day1 /mnt/linoxide_btrfs1/.snapshots/subvol1-day2 | sudo btrfs receive /mnt/linoxide_btrfs2

Cómo restaurar la instantánea Btrfs

En esta sección, explicaré cómo restaurar datos de una instantánea tomada anteriormente. Tomemos el escenario donde el archivo se elimina por error. Puede recuperar la última instantánea o incluso recuperar una versión anterior del archivo a partir de instantáneas anteriores.

Simplemente puede usar el comando cp para restaurar el archivo eliminado:

$ sudo cp /mnt/linoxide_btrfs1/.snapshots/subvol1-day1/chrony.conf  /mnt/linoxide_btrfs1/subvol1

Supongamos que eliminó todo el subvolumen, incluso en ese caso, con el uso del comando cp, puede restaurar todo el contenido de la instantánea:

$ sudo cp -r /mnt/linoxide_btrfs1/.snapshots/subvol1-day1 /mnt/linoxide_btrfs1/subvol1

O puede restaurar el subvolumen usando el comando btrfs snapshot:

$ sudo btrfs subvolume snapshot /mnt/linoxide_btrfs1/.snapshots/subvol1-day1 /mnt/linoxide_btrfs1/subvol1

Limpieza de instantáneas

Cuando realiza una copia de seguridad incremental periódica con una instantánea de btrfs, puede tener muchos de ellos acumulados. Esto puede crear confusión y ocupar mucho espacio en el disco. También puede purgar las instantáneas antiguas no deseadas mediante la eliminación de instantáneas. Mientras realiza la purga, tenga en cuenta que para realizar un envío incremental, necesita la última instantánea.

$ sudo btrfs subvolume delete /mnt/linoxide_btrfs1/.snapshots/subvol1-day1

Conclusión

Btrfs ha madurado a un ritmo rápido. Hoy en día, tiene una amplia gama de capacidades como compresión, instantáneas, integridad de datos y rendimiento que lo convierten en un sistema de archivos listo para producción. Espero que este artículo sea útil para usar instantáneas de BTRFS. Déjame saber tus opiniones en la sección de comentarios.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar