Ubuntu 8.10 Server: KVM из коробки - пробуем как альтернативу VMware
Ubuntu 8.10 «Intrepid Ibex» включает KVM без ручной сборки. Тестируем на небольшом проекте: производительность терпима, но оркестровка заметно беднее vCenter.
Релиз Ubuntu 8.10 «Intrepid Ibex» с KVM в стандартной поставке и улучшенной поддержкой виртуализации (30 октября 2008)
Ubuntu 8.10 «Intrepid Ibex» выходит 30 октября, и нам уже достаточно недель с кандидатом на выпуск, чтобы сказать что-то внятное. Главное изменение, которое нас интересует на серверной стороне - KVM теперь часть стандартной поставки. Не «скомпилируй сам» и не «доустанови из полуофициального репозитория», а просто apt-get install kvm - и оно работает.
Мы уже возились с KVM раньше: весной смотрели, можно ли его тащить в продакшн на CentOS. Тогда вывод был осторожный - можно, но нужно держать руки на штурвале. Теперь интересно другое: Ubuntu 8.10 явно позиционирует KVM как первоклассный вариант для небольших инсталляций. Проверяем, насколько это соответствует практике.
Что реально изменилось по сравнению с 8.04
Ubuntu 8.04 LTS тоже умела в KVM, но через дополнительные шаги. В 8.10:
- kvm и libvirt включены в официальные репозитории и поддерживаются командой Ubuntu на уровне пакетов.
- libvirt 0.4.6 из коробки - по сравнению с тем, что было в 8.04, заметный шаг: работает api для управления гостями через virsh без самодельных скриптов.
- Ядро 2.6.27 с kvm-модулями прямо в нём, без ручной сборки или внешних dkms-пакетов.
- Virtio для сети и диска доступен «из коробки» для Linux-гостей - это ключевой момент для производительности.
Ставится всё это одной командой: apt-get install ubuntu-virt-server. Мета-пакет тянет kvm, libvirt-bin, virt-manager (если нужен) и базовую конфигурацию сети с bridge-utils.
Тестовый стенд и методика
Взяли выделенный хост с двухъядерным Xeon и 8 ГБ RAM - типичная машина для небольших клиентских проектов, где VMware ESX экономически избыточен по лицензиям. Подняли три гостя: Ubuntu 8.04 LTS, CentOS 5.2, Windows Server 2003 R2. Гоняли базовые нагрузки: веб, PostgreSQL, файловый сервер.
Сравнивали с тем, как те же задачи живут на ESX 3.5 Update 2 на сопоставимом железе у другого клиента.
Производительность: терпимо, местами неплохо
Linux-гости с virtio работают достойно. Сетевая пропускная способность через virtio-net - в пределах нескольких процентов от баремetal. Дисковый I/O через virtio-blk на случайном чтении-записи заметно лучше, чем через эмулированный IDE, - разрыв примерно в полтора раза. Для типичного веб-приложения или небольшой базы данных это нормально.
С Windows-гостями сложнее. Драйверов virtio для Windows в Ubuntu 8.10 нет в стандартной поставке - нужно брать из проекта kvm.qumranet.com и ставить вручную. Без них Windows работает через эмулированный RTL8139 и IDE - и это ощутимо медленнее. Для Windows-гостей ESX с VMware Tools выглядит убедительнее.
Важное наблюдение по памяти: KSM (kernel samepage merging) в этой версии ядра ещё не появился, так что оверкоммит памяти между гостями здесь работает иначе, чем в VMware с balloon driver. Держите реальный объём RAM под контролем.
Оркестровка: вот тут всё скромнее
virsh - приличный инструмент для управления одним хостом. Создать гостя, запустить, остановить, сделать снапшот - работает. Для одной машины с несколькими VM хватает.
Но как только хостов больше одного - начинаются вопросы:
- Живой миграции (аналог vMotion) нет. Есть оффлайн-миграция через
virsh migrate, но это остановка гостя, перенос, запуск. Для плановых работ терпимо, для аварии - нет. - HA и автоматический рестарт гостей при падении хоста не предусмотрен на уровне KVM/libvirt. Нужно городить что-то поверх - Pacemaker, скрипты. У нас уже есть опыт с DRBD+Heartbeat, но это отдельная история с отдельной стоимостью поддержки.
- Централизованного управления нет ничего близкого к vCenter. virt-manager - GUI для одного хоста. Для нескольких хостов приходится открывать отдельные сессии.
- Шаблоны и клонирование - только руками: скопировать образ диска, подредактировать XML-конфиг, зарегистрировать. Не страшно, но долго и без защиты от ошибок.
По сравнению с vCenter это небо и земля. По сравнению с Hyper-V Manager - примерно на одном уровне по скромности, но у Hyper-V хотя бы roadmap на SCVMM понятный.
Когда это имеет смысл
Есть ситуации, где Ubuntu 8.10 + KVM закрывает задачу без лишних затрат:
- Небольшой проект с одним-двумя хостами, где HA не требуется или реализован на уровне приложения.
- Linux-only гости - тогда virtio даёт нормальную производительность без плясок с драйверами.
- Бюджетные ограничения - лицензии VMware ESX и vCenter для двух хостов стоят заметных денег; если нагрузка не критичная, экономия реальная.
- Dev и staging окружения - тут оркестровка не нужна, зато быстрый старт и простота ценны.
Для продакшн-окружений с Windows-гостями, требованиями к живой миграции или сложным мультихостовым кластером - пока остаёмся на VMware. Не потому что KVM плох в принципе, а потому что инструментарий вокруг него не дорос до задачи.
Что дальше
Мы берём этот стенд в работу на одном реальном небольшом клиентском проекте - там Linux-гости, нагрузка умеренная, вопрос по бюджету стоит остро. Посмотрим, как KVM на Ubuntu 8.10 ведёт себя в боевых условиях на горизонте нескольких месяцев.
Если интересно разобраться, что подходит под конкретные требования - мы это делаем в рамках сопровождения инфраструктуры: оцениваем платформу под задачу, а не выбираем любимый инструмент.