Окна в окне - про эволюцию виртуализации

Зайчатки разума

Записная книжка айтишника

Окна в окне - про эволюцию виртуализации

2018-10-16 16:35:23 — Evgeniy Shumilov

  Как гласит старая айтишная шутка - "чтобы понять, что такое рекурсия, сначала нужно понять, что такое рекурсия". Куча открытых окон одной операционной системы в окне другой уже очень давно перестали выглядеть фантастикой. Про виртуализацию сейчас знают все, кто так или иначе связан с IT. Но вот виртуализация чего-либо в окне браузера всё ещё выглядит как нечто особенное. Когда-то давно я наткнулся на один интересный ресурс, который позволял запускать через эмулятор x86 различные некогда популярные и не очень операционные системы прямо в окне браузера. С этим можно развлекаться, но не долго. Есть возможность управлять размером выделяемой основной и видео памяти, возможность самому подгрузить образы CD/FDD/HDD или выбрать один из уже предустановленных. В том числе есть обрезанные версии Windows 1.01, 95, 98, Linux, пара BSD систем, ReactOS конечно же и несколько версий старых линуксов. Но так же присутствует и несколько более редких вещей. Самое интересное - всё это распространяется по одной из версий лицензии BSD, лежит на гитхабе и доступно для скачивания и установки. Конечно, такие комбаины как VirtualBox оно никогда не заменит в силу скорости и количества настроек, но как нечто, созданное в рамках proof of concept - вполне имеет право на жизнь, не более того. К сожалению, в силу неторопливости, практического применения оно не имеет.

  Недавно из телеграм рассылки Xakep я узнал, что один товарищ ко всему вышеописанному добавил образ Windows 95, заботливо завернул это в электрон и выложил в виде приложения. Я не особо надеялся, что это даст какой-то прирост в производительности, но ради эксперимента попробовал поставить на debian. Вообще, я достаточно предвзято отношусь ко всему, что заворачивают в электрон - зачастую веб приложение ест на порядок меньше ресурсов, чем его обёртка. Подобные решения вызывают у меня аллергию. Тем не менее, приложение я поставил и попробовал. На удивление всё работает ощутимо быстрее, но всё-же недостаточно. На рабочем столе с момента запуска открыто окно блокнота с приветствием и солитёр. Конечно, зачем же ещё вы могли запустить Windows 95, если не собираетесь играть в солитёр? Ну и столкнулся с рядом глюков. В числе прочего при попытке запустить консоль ms dos, обнаружил, что видимая область в электроне сжалась до размера пары кнопок пуск в центре окна, всё остальное - чёрное поле. Одним словом - неюзабельно.

  На том же ресурсе натолкнулся на статью о эмуляции в вебинтерфейсе других платформ. Лично для меня особый интерес представляет разве что эмуляция MESS (Multi Emulator Super System) - JS версия эмулятора множества старых игровых консолей и не только. Обязательно посмотрю, когда будет на то время, правда в текущий момент домен archive.org у меня недоступен, видимо, в связи с аллергией нашего государства на telegram (кого это останавливет?). Но вообще, MAME (Multiple Arcade Machine Emulator), MESS, как её часть, RetroArch и сборки вроде RetroPie в моих глазах являются вершиной эволюции в области эмуляции старых игровых платформ - за каких-нибудь 25$ можно получить всё и намного больше, об этом как-нибудь потом и отдельно.

  Но это всё развлечения, а что, если вам нужно иметь доступ к какой-то запущенной операционной системе, отличной от linux через браузер без установки дополнительных плагинов, приложений и всего прочего и чтобы при этом оно ещё и работало с приемлимой скоростью? Или вам нужен аналог облака на вашем железе для более рационального использования ресурсов и возможность управлять объединением вируальных машин в сети и прочее?


  Я для себя решение нашёл уже много лет тому назад и оно меня ещё не подводило. Называется оно ProxMox. Самое удивительное, что оно бесплатное, открытое и при этом достаточно удобное. Есть конечно и платная подписка, но её вполне можно не оформлять, если есть достаточное количество опыта. В одной организации, где я работал, я перевёл несколько серверов с VMWare на proxmox и сразу волосы у всех стали гладкие и шелковистые. Что такое proxmox? Это гипервизор с приятным и продуманным вебинтерфейсом, в котором можно создавать как полноценные виртуальные машины, использующие аппаратную эмуляцию (QEMU/KVM), так и контейнеры (раньше были OpenVZ контейнеры, но начиная с четвёртой версии перешли на LXC). При этом присутствует нормальный и удобный на мой взгляд вебинтерфейс, позволяющий управлять всеми ресурсами и инстансами, объединять несколько машин с proxmox в кластер, загружать шаблоны и образы дисков, делать снапшоты и бекапы, раздавать права доступа на использование и управление, а так же получить доступ к консоли или графическому интерфейсу прямо в рамках вебинтерфейса. В том числе есть возможность использовать тонкие настройки тут же через консоль управления QEMU. Например, реализовать проброс USB устройства. Одним словом, возможности очень широки и тем, кто с этим продуктом не сталкивался, рекомендую попробовать. У меня пока стоит четвёртая версия, актуальна на момент написания - пятая, в текущий момент заметил некоторые проблемы при доступе через Google Chrome, но в FireFox и аналогах всё работает как нужно. Возможно в 5-й версии проблема уже устранена - пока не знаю. Так же большим преимуществом является то, что при необходимости можно установить proxmox на удалённый сервер на дебиане обычным подключением репозиториев. А из этого одновременно следует и то, что на одном и том же сервере спокойно уживаются виртуальные машины QEMU, контейнеры LXC под управлением proxmox и при необходимости - docker контейнеры, правда интерфейса управления для них в proxmox уже не будет, но это решаемо сторонними веб интерфейсами, если они вообще вам нужны. Так же можно пробросить куда-нибудь наружу VNC и подключиться своим клиентом, например, от TightVNC довольно неплох. Выглядит это всё примерно так:

  Итак, что мы имеем в итоге:

  • Открытость и бесплатность
  • Удобный веб интерфейс
  • Множество настроек, в том числе тонких
  • Выбор между виртуализацией и контейнеризацией
  • Возможность установить на удалённый хост
  • Возможность рядом поставить docker
  • Возможность объединения в кластер нескольких серверов
  • Доступ к контейнерам через web интерфейс без клиента
  • Доступ по VNC (требует настройки)
  • DRBD для тех, что знает, что это такое

  Ничего с подобным уровнем функционала и бесплатно я не встречал. Альтернативы? VMWare - дорого, либо очень обрезанный функционал. OpenStack? Порог входа не в пример выше. OpenNebula? Пока не трогал, по этому поводу ничего сказать не могу. В любом случае, даже если у вас уже что-то работает, ProxMox стОит того, чтобы его как минимум попробовать.

Теги: virtualization, containers, qemu, kvm, lxc, proxmox

comments powered by Disqus