Gestionar instantáneas en OpenSUSE 42.1 con Btrfs y Snapper

Si estáis al tanto de mis cuentas en las redes sociales, tanto la que tengo en GNU Social o en  Twitter,  que la semana pasada asistí a las jornadas en Barcelona del SuSE Expert Day. Una serie de charlas técnicas sobre los productos de la empresa afincada en Nuremberg. Uno de los puntos más interesantes fue sobre las ventajas del sistema Btrfs. Que adoptó tanto para su producto corporativo SLES 12 como el comunitario OpenSUSE 42.1

Sobre Btrfs

Su nombre es un acrónimo del inglés de “B-tree FS” que se suele pronunciar “Butter FS”, se trata de un sistema de ficheros de copia y escritura creado por Oracle para GNU Linux. El fin de su creación es sustituir a EXT3, para así eliminar las limitaciones de éste, como el tamaño máximo de ficheros. Otro de los objetivos es “la tolerancia de fallos, reparación y fácil administración”. El proyecto se inició en 2009 y desde entonces utiliza una licencia libre GPL.

Ya se considera un producto estable, muestra de ellos es que muchas distribuciones lo han incorporado. Entre sus principales características encontramos empaquetado eficiente en espacio de archivos pequeños y directorios indexados, asignación dinámica de inodos, snapshots (instantáneas) , subvolúmenes, mirroring, compresión y entre muchas otras.

Gestión de snapshots con Btrfs

La gestión de las instantáneas se puede realizar desde la consola de comandos o shell y desde la herramienta YaST. La pieza fundamental en SUSE y OpenSUSE para trabajar es el programa Snapper. Que nos ayudará con todo lo relacionado con los snapshots.

Para utilizar desde la líneas de comando, simplemente debemos escribir:

  1. snapper

Si al contrario queremos utilizar YaST , sería:

  1. yast2-snapper

Vamos a empezar a trabajar con la herramienta. Para ver una lista de las instantáneas en el sistema:

  1. snapper list
  2. #O también:
  3. snapper ls

Una muestra del resultado de la consola de comandos sería el siguiente:

opensuse-btrfs-snapper-01

El mismo resultado desde Yast

opensuse-btrfs-snapper-02

En la primera columna observamos el número de identificación de la instantánea, en la segunda el tipo, después iría la fecha, la descripción y los datos de usuario. En la descripción se nos indica que estábamos haciendo al realizar el snapshot. Es importante ya que así sabremos que estábamos haciendo. Por ejemplo, si borramos una carpeta se realizará una instantánea justo antes del borrado, para que así,  a posteriori, se pueda volver a ese estado anterior. Respecto a las fechas, nos indica el periodo abarcado por la instantánea, entre la fecha de inicio y la de final.

Snapper es una gran navaja suiza, ya que nos permitirá tener accesos a múltiples usos. Por ejemplo, se puede saber todos los cambios que han habido entre dos instantáneas:

  1. snapper status 10..11

O diferencias entre los ficheros:

  1. snapper diff 12..13

También podemos crear instantáneas de manera manual, por ejemplo si vamos a realizar un cambio importante en el sistema, y queremos tener la posibilidad de revertir los cambios:

  1. snapper create --description "Instantánea de prueba"

Desde Yast sería aún más sencillo:

opensuse-btrfs-snapper-03

Una vez allí, podemos crear, modificar y borrar cualquier instantánea.

opensuse-btrfs-snapper-04

Para recuperar el sistema a un estado anterior debemos seleccionar cualquiera de ellas, marcar sobre «Mostrar cambios«, seleccionar los cambios que queremos revertir y marcar «Restaurar seleccionados«

Las instantáneas a medida que se van creado van ocupando espacio de disco, para elimintarlas se haría de la siguiente manera:

  1. snapper delete 11

Gestión de instantáneas desde GRUB

Desde el menú de arranque también podemos gestionar los snapshots del sistema.

opensuse-btrfs-snapper-05

Al marcar la opción se nos mostrará una lista con todas las instántaneas ubicadas en el sistema.

El artículo es a modo de introducción e información del sistema de instantáneas con snapper.

Para saber más podéis consultar el tutorial oficial de OpenSUSE o bien el siguiente documento.