Virtualization in Real Life

Мне часто приходится общаться с заказчиками и видеть проекты связанных с виртуализацией на платформе x86. Я хотел бы поделиться некоторыми своими ощущениями и немного опытом: каковы особенности настройки СУБД в виртуализированном окружении, и вообще что дает виртуализация в итоге.

В качестве гипервизора я использую OracleVM for x86, хотя все идеи применимы к любой системе виртуализации.

Итак, вот ситуация из жизни реального заказчика из сегмента middle-бизнеса (фильм основан на реальных событиях, - любые совпадения абсолютно случайны :-) ):

- есть два приложения, которые сейчас работают каждое на своем сервере;
- первое приложение представляет собой систему учета персонала, этот софт разработан независимым поставщиком, работает под управлением Oracle Database версии 10.2 на Linux ;
- второе приложение было разработано собственными силами: использутся Oracle Database 11.2, Oracle HTTP Server 11.1 и APEX (все на платформе Windows x64), эта система автоматизирует вспомогательные бизнес-процессы в компании;
- от этих двух СУБД не требуется экстремальной производительности, и они не являются business-critical (допустимое время простоя измеряется парой часов).

Пришло время менять оборудование - серверы морально и физически устарели. Возникла идея разместить эти две СУБД на одном сервере с помощью виртуальных машин (производительности обычного 2-х сокетного сервера на последних процессорах Intel для этих задач вполне достаточно).

Только факты:
На сервере установлено 4 жестких диска:
- два SAS диска по 300 Гб (15000 об/м)
- два SATA диска по 2 Тб (7200 об/м)

Оперативная память - 16Гб.
Два сетевых интерфейса 1Гб/сек.

Каждая пара дисков была объединена в зеркало, таким образом имеется 300 Гб пространства на быстрых дисках и 2 Тб - на медленных.

Вообщем обычный и недорогой 2-х сокетный сервер начального уровня.


На первом этапе было спланирована структура виртуальных машин (каждая ВМ состоит из 4-х дисков):

Образ диска ВМ с операционной системой (файл system.img);
Образ диска ВМ с выполняемыми файлами (файл orahome.img);
Образ диска ВМ с файлами данных СУБД (размещен напрямую на физическом разделе быстрого жесткого диска);
Образ диска ВМ с файлами flash recovery area и архивными логами (размещен напрямую на физическом разделе медленного жесткого диска).

На сервер был установлен Oracle VM 2.2.1.

Быстрый жесткий диск был разбит на разделы (partitions) следующим образом:
1-ый раздел: 20Гб - для операционной системы Oracle VM (отформатирован);
2-ый раздел: 70Гб - (НЕ форматирован);
3-ый раздел: 70Гб - (НЕ форматирован);
4-ый раздел: 70Гб - (НЕ форматирован);
5-ый раздел: 70Гб - (НЕ форматирован).

Что касается медленного жесткого диска, то он был разбит вот так:
1-ый раздел: 750Гб - для хранения файлов образов ВМ (отформатирован);
2-ый раздел: 250Гб - (НЕ форматирован);
3-ый раздел: 250Гб - (НЕ форматирован);
4-ый раздел: 250Гб - (НЕ форматирован);
5-ый раздел: 250Гб - (НЕ форматирован);
6-ый раздел: 250Гб - (НЕ форматирован).


Думаю идея вам понятна: данные, к которым не требуется быстрого доступа, размещаются на дешевых и медленных SATA-дисках, данные к которым нужен быстрый доступ (файлы данных СУБД) - на дорогих и быстрых SAS-дисках. При этом, для увеличения скорости ввода-вывода в вмртуальном окружении, гостевая машина работает с данными необходимыми СУБД напрямую, - виртуальный диск напрямую размещен на физическом разделе быстрого жесткого диска).

Вот строки из конфигурационного файла гостевой машины:

disk = [
'file:' + root_dir + '/system.img,hda,w',
'file:' + root_dir + '/orahome.img,hdb,w',
'phy:/dev/sda5,hdc,w!',
'phy:/dev/sdb5,hdd,w!'
]

В свою очередь, внутри виртуальной машины, каждый диск, используемый напрямую, включен в ASM-группу. На каждой виртуальной машине создано две ASM-группы:
- ORADATA (монтирует раздел с быстрого диска);
- ORAFRA (монтирует раздел с медленного диска).

Использование ASM позволяет нам еще больше увеличить производительность ввода-вывода, поскольку устраняется уровень файловой системы.

С какой целью была сделана такая странная разбика дисков на разделы?

Если по ходу эксплуатации понадобится увеличение дискового пространства для файлов СУБД, то будет производится простое добавление свободного раздела в виртуальную машину с последующим добавленим нового виртуального диска в соотвествующую ASM-группу (oradata или orafra). Более того, если позволит мощность сервера, то можно легко запустить третью виртуальную машину дав ей свободные разделы. В результате, появляется гибкость в управлении дисками для виртуальных машин.

Рис. 1 Схема отображения физических дисков в виртуальные


После определения стратегии перехода в виртуализированное окружение, были созданы эталонные виртуальные машины. На первую установлена ОС Linux (OEL 5U5 x86) на вторую MS Windows x64. Установлено необходимое ПО Oracle. Произведен патчинг и настройка всего софта. Полученные "золотые" образы ВМ были после этого немедлено забэкапированы...
Собственно, дальше все как обычно: перенос данных СУБД с старых машин на виртуальные и переключение соответствующих приложений на два новых "сервера".

