10
Павел Емельянов Консервирование процессов в домашних условиях

Консервация процессов в домашних условиях

  • Upload
    openvz

  • View
    70

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Консервация процессов в домашних условиях

Павел Емельянов

Консервирование процессов в домашних условиях

Page 2: Консервация процессов в домашних условиях

План

• Что такое C/R?

• Есть ли реализации и зачем появился CRIU?

• Зачем это нужно?

• В каком состоянии находится проект?

2

Page 3: Консервация процессов в домашних условиях

Введение

• CRIU – Checkpoint/Restore In Userspace

• Технология C/R– Checkpoint (dump) – сохранение максимально

подробной информации о состоянии процессов, используемых ими ресурсов и их окружении.

– Restore – восстановление процессов, ресурсов и окружения в таком виде, чтобы процессы “не заметили разницы”.

• Реализации: BLCR, DMTCP, CryoPID, OpenVZ CPT, MOSIX

3

Page 4: Консервация процессов в домашних условиях

Как и зачем возник CRIU

• Parallels поставила целью получить реализацию C/R технологии в основном ядре Linux.

• Решение “в ядре” не устроило сообщество, и мы решили попробовать сделать в виде пользовательской утилиты.

• Как сделать лучше чем• BLCR и OpenVZ CPT – должно работать на немодифицированном ядре

• DMTCP – не должно требовать подготовки процессов перед стартом

• CryoPID – должно работать со всем, что умеют процессы в Linux

4

Page 5: Консервация процессов в домашних условиях

Как работает

• Checkpoint: сбор информации о процессах, ресурсах и окружении с помощью существующего Linux kernel API

• Restore: CRIU процесс “переодевается” в то, что надо восстановить

• Существующего API недостаточно

• API ядра был расширен, полный набор требуемых расширений доступен начиная с 3.11

5

Page 6: Консервация процессов в домашних условиях

Использование – живая миграция

• В простейшем исполнении живая миграция = dump + copy + restore

• Пред-копирование памяти: (dump + copy) x N + мграция без памяти– Необходим механизм отслеживания изменений в

памяти– Для CRIU – soft-dirty в 3.11 ядре

• Пост-копирование памяти: миграция без памяти + “сетевой swap”– Необходим механизм “подгрузки” памяти по сети– Для CRIU – userfaultfd в процессе разработки

6

Page 7: Консервация процессов в домашних условиях

Использование – незаметное обновление ядра

• Последовательность действий– Сохраняем состояние контейнеров в памяти– Меняем ядро без перезагрузки оборудования

(kexec)– Восстанавливаем контейнеры

• Доп. требование – блокирование свободного доступа к памяти на раннем этапе загрузги– Готово в OpenVZ/PCS – persistent ramfs– Разрабатывается в основном ядре

7

Page 8: Консервация процессов в домашних условиях

Использование – остальное

• Отложенная отладка “зависшего” сервиса

• Быстрый старт процесса

• Сохранение удалённой терминальной сессии

• Серия “снимков” приложений

8

Page 9: Консервация процессов в домашних условиях

Текущее состояние проекта

• V1.6– Умеет работать со всеми стандартными сервисами

– apache, mysql, sshd, crond, nginx, ...– Интегрирована с LXC, Docker libcontainer и OpenVZ

• Сообщество– Odin/Parallels, Google, Canonical, RedHat, SuSE

(Novell), Debian, CloudLinux, Samsung, Huawei и энтузиасты

– Linux kernel разработчики знают о проекте и содействуют необходимым ядерным улучшениям

9

Page 10: Консервация процессов в домашних условиях

Спасибо!