FreeBSD virtual environment management and repository

2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !

Внимание! Данные страницы описывают CBSD версии 13.0.x. Если вы используете более раннюю версию, рекомендуется сначала обновиться.

Обратите внимание! Данные команды поддерживают маску (wildcard) в качестве jname, например: jname='*', jname='ja*l*'

Запуск и останов клетки

Команда jstart, jrestart, jorder

			% cbsd jstart jname=jail1
			% cbsd jstart jail1 jail2 ... jailX

			% cbsd jstop jname=jail1
			% cbsd jstop jail1 jail2 ... jailX

			% cbsd jrestart jail1
			% cbsd jorder
		
Описание:

Запуск клеток происходит при запуске cbsd/сервера автоматически, если параметр astart (auto-start) соответствующего jail установлен в 1. Изменить этот параметр можно через cbsd jconfig или cbsd jset. При остановке сервера или сервиса cbsdd, автоматически останаваливаются все запущенные клетки. Запуск jail вручную производится командой:

			% cbsd jstart jname=jail1
		

либо

			% cbsd jstart jail1
		

либо

			% cbsd jstart jail1 jail2 jail3 ..
		

(для запуска нескольких клеток одной командой)

Если настройках CBSD ( изменить это поведение можно в cbsd initenv-tui ) параметр parallel=0, то в случае запуска нескольких клеток, запуск/останов будет проходить последовательно. Это не всегда удобно и даже может быть опасно, поскольку любая ошибка внутри запускаемой клетки в rc-скриптах, которая приводит к паузе, способна блокировать запуск/останов следующих клеток. В том случае, если parallel имеет ненулевое значение, каждая следующая клетка будет запускаться через N секунд после запуска предыдущей, где N — значение параметра parallel. По истечению этого таймаута, не зависимо от того, успела ли предыдущая клетка запустится полностью, будет стартовать следуюзая клетка.

Для останова клеток используется команда jstop, с аналогичным синтаксисом и поведением:

			% cbsd jstop jname=jail1
		

либо

			% cbsd jstop jail1
		

либо

			% cbsd jstop jail1 jail2 jail3 ..
		

(для останова нескольких клеток одной командой)

Если аргумент у команды jstart/jstop/jrestart отсутствует, будет выведет соответствующий список всех остановленных или запущенных клеток для интерактивного выбора

Когда jail запускается, он создает лок файл, признак того, что jail рабочий в виде файла ${jailsysdir}/${jname}/locked в котором записывается имя ноды. Этот признак используется в случае, когда данный jail презентован нескольким нодам, данные клетки находятся на DFS ( NFS, glusterfs и тд) и любая нода в состоянии его запустить. Данный лок гарантирует, что при наличие той же клетки на второй ноде, он запущен не будет.

При большом количестве клеток (особенно баз данных, с такими сервисами как MySQL, redis, cassandra и тд), следует иметь ввиду, что низкое значение parallel (например, меньше 5 секунд) может породить очень большую дисковую I/O нагрузку, что в сумме может увеличить время запуска всех клеток, чем если бы они запускались последовательно или с более высоким таймаутом. Дополнительно, когда через shutdown команду гасится сервер с большим количеством клеток/сервисов, следует принять во внимание низкий таймаут что по-умолчанию на выполнение rc.shutdown последовательности. В связи с этим, процесс init может прервать выполнение rc-скриптов по этому таймауту, что приведет к некорректному останову клеток. В случае баз данных это может приводить к несохранению или повреждению данных. Чтобы этого избежать, /etc/rc.conf мастер-системы следует регулировать параметр rcshutdown_timeout до более приемлемого значения (по-умолчанию: 90 секунд) При отсутствии rcshutdown_timeout в системном /etc/rc.conf, cbsd initenv выставит этот параметр на свое усмотрение автоматически.

Также, следует иметь ввиду, что при использовании zfs features ( регулируется через cbsd inienv-tui только на файловой системе ZFS ) неактивная клетка может быть размонтирована. Те, каталог $workdir/jails-data/jail1-data будет пуст. Если в таком случае требуются данные клетки без ее запуска, по команде zfs list можно посмотреть имя соостветствующей файловой системы и выполнить zfs mount fs.

Написание скриптов, отрабатывающих при запуске и останове клеток

Подробнее читайте в Конфигурации клетки

Очередность запуска клеток

В CBSD вы можете определить очередность запуска клеток. Подробнее читайте в Очередность запуска jail