La gente a menudo pierde la noción de dónde salían las cosas, se eliminó un archivo y nadie se dio cuenta de que se había ido. Han pasado varias copias de seguridad y ahora se da cuenta de que falta un archivo importante en todas las copias de seguridad disponibles de las últimas 5 semanas. En este tutorial, veremos cómo usar instantáneas de ZFS y tocar varias políticas de instantáneas que funcionarían de manera óptima, en términos de utilización de recursos y recuperación.
ZFS tiene la descripción general de alto nivel de archivos y directorios y comprende cómo se escriben los datos en el disco. Al escribir físicamente los datos en un disco, se hace en bloques discretos. Por lo general, el tamaño del bloque puede subir a 1 MB, pero el valor predeterminado suele ser de 128 kb. Ahora, esto significa que cada modificación (leer, escribir o eliminar) sucederá en los bloques discretos.
El mecanismo de copia en la escritura asegura que cada vez que se modifique un bloque, en lugar de modificar el bloque directamente, hace una copia del bloque con las modificaciones requeridas en el nuevo bloque.
Esto es especialmente útil en los casos en que, por ejemplo, hay una falla de energía y su sistema se bloquea mientras se escribían nuevos datos en el disco. Si eso sucede en un sistema de archivos tradicional, sus archivos se corromperán o se dejarán con agujeros en ellos. Pero si está utilizando ZFS, puede perder la transacción continua, ya que eso sucedía, pero el último estado válido de sus archivos aún se dejará intacto.
Las instantáneas también confían en esta funcionalidad, y de hecho bastante. Cuando toma una instantánea de un conjunto de datos determinado ('DataSet' es el término ZFS para un sistema de archivos), ZFS solo registra la marca de tiempo cuando se realizó la instantánea. Eso es! No se copian datos y no se consume almacenamiento adicional.
Solo cuando el sistema de archivos cambia y los datos en TI divergen desde la instantánea, la instantánea comienza a consumir almacenamiento adicional. Lo que sucede debajo del capó es esto: en lugar de reciclar los viejos bloques con el tiempo, ZFS los mantiene cerca. Esto también mejora la utilización del almacenamiento. Si instala un conjunto de datos de 20 GB y modifica solo unos pocos archivos de texto aquí y allá, la instantánea solo puede tomar unos pocos MB de espacio.
Creando instantáneas
Para demostrar el uso de instantáneas, comencemos con un conjunto de datos que tiene muchos archivos de texto, solo para mantener el asunto simple. La máquina virtual que usaré para la demostración está ejecutando FreeBSD 11.1-Release-P3, que es el último lanzamiento estable disponible en el momento de este escrito. El sistema de archivos raíz se monta en el zroot Piscina por defecto y mucho de los directorios familiares como /usr /src, /home, /etc están todos sus propios conjuntos de datos montados en zroot. Si no sabe lo que significa una piscina (o un zpool), en la lengua vernácula de ZFS, valdría la pena leerlo antes de continuar.
Uno de los muchos sistemas de archivos, o conjuntos de datos, que vienen de forma predeterminada en FreeBSD es: Zroot/USR/SRC
Para ver las propiedades de TI, ejecute el siguiente comando.
root@testbsd: ~ $ zfs list zroot/usr/src
Como puede ver, usa 633 MB de almacenamiento. Contiene todo el árbol de origen para el sistema operativo.
Tomemos una instantánea de Zroot/USR/SRC
root@testbsd: ~ $ zfs snapshot zroot/usr/src@snapshot1
El símbolo @ actúa como un delimitador entre el conjunto de datos y el nombre de la instantánea, que en nuestro caso es instantánea1.
Ahora veamos el estado de la instantánea mientras se crea.
Ejecutando el comando:
ZFS List -RT All Zroot/USR/SRC
Puede ver que la instantánea no usa espacio adicional cuando nace. Tampoco hay espacio disponible, porque es un conjunto de datos solo estrictamente leído, la instantánea en sí no puede crecer, modificar o encoger. Por último, no está montado en ningún lado, lo que lo hace completamente aislado de la jerarquía del sistema de archivos dada.
Ahora, eliminemos el sbin directorio en /usr/src/
root@testbsd: $ rm/usr/src/sbin
Mirando la instantánea, ahora verás que ha crecido,
Esto se espera porque el mecanismo de copia en la escritura está funcionando aquí y eliminar (o modificar) los archivos han llevado a que más datos se asocien solo a la instantánea y no al conjunto de datos en uso realmente en uso.
Observe la columna de referencia en la salida anterior. Le brinda la cantidad de datos accesibles en el conjunto de datos, mientras que la columna usada solo le muestra cuánto espacio está ocupado en el disco físico.
El mecanismo de copia en escritura de ZFS a menudo le da a estos resultados contradicionales donde eliminar un archivo haría que parezca que ahora se está utilizando más espacio que antes. Sin embargo, después de haber leído hasta ahora, sabes lo que realmente está sucediendo!
Antes de terminar, recuperemos el sbin de instantánea1. Para hacer eso, simplemente ejecute:
root@testbsd:/usr/src $ zfs rollback zroot/usr/src@snapshot1
Política de instantánea
La siguiente pregunta para hacer es: con qué frecuencia desea tomar las instantáneas? Si bien puede variar de una empresa a otra, tomemos el ejemplo de una base de datos muy dinámica que cambia de vez en cuando.
Para comenzar, comenzaría a tomar instantáneas cada 6 horas más o menos, pero debido a que la base de datos cambia tanto, pronto sería inviable almacenar todas las numerosas instantáneas que se crearon. Entonces, el siguiente paso sería purgar instantáneas que sean mayores que, por ejemplo, 48 horas.
Ahora, el problema sería recuperar algo que se ha perdido hace 49 horas. Para eludir este problema, puede mantener una o dos instantáneas de ese historial de 48 horas y mantenerlas por una semana. Purgarlos cuando envejecen que eso.
Y si puede continuar de esta manera, puede acumular instantáneas hasta la génesis del sistema, solo para disminuir el orden de frecuencia. Por último, me gustaría señalar que estas instantáneas son de solo lectura, lo que significa que si te infectan un ransomware y te cifran todos sus datos (modificados). Estas instantáneas, muy probablemente, aún estarían intactas.