Em 22 de setembro de 2024, foi anunciado o lançamento do CRIU 4.0 (Checkpoint and Restore In Userspace), uma ferramenta poderosa que permite o salvamento e restauração do estado de processos no espaço de usuário do Linux. Essa funcionalidade é útil para capturar o estado de um ou mais processos em execução, possibilitando que eles sejam retomados de onde pararam, mesmo após uma reinicialização do sistema ou em outro servidor, sem interromper as conexões de rede ativas. O código do CRIU é escrito em C e distribuído sob a licença GPLv2. Ele é amplamente utilizado em sistemas de gerenciamento de contêineres como OpenVZ, LXC/LXD e Docker. As mudanças necessárias para o funcionamento do CRIU já estão integradas ao kernel do Linux.
Aplicações do CRIU
Entre as principais aplicações da tecnologia CRIU estão:
- Reinicialização do sistema sem interromper processos longos: O CRIU permite que processos de longa duração continuem em execução após uma reinicialização.
- Migração de contêineres ao vivo: Facilita a migração de contêineres de um servidor para outro sem interrupções.
- Aceleração de processos lentos: É possível iniciar um processo a partir de um estado previamente salvo, acelerando sua inicialização.
- Atualizações de kernel sem reiniciar serviços: O CRIU possibilita a execução de atualizações no kernel sem a necessidade de reiniciar os serviços.
- Salvamento periódico de tarefas longas: Em casos de falhas, o CRIU permite que tarefas computacionais extensas sejam retomadas a partir de um ponto salvo.
- Balanceamento de carga em clusters: Movimenta processos entre diferentes nós de um cluster para otimizar o uso de recursos.
- Duplicação de processos para outras máquinas: Permite a clonagem de processos em sistemas remotos para execução paralela.
- Criação de snapshots de aplicativos: Cria snapshots do estado de execução de aplicativos para análise ou reversão de ações futuras.
Novidades da versão 4.0
A versão 4.0 do CRIU traz diversas melhorias significativas:
- Suporte a CUDA: Agora, o CRIU é capaz de salvar e restaurar o estado de aplicativos que utilizam a tecnologia NVIDIA CUDA.
- Compatibilidade com o Shadow Stack: Introduzido no kernel do Linux 6.6, o Shadow Stack usa recursos de hardware de processadores Intel para proteger contra diversos tipos de exploits. Essa funcionalidade salva os endereços de retorno das funções em um “stack sombra”, que é protegido contra alterações diretas, proporcionando maior segurança ao sistema.
- Suporte ao comando ioctl PAGEMAP_SCAN: Esse comando permite obter informações detalhadas sobre o conteúdo das tabelas de páginas da memória, o que, combinado com o userfaultfd(), ajuda a identificar modificações em áreas específicas da memória.
- Restauração de threads em cgroup v1: Agora, é possível restaurar corretamente fluxos de execução no contexto de cgroup v1.
O lançamento do CRIU 4.0 reforça o papel da ferramenta como uma solução essencial para a gestão eficiente de processos em sistemas Linux, especialmente em ambientes de contêineres e virtualização.