Ubuntu 20.04 zsys agrega instantáneas de ZFS a la administración de paquetes [Updated]

Foto de primer plano de un atento gato montés.

En octubre pasado, apareció un instalador experimental de ZFS en Eoan Ermine, la segunda versión provisional de Ubuntu 2019. El mes próximo, Focal Fossa, la próxima versión LTS (soporte a largo plazo) de Ubuntu, está a punto de salir y mantiene el instalador de ZFS al tiempo que agrega varias características nuevas para la administración del sistema Ubuntu con el incipiente paquete zsys.

Phoronix informó este fin de semana que zsys ahora está tomando instantáneas antes de las operaciones de administración de paquetes, por lo que decidimos instalar la última compilación diaria de Ubuntu 20.04 y ver cómo funciona la nueva característica.

Tomando Fossa Fossa para dar una vuelta rápida

Focal se instala como cualquier otra versión de Ubuntu, pero mantiene el instalador de ZFS 19.10, que todavía está oculto detrás de las «funciones avanzadas» y todavía está etiquetado como experimental. Después de seleccionar una instalación ZFS, da su consentimiento al diseño de la partición resultante, con una partición primaria para el arranque UEFI y tres particiones lógicas para intercambiar, arrancar el conjunto ZFS y el conjunto raíz ZFS. Unos minutos más tarde, tiene una instalación de Ubuntu.

Un vistazo rápido debajo del capó

Después de instalar Fossa, lo primero que hicimos fue comprobar la versión instalada de zsys. O apt Recientemente se agregaron instantáneas de administración en la versión 0.4.1, y aprendimos a no considerar lo que está instalado en las versiones beta o pre-beta diarias de las distribuciones de Linux. Zsys, de hecho, ya estaba instalado por defecto y estaba en la versión 0.4.1.

Todavía no había una instantánea en el sistema recién instalado, así que hicimos una apt install gimp. Entonces, vimos que zsys tomó una instantánea de cada conjunto de datos presente en rpool. Tener una instantánea tomada antes de instalar nuevos paquetes significa que si algo sale mal, podemos fácilmente revertir el sistema a su estado antes de instalar el nuevo paquete. Dividir el sistema en tantos conjuntos de datos diferentes significa, a su vez, que podemos revertir solo las partes del sistema afectadas por el administrador de paquetes; por ejemplo, podemos revertir paquetes sin afectar los datos en el directorio de inicio del usuario.

Después de instalar gimp y al ver nuevas instantáneas disponibles, intentamos instalar un segundo paquete. 1 apt install pv luego, volvemos a comprobar las instantáneas. Aunque todavía encontramos las instantáneas tomadas antes de la instalación gimp, no hubo nuevas instantáneas para revertir nuestra pv instalación. Después de varias otras instalaciones y eliminaciones experimentales sin nuevas instantáneas, comenzamos grep– caminando a través del /etc directorio para averiguar por qué.

Publicidad

Dentro apt.conf.d encontramos un archivo de configuración llamado 90_zsys_system_autosnapshot que añade un gancho de preinstalación para dpkg. Este gancho de preinstalación llama zsys-system-autosnapshot antes de realizar cambios en el sistema de paquetes. No sabíamos por qué no habíamos tomado nuevas instantáneas, así que intentamos ejecutar zsys-system-autosnapshot directamente, todavía no hay nuevas instantáneas.

Así que cuando echamos un vistazo a zsys-system-autosnapshot en sí mismo, la razón por la que no había una nueva instantánea era obvia. Se integra un intervalo mínimo en este script para que se quede sin hacer nada si han pasado menos de 20 minutos desde la última vez que tomó instantáneas.

Tenemos preguntas sobre esta función de intervalo mínimo. Por un lado, después de acumular algunos miles de instantáneas, es posible que comience a ver problemas de rendimiento del sistema de archivos. Por otro lado, anticipamos muchas instalaciones de paquetes problemáticas que no serán cubiertas por instantáneas de esta manera.

Zsys todavía está en desarrollo

Debemos notar que zsys está lejos de estar completo todavía. La herramienta promete todo tipo de funciones adicionales y ya es útil, pero aún falta mucho del pulido que los usuarios normales necesitarán ver.

Podemos ver eso zsys se refiere a esas instantáneas generadas automáticamente como «estado del sistema», y que zsysctl save tomará estas instantáneas y zsysctl show nos dará una descripción general de alto nivel de qué conjuntos de estados se han guardado. Pero no hay correspondencia zsysctl load sin embargo, y hasta que lo haya, intentar utilizar estas salvaguardas para recuperarse realmente de un desastre seguirá siendo un poco más «experto» en una operación de lo que debería.

El instalador de Ubuntu ZFS divide el sistema base en 21 conjuntos de datos separados, por lo que zsys realmente necesita ese asistente de reversión de alto nivel. Es fácil revertir cualquier conjunto de datos individual usando el zfs comando a sí mismo, por ejemplo, zfs rollback rpool/USERDATA/jim_v1qce1@autosys_pmxbuj– pero no esperamos que los usuarios se diviertan navegando por estos comandos.

Esperamos plenamente zsysctl para agregar funcionalidad para reversiones más fáciles eventualmente. Simplemente no está aquí todavía, al menos, no sin habilitar el GRUB menú de inicio y reinicio.

