Management and Repository for FreeBSD Jails

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

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

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

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

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

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

Запуск клеток происходит при запуске cbsd/сервера автоматически, если параметр astart (auto-start) соответствующего jail установлен в 1. Изменить этот параметр можно через cbsd jconfig. При остановке сервера или сервиса 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 ..
                

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

При большом количестве клеток (особенно баз данных, с такими сервисами как 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 b только на файловой системе ZFS ) неактивная клетка может быть размонтирована. Те, каталог $workdir/jails-data/jail1-data будет пуст. Если в таком случае требуются данные клетки без ее запуска, по команде zfs list можно посмотреть имя соостветствующей файловой системы и выполнить zfs mount fs.

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

В cbsd имеется возможность указать, в какой последовательности будут запускаться клетки. Например, вы можете пожелать, чтобы клетка mysqljail и redisjail стартовали раньше чем wwwjail. Данный функционал реализует cbsd jorder и регулируется в настройке каждой клетки.

//продолжение следует