Этот пост о процедуре апгрейда nas4free с установленным менеджером клеток (jails) TheBrig и самими клетками с версии на основе FreeBSD 9.3 до версии 10. Если у вас таких сложностей нет, то ниже можно не читать - для вас процедура будет кардинально проще. Как всегда - описываемое я проделал, но не могу поручиться, что у вас всё получится. Так что держим пальцы крестом, но думаем головой ;) Процедура в случае успешного проведения обеспечивает сохранение работоспособности клеток кроме краткого этапа перезагрузки хост системы. Хочу ещё раз напомнить, что есть альтернативная процедура - удалить клетки перед апгрейдом, сохранив по возможности данные из них, и, затем, создать новые после апгрейда хост системы. И это многократно более простой, быстрый и менее трудоемкий путь. Но для тех, кто лёгких путей не ищет - поехали.
I Перед началом
- уточню, в процессе немало скачивается из интернета
- убедитесь, что хост обновлён до сборки 9.3.0.2 - Nayla (revision 1681). Если этого не сделать, то в случае версии древнее 9.3.0.2.1310 апгрейд хоста из вебгуя окажется невозможен, придутся сохранять конфиг, ставить начисто и подтягивать конфиг. Оно вам надо как раз посередине описываемой сложной процедуры? Не лучше ли подготовиться заранее?
- если у вас система совсем древняя - процедуры апгрейда 9.1->9.2 и 9.2-> 9.3 см
в оглавлении, раздел Б, п 20. Стоит ли делать последовательно, или сразу прыгнуть на десятку - не берусь советовать. По частям больше надежды на результат. Одним прыжком - быстрее. Для случая всех рюшечек, включая клетки, на zfs пуле я бы сделал снимок для возможности отката и рискнул в один прыжок. Но за результат не ручаюсь
- удалите лишние клетки - каждую приходится апгрейдить руками отдельно, что трудоёмко.
- если у вас клетки на zfs датасете пуле - не поленитесь сделать с него снимок. Гораздо спокойнее клацать кнопками, если всегда можешь откатиться в исходное.
II Приводим в порядок клетоки на TheBrig 0.8 и nas4free nayla, на базе FreeBSD 9.3
1) Делаем через вебгуй TheBrig. Цель - избавиться от лишней неопределёности, приведя софт в клетках к актуальному уровню.
ВАЖНО. Из-за бага в старом Бриге работает только на английской языковой версии.
Идём в Extensions|TheBrig|FreeBSD Update
Ставим галку на те клетки, что хотим апдейтить (и в последствии использовать).
Жмём кнопку Fetch
ждём пока скачается (несколько минут)
2) Галка на те клетки, что хотим апдейтить
Жмём кнопку Install
Результат - клетки приведены к актуальному состянию FreeBSD 9.3. На момент написания это было 9.3-RELEASE-p19. У вас легко может быть новее.
3) Идём в Бриге в Current Jails и проверяем, что номера клеток начинаются с 1 и идут подряд - 1, 2, 3...
Если это не так, например 1, 3, 4 или 1, 12 или 2, 3, 4 - жмём на гаечный ключ в строке клетки и приводим номера клеток к 1, 2, 3. Если этого не сделать - рискуете напороться на проблемку, которую разработчик alexey123 собирался исправить - но на момент написания этого текста ещё не исправил.
NB Здесь и далее я пишу о клетке в единственном числе. Если у вас их 2-3 - то надо делать в каждой по разделам, нумерованным римскими цифрами и только затем переходить к следующему разделу. Если клеток больше 2-3 - мои вам соболезнования...
4) В командной строке хоста добавляем имя клетки в её rc.conf. Старый Бриг спокойно относился к его отсутствию, а новый привереда :)
Обратите внимание - вместо /mnt/Pool/Ext/Jails/torrentmonitor подставляем путь до корневого раздела вашей клетки
nas4free: ~ # cd /mnt/Pool/Ext/Jails/torrentmonitor/etc/
nas4free: etc # nano rc.conf
Пример для моей
клетки по имени torrentmonitor из полуфабриката - я добавил первую строку. Остальные были, их сейчас не трогать. У вашей клетки имя будет своё, а домен по умолчанию local, если не переопределяли. Переопределяли - ставьте актуальный
hostname="torrentmonitor.local"
sendmail_enable="NONE"
syslogd_flags="-ss"
rpc_bind="NO"
network_interfaces=""
cron_flags="$cron_flags -J 15"
lighttpd_enable="YES"
Повторяем для каждой клетки, переходим к следующему разделу.
III Обновление TheBrig 0.8 до 0.91 alkatraz
1) Останавливаем Бригом все клетки
2) Идём в рабочую папку, у вас может быть своя (!). Качаем новый инсталлер - кодовое имя alcatraz
nas4free: Jails # cd /mnt/Pool/Ext/Jails
nas4free: Jails # fetch
https://raw.githubusercontent.com/fsbruva/thebrig/alcatraz/thebrig_install.shthebrig_install.sh 100% of 7761 B 4452 kBps 00m00s
nas4free: Jails # chmod a+x thebrig_install.sh
3) Обновляем
nas4free: Jails # /bin/sh thebrig_install.sh /mnt/Pool/Ext/Jails 3
Retrieving the unstable branch as a zip file
If you aren't a developer for TheBrig, is a bad idea!
Please re-install according to the documentation...
fetch:
https://github.com/fsbruva/thebrig/archive/alcatraz.zip: size of remote file is not known
alcatraz.zip 142 kB 385 kBps 00m00s
Unpacking the tarball...
Done!
Detecting current configuration...
Upgrading/Re-installing...
Warning: preg_grep() expects parameter 2 to be array, null given in /mnt/Pool/Ext/Jails/conf/ext/thebrig/functions.inc on line 1031
(бла-бла)
Congratulations! TheBrig was upgraded.
Видно, что инсталлер сыплет предупреждениями - но вроде работает...
IV Настройка нового брига и клеток
Самый трудоёмкий пункт если что-то поёдёт не так.
1) устанавливаем галку allow start all jails в разделе Globals
2) Жмём гаечный ключ, настраиваем клетку
Start on boot советую включить
(диалог огромный, разбил на три части)
Добавляем
в in jail allow
allow.mount
allow.mount.devfs
allow.mount.nullfs
allow.mount.procfs
allow.chflags
(и ещё что-то, если это нужно вашей клетке). Особенно важно сейчас allow.chflags - без этого апгрейд не получится. Потом можно убрать. А вот начсчёт всех вариаций mount - не уверен, но у меня так сработало.
Ставим галки
mount/umount jail's fs
Enable mount devfs
Enable mount procfs
(т.е. все, кроме zfs)
Проверяем что сеть на месте, типа 192.168.1.64/24
Жмём Save, затем на новом экране Apply Changes
4) Для примера - вид нормально запущенной клетки - IP на месте
Если в разделе On-line view картинка не такая (а именно ряд столбцов для нашей клетки пусты) - у нас проблемы. Пока не устраним - дальше двигаться нет смысла.
Для контроля в хост системе
nas4free: Jails # jls
JID IP Address Hostname Path
5 192.168.1.64 torrentmonitor.local /mnt/Pool/Ext/Jails/torrentmonitor
При кривом старте клетки строки про неё нет
Здесь заодно стоит проверить, что клетка делает что ей положено, например у неё нормально работает её вебгуй. Для торрентмонитора из tar архива я иду по адресу 192.168.1.64 в браузере
5) Что делать, если проблемы
У меня они возникали
(а) Из-за порядка клеток отличного от 1, 2, 3 в разделе The Brig config на картинке выше. alexey123 хотел поправить, пока можно изменить номера клеток путём редактирования файла конфигурации nas4free (сохранили конфиг, отредактировал в notepad или, лучше, XML редакторе, сохранили как копию, загрузили в NAS)
(б) Из-за того, что инструкции из fstab не были успешно исполнены. Например, тк из-за ошибки в написании не найдены те папки, куда собрались монтировать. Или настройки клетки не позволяют монтировать по nullfs...
Тут придётся разбираться смостоятельно, удалённо помочь трудно (или махнуть рукой на все эти злопастные клетки и поставить вчистую) Если будете пытаться разобраться - пара советов
(в) Если надо остановить криво стартовавшую клетку из командной строки, в хост системе ищем её ID
nas4free: Jails # ls /var/run
.htpasswd dmesg.boot logpriv proftpd.scoreboard.lck utx.active
clean_var jail_torrentmonitor.id mdnsresponder.pid proftpd.sock wpa_supplicant
cron.pid ld-elf.so.hints proftpd samba4
devd.pid lighttpd.pid proftpd.pid sshd.pid
devd.pipe log proftpd.scoreboard syslog.pid
Видим процесс jail_torrentmonitor.id
его надо убить
nas4free: Jails # rm /var/run/jail_torrentmonitor.id
(г) Часто полезно вручную перестартовать Бриг, почитать, что пишет вручную перестартовать Бриг
nas4free: Jails # /etc/rc.d/thebrig onestart
Starting jails: security.jail.enforce_statfs: 2 -> 2
torrentmonitor jail: "torrentmonitor" already exists
Если что-то не так - тут могут быть подсказки. Например, если файловые системы из-за ошибок в fstab не удалось монтировать - и клетка не получает IP
V Апгрейд джейлов до 10.1
1) идём в запущенную клетку
вместо 1 - ID искомой клетки, смотрим в вебгуе или по jls
И даём команду на апгрейд
nas4free: Jails # jexec 1 tcsh
root@torrentmonitor:/ # freebsd-update -v debug -r 10.1-RELEASE upgrade
Немного думает, задаёт вопрос про кастомное ядро - соглашаемся (y)
Думает уже долго - десятки минут
В конце снова пишет что именно будет делать - соглашаемся.
Идёт длииииный список изменений - проматываем его удерживая PgDown
Наконец, предлагают для установки загруженных апгрейдов дать команду. Это будет долго - я полфильма посмотрел со своей виртуалкой. Но быстром железе с хорошим интернетом будет побыстрее.
/usr/sbin/freebsd-update install
что и делаем
root@torrentmonitor:/ # /usr/sbin/freebsd-update install
Installing updates...mtree: line 2: no parent node
Kernel updates have been installed. Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
Не забываем всё повторять для каждой из клеток.
VI Апгрейд NAS
Я
сделал апгрейд через вебгуй на сборку 1731 - крайнюю на момент написания
VII Продолжение апгрейда клеток
Запускаем клетку, заходим в неё, продолжаем апгрейд с новым ядром от десятки
nas4free: ~# jls
JID IP Address Hostname Path
1 192.168.1.64 torrentmonitor.local /mnt/Pool/Ext/Jails/torrentmonitor
nas4free: ~# jexec 1 tcsh
root@torrentmonitor:/ # /usr/sbin/freebsd-update install
Installing updates...
Completing this upgrade requires removing old shared object files.
Please rebuild all installed 3rd party software (e.g., programs
installed from the ports tree) and then run "/usr/sbin/freebsd-update install"
again to finish installing updates.
То есть нам предлагают пересобрать весь софт, установленный из портов и потом закончить апгрейд
У меня такого софта нет, так что заканчиваем сейчас
root@torrentmonitor:/ # /usr/sbin/freebsd-update install
Installing updates...
done.
Ура.
VIII Апгрейдим софт в клетке
Первая команда принудительно обновляет пакетный менеджер с нужными ему библиотеками
Вторая - на всякий случай проверяет, рельно ничего не делает третья - переставляет установленный в клетке софт.
root@torrentmonitor:/ # pkg-static install -f pkg
root@torrentmonitor:/ # pkg update
root@torrentmonitor:/ # pkg upgrade -y
IX Приведём данные в порядок
Идём в Бриге в Maintenance - Tarball Management
Убиваем старые архивы от 9.1, грузим новые для 10.1
PS ...Если хоть кто-то это успешно сделал - отписывайтесь в комментах. На будущее буду знать, стоит ли лезть в такие дебри, нужно ли это кому-то...