Выпуск CRIU 4.0, систСмы для сохранСния ΠΈ восстановлСния состояния процСссов Π² Linux

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск инструмСнтария CRIU 4.0 (Checkpoint and Restore In Userspace), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для сохранСния ΠΈ восстановлСния процСссов Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ позволяСт ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ состояниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ процСссов, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с сохранённой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π² Ρ‚ΠΎΠΌ числС послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы ΠΈΠ»ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ сСрвСрС Π±Π΅Π· Ρ€Π°Π·Ρ€Ρ‹Π²Π° ΡƒΠΆΠ΅ установлСнных сСтСвых соСдинСний. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2. CRIU примСняСтся Π² Ρ‚Π°ΠΊΠΈΡ… систСмах управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, ΠΊΠ°ΠΊ OpenVZ, LXC/LXD ΠΈ Docker. НСобходимыС для Ρ€Π°Π±ΠΎΡ‚Ρ‹ CRIU измСнСния Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² основной состав ядра Linux.

Из областСй примСнСния Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ CRIU отмСчаСтся обСспСчСниС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ОБ Π±Π΅Π· Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ нСпрСрывности выполнСния Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выполняСмых процСссов, Live-миграция ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ускорСниС запуска ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… процСссов (ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с состояния, сохранённого послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ), ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ядра Π±Π΅Π· пСрСзапуска сСрвисов, пСриодичСскоС сохранСниС состояния долговыполняСмых Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ для возобновлСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² случаС ΠΊΡ€Π°Ρ…Π°, балансировка Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ΡƒΠ·Π»Ρ‹ Π² кластСрах, Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ процСссов Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ (fork Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΡƒΡŽ систСму), созданиС ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ для ΠΈΡ… Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ систСмС ΠΈΠ»ΠΈ Π½Π° случай Ссли потрСбуСтся ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ дальнСйшиС дСйствия Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ»Π°Π³ΠΈΠ½ CUDA, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сохранСния ΠΈ восстановлСниС состояния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ NVIDIA CUDA.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Shadow Stack, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ начиная с ядра Linux 6.6 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… эксплоитов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ возмоТности процСссоров Intel (послС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, адрСса Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ процСссором Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ стСкС, Π½ΠΎ ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ «Ρ‚Π΅Π½Π΅Π²ΠΎΠΌ» стСкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ адрСс Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° извлСкаСтся ΠΈΠ· Ρ‚Π΅Π½Π΅Π²ΠΎΠ³ΠΎ стСка ΠΈ свСряСтся с адрСсом Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· основного стСка).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ioctl-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ PAGEMAP_SCAN для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ содСрТимом Ρ‚Π°Π±Π»ΠΈΡ† страниц памяти, Ρ‡Ρ‚ΠΎ срСди ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ ΠΏΡ€ΠΈ использовании с userfaultfd() позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„Π°ΠΊΡ‚Ρ‹ записи Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ восстановлСния ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ cgroup v1.

    Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru