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