Введение

Виртуализация на уровне ОС

Механизм jail — это реализация виртуализации на уровне ОС FreeBSD, позволяющая системным администраторам разделять компьютерную систему на основе FreeBSD на несколько независимых мини-систем, называемых jail, которые совместно используют одно ядро с минимальными накладными расходами. Он реализован посредством системного вызова jail(2), а также утилиты командной строки jail(8), плюс, в зависимости от системы, ряда других утилит. Эта функциональность была добавлена в FreeBSD в 1999 году Поулом Хеннингом Кампом после некоторого периода использования в производственной среде хостинг-провайдером и впервые выпущена в составе FreeBSD 4.0, благодаря чему поддерживается во многих производных от FreeBSD системах, включая DragonFly BSD, и по сей день.

История

Необходимость в FreeBSD jails возникла из желания небольшого провайдера хостинга с общим доступом (владелец R&D Associates, Inc., Derrick T. Woolworth) установить чёткое разделение между своими собственными сервисами и сервисами клиентов, в основном для обеспечения безопасности и упрощения администрирования (jail(8)). Вместо добавления нового уровня детальных настроек, решение, предложенное Полом Хеннингом Кампом, заключалось в секционировании системы – как её файлов, так и её ресурсов – таким образом, чтобы доступ к соответствующим секциям имели только авторизованные пользователи. Jails впервые появились в FreeBSD версии 4.0, выпущенной 14 марта 2000 года. Большая часть оригинальной функциональности поддерживается в DragonFly, и некоторые новые возможности также были портированы.

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

С его помощью можно создавать среды, каждая из которых имеет свой собственный набор установленных утилит и свою собственную конфигурацию. Механизм jail позволяет программным пакетам рассматривать систему как изолированную, как будто каждый пакет имеет в своем распоряжении отдельную машину. Jails могут также иметь своих собственных, независимых суперпользователей. Однако jail в FreeBSD не обеспечивает полноценной виртуализации; он не позволяет виртуальным машинам использовать версии ядра, отличные от версии ядра базовой системы. Все jails используют одно и то же ядро. Поддержка кластеризации и миграции процессов отсутствует.