klink0v (klink0v) wrote,
klink0v
klink0v

Интересная технология

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

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

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

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

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

Tags: виртуализация, интернетное, хостинги
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments