Checkpoint / Restore In Userspace ( CRIU ) (pronunciado kree-oo , / krɪʊ / ), es una herramienta de software para el sistema operativo Linux . 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.
![]() | |
Desarrollador (es) | Equipo OpenVZ en Virtuozzo |
---|---|
Versión inicial | 23 de julio de 2012 [1] |
Lanzamiento estable | 3.15 (3 de noviembre de 2020 [2] ) [±] |
Escrito en | C y ensamblador |
Sistema operativo | Linux |
Plataforma | x86-64 , ARM , Power ISA , IBM System / 390 |
Tipo | Punto de control de la aplicación |
Licencia | GNU GPL v.2 |
Sitio web | criu |
El proyecto se encuentra actualmente en desarrollo activo, con un ciclo de lanzamiento mensual para lanzamientos estables. [3]
Historia
La versión inicial del software CRIU fue presentada a la comunidad de desarrolladores de Linux por Pavel Emelyanov, líder del equipo del kernel OpenVZ , el 15 de julio de 2011. [4]
En septiembre de 2011, el proyecto se presentó en la Linux Plumbers Conference. [5] En general, la mayoría de los asistentes tuvieron una opinión positiva del proyecto, lo que queda demostrado por el hecho de que varios parches del kernel necesarios para implementar el proyecto se incluyeron en el kernel principal. Andrew Morton , sin embargo, se mostró un poco escéptico:
Una nota sobre esto: este es un proyecto de varios rusos locos para realizar c / r principalmente desde el espacio de usuario, con varios códigos de ayuda extraños agregados al kernel donde se demuestra la necesidad ... Sin embargo, tengo menos confianza que los desarrolladores en que todo funcionará eventualmente! Entonces, lo que les estoy pidiendo que hagan es envolver cada pieza de código nuevo dentro de CONFIG_CHECKPOINT_RESTORE. Por lo tanto, si finalmente todo llega a llorar y el proyecto en su conjunto falla, debería ser una cuestión simple revisar y eliminar todo rastro del mismo.
- Andrew Morton, [6]
Usar
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 admitir 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
- Tubos y FIFO
- Sockets de dominio Unix
- Enchufes de red , incluidos los enchufes TCP en estado ESTABLECIDO (ver más abajo)
- Sistema V IPC
- Temporizadores
- Señales
- Terminales
- Linux kernel llamadas al sistema específico:
inotify
,signalfd
,eventfd
yepoll
A septiembre de 2013[actualizar], no se requieren parches del kernel porque toda la funcionalidad requerida ya se ha fusionado en la línea principal del kernel de Linux desde la versión 3.11 del kernel, que fue lanzada el 2 de septiembre de 2013. [7] [8]
Migración de conexión TCP
Uno de los objetivos iniciales del proyecto era respaldar la migración de conexiones TCP, siendo el mayor desafío suspender y luego restaurar solo un lado de una conexión. Esto fue necesario para realizar la migración en vivo de contenedores (junto con todas sus conexiones de red activas) entre servidores físicos, el escenario principal del uso de la función de punto de control / restauración en OpenVZ. Para hacer frente a este problema, se implementó una nueva función, "Modo de reparación de TCP". La función se incluyó en la versión 3.5 de la línea principal del kernel de Linux [9] y proporciona a los usuarios medios adicionales para desmontar y reconstruir sockets TCP sin la necesidad de intercambiar paquetes de red con el lado opuesto de la conexión.
Proyectos similares
Los siguientes proyectos proporcionan una funcionalidad similar a CRIU:
- OpenVZ
- DMTCP [10]
- BLCR [11]
- Linux C / R [12]
Referencias
- ↑ Pavel Emelyanov (23 de julio de 2012). "Herramienta de restauración de punto de control v0.1" .
- ^ "Programa de lanzamiento" .
- ^ https://criu.org/Release_schedule
- ^ Pavel Emelyanov (15 de julio de 2011). "Punto de control / restauración principalmente en el espacio de usuario" .
- ^ "Punto de control / reinicio en el espacio de usuario" . Linux Plumbers Conf 2011 .
- ^ "Fusionar rama 'akpm' (también conocida como" bomba de parche de Andrew, toma dos ")" . Árbol de fuentes del kernel de Linux . 2012-01-13.
- ^ "Instalación: Kernel de Linux" .
Se requiere el kernel de Linux v3.11 o más reciente, con algunas opciones específicas configuradas
- ^ "Linux kernel 3.11, sección 1.5. Seguimiento detallado de qué páginas escribe una tarea" . kernelnewbies.org . 2013-09-02 . Consultado el 3 de mayo de 2016 .
- ^ Pavel Emelyanov (29 de febrero de 2012). "Reparación de conexión TCP" . Lista de distribución de Linux Netdev .
- ^ "DMTCP: CheckPointing multiproceso distribuido" . SourceForge .
- ^ "Berkeley Lab Checkpoint / Restart (BLCR) para LINUX" . Laboratorio Nacional Lawrence Berkeley .
- ^ "Punto de control / reinicio de Linux" . kernel.org .
Otras lecturas
- Sanidhya Kashyap. "Actualización y validación del kernel sin reinicio" .
- Rami Rosen. "Contenedores de Linux y la nube del futuro" (PDF) .
- Equipo CRIU. "Comparación con otros proyectos de RC" .