Технические особенности OpenVZ
OpenVZ — это реализация технологии виртуализации на уровне операционной системы, которая базируется на ядре Linux. OpenVZ позволяет на одном физическом сервере запускать множество изолированных копий операционной системы, называемых Виртуальные Частные Серверы (Virtual Private Servers, VPS) или Виртуальные Среды (Virtual Environments, VE).
Главная особенность - одно общее ядро для всех контейнеров. Это определяет основные свойства, накладывает некоторые ограничения и обеспечивает особые возможности.
Преимущества:
Низкая стоимость. Представьте себе такую аналогию - ваш автомобиль (сервер здесь как аналог автомобиля) едет без груза (мало клиентов) со скоростью ограниченной транспортным потоком (клиент читает страницы вашего сайта последовательно и не быстро). Поэтому большую часть времени большинству автомобилей (виртуальных серверов) нужна небольшая мощность и грузоподъемность. Система виртуализации OpenVZ способна динамически распределять ресурсы процессора и памяти между всеми виртуальными серверами и каждый сервер использует ровно столько ресурсов, сколько ему необходимо. Незанятые ресурсы остаются свободными. Потому хостинговые компании могут размещать на одном физическом сервере под OpenVZ больше виртуальных серверов чем под любой другой системой виртуализации. Хотя можно подумать, что в этом случае продается то чего нет, но это профанация ибо свободные не занятые ресурсы в системе OpenVZ всегда есть. Если же реальные ресурсы на сервере исчерпаны, то производительность падает настолько резко, что не заметить нельзя. Например если заканчивается память, то скорость работы своппамяти определяемая скоростью диска и это очень заметно. OpenVZ выгодна хостинговой компании и это оборачивается выгодой для клиентов ибо стоимость таких VPS самая низкая.
Высокая производительность. А теперь снова вернемся к аналогии описанной выше. На ваш автомобиль загрузили 40 тонн груза и освободилось шоссе (на ваш сервер пришло много клиентов и резко возросло количество запросов). Ваш автомобиль получил мощность целой колонны грузовиков (openvz выделил вам все ядра CPU, всю гарантированную память (oomguardpages) и еще немного (privvmpages) для разгона) и помчался со скоростью ограниченной правилами движения (суммарной скоростью всех внешних каналов связи). Таким образом вы получили заметно больше чем оплатили. И это выгодно
Недостатки:
Узкое место технологии OpenVZ - относительно медленная работа с диском. Эта проблема в принципе работы этой системы. В качестве хранилища данных в OpenVZ используется общая файловая система - террабайты данных. Ядро системы выделяет каждому контейнеру лимит на долю этого пространства и контролирует каждый запрос к файловой системе - не выходит ли он за пределы заданной квоты. Процесс проверки не так уж быстр. Все контейнеры порождают огромное количество запросов на запись и чтение которые генерируют значительную дополнительную нагрузку на ядро за счет этих проверок.
Вторая проблема связанная с файловой системой - общий дисковый кэш. Контейнеры с наиболее активным дисковым вводом/выводом вытесняют из дискового кэша данные других контейнеров.
Общая виртуальная память - swap. OpenVZ дает возможность использовать swap виртуальным серверам, но на уровне хост-машины. В связи с этим есть проблема - swap в OpenVZ не срабатывает как демпфер нагрузки. Например в случае прихода слишком большого количества клиентов запустится слишком много демонов apache и память закончится. OpenVZ просто убивает самый прожорливый процесс. Если это apache, то ничего страшного, а если mysqld, то ваш сайт перестанет работать. На практике не помню такого, но теоретически подобное возможно.
Прочие недостатки связаны с общим ядром и необходимостью изоляции каждого контейнера от «соседей».
У владельца гостевой системы ограничены возможности по использованию параметров ядра. Он не может использовать многие модули и функции ядра, не может сменить версию ядра.
У вас не будут работать NFS и IPSec.
Менее значительный недостаток - в гостевой системе может использоваться только Linux и только те версии которые предусмотрены администратором.
Технические особенности KVM
KVM (или Kernel-based Virtual Machine) — это программное решение, обеспечивающее виртуализацию в среде Linux. Распространяется на основе открытых и свободных лицензий и активно поддерживается и развивается усилиями сообщества свободных разработчиков и лидеров отрасли - HP, Intel, Red Hat, IBM.
Преимущества:
- независимые ресурсы: каждому серверу выделяется своя область в оперативной памяти и на жёстком диске, что повышает надёжность работы такого сервера, не позволяя соседним серверам использовать те же участки памяти и дискового пространства. Это же не позволяет "оверселлить" ресурсы, когда хостер продаёт ресурсов больше, чем имеется на самом деле.
- имеется возможность использовать модифицированные ядра операционных систем в зависимости от Ваших требований. Вы можете произвести установку собственного дистрибутива с использованием своего установочного iso-образа.
- эмуляция сетевой карты означает полную поддержку всех сетевых протоколов и полноценную поддержку сетевых экранов firewall.
- поддержка множества гостевых операционных систем: возможна установка любых дистрибутивов Linux, BSD, Solaris и т.п., а также ОС Windows XP и Windows 2008 Server (при наличии лицензии).
- поддержка VNC позволяет управлять виртуальным сервером как будто Вы находитесь непосредственно за монитором собственного компьютера, включая первоначальную загрузку виртуальной машины (вплоть до BIOS), а также графические рабочие столы.
Молодость. Эта технология быстро развивается и неизбежно содержит еще множество реальных и потенциальных проблем.