4. 4
Что такое CRIU? (продолж.)
Начался ~3 года назад
После 2-х летней осады сообщества Linux Kernel с
патчами для in-kernel реализации
Вместо 100+ патчей на всё ядро – небольшое их количество,
расширяющих только user API
В 3.11 есть всё, что нужно для нормальной работы
5. 5
Для чего он нужен
Живая миграция
“Незаметное” обновление ядра
Ускорение долгого старта приложений
Периодические снимки состояний (HPC)
Продвинутая отладка и тестирование
Присадки к screen/tmux
Кнопка save
6. 6
Где мы сейчас
1.3 выпущено 1 сентября
– И потом 1.3.1 12-го
Способен сохранять и восстанавливать
всё, чем пользуются стандартные серверные приложение
окружение (namespaces, cgroups, mountpoints), настраиваемое
утилитами OpenVZ, LXC и Docker
CLI и RPC (и .so для более простого доступа к RPC)
Поддержка живой миграции
Отслеживание изменений в памяти
C/R одной стороны активного TCP-соединения
Почти закончена интеграция с OpenVZ, LXC and Docker!
7. 7
Docker
В Google нужны контейнеры и живая миграция
Для контейнеров – Docker
Для миграции – CRIU
10. 10
Что для этого нужно
“Починить” AUFS, который портит имена файлов
Поддержать bind mounts внешних файлов внутрь
контейнера
Прикрепить контейнер к новому Docker-демону
Поддержать вложенные PID-namespaces
11. 11
Что из этого сделано
+ “Починить” AUFS, который портит имена файлов
+ Поддержать bind mounts внешних файлов внутрь
контейнера
+ Прикрепить контейнер к новому Docker-демону
– Поддержать вложенные PID-namespaces
12. 12
Как это будет выглядеть
Docker
daemon
CT2
CT1
CT3
Docker
CLI
dump $id
restore $id
-t $ct_root_pid
-D /var/lib/docker/$ct/...