CRIU, un sistema para guardar y restaurar el estado de procesos en Linux
CRIU (Checkpoint and Restore In Userspace) es una herramienta que permite guardar el estado de uno o un grupo de procesos y luego reanudar el trabajo desde la posición guardada, incluso después de reiniciar el sistema o en otro servidor sin romper las conexiones de red ya establecidas.
Con esta herramienta, es posible congelar una aplicación en ejecución (o parte de ella) y colocarla en el almacenamiento persistente como una colección de archivos. Luego, se pueden usar los archivos para restaurar y ejecutar la aplicación desde el punto en el que se inmovilizó.
La característica distintiva del proyecto CRIU es que se implementa principalmente en el espacio del usuario, más que en el kernel.
Sobre CRIU
La herramienta CRIU se está desarrollando como parte del proyecto OpenVZ, con el objetivo de reemplazar el punto de control/restauración en el kernel.
Aunque su enfoque principal es respaldar la migración de contenedores, lo que permite a los usuarios verificar y restaurar el estado actual de los procesos en ejecución y los grupos de procesos.
Actualmente, la herramienta se puede utilizar en sistemas x86-64 y ARM y admite las siguientes funciones:
- Procesos: su jerarquía, PID, autenticadores de usuarios y grupos (UID, GID, SID, etc.), capacidades del sistema, subprocesos y estados de ejecución y detenido
- Memoria de la aplicación: archivos asignados en memoria y memoria compartida
- Abrir archivos
- Pipes y FIFOs
- Unix domain sockets
- Network sockets, incluidos TCP sockets en el estado ESTABLISHED
- System V IPC
- Timers
- Signals
- Terminales
- Llamadas del Kernel al sistema específico: inotify, signalfd, eventfdyepoll
Entre las áreas de aplicación de la tecnología CRIU, se observa que el sistema operativo se reinicia sin interrumpir la continuidad de los procesos de larga ejecución, migración en vivo de contenedores aislados, acelerando el lanzamiento de procesos lentos (puede comenzar desde el estado guardado después de la inicialización), llevando a cabo actualizaciones del kernel sin reiniciar los servicios, guardando periódicamente el estado de larga ejecución de tareas de computación para reanudar el trabajo en caso de un bloqueo, equilibrar la carga en los nodos en clústeres, duplicar procesos en otra máquina (bifurcar a un sistema remoto), crear instantáneas de aplicaciones de usuario durante la operación para analizarlas en otro sistema o en caso de que necesite cancelar más acciones en programa. CRIU se utiliza en sistemas de gestión de contenedores como OpenVZ, LXC / LXD y Docker.
Sobre la nueva version de CRIU 3.15
Actualmente la herramienta se encuentra en su version 3.15, la cual fue recientemente lanzada y en ella se introduce el servicio criu-image-streamer, que permite la transmisión de imágenes de proceso directamente desde / hacia las CRIU durante las operaciones de congelación/restauración.
- Las imágenes se pueden transferir desde un almacenamiento externo (S3, GCS, etc.) sin almacenar en búfer en el sistema de archivos local.
- Se agregó soporte para la arquitectura MIPS.
- Permitido para congelar procesos que no pertenecen al espacio de nombres PID existente, seguido de restauración en el espacio de nombres PID existente.
- Se agregaron mecanismos adicionales para verificar archivos.
- Se agregó soporte para congelar y restaurar las estructuras BPF BPF_HASH_OF_MAPS y BPF_ARRAY_OF_MAPS.
- Se agregó soporte inicial para la segunda versión de cgroup.
¿Como instalar CRIU en Linux?
Para quienes estén interesados en poder instalar esta herramienta deben saber que se encuentra disponible dentro de los canales oficiales de la mayoría de las distribuciones de Linux.
Por lo que para poder instalar la herramienta basta con abrir una terminal y con ayuda de tu gestor de paquetes busques la herramienta o utilices alguno de los siguientes comandos que compartimos.
Para el caso de los que son usuarios de Debian, Ubuntu y derivados de estos dos:
sudo apt install criu
Mientras que para quienes son usuarios de Arch Linux y cualquier derivado de este:
sudo pacman -S criu
En el caso de los que son usuarios de opensuse:
sudo zypper install criu
Finalmente para quienes quieran compilar la herramienta pueden hacerlo tecleando:
git clone https://github.com/checkpoint-restore/criu.git
cd criu
make clean
make
make install
sudo criu check
sudo criu check --all
Si quieres conocer mas al respecto sobre esta herramienta, puedes consultar los detalles en el siguiente enlace.