Po sześciu miesiącach prac rozwojowych, wydano CRIU 4.2 (Checkpoint and Restore in Userspace), zestaw narzędzi do zapisywania i przywracania procesów w przestrzeni użytkownika. Zestaw narzędzi umożliwia zapisanie stanu jednego lub grupy procesów, a następnie wznowienie wykonywania od zapisanego stanu, również po restarcie systemu lub na innym serwerze, bez przerywania istniejących połączeń sieciowych. Kod projektu został napisany w języku C i jest rozpowszechniany na licencji GPLv2. CRIU jest używany w systemach zarządzania kontenerami, takich jak OpenVZ, LXC/LXD i Docker. Zmiany niezbędne do działania CRIU zostały uwzględnione w jądrze systemu. Linux.
Obszary zastosowań technologii CRIU obejmują zapewnienie ponownego uruchomienia systemu operacyjnego bez zakłócania ciągłości długotrwałych procesów, migrację w czasie rzeczywistym odizolowanych kontenerów, przyspieszenie uruchamiania wolnych procesów (można rozpocząć pracę od stanu zapisanego po inicjalizacji), przeprowadzanie aktualizacji jądra bez ponownego uruchamiania usług, okresowe zapisywanie stanu długotrwałych zadań obliczeniowych w celu wznowienia pracy w przypadku nieprawidłowego zakończenia, równoważenie obciążenia węzłów w klastrach, duplikowanie procesów na innej maszynie (fork na zdalny system), tworzenie migawek aplikacji użytkownika podczas działania w celu ich analizy w innym systemie lub w przypadku konieczności anulowania dalszych działań w programie.
W nowym wydaniu:
- Wtyczka amdgpu implementuje możliwość równoległego przywracania stanu procesów z wykorzystaniem procesora graficznego.
- Dodano opcję „--allow-uprobes”, która umożliwia pracę z procesami wykorzystującymi vma (obszar pamięci wirtualnej) podczas śledzenia procesów za pomocą mechanizmu uprobe.
- Biblioteka libcriu obsługuje teraz określanie pliku konfiguracyjnego RPC dla kontenerów środowiska uruchomieniowego korzystających z tej biblioteki, takich jak Crun. Funkcja ta może być na przykład przydatna do ustawiania opcji takich jak „--tcp-established” za pośrednictwem pliku /etc/criu/runc.conf dla Kubernetes.
- Naprawiono problemy z kompilacją na systemach ARM64 przy użyciu biblioteki C musl.
- Naprawiono przepełnienie całkowite w funkcji pagemap_len().
- Problemy z używaniem opcji getsockopt SO_PASSCRED i SO_PASSSEC w systemach z jądrem Linux 6.16.
Źródło: opennet.ru
