Páginas

domingo, 18 de diciembre de 2022

Replicar, Recuperar Pool Root FreeBSD ZFS

NFS Sistema de Archivos en Red FreeBSD
Montaje de Sistema de Archivos NFS Usando Autofs
Replicar, Recuperar Pool Root ZFS FreeBSD

Contruir o reconstruir un sistema a partir de instantáneas (snapshot)

Replicar instantáneas en otro sistema es una característica de OpenZFS que mejora la administración de datos, proporciona un mecanismo para manejar una falla de hardware con una pérdida de datos y un tiempo de inactividad mínimos. La replicación también es una forma conveniente de transferir una copia de un sistema existente a otro, por ejemplo, implementar un laboratorio completo de sistemas similares.

Vamos a enviar una copia de seguridad al servidor vía ssh utilizando zfs send receive


Servidor: tormenta FreeBSD 13.1 NUC 11 Essential DDR4-2933 CPU 4 \
          32GB RAM M.2 NVMe PCIe 3.0
Cliente: solaris FreeBSD 13.1 Dell Latitude 7390 DDR4-2400 CPU 8 \
          16GB RAM M.2 NVMe PCIe 3.0

% cat /etc/hosts | grep tormenta
...
192.168.88.160          tormenta
...

Configurar acceso SSH

OpenZFS utiliza SSH para cifrar la replicación durante la transferencia de red.

Puede generar un par de claves con ssh-keygen y luego enviar una copia de la clave pública al servidor. Presione enter en todas las indicaciones para aceptar los valores predeterminados y no solicitar una frase de contraseña.

Dado que root enviará la replica, cambie esta línea en el archivo de configuración del demonio SSH /etc/ssh/sshd_config


#PermitRootLogin no

a


PermitRootLogin yes

Recargar la configuración del demonio SSH


service sshd reload 

Envíe una copia de la clave pública al sistema recector (tormenta)


cat .ssh/id_rsa.pub | ssh 192.168.88.160 'cat >>.ssh/authorized_keys' 
Password for root@192.168.88.160: 
exit

A continuación creamos un conjunto de datos para almacenar las instatáneas replicadas /usr/backup/poolrecovery.


tormenta # zfs create canmount=off zroot/usr/backup

tormenta # zfs get mounted zroot/usr/backup
NAME              PROPERTY  VALUE    SOURCE
zroot/usr/backup  mounted   no       -

tormenta # zfs create zroot/usr/backup/poolrecovery

# zfs get atime,compression,snapdir zroot/usr/backup
NAME              PROPERTY     VALUE           SOURCE
zroot/usr/backup  atime        off             inherited from zroot
zroot/usr/backup  compression  lz4             inherited from zroot
zroot/usr/backup  snapdir      visible         inherited from zroot

Creamos la instantánea recursiva del conjunto de datos del pool zroot que incluye los sistemas de archivos secundarios


solaris # zfs snapshot -r zroot@zroot.snap1_dell

Comprobar los recursos compartidos por el servidor tormenta


solaris % showmount -e tormenta
Exports list on tormenta:
...
/usr/backup/poolrecovery           192.168.88.0 
...

Montar el recurso compartido


# mount -o soft,intr,rw tormenta:/usr/backup/poolrecovery /mnt

Enviar la instantánea de forma recursiva, redirigimos (como archivo comprimido .gz) a la ubicación compartida para poder acceder a esta ubicación al construir el cliente


# zfs send -Rv zroot@snap1_dell | gzip > /mnt/zroot.snap1.gz

Proceso de recuperación::

Asumimos que ha realizado una instalación limpia en el sistema a restaurar eligiendo el particionado auto ZFS del instalador de FreeBSD. Es recomendable que antes de instalar y desde la shell borrar todos los errores asociados a los dispositivos virtuales del grupo y borrar los recuentos de errores de datos asociados al grupo.


# zpool labelclear -f /dev/nvd0

Iniciar con una memoria usb que contenga una img de FreeBSD 13.1 (RELEASE actual)

En la pantalla de instalacion


Install Shell Live cd

Elegir (live cd)


login: root

Intro (no necesita contrasena)

Iniciar la red con el comando


dhclient em0

Ver información de la conexión


# ifconfig

Comprobar conectividad


# ping freebsd.org

Configurar ssh

configurar un sshd único para esta sesión.


# mkdir /tmp/etc
# mount_unionfs /tmp/etc /etc
# edit /etc/ssh/sshd_config

editar /etc/ssh/sshd_config y cambiar la configuración de PermitRootLogin de no a sí y eliminar el comentario, puede utilizar Ctrl-Y para buscar "root".

Establecer una contrasena para el usuario root (no teclee root directamente, utilice passwd root)


# passwd root

Importar la import del zpool zroot


# zpool import -fR /tmp/montado zroot

Incluir la direccion IP en el archivo /etc/exports del servidor nfs tormenta

Agregar en el archivo /etc/rc.conf la línea


nfs_client_enable

# service nfsclient start
NFS access cache time=60

Montar recurso compartido NFS


# mount -o soft,intr,rw 192.168.88.51:/usr/backup/poolrecovery /mnt

ls /mnt/
zroot.snap1.gz 

Ya tenemos el archivo que utilizaremos

Lanzamos el comando


# gzcat /mnt/zroot.snap1.gz | zfs receive -Fv zroot

# umount -f /tmp/montado

Reiniciar el sistema


# reboot

Sí, ha funcionado

En este punto tenemos todo tal y como estaba en el momento en que se crearon las instantáneas

Utilizar el usuario no privilegiado carlos para el envío y recepción de instantáneas

Permisos para el envío de instantáneas


 zfs allow -u carlos create,destroy,hold,mount,receive,send,snapshot zroot

Permisos para la recepción de instantáneas


 zfs allow -u carlos \
 create,destroy,mount,mountpoint,quota,receive,send,snapdir \
 zroot
FreeBSD es genial!.

No hay comentarios:

Publicar un comentario