CRIU (Checkpoint e restauração no espaço do usuário) é uma ferramenta que permite salvar o estado de um ou de um grupo de processos e então retome o trabalho da posição salva, mesmo após reiniciar o sistema ou em outro servidor sem interromper as conexões de rede já estabelecidas.
Com esta ferramenta, é possível congelar um aplicativo em execução (ou parte dela) e colocá-lo em armazenamento persistente como uma coleção de arquivos. Os arquivos podem então ser usados para restaurar e executar o aplicativo de onde ele foi congelado.
A característica distintiva do projeto CRIU é que ele é implementado principalmente no espaço do usuário, ao invés do kernel.
Sobre o CRIU
A ferramenta CRIU está sendo desenvolvido como parte do projeto OpenVZ, com o objetivo de substituir o ponto de verificação / restauração no kernel.
Embora seu foco principal é apoiar a migração de contêineres, permitindo que os usuários verifiquem e restaurem o estado atual dos processos em execução e grupos de processos.
Atualmente, a ferramenta pode ser usada em sistemas x86-64 e ARM y suporta as seguintes funções:
- Processos: sua hierarquia, PIDs, autenticadores de usuário e grupo (UID, GID, SID, etc.), recursos do sistema, threads e estados em execução e interrompidos
- Memória de aplicativo: arquivos mapeados de memória e memória compartilhada
- Abrir arquivos
- Pipes e FIFOs
- Soquetes de domínio Unix
- Soquetes de rede, incluindo soquetes TCP no estado ESTABLISHED
- Sistema V IPC
- Timers
- Sinais
- Terminais
- Chamadas de kernel para o sistema específico: inotify, signalfd, eventfdyepoll
Entre áreas de aplicação da tecnologia CRIU, observa-se que o sistema operacional reinicia sem interromper a continuidade dos processos migração ao vivo de contêineres isolados de longa duração, acelerando o lançamento de processos lentos (pode começar a partir do estado salvo após a inicialização), realizando atualizações de kernel sem reiniciar serviços, salvando periodicamente o estado de longa duração de tarefas para retomar o trabalho em caso de uma falha , balancear a carga entre nós agrupados, processos duplicados em outra máquina (ramificar para um sistema remoto), criar instantâneos de aplicativos do usuário durante a operação para análise em outro sistema ou caso você precise cancelar mais ações no programa. CRIU é usado em sistemas de gerenciamento de contêineres, como OpenVZ, LXC / LXD e Docker.
Sobre a nova versão do CRIU 3.15
Atualmente a ferramenta está em sua versão 3.15, que foi lançado recentemente e introduz o serviço criu-image-streamer, que permite a transmissão de imagens de processo diretamente de / para CRIUs durante operações de congelamento / restauração.
- As imagens podem ser transferidas do armazenamento externo (S3, GCS, etc.) sem buffer no sistema de arquivos local.
- Suporte para arquitetura MIPS foi adicionado.
- Tem permissão para congelar processos que não pertencem ao namespace PID existente, seguido pela restauração do namespace PID existente.
- Mecanismos adicionais foram adicionados para verificar os arquivos.
- Adicionado suporte para congelar e restaurar estruturas BPF BPF_HASH_OF_MAPS e BPF_ARRAY_OF_MAPS.
- Adicionado suporte inicial para a segunda versão do cgroup.
Como instalar o CRIU no Linux?
Os interessados em instalar esta ferramenta devem saber que ela está disponível nos canais oficiais da maioria das distribuições Linux.
Portanto, para instalar a ferramenta basta abrir um terminal e com a ajuda de seu gerenciador de pacotes procurar a ferramenta ou usar um dos seguintes comandos que compartilhamos.
Para o caso de quem é Usuários Debian, Ubuntu e derivados destes dois:
sudo apt install criu
Enquanto para aqueles que são usuários de Arch Linux e quaisquer derivados dele:
sudo pacman -S criu
No caso de quem é usuário de abre uso:
sudo zypper install criu
Finalmente para quem deseja compilar a ferramenta eles podem fazer isso digitando:
git clone https://github.com/checkpoint-restore/criu.git
cd criu
make clean
make
make install
sudo criu check
sudo criu check --all
Se você quiser saber mais sobre isso sobre esta ferramenta, você pode verificar os detalhes no link a seguir.