no se encontraron servicios coincidentes
Instalación de ZFS en Root en un VPS en Ejecución
Esta guía explica cómo instalar ZFS como el sistema de archivos raíz de un VPS que contiene una instalación existente de Linux sin causar pérdida de datos. El VPS tendrá una pequeña partición de arranque EXT4 para GRUB2 con el kernel y initrd, y un gran grupo ZFS montado en root con compresión habilitada. La mayoría de los comandos se ejecutarán desde una imagen de CD en vivo y se mostrará una solución alternativa si el VPS no admite el montaje de imágenes ISO.
- Índice:
- 1. Hacer una copia de seguridad de los datos
- 2. Arrancar una imagen de sistema operativo en vivo
- 3. Instalar ZFS en el entorno del sistema operativo en vivo
- 4. Particionar el disco del VPS
- 5. Instalar ZFS en el disco del VPS
- 6. Restaurar la copia de seguridad en el nuevo sistema de archivos raíz ZFS
- 7. Instalar GRUB2
- 8. Arrancar en el pool raíz ZFS
- Paso 1: Hacer una copia de seguridad de los datos
-
Si tienes un segundo VPS o un ordenador en casa con suficiente espacio para almacenar los datos de la copia de seguridad, desde ese ordenador ejecuta:
donde target es el nombre de host del VPS que se está convirtiendo. Esto copiará todo el sistema de archivos raíz a través de SSH a la máquina de respaldo, y restaurar esta copia de seguridad en el VPS objetivo más adelante será sencillo. Si necesitas comprimir la copia de seguridad por falta de espacio, puedes crear un archivo TGZ comprimido:
# rsync -aqrxz root@target:/ backup.d
Sin embargo, al restaurar un sistema de archivos raíz desde un archivo TAR, será necesario recrear todos los enlaces simbólicos cuyos objetivos tengan nombres de ruta absolutos, porque TAR convierte sus objetivos en nombres de ruta relativos, por lo que usar rsync es la alternativa más simple. Más adelante se mostrará cómo restaurar correctamente el archivo TAR.# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
- Paso 2: Iniciar una imagen de sistema operativo en vivo
-
La conversión a ZFS se realizará desde un sistema operativo en vivo en un CD. Dependiendo de las capacidades de tu panel de control del VPS, es posible que ya tenga una imagen de sistema operativo en vivo lista para iniciar. Alternativamente, puedes descargar una ISO en vivo de Debian desde el espejo de Debian y subirla a tu panel de control del VPS, luego iniciar la ISO desde allí; esto funcionará bien incluso si tu VPS ejecuta una distribución diferente. Ten cuidado de usar una imagen ISO de sistema operativo en vivo, no una ISO de instalación, porque las imágenes de instalación carecen de apt y no pueden instalar el software necesario en el entorno en vivo. Si tu panel de control del VPS admite el inicio desde una imagen ISO proporcionada por el usuario, salta al Paso 3; de lo contrario, aún puedes iniciar la ISO descargada convirtiendo una partición de intercambio, si está presente, en EXT4 y almacenando la ISO en ese espacio de almacenamiento recuperado, luego GRUB2 puede configurarse para iniciar desde esa ISO. Esto se hace de la siguiente manera:
# fdisk --list /dev/vda
Disco /dev/vda: 35 GiB, 37580963840 bytes, 73400320 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador de disco: 0x495b5ce4
Dispositivo Inicio Fin Sectores Tamaño Id Tipo
/dev/vda1 * 2048 69203583 69201536 33G 83 Linux
/dev/vda2 69203584 73397887 4194304 2G 82 Linux swap
# swapoff /dev/vda2 # deshabilitar la partición de intercambio
# mkfs.ext4 /dev/vda2 # crear el sistema de archivos EXT4
# mount /dev/vda2 /mnt # montar el espacio reclamado
# mkdir /mnt/images/
# wget -O /mnt/images/image_file.iso <image_URL>
#!/bin/sh
exec tail -n +3 $0
# Este archivo proporciona una manera fácil de agregar entradas personalizadas al menú. Simplemente escribe las
# entradas del menú que deseas agregar después de este comentario. Ten cuidado de no cambiar
# la línea 'exec tail' anterior.
menuentry "Live ISO" {
set ISOFile="/images/image_file.iso"
loopback loop (hd0,2)$ISOFile
linux (loop)/live/vmlinuz boot=live findiso=$ISOFile
initrd (loop)/live/initrd.img
}
update-grub2
- Paso 3: Instalar ZFS en el entorno del sistema operativo en vivo
-
Arranca la imagen del sistema operativo en vivo y accede a su terminal. Luego, instala los paquetes de ZFS en el entorno del sistema operativo en vivo:
# echo deb http://deb.debian.org/debian stretch contrib >> /etc/apt/sources.list
# apt update
# apt install zfs-dkms
# modprobe zfs
- Paso 4: Particionar el disco del VPS
-
Hay dos escenarios alternativos para particionar el disco del VPS:
- Si almacenaste la ISO en vivo en /dev/vda2, no puedes alterar esa partición ahora porque el sistema en vivo depende de ella, y no se realizará ningún particionamiento en el disco del VPS. ZFS se formateará en la partición existente /dev/vda2, y /dev/vda1 permanecerá como está y luego se reutilizará como tu partición de arranque permanente para almacenar el kernel y el initrd. Salta al Paso 5 .
-
Si tu entorno en vivo no depende de un archivo ISO almacenado en el disco del VPS, reparticiona el disco creando una pequeña partición de arranque para GRUB2 y una partición grande para la raíz de ZFS que se extienda sobre todo el espacio restante del disco. Ejecuta fdisk para crear las dos siguientes particiones:
# fdisk /dev/vda
Comando (m para ayuda): p
Disco /dev/vda: 35 GiB, 37580963840 bytes, 73400320 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador de disco: 0x495b5ce4
Dispositivo Arranque Inicio Fin Sectores Tamaño Id Tipo
/dev/vda1 2048 69203583 69201536 33G bf Solaris
/dev/vda2 * 69203584 73397887 4194304 2G 83 Linux
# mkfs.ext4 /dev/vda2
- Paso 5: Instalar ZFS en el disco del VPS
-
Formatea /dev/vda1 como un volumen ZFS:
# zpool create -o ashift=12 \
-O acltype=posixacl -O canmount=on -O compression=zstd \
-O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa \
-O mountpoint=/ -R /mnt \
rpool /dev/vda1
- Paso 6: Restaurar la copia de seguridad en el nuevo sistema de archivos raíz ZFS
-
Instala el servidor OpenSSH en el entorno en vivo para recibir los datos de la copia de seguridad desde el VPS de respaldo:
# apt install openssh-server
# passwd
# service restart ssh
## desde el VPS de respaldo
# rsync -arxz backup.d/* root@target:/mnt/
## desde el VPS de respaldo
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
## desde el VPS de respaldo
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
## desde el VPS de respaldo
# scp list_of_symlinks.txt root@target:/mnt/root/
## desde el entorno chroot
while read -r row; do
src=$(echo "$row" | grep -Po '(?<=[0-9]{2}:[0-9]{2} )[^ ]+')
tgt=$(echo "$row" | grep -Po '(?<= -> ).+')
echo "enlazando: $src -> $tgt"
ln -fs "$tgt" "$src"
done </root/list_of_symlinks.txt
- Paso 7: Instalar GRUB2
-
Si estás dentro del entorno chroot, sal de él y regresa al entorno en vivo. Luego, enlaza los sistemas de archivos virtuales a /mnt y monta la partición de arranque:
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys
# mount /dev/vda2 /mnt/boot
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
# apt install grub-pc
# update-initramfs -u -k all
## esto es /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
# update-grub
# grub-install /dev/vda
- Paso 8: Arrancar en el pool raíz ZFS
-
El sistema está listo, completamente restaurado desde la copia de seguridad, y puede ser arrancado. Sale del chroot y desmonta todos los sistemas de archivos virtuales, luego exporta el pool raíz ZFS:
# exit # sale del chroot del rpool
# umount /mnt/dev
# umount /mnt/proc
# umount /mnt/sys
# umount /mnt/boot
# umount /mnt
# zpool export -a
# reboot
Leer más artículos