Checkpoint/Restore In Userspace ( CRIU ) (pronunciado / kriu/ ) es una herramienta de software para el sistema operativo Linux . Mediante esta herramienta, es posible congelar una aplicación en ejecución (o parte de ella) y guardar un punto de control en un almacenamiento persistente como una colección de archivos. Posteriormente, se pueden usar estos archivos para restaurar y ejecutar la aplicación desde el punto en que se congeló. La característica distintiva del proyecto CRIU es que se implementa principalmente en el espacio de usuario , en lugar de en el núcleo.
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 de OpenVZ , el 15 de julio de 2011. [ 3 ]
En septiembre de 2011, el proyecto se presentó en la Conferencia Linux Plumbers. [ 4 ] En general, la mayoría de los asistentes tuvieron una visión positiva del proyecto, lo cual se demuestra 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ó algo escéptico:
Una nota al respecto: este es un proyecto de varios rusos un tanto excéntricos para realizar copias de seguridad principalmente desde el espacio de usuario, con código auxiliar peculiar añadido al kernel donde se demuestra la necesidad... Sin embargo, ¡tengo menos confianza que los desarrolladores en que todo vaya a funcionar al final! Así que lo que les pido es que encapsulen cada fragmento de código nuevo dentro de CONFIG_CHECKPOINT_RESTORE. De esta forma, si todo termina mal y el proyecto en su conjunto falla, debería ser sencillo borrar todo rastro del mismo. [ 5 ]
— Andrew Morton
Usar
La herramienta CRIU se está desarrollando como parte del proyecto OpenVZ, con el objetivo de reemplazar la función de punto de control/restauración del kernel. Si bien su enfoque principal es brindar soporte para la migración de contenedores, permite a los usuarios crear puntos de control y restaurar el estado actual de los procesos y grupos de procesos en ejecución. Actualmente, la herramienta se puede usar en sistemas x86-64 y ARM y admite las siguientes características:
- Procesos : su jerarquía , PID , autenticadores de usuario y grupo ( UID , GID , SID , etc.), capacidades del sistema , subprocesos y estados de ejecución y detención.
- Memoria de la aplicación: archivos mapeados en memoria y memoria compartida
- Abrir archivos
- Tuberías y FIFOs
- sockets de dominio Unix
- Sockets de red , incluidos los sockets TCP en estado ESTABLISHED (ver más abajo).
- Sistema V IPC
- Temporizadores
- Señales
- Terminales
- Llamadas al sistema específicas del kernel de Linux:
inotify,signalfd,eventfdyepoll
A partir de septiembre de 2013 , no se requiere parchear el 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, que se publicó el 2 de septiembre de 2013. [ 6 ] [ 7 ]
migración de conexión TCP
Uno de los objetivos iniciales del proyecto era facilitar la migración de conexiones TCP, siendo el mayor desafío suspender y luego restaurar solo un extremo de la conexión. Esto era 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 de uso de la función de punto de control/restauración en OpenVZ. Para solucionar este problema, se implementó una nueva función, el "modo de reparación TCP". Esta función se incluyó en la versión 3.5 del kernel de Linux [ 8 ] y proporciona a los usuarios medios adicionales para desensamblar y reconstruir sockets TCP sin necesidad de intercambiar paquetes de red con el otro extremo de la conexión.
Referencias
- ↑ Pavel Emelyanov (23 de julio de 2012). "Herramienta de restauración de puntos de control v0.1" .
- ↑ "Calendario de lanzamiento" .
- ↑ Pavel Emelyanov (15-07-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 la rama 'akpm' (también conocida como "la bomba de parches de Andrew, toma dos")" . Árbol de código fuente del kernel de Linux . 13 de enero de 2012.
- ↑ "Instalación: Núcleo de Linux" .
Se requiere el núcleo de Linux v3.11 o posterior, con algunas opciones específicas configuradas.
- ↑ "Núcleo de Linux 3.11, Sección 1.5. Seguimiento detallado de las páginas que escribe una tarea" . kernelnewbies.org . 2 de septiembre de 2013. Consultado el 3 de mayo de 2016 .
- ↑ Pavel Emelyanov (29-02-2012). "Reparación de conexión TCP" . Lista de correo de Linux Netdev .
Lecturas adicionales
- Sanidhya Kashyap. "Actualización y validación del kernel sin reiniciar" .
- Rami Rosen. "Contenedores Linux y la nube del futuro" (PDF) .
- Equipo CRIU. "Comparación con otros proyectos CR" .
- Software Linux
- Software libre exclusivo para Linux