Виртуализация FreeBSD

Материал из ISPWiki

Перейти к: навигация, поиск

Виртуализация операционной системы FreeBSD, используемая в программном продукте VDSmanager, построена на базе так называемого "jail". "Jail" входит в стандартную поставку операционной системы и обеспечивает минимальные возможности виртуализации, специалистами нашей компании был сделан ряд улучшений.

Содержание

Файловая система

  • Создан дополнительный уровень дисковых квот, который позволяет выставлять ограничения на размер и количество файлов для каждого виртуального окружения (jail).
  • Обычная система дисковых квот (user group) персональна для каждого виртуального окружения.
  • Шаблонная файловая система позволяет экономить дисковое пространство, а также проводить централизованное обновление программного обеспечения.

Немного о том, как это работает. При создании виртуального сервера воссоздается структура каталогов дискового шаблона, а все файлы создаются путем создания жестких ссылок (hard link). Далее во время работы виртуального сервера при попытке открыть на запись файл или изменить его атрибут жесткая ссылка рвется и файл копируется в диск пользователя, т.е. теперь он становится не шаблонным, а частным файлом виртуального сервера.

Работает виртуализация VDSmanager-FreeBSD только на файловой системе UFS2.

Ограничение на память

Мы постарались максимально приблизить смысл лимитов и поведение виртуального сервера к реальному.

  • Лимит на физическую память ограничивает именно физическую память, т.е. считается реально использованное количество страниц физической памяти. Т.е. библиотека libc, используемая почти всеми запущенными приложениями, посчитается один раз, а не для каждого приложения, как это считают другие системы виртуализации уровня ОС.
  • Лимит на файл подкачки (swap) указывает размер, на который может быть превышен лимит физической памяти, при этом не обязательно будет использован реальный файл подкачки (плохо сознательно замедлять дисковую подсистему). В случае использования реальной памяти вместо swap работа виртуального сервера искусственно замедляется: чем больше превышение, тем больше задержка.
  • Превышение всех лимитов. При превышении лимита физической памяти и swap перестают запускаться новые процессы (fork возвращает ошибку), не работает выделение памяти (malloc вернет ошибку) и убивается самый большой по использованию памяти процесс (kill -9).

Другие ограничения

  • Ограничение на использование CPU
  • Ограничение на количество процессов
  • Ограничение на количество дескрипторов (открытых файлов и сокетов)

Другие улучшения

  • Персональные данные SysV (shm sem msg)

Сетевой стек

В стандартном ядре появился полностью виртуализированный сетевой стек, и нам не пришлось ничего улучшать в данной области. Однако в данный момент эта возможность позиционируется как экспериментальная и не рекомендуется к использованию.

VDSmanager дает выбор использовать эту возможность или нет. По умолчанию используется обычный режим, на виртуальном сервере нет возможности использовать приложения, требующие низкоуровневого доступа к сети. Для включения VNET необходимо добавить в конфиг

Option vnet

и описать используемую сеть, добавив параметры

DefaultNetmask 255.255.xxx.0
DefaultGateway xxx.xxx.xxx.xxx

Мы не рекомендуем вам использовать данный режим работы сети на промышленных серверах.

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

Была ли эта информация полезной? Да | Нет
Личные инструменты