?

Log in

No account? Create an account
Cat-light

klink0v


Блохи в свитере деда Сергеича


Интересная технология
Cat-light
klink0v

С подачи своего коллеги по цеху попробовал попользоваться буржуйским хостинг-провайдером под названием "DigitalOcean". Что я могу сказать? Весьма и весьма интересно. За какие-то весьма небольшие деньги они дают честную KVM-виртуалку на хост-машине с SSD-дисками и полный root-овый доступ к ней. Плюс возможность автоматизированного создания бэкапов-снапшотов, API, несколько терабайт бесплатного (включённого в тариф) трафика и прочие вкусности.

Но больше всего меня заинтересовала технология построения всей этой радости чисто с точки зрения линуксового сисадмина. С одной стороны, они дают своим клиентам честный QEMU-KVM, а не какой-нибудь Xen или OpenVZ. То есть вроде как "вот тебе машина, твори с ней сам чо хошь". А с другой стороны, ядро они грузят "снаружи" виртуалки. То есть заказчик может изгаляться как может: стереть образ ядра (vmlinuz), грохнуть к чертям загрузчик, безуспешно пытаться обновить ядро до какой-нибудь другой версии. Пофиг. Всё равно виртуалка загрузится. И всё равно с тем ядром, которое "спустит" ей гипервизор. А не с тем, которое лежит на жёстком диске внутри виртуалки.

К слову сказать, это самое ядро можно выбирать через веб-интерфейс из нескольких наперёд предложенных хостером вариантов. Но вот, например, запустить собственноручно собранное ядро, или даже просто прописать ему какие-то параметры запуска (типа "elevator=noop") — нельзя. По этой же причине не получится инсталлировать на виртуалку Windows, несмотря на то, что, повторяю, это честный KVM. Так что возможности хостинга ограничиваются только Linux-системами на стандартных ядрах.

Я когда в первый раз увидел консоль так называемого "дроплета" (так они называют свои виртуалки), долго не мог понять как же это может быть реализовано. Чуть позже осознал, что они даже не пытаются эмулировать внутри виртуалки хоть сколь-нибудь простенький BIOS: в момент старта машины ядро и initrd уже находятся в оперативной памяти гостя. Насколько я могу предположить, перед запуском дроплета гипервизор резервирует под него область в оперативной памяти хоста, сам распаковывает туда образ ядра и initrd, после чего передаёт управление сразу в ядро внутри виртуалки.

У меня остаётся только два вопроса. Как они это делают, а главное — зачем. Какие принципиальные преимущества несёт в себе такой подход?