Настройка в FreeBSD ezjail.
Хочу поделится информацией по простой и не сильно требовательной к ресурсам сервера виртуализации, но и в то же время мощной и гибкой.
Для виртуализации jail я использую как бы обертку ezjail, основано система команд chroot, устанавливает для процессов корневую директорию, создает безопасное окружение.
Процессы работают в ограниченном режиме и не могут получить доступ к файлам, и ресурсам находящимися за пределами своей системы, то-есть из jail перейти на основной (ведомый сервер) не возможно!
# cd /usr/ports/sysutils/ezjail/ && make install clean
Добавим авто загрузку сервису.
# nano /etc/rc.conf ezjail_enable="YES"
Запустим сервис ezjail.
# /usr/local/etc/rc.d/ezjail start
Создадим окружение jail, с которого и будут создаваться клетки (jail).
# /usr/local/bin/ezjail-admin update -i -p
- ключ i означает не компилировать мир специально для джайла, а взять его из основной системы.
- ключ p означает в каждый джаил вложить дерево портов, я отказываюсь от этого, в каждой клетки свои порты и свой софт.
Если вы ни когда не запускали make world в системе, то запустите пересборку мира, либо можно скачать уже готовый образ системы для вашей клетки.
# /usr/local/bin/ezjail-admin install
перечислю ключи.
- m Установит систему с манами.
- M Добавит и установит Man-страницы, без (пере)установки базовой тюрьму. Может использоваться для добавления к Man-страницам
на базы тюрьмы после первоначальной установки. - s Установит исходники мира и ядра.
- S Скачает и установит источников, без (пере)установки базовой тюрьмы.
- p Положит в систему дерево портов.
- P Добавит свежие порты без (пере)установки базовой системы.
- h Что-то с удаленным хостом, я ей не когда не пользовался.
Создаем впс сервер.
# /usr/local/bin/ezjail-admin create -r /usr/old_jails/имя_сервера имя_сервера_на_латинице ип_адрес_сервера
Просмотр списка впс серверов(джайлов).
# jls JID IP Address Hostname Path 1 ип_адрес_сервера имя_сервера /usr/jails/имя_сервера
Что бы войти в джаил есть два способа, по ип и имени:
По номеру JID 1 # jexec 1 csh По имени. # ezjail-admin console название_клетки(джайла)
Создания копии (бэкапа) впски.
# /usr/local/bin/ezjail-admin archive -d Где_будит_лежать_копия -f имя_сервера
Восстановить из архива.
# /usr/local/bin/ezjail-admin create -a /mnt/backup/название_копии.tar.gz -r /usr/куда_восстанавливать/название_сервера название_сервера ип_адрес_сервера
Или с настройкой сети.
/usr/local/bin/ezjail-admin create -a /mnt/backup/название_копии.tar.gz -r /usr/куда_восстанавливать/название_сервера название_сервера 'lo1|127.0.2.1,ix0|192.168.1.4'
Или, если восстанавливаем на этом же сервере на котором и бэкапили, то делаем так:
# /usr/local/bin/ezjail-admin restore -d /usr/куда_восстанавливать/ название_джайла(впски)
Ип адрес добавиться сам, так-как конфигурационный файл у вас должен быть лежать тут /usr/local/etc/ezjail/
Если нам понадобиться распаковать впску не восстанавливая ее.
$ gunzip VPS-201611140130.46.tar.gz
Далее
cpio -i -F VPS-201611140130.46.tar
Удалем впску.
# /usr/local/bin/ezjail-admin delete название_впски
Если мы хотим удалить впску полностью, вместе с конфигурационным файлом то:
# /usr/local/bin/ezjail-admin delete -w название_впски
У меня как то возник косяк с удалением клетки, не корректно изначально удалил и остались остатки от впски, решил удалить, но не тут то было.
Просто так не удалиш, к файлам клетки добавлен специальный ключ.
Снимаем ключ.
# chflags -R 0 /usr/jails/jail/название_впски
И после удаляем уже по простому rm -rf
Можно выставить ограничение для джайлов.
Сперва добавим в ядро поддержку этих ограничений.
# Jail options RACCT options RCTL
После нужно будит пересобрать ядро.
Проверяем правила ограничений, по началу пусто.
# /usr/bin/rctl ; echo $? 0
Много параметров, все не буду перечислять, я обычно использую ограничение по памяти, жесткий диск и процессор не ограничиваю.
Запрещаем джайлу с JID 14 использовать больше 3Гиг памяти.
# rctl -a jail:14:memoryuse:deny=3g
Запрещаем пользователю bagas использовать больше 2гиг памяти сервера.
# rctl -a user:bagas:vmemoryuse:deny=2g
Что бы правила после перезагрузки ведомого сервера не пропали, то поместим их в файл.
# /usr/bin/rctl ; echo $? > /etc/rctl.conf
Если правила созданые не нужны или они мешают, то можно их удалить.
# rctl -r
Вот и весь базовый пример по настройке в freebsd ezjail виртуализации.
FreeBSD bhyve виртуализация.
Pingback: FreeBSD bhyve виртуализация - FRYAHA.RU