un motor de búsqueda independiente para VPS clasificados por precio

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:
# rsync -aqrxz root@target:/ backup.d
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:
# ssh root@target "tar -cf - --acls --xattrs --one-file-system --absolute-names /" | gzip -1 >backup.tgz
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.
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
Este VPS tiene una partición de intercambio de 2GB en /dev/vda2 que es lo suficientemente grande para almacenar la ISO. Crea el sistema de archivos EXT4, móntalo y descarga la ISO en él:
# 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>
luego instruye a GRUB2 para que arranque desde esta ISO; edita /etc/grub.d/40_custom de la siguiente manera:
#!/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
}
y aplica la configuración con
update-grub2
Cuando reinicies el VPS, el menú de GRUB2 ofrecerá la opción de arrancar desde la imagen en vivo. Procede desde allí utilizando la consola de rescate VNC ofrecida por el panel de control del proveedor.
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
Ahora el sistema operativo en vivo tiene el módulo del kernel de ZFS y las utilidades de ZFS necesarias para formatear el sistema de archivos raíz de tu VPS.
Paso 4: Particionar el disco del VPS
Hay dos escenarios alternativos para particionar el disco del VPS:
  1. 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 .
  2. 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
    Crea una partición de arranque primaria de 100MB de ancho y márcala como booteable con un asterisco (*), con un ID de partición = 83 (Linux). Se formateará como EXT4 para compatibilidad con GRUB2, y contendrá los datos de arranque. Luego, crea otra partición primaria para ZFS, con ID = bf (Solaris). Escribe los cambios en el disco y cierra fdisk. Ahora que el disco está correctamente particionado, puedes formatear la partición de arranque:
    # 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
Este conjunto de opciones es recomendado por la documentación de ZFS para la mayor compatibilidad con los discos más nuevos y futuros. La opción compression=zstd habilita el algoritmo de compresión ZSTD, que tiene una tasa de compresión más alta que el predeterminado LZ4, aunque puedes usar compression=lz4 para reducir el uso de CPU si tu VPS tiene un alto I/O de disco. El pool se llama rpool, que es el nombre más comúnmente utilizado para los pools raíz. Cuando este comando se complete, rpool se montará en el directorio /mnt del entorno en vivo, como se especifica en la opción -R /mnt anterior, pero se montará automáticamente en / en cada arranque posterior. Montarlo en /mnt es necesario para restaurar tu copia de seguridad en él desde el entorno en vivo.
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
Para simplificar, habilite PermitRootLogin yes en /etc/ssh/sshd_config del entorno en vivo, luego establezca una contraseña segura para root y reinicie OpenSSH:
# passwd
# service restart ssh
e inicie la restauración de los datos de respaldo desde el VPS de respaldo, lo que poblará el grupo de raíz ZFS montado en /mnt:
## desde el VPS de respaldo
# rsync -arxz backup.d/* root@target:/mnt/
o si usó TAR para crear un archivo de respaldo, restáurelo con:
## desde el VPS de respaldo
# cat backup.tgz | ssh root@target "tar -C /mnt -zaxf -"
sin embargo, como escribí en Paso 1, al extraer, TAR convierte la ruta de destino de los enlaces simbólicos absolutos en rutas relativas; estos enlaces simbólicos se pueden restaurar correctamente de la siguiente manera. Tenga en cuenta que esta restauración no es necesaria si no usó TAR para respaldar el sistema de archivos raíz. Desde el VPS de respaldo, liste todos los enlaces simbólicos contenidos en el archivo:
## desde el VPS de respaldo
# tar -tvf backup.tgz | egrep -- '->' >list_of_symlinks.txt
luego copia la lista al VPS de destino en /mnt, que ahora contiene el sistema de archivos raíz repoblado desde la copia de seguridad:
## desde el VPS de respaldo
# scp list_of_symlinks.txt root@target:/mnt/root/
Desde el VPS de destino, chroot en /mnt y ejecuta este script de Bash para restaurar todos los enlaces simbólicos absolutos:
## 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
Tu sistema de archivos raíz ahora está completamente restaurado desde la copia de seguridad y puede ser arrancado, pero primero necesitas un gestor de arranque funcional.
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
Puedes optar por copiar cualquier contenido preexistente de /mnt/boot/ a la nueva partición de arranque. Ingresa al entorno chroot en el pool raíz y, desde allí, instala el hook initramfs de ZFS, el módulo del kernel de ZFS y las herramientas de espacio de usuario de ZFS necesarias para generar el initrd:
# chroot /mnt
# apt install pkg-dev linux-headers-amd64 linux-image-amd64
# apt install zfs-dkms zfs-initramfs
luego instala el paquete GRUB2:
# apt install grub-pc
# update-initramfs -u -k all
edita /etc/default/grub para configurar el pool ZFS como el dispositivo raíz, modificando la variable GRUB_CMDLINE_LINUX:
## esto es /etc/default/grub
GRUB_CMDLINE_LINUX="root=ZFS=rpool"
luego aplica la configuración:
# update-grub
y finalmente instala GRUB2 en el MBR:
# 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
Ahora puedes eliminar la imagen ISO desde el panel de control del VPS, si utilizaste esta opción, o borrar la ISO del disco duro, y reiniciar el sistema en el grupo de almacenamiento ZFS:
# reboot
La conversión del sistema de archivos raíz del VPS de EXT4 a ZFS está completa, y el VPS arrancará en tu sistema instalado anterior como de costumbre.

Leer más artículos
Alemán Árabe Bengalí Chino Coreano Español Filipino Francés Indonesio Inglés Japonés Malayo Polaco Portugués Ruso Turco Vietnamita
Ayuda  –  Índice  –  Política de Privacidad  –  Contacto  –