§ О контейнерах как о будущем инфраструктуры.

Я если честно давно вынашивал эту статью, но всё никак не доходили руки до её написания. Положа руку на сердце я считаю что эра виртуализации постепенно подходит к своему логическому завершению, и в ближайшем будущем на её долю останется только случаи в которых нельзя никак иначе, а именно виртуализация платформ с принципиально разными ядрами, как например Windows на Linux (или наоборот), а так же эмуляция других аппаратных архитектур типа ARM или MIPS на x86_64 и тому подобное.

Ни для кого не секрет что на сегодняшний день большинство виртуализации приходится на случаи когда Linux поддерживает виртуальные машины с Linux. О недостатках такого решения, и о том почему контейнеризация в конечном счёте победит и пойдёт речь в моём посте.

§ KVM вместо VirtualBox

Не так давно я пересел с OpenSUSE на другой RollingRelease дистрибутив Manjaro (обязательно расскажу, но об этом позже), после чего начал испытывать определенные трудности с работой VirtualBox на последних ядрах Linux. Долгое время я считал VirtualBox просто лучшим для работы на коленках, однако пересев на новую версию KVM и VMM (Virtual Machine Manager v1.1.0) я понял что врядли вернусь к VirtualBox в ближайшее время.

§ KVM Direct Kernel Boot и почему это вкусно.

Обычно работа с KVM строится по простой и привычной схеме. Создаем файл (raw\qcow2) или LVM раздел, который монтируем как диск в виртуалку, после чего делаем необходимую разметку диска внутри (обычно так же создаем разделы lvm, ибо неизвестно понадобиться ли нам в будущем увеличить диск или нет), ставим систему, загрузчик и работаем. Но есть как минимум два НО во всей этой схеме:

1. Скорость. Есть достаточно обоснованные подозрения что LVM внутри раздела LVM или файла (raw\qcow2) не сильно производительное решение.

2. Простота. Существует ряд проблем в сучае необходимости смонтировать такое блочное устройство, что бы например поправить конфиг, или скопировать файлы, или ещё какой rm -rf / запустить. Не сказать что трудности непреодолимые, тем не менее хлопот это доставляет.

Вот тут то и приходит на помощь direct kernel boot. При помощи этой фичи мы можем указать KVM'у файл ядра линукса и initrd файл с которых будем загружать виртуалку. Такой подход позволяет во-первых иметь всего одно ядро для большого количества виртуалок, и обновив это ядро - обновить ядро для всех виртуалок сразу. Во-вторых позволяет использовать LVM раздел не как дисковое блочное устройство, а как обычный раздел, скажем ext4, который так же просто проверить на ошибки, монтировать и вообще делать с ним много всего.

§ Debian Sid. Подружись с хулиганом.

До недавнего времени я сидел на Debian Tesing, и практически не знал горя. Но тогда я не до конца понимал модель разработки Debian, и наивно полагал что именно Testing и есть тот самый rolling release с последним набором программ, но ошибался.

§ Перенос в KVM

По мотивам последних событий с моей работы решил написать этот пост, ибо ничего похожего в рунете к сожалению не обнаружил, а очень жаль, ибо перетаскивать виртуалки с VirtualBox и VMWare в благородный KVM все таки приходится. Один из популярных способов сводиться в сливу образа диска в KVM, а затем загрузка с установочного диска и востановление системы (а фактически новая установка поверх старых настроек). Лично меня подобная схема не устроила, потому что образ присланной виртуалки не содержал установочного диска с которого его можно было бы восстановить, а искать похожий образ муторно. Итак.