В уходящем году вышла новая версия нашего основного продукта – системы виртуализации Virtuozzo. С тех пор мы постоянно получаем вопросы: «Стоит ли обновляться?», «Чем 7ка лучше 6ки?» и так далее. Поэтому на праздниках возникло желание расставить точки над i и в одном посте рассказать об отличиях Virtuozzo последней версии от предыдущих.



Хочется сразу отметить, что этот пост был подготовлен для пользователей Virtuozzo 6 и более ранних версий, а также открытого проекта OpenVZ (о новой версии которого мы уже писали). Это, конечно, не значит, что его нельзя или неинтересно читать тем, кто еще не пользуется Virtuozzo…просто здесь мы будем предметно рассказывать об отличиях последней версии, чтобы заинтересованные хаброчане могли принять решение, актуально им обновление или в нем пока нет смысла.

О платформе


Сама по себе платформа Virtuozzo стала более обширной. Теперь в состав продукта входят наше фирменное решение Systems Container, позволяющее запускать «легкие» виртуальные машины, гипервизор на базе KVM для управления виртуальными машинами, а также программно-определяемое хранилище. Преимущество состоит в том, что все это работает, как единый центр виртуализации, так что вы можете создавать «легкие» виртуальные машины и полноценные ВМ, выделяя ресурсы единого хранилища данных Virtuozzo Storage, создавая его на базе установленных в серверы жестких и твердотельных дисков.

Гипервизор


Как в открытой, так и в коммерческой платформе (которые развиваются теперь синхронно и используют один и тот же исходный код), мы перешли на гипервизор KVM. Причина очень проста: за последние годы KVM совершил очень большой рывок вперед, и мы обнаружили, что не успеваем со своим проприетарным гипервизором за темпами развития индустрии. Оказалось, что гораздо перспективнее участвовать в проекте KVM, внося свой вклад в развитие открытой системы виртуализации, а также дополняя его необходимыми функциями для использования в VZ7. Было реализовано более 200 патчей и доработок, которые делают KVM по-виртуоззовски более эффективным решением.



Более защищенные контейнеры


По запросам наших пользователей мы также реализовали ряд нововведений для контейнеров. За счет перехода Virtuozzo на новое ядро Linux 3.10+ (RHEL 7), появилась поддержка cgroups и namespaces, что обеспечивает больший уровень изоляции по сравнению с ядерными модулями. Также вместо обычных ID контейнеров в Virtuozzo 7 используется единый UUID.

Живая миграция


В новой версии Virtuozzo была также реализована полная поддержка CRIU – программного инструмента для Linux, который позволяет заморозить контейнер и сохранить его на диске в виде простого набора файлов. В результате вы можете восстановить его с той же точки, причем при правильных действиях приложение даже не заметит, что ему сменили рабочую среду. CRIU и проект P.Haul помогают создать новую экосистему для «живой миграции» контейнеров на базе открытых технологий (CRIU – это полностью OpenSource-проект), и это огромный рывок в вопросах миграции по сравнению с Virtuozzo 6. Дело в том, что CRIU большей частью реализован в пользовательском пространстве и почти не требует модификаций ядра. Благодаря этому развитие самого инструмента не требует выпуска постоянных патчей для ядра и их согласования, а также перезагрузок при обновлении системы – критичный кстати вопрос для промышленных сред.

Обновления безопасности – без остановки сервисов


Еще одна интересная возможность, которая помогает снизить потери при работе с новой Virtuozzo 7 – это ReadyKernel. Новая версия нашей операционной системы Virtuozzo Linux поддерживает возможность установки обновлений безопасности без перезагрузки серверов. С одной стороны, это позволяет устанавливать патчи сразу же, уменьшая риски взлома и компрометации систем, а с другой – не терять деньги из-за остановки сервисов, вызванных перезагрузкой.

Пользователи Virtuozzo 6 уже знакомы с системой установки обновлений ядра без перезагрузки — Rebootless Kernel Update (RKU). Но дело в том, что RKU все же работала не так хорошо – она останавливала контейнеры, загружала новое ядро и после этого запускала контейнер или ВМ. Да, этот механизм позволял загрузить практически любое ядро, но все же приводил к некоторым простоям. В Virtuozzo 7 за счет использования ядра 3.10+ мы перешли на технологию kpatch, и все стало намного круче.

По оценке наших специалистов, использование ReadyKernel помогает экономить до 200 часов работы администраторов в месяц (http://www.iksmedia.ru/news/5336522-Virtuozzo-Linux-7-ekonomit-zakazchi.html) на каждые 10 000 серверов.

Резервное копирование и восстановление


Средства резервного копирования в Virtuozzo 7 также были серьезно переработаны. Для этого была разработана новая API и реализован механизм CBT (changed block tracking). Для этого мы использовали стандартные механизмы QEMU/KVM, создав систему формирования снэпшотов, сохраняя образы контейнеров и виртуальных машин в формате QCOW. Virtuozzo 7. Благодаря этому создания накопительных резервных копий стало происходить намного быстрее, чем в Virtuozzo 6.

Кроме этого стало возможным экстренное восстановление! Даже если в какой-то момент система резервного копирования перестала работать, вы можете просто конвертировать файл QCOW2 в любой образ при помощи утилиты qemu-img.

Управление памятью


Мы уже говорили несколько слов о новой технологии управления памятью, которая реализована как в OpenVZ 7, так и в Virtuozzo 7. Новинка охватывает и контейнеры, и ВМ, и систму хранения. Advanced Memory Management (AMM) контролирует всю работу с памятью, включая KSM, а также технологии прогнозирования использования памяти для различных наборов WSS. Благодаря этому становится возможным автоматическая балансировка с минимальным влиянием на работу пользователей. AMM поддерживает гостевые системы Windows и Linux, а средства Online Memory Management (OMM) гарантируют доступность нужного объема памяти для контейнеров, а также позволяют увеличивать или уменьшать его без перезагрузки – и это еще один способ обеспечения непрерывности сервисов.

Поддержка OpenStack


Начиная с Virtuozzo 7 мы поддерживаем работу с контейнерами и ВМ через Libvirt. Благодаря этому Virtuozzo может работать с большими экосистемами, использующими libvirt, — то есть OpenStack и Virtual Machine Manager. То есть пользователи OpenStack могут раскрыть весь потенциал OpenStack для управления частным или публичным облаком с использованием контейнеров и ВМ Virtuozzo через OpenStack API или панель Horizon. Новый модуль Virtuozzo Storage также помогает создать программно-определяемую систему хранения для OpenStack

Каталог приложений


Последнее, о чем мы расскажем сегодня, — это возможность моментальной установки готовых и уже сконфигурированных приложений для любых пользователей. Поддерживать такой каталог самостоятельно, следить за обновлениями – весьма сложно. Поэтому в новой версии мы создали свой, готовый набор Virtuozzo Application Catalog. Вместе с Bitnami мы поддерживаем постоянно актуальный набор десятков приложений и сред разработки, уже готовых для развертывания в качестве виртуальной машины или контейнера: WordPress, Redmine, SugarCRM, Alfresco, Drupal, MediaWiki, GitLab и многих других.



Заключение


Сегодня мы поговорили об общих отличиях Virtuozzo 7 от предыдущей версии. Так что если вы являетесь нашим пользователем, теперь, когда праздники позади, можно обдумать необходимость обновления. Тем временем, мы подготовим пост о том, как обновиться до «семерки» с минимальными потерями.