Actualización: invertir el estado del sistema usando el menú de GRUB al inicio

a pesar de que zsysctl no expone una función de carga de estado mientras el sistema se está ejecutando, estas funciones están presentes en el momento del arranque, en el menú de GRUB. Sin embargo, en una instalación de escritorio de Ubuntu con la configuración predeterminada, el menú de GRUB es difícil de cargar en el controlador: la pulsación de tecla es diferente según el inicio de UEFI o BIOS, y el tiempo es difícil. Nunca pudimos revelar el menú para trabajar en nuestra VM, donde el tiempo de inicio es extremadamente rápido.

Puede revelar el menú y darse unos segundos para responder editando los estándares GRUB, con sudo nano /etc/default/grub. Después de configurar GRUB_TIMEOUT_STYLE para menu al revés de hiddeny dándote unos segundos para reaccionar con GRUB_TIMEOUT=5, deberás emitir sudo update-grub para aplicar sus cambios. Verás un error cosmético os-prober cuando haga esto, pero no se preocupe, es inofensivo y su actualización se ha aplicado.

Publicidad

Una vez que podamos ver el menú de GRUB, podemos navegar hasta Historial y ver una selección de estados guardados. Para cada estado, tenemos la opción de revertir solo el sistema o los datos del sistema y del usuario; los datos del usuario, al menos por el momento, es decir, solo los directorios personales. Desafortunadamente, no hay ninguna opción para revertir los datos del usuario. Para cada opción, también puede seleccionar si desea iniciarlo normalmente o en modo de recuperación.

Teníamos cuatro estados guardados disponibles y decidimos dividir el medio y revertir solo el estado del sistema, dos instantáneas hacia atrás. Una vez que el sistema terminó de iniciarse, lo que llevó un poco más de tiempo de lo habitual, echamos otro vistazo bajo el capó del sistema de archivos.

Los puntos de montaje del sistema no se veían diferentes, pero una mirada más cercana mostró que el entorno de arranque todavía tenía algunas instantáneas ZFS montadas, lo que normalmente no sucedería. Esto parece un fracaso para limpiar parte de la «magia» que ocurrió durante el GRUB proceso, ya que las instantáneas se montan como de solo lectura, en su .zfs directorios, en lugar de montarse en algún lugar, el sistema de archivos de producción tropezaría con ellos.

Más importante aún, podemos ver que GRUB y zsys creó un espacio de nombres completamente nuevo dentro de la jerarquía de ZFS, rpool/ROOT/ubuntu_6doptv. Todavía estamos arrancando desde el mismo espacio de nombres con el que empezamos:ubuntu_w01csd– pero nuestros dos conjuntos más antiguos de instantáneas, o estados del sistema, se han movido al espacio de nombres más reciente.

El resultado es que no parece que la reversión al estado anterior del sistema fuera una operación destructiva, como un simple zfs rollback operación sería normalmente. Comenzamos con cuatro conjuntos de instantáneas y aún teníamos cuatro conjuntos de instantáneas disponibles después de volver a una anterior.

Colecta de basura

No se entusiasme demasiado con estas variables de recolección de basura en un archivo de configuración; no se puede acceder a ellas en un sistema instalado.

Jim Salter

Aunque todavía es decididamente alfa, y aún no está realmente vinculado a la operación,zsys también tiene una función para eliminar automáticamente instantáneas obsoletas. O zsys el equipo nuevamente eligió ignorar la terminología existente de ZFS y llamar a este servicio «recolección de basura» en lugar de nombrar cualquier cosa relacionada con las instantáneas en sí.

El restablecimiento de la etimología aquí parece ser el resultado de un deseo de hacer que los usuarios piensen en términos de un nivel superior que abarque múltiples instantáneas agrupadas. No estamos seguros de cómo nos sentimos al respecto. Si se maneja correctamente, realmente puede reducir la confusión para el usuario final. Sin embargo, los tipos de administradores de sistemas, ya sean casuales o profesionales, tienen más probabilidades de verse obstaculizados por una capa de oscurecimiento entre el guión y la realidad. Y ahora, solo los tipos de administradores de sistemas verán cualquiera de estas cosas, ya que es la segunda mejor cosa que no se puede descubrir.

La instalación real se llama con el comando zsysctl service gc -a, que realiza la recolección de basura en todos zsys espacios de nombres presentes en el sistema. Si ejecuta el comando en un sistema relativamente nuevo, probablemente no verá que suceda nada. No destruirá ninguna instantánea, a menos que haya un mínimo de 20 obsequios, después de lo cual las reducirá según la edad.

El conjunto de reglas de recolección de basura se puede configurar actualmente antes zsys compilación, pero es inaccesible después de la instalación: la construcción del paquete codifica sus valores en zsys binario. Tal como están las cosas ahora, estos parámetros son inaccesibles para los usuarios finales y los administradores.

Como desarrollador de Ubuntu Didier Roche explicado en Twitter, los sistemas Ubuntu 20.04 no se ejecutan automáticamente zsysctl service gc todavía. Roche recomienda encarecidamente que nadie ejecute el comando en ningún sistema de producción todavía, ya que es una función de destrucción de datos que todavía está en alfa. Una vez que tenga más tiempo para las pruebas y el desarrollo, systemd Se agregará un temporizador para llamarlo periódicamente.