Рис. 2 Схема запуска виртуальных машин на аппаратном сервере

По признанию самих пользователей, - приложения стали работать быстрее ! :-)
Конечно в этом заслуга новых интеловских процессоров Xeon Nehalem.

Резервные копии ВМ также лежат на втором сервере (используется для тестирования и разработки), чтобы в случае сбоя основного сервера запустить виртуальные машины на резервном.

Что в итоге дала виртуализация:
- консолидация и уменьшение затрат на железо (вместо двух серверов закуплен тольно один);
- необычайная легкость создания тестового и development окружений: простым копированием образа ВМ на другой сервер мгновенно получаем готовое тестовое окружение в точности соотвествующее production-системе (копирование сырых разделов производится командой dd);
- обычные методы резервирования БД (копирование, экспорт-импорт) дополняются возможностью копированием целиком образа жесткого диска с файлами данных;
- бэкапировани ОС и бмнарных файлов теперь производится простым резервированием файлов образов system.img или oracle_home.img
- частичное бэкапирование образа при патчинге (если менялся только бинарный код, то резервировать нужно только виртуальные диски в файлах system.img и oracle_home.img, если менялись только данные - то наоборот: бэкапировать нужно только виртуальные диски с данными);
- если в будущем производительности сервера будет недостаточно для запуска 2-х виртуальных машин, то можно будет практически мгновенно "отвезти" одну гостевую систему на другой сервер;
- можно задавать приоритеты и распределение нагрузки между виртуальными машинами (если одна из них выполняет более приоритетную задачу);
- если в будущем все-таки понадобится обеспечить отказоустойчивость, можно будет ее обеспечить с помошью Live Migration;
- каждую виртуальную машину можно останавливать-запускать по отдельности (по расписанию).

После того, как я поглядел и "потрогал" все это, у меня родились какие-то новые ощущения.
А у вас ?
:-)

11 комментариев:

  1. Анонимный11/10/10 9:04 AM

    Игорь, спасибо, интересная статья.

    ОтветитьУдалить
  2. Анонимный11/10/10 11:37 AM

    На рис1. написано, что диски в RAID0. А в тексте было написано, что собрали зеркала. Кто ошибся? ;-)

    ОтветитьУдалить
  3. >>На рис1. написано, что диски в RAID0. А в тексте было написано, что собрали зеркала. Кто ошибся? ;-)

    Да, конечно это ошибка в рисунке - должно быть RAID1 (зеркало).
    Спасибо за замечание: поправлю в ближайшее время ...

    ОтветитьУдалить
  4. >> а где здесь LVM?
    Вы имеете в виду LVM для гостевой системы ? В нем нет смысла - здесь его роль играет ASM ...

    ОтветитьУдалить
  5. >> а где здесь LVM?
    а LVM для физической машины не потребовался ввиду наличия умного контролера, который и обеспечил 'зеркало'

    ОтветитьУдалить
  6. Дмитрий, у вас умный RAID контроллер был обнаружен в ходе инсталляции Oracle VM или драйвера нужно было подгружать? Ставлю Oracle VM 3.0.3, он не видит аппаратного RAID. А для софтверного утилиты mdadm не поставились. Видимо нужно доустанавливать.

    ОтветитьУдалить
  7. Oracle VM почти никогда не может обнаружить умное железо. Приходится все ставить потом -(

    ОтветитьУдалить
  8. А теперь о ложке дегтя, которая была добавлена в Oracle VM 3.0.3.
    Из документации и личного опыта:
    1. OVS ставится на отдельный диск, желательно наименьшего размера, т.к. все оставшееся на нем место использовать не получится.
    2. Repository для хранения образов VM, импортированных ISO и templates создается на FC, iSCSI томах либо на отдельном физическом локальном диске. В последнем случае HA-конфигурация работать не будет. Партишининг этого диска или LVM использовать не получается.
    3. Оставшиеся локальные физические диски можно отдать VM как shared и на них уже ставить RAC.
    4. Утилит CLI для 3 релиза пока нет, но обещают. Пока все только через WebGUI.

    К сожалению, OVM 2.2, где подобных ограничений нет, не ставится на мое новое железо. Linux 5.3 видимо что то не поддерживает, не грузится.

    Много полезной инфы есть на форуме, посвященному Oracle VM Virtualization - forums.oracle.com. Если что не получается - сразу туда ))

    ОтветитьУдалить
  9. Анонимный26/10/12 6:01 PM

    Дмитрий, здравствуйте.
    Меня зовут Журавлев Юрий. Я планирую использовать виртуализацию для продуктивных оналайновых банковских сервисов с базой данных Oracle, работающих в режиме 24x7 и выбираю из 2 решений Solaris Containers (Zones) и Oracle VM for x86 Servers. Опыт использования Solaris Zones довольно богатый, а вот с Oracle VM for x86 на практике не сталкивался и побаиваюсь. Что-нибудь посоветуете? Что в моем случае лучше выбрать?

    ОтветитьУдалить
  10. Пост написал Игорь Мельников, но я попробую ответить
    Если стоит выбор использовать x86 или Sparc, конечно в банке лучше использовать Sparc. Если выбор в сторону x86 уже сделан, то я бы смотрел в сторону Oracle VM - эту технологию развивают сейчас и активно поддерживают. Возможности пока скромные, но работает весьма надежно. К сожалению сообщество решило не поддерживать больше Xen и перейти на KVM (если я правильно понял), но усилий Oracle впослне хватает на мой взгляд

    ОтветитьУдалить