IT консалтинг - статьи


Разделение ресурсов


В Virtuozzo поставили себе цель, чтобы виртуальные среды не имели никакой информации о «железной» конфигурации сервера. Все псевдофайлы в каталоге /dev/ остаются, но обращение к ним передается в базовую ОС и только затем на драйвера разделяемых ресурсов. Проблемы могут возникнуть в том случае, если приложению необходим прямой доступ к аппаратуре, однако большинство протестированных приложений не требовало такого доступа, то есть корректно работало в виртуальной среде.

Более сложная ситуация с файловой системой /proc, в которой находится справочная информация о ядре, по процессам и периферии. Здесь соблюдается то же самое правило: информация о системе в целом доступна, а по конкретному оборудованию, такому как шины, память и процессор — нет. В некоторых случаях из псевдофайлов этого каталога приложение может получить информацию об отдельной виртуальной среде, а в некоторых — по серверу в целом. В частности, такое различие может быть важно для оценки загруженности процессора: для некоторых программ достаточно выдавать информацию о виртуальной среде, а в некоторых — общую нагрузку на процессоры. При этом разработчики стремились обеспечить выполнение уже существующих приложений без перекомпиляции.

Внутри виртуального сервера нет прямого доступа к сетевому интерфейсу. Все операции с сетью выполняются с помощью стандартных функций ядра, реализация которых в Virtuozzo существенно изменена. Каждой виртуальной среде выделяется определенная гарантированная полоса пропускания внешнего канала и возможность взаимодействия с другими средами того же сервера в рамках концепции виртуальной сети. Причем при необходимости можно реализовать различные способы IP-нумерации: отдельный IP-адрес на каждую среду, общий IP-адрес с разделением по DNS-имени или трансляция адресов в рамках виртуальной сети. Такая организация работы с сетью необходима для того, чтобы приложение виртуальной среды не могло подглядеть передачу данных по сети другими виртуальными средами, обратившись для этого напрямую к драйверу Ethernet.
Реализованы эти функции с помощью специальной прослойки в ядре, которая дает каждой среде свой отдельный виртуальный сетевой интерфейс API, аналогичный сетевому интерфейсу самой ОС Linux.

Виртуализация дисков построена на основе программы изменения корневого каталога chroot. Каждой виртуальной среде выделяется свой подкаталог, в котором располагаются все данные отдельной среды. При этом администратор выбирает точки монтирования и общую конфигурацию файловой структуры, а приложения внутри виртуальной среды не имеют прямого доступа к дискам, поэтому функции монтирования новых накопителей им не доступны. Операции монтирования может выполнять только администратор Virtuozzo из базовой операционной системы. В случае необходимости отдельной среде можно предоставить доступ к одному из дисков напрямую, однако в стандартной конфигурации Virtuozzo это не предусмотрено.

Разделение ресурсов компьютера — памяти, процессорного времени, сетевого доступа и других — построено по принципу минимально гарантированного уровня. Если сервер не слишком загружен, то виртуальная среда может получить дополнительные ресурсы. Однако для системы хранения действуют другие алгоритмы, основанные на ограничении на объем хранимых данных. Если ресурс разделяемый (как это сделано для совместного использования библиотек), то занимаемая ими оперативная и дисковая память разделяется равномерно между пользователями.


Содержание раздела