En el tutorial anterior, aprendimos cómo crear un zpool y un sistema de archivos o conjunto de datos ZFS. En este tutorial, le mostraré paso a paso cómo trabajar con instantáneas, clones y replicaciones de ZFS. Instantánea, clon. y la replicación son las funciones más potentes del sistema de archivos ZFS.
Instantáneas de ZFS:descripción general
La instantánea es una de las características más poderosas de ZFS, una instantánea proporciona una copia de solo lectura en un momento dado de un sistema de archivos o volumen que no consume espacio adicional en el grupo de ZFS. La instantánea usa solo espacio cuando se cambian las referencias a bloques. Las instantáneas preservan el espacio en disco al registrar solo las diferencias entre el conjunto de datos actual y una versión anterior.
Un ejemplo típico de uso de una instantánea es tener una forma rápida de realizar una copia de seguridad del estado actual del sistema de archivos cuando se realiza una acción riesgosa, como una instalación de software o una actualización del sistema.
Crear y destruir una instantánea ZFS
No se puede acceder directamente a las instantáneas de los volúmenes, pero se pueden clonar, respaldar y revertir. Crear y destruir una instantánea ZFS es muy fácil, podemos usar los comandos zfs snapshot y zfs destroy para eso.
Cree un grupo llamado grupo de datos.
# zpool create datapool mirror /dev/sdb /dev/sdc
# zpool list
NOMBRE TAMAÑO ASIGNACIÓN FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
datapool 1.98G 65K 1.98G - 0% 0% 1.00x EN LÍNEA -
Ahora, tenemos un grupo llamado grupo de datos, luego tenemos que crear un sistema de archivos ZFS para simular la función de instantánea.
# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NOMBRE USED AVAIL REFER MOUNTPOINT
datapool 93.5K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs
Para crear una instantánea del sistema de archivos, podemos usar el comando de instantánea zfs especificando el grupo y el nombre de la instantánea. Podemos usar la opción -r si queremos crear una instantánea de forma recursiva. El nombre de la instantánea debe cumplir los siguientes requisitos de denominación:
[correo electrónico protegido][correo electrónico protegido]
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NOMBRE USED AVAIL REFER MOUNTPOINT
datapool/[email protected] 0 - 19.5K -
Se crea una instantánea para datapool/docs.
Para destruir la instantánea, podemos usar el comando zfs destroy como de costumbre.
# zfs destroy datapool/[email protected]
# zfs list -t snapshot
no hay conjuntos de datos disponibles
Revertir una instantánea
Para la simulación, necesitamos crear un archivo de prueba en el directorio /docs.
# echo "versión 1"> /docs/data.txt
# cat /docs/data.txt
versión 1
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NOMBRE USED AVAIL REFER MOUNTPOINT
datapool/[email protected] 9K - 19.5K -
Ahora cambiamos el contenido de /docs/data.txt
# echo "versión 2"> /docs/data.txt
# cat /docs/data.txt
versión 2
Podemos revertir completamente a una instantánea anterior que nos dará la copia de un momento en el momento en que se tomó la instantánea.
# zfs list -t snapshot
NOMBRE USED AVAIL REFER MOUNTPOINT
grupo de datos/[email protected] 9.50K - 19.5K -
# zfs rollback datapool/[email protected]
# cat /docs/data.txt
versión 1
Como podemos ver, el contenido de data.txt vuelve al contenido anterior.
Si queremos cambiar el nombre de la instantánea, podemos usar el comando de cambio de nombre zfs.
- 19.5K -Nota:un conjunto de datos no se puede destruir si existen instantáneas de este conjunto de datos, pero podemos usar la opción -r para anular eso.
# zfs destroy datapool/docs
no puede destruir 'datapool/docs':el sistema de archivos tiene hijos
use '-r' para destruir los siguientes conjuntos de datos:
datapool/[email protected]
# zfs destroy -r datapool/docs
# zfs list -t snapshot
no hay conjuntos de datos disponibles
Descripción general de los clones de ZFS
Un clon es un volumen de escritura o un sistema de archivos cuyo contenido inicial es el mismo que el conjunto de datos a partir del cual se creó.
Crear y destruir un clon de ZFS
Los clones solo se pueden crear a partir de una instantánea y una instantánea no se puede eliminar hasta que elimine el clon que se basa en esta instantánea. Para crear un clon, use el comando zfs clone.
# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NOMBRE USED AVAIL REFER MOUNTPOINT
datapool 93.5K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs
# mkdir /docs/carpeta{1..5}
# ls /docs/
carpeta1 carpeta2 carpeta3 carpeta4 carpeta5
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NOMBRE USED AVAIL REFER MOUNTPOINT
datapool/[email protected] 0 - 19K -
Ahora creamos un clon del grupo de datos de instantáneas/[email protected]
# zfs clone datapool/[email protected] datapool/pict
# zfs list
NOMBRE USED DISPONIBLE REFERIR MOUNTPOINT
datapool 166K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs
grupo de datos/imagen 1K 1.92G 19K /grupo de datos/imagen
El proceso de clonación ha finalizado, el grupo de datos de la instantánea/[email protected] se ha clonado en /datapool/pict. Cuando verificamos el contenido del directorio /datapool/pict, el contenido debe ser el mismo que /datapool/docs.
# ls /datapool/pict
carpeta1 carpeta2 carpeta3 carpeta4 carpeta5
Después de clonar una instantánea, la instantánea no se puede eliminar hasta que elimine el conjunto de datos.
# zfs destroy datapool/[email protected]
no puede destruir 'datapool/[email protected]':la instantánea tiene clones dependientes
use '-R' para destruir los siguientes conjuntos de datos:
conjunto de datos/imagen
# zfs destruye datapool/pict
Finalmente podemos destruir la instantánea.
# zfs destroy datapool/[email protected]
# zfs list -t snapshot
no hay conjuntos de datos disponibles
Descripción general de la replicación ZFS
La base para esta replicación de ZFS es una instantánea, podemos crear una instantánea en cualquier momento y podemos crear tantas instantáneas como queramos. Al crear, transferir y restaurar instantáneas continuamente, puede proporcionar sincronización entre una o más máquinas. ZFS proporciona una función de serialización integrada que puede enviar una representación de flujo de los datos a la salida estándar.
Configurar replicación ZFS
En esta sección, quiero mostrarle cómo replicar un conjunto de datos de un grupo de datos a un grupo de respaldo, pero es posible no solo almacenar los datos en otro grupo conectado al sistema local, sino también enviarlos a través de una red a otro sistema. Los comandos utilizados para replicar datos son zfs send y zfs receive.
Cree otro grupo llamado grupo de respaldo.
# zpool create backuppool mirror sde sdf
# zpool list
NOMBRE SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backuppool 1.98G 50K 1.98G - 0 % 0 0 EN LÍNEA
grupo de datos 1,98 G 568 K 1,98 G - 0 % 0 % 1,00x EN LÍNEA -
Compruebe el estado de la piscina:
# zpool status
pool:datapool
state:ONLINE
escaneo:ninguno solicitado
config:
NAME STATE READ WRITE CKSUM
DataPool en línea 0 0 0
Mirror-0 en línea 0 0 0
SDB Online 0 0 0
SDC Online 0 0 0 0
Errores:No hay errores de datos conocidos
pool:backuppool
estado:ONLINE
escaneo:ninguno solicitado
config:
NOMBRE ESTADO READ WRITE CKSUM
backuppool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0 0 0
Errores de datos:No hay errores de datos conocidos:No hay errores de datos conocidos:
Cree un conjunto de datos que replicaremos.
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NOMBRE USED AVAIL REFER MOUNTPOINT
datapool/[email protected] 0 - 19K -
# ls /docs/
carpeta1 carpeta2 carpeta3 carpeta4 carpeta5
Es hora de hacer la replicación.
# grupo de datos de envío de zfs/[email protected] | zfs recibir backuppool/backup
# zfs list
NOMBRE UTILIZADO DISPONIBLE REFERIR MOUNTPOINT
backuppool 83K 1.92G 19K /backuppool
backuppool/backup 19K 1.92G backup /
grupo de datos 527K 1,92G 19K /grupo de datos
grupo de datos/docs 19K 1,92G 19K /docs
# ls /backuppool/backup
carpeta1 carpeta2 carpeta3 carpeta4 carpeta5
El grupo de datos del conjunto de datos/[email protected] se ha replicado con éxito en el grupo de respaldo/copia de seguridad.
Para replicar un conjunto de datos en otra máquina, podemos usar el siguiente comando:
# grupo de datos de envío de zfs/[email protected] | ssh otro servidor zfs recv backuppool/backup
Listo.
Conclusión
La instantánea, la clonación y la replicación son las funciones más potentes de ZFS. Las instantáneas se usan para crear copias puntuales de sistemas de archivos o volúmenes, la clonación se usa para crear un conjunto de datos duplicado y la replicación se usa para replicar un conjunto de datos de un grupo de datos a otro grupo de datos en la misma máquina o para replicar grupos de datos entre diferentes máquinas.