Как восстановить Asterisk из снапшота — пошаговая инструкция

Создаём виртуальную машину, добавляем загрузку CD/DVD с ISO: FreeBSD-13.1. Мы ведь помним, что наш Asterisk был именно на FreeBSD 13.1.

Загружаемся. В первом меню выбираем Live CD.

Входим под пользователем root. Вводим:

kbdmap

И выбираем «Russian».
Как восстановить Asterisk из снапшота - пошаговая инструкция
Команда kbdmap используется для настройки и изменения раскладки клавиатуры в консоли.

mkdir /tmp/etc
mount_unionfs /tmp/etc /etc

Эти команды создают временный каталог /tmp/etc и монтируют его поверх /etc с помощью mount_unionfs, чтобы изменения в /etc сохранялись только в памяти и не записывались на диск.

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
passwd
service sshd onestart

Эти команды разрешают вход по SSH для пользователя root, устанавливают пароль для root и запускают службу SSHD вручную.

Затем

ifconfig
dhclient vtnet0

Эти команды выводят информацию о сетевых интерфейсах с помощью ifconfig, а затем запрашивают IP-адрес для интерфейса vtnet0 через DHCP с помощью dhclient. Вместо vtnet0 у Вас может быть другой интерфейс.

sockstat -l4

Команда sockstat -l4 во FreeBSD выводит список всех активных IPv4-сокетов в режиме прослушивания (-l), показывая, какие процессы ожидают входящих соединений на каких портах. Ищем открытый 22 порт, если не нашли, что-то сделали не так. Именно по SSH будет заливаться ZFS-снапшот.

Со сервера с резервной копией Asterisk (aster-backup) делаем ping 192.168.0.3. Адрес 192.168.0.3 был получен по DHCP. У Вас он будет другой.

На LiveCD выполняем команду

gpart show

Команда gpart show во FreeBSD отображает информацию о разметке дисков — показывает, какие диски подключены и как они разбиты на разделы. Ищем имя жесткого диска, у меня da0.

Делаем

bsdinstall zfsboot

Команда bsdinstall zfsboot запускает установку FreeBSD с настройкой загрузочного раздела на основе ZFS.
Как восстановить Asterisk из снапшота - пошаговая инструкция

Как восстановить Asterisk из снапшота - пошаговая инструкция

Как восстановить Asterisk из снапшота - пошаговая инструкция

Как восстановить Asterisk из снапшота - пошаговая инструкция

Любуемся, как настроил bsdinstall структуру ZFS, и уничтожаем пул zroot (что приводит к удалению всех данных на нём).

zpool list
zfs list
zpool destroy zroot

Как восстановить Asterisk из снапшота - пошаговая инструкция
Но полезных данных на нём пока нет, и у Asterisk пул другой — zfspool. Создадим его.

gpart show
zpool create zfspool da0p3

Как восстановить Asterisk из снапшота - пошаговая инструкция
Эти команды сначала выводят информацию о разметке дисков. Ищем диск и раздел, где будет создаваться новый пул, у меня da0p3, а затем создаём ZFS-пул zfspool.

Всё готово, чтобы принять снапшот.

На aster-backup через zfs list -t snapshot ищем последний снапшот.
Как восстановить Asterisk из снапшота - пошаговая инструкция
У меня это rpool/backups/zfspool@zrepl_20250514_042400_000 и вводим команду

zfs send -R rpool/backups/zfspool@zrepl_20250513_045700_000 | ssh root@192.168.0.3 zfs receive -F -v zfspool

Эта команда отправляет ZFS-снимок rpool/backups/zfspool@zrepl_20250513_045700_000 по сети через SSH на удалённый хост со FreeBSD и применяет его там в датасет zfspool с помощью zfs receive.

Дальше пьём чашку кофе, курим, принимаем ванну и т. д. Операция у меня заняла около одного часа.

В LiveCD выполняем команду

zpool set bootfs=zfspool/ROOT/default zfspool

Эта команда устанавливает загрузочную файловую систему (bootfs) для ZFS-пула zfspool, указав, что система должна загружаться с датасета zfspool/ROOT/default.

poweroff

Выключаем систему. Затем из виртуальной машины отмонтируем ISO-образ. Запускаем новый клон Asterisk.

Далее проходим увлекательный квест со вводом пароля, отключением firewall и делаем прочую админскую работу, чтобы реанимировать этот клон до рабочего состояния. Но это уже отдельный мануал.

Восстановление из резервной копии сервера телефонии Asterisk завершено.

Вот так путём маленьких шагов от железа к гипервизору виртуализируем Asterisk без боли (почти) — с танцами и снапшотами.

P. S. Данная инструкция основывалась на видео «How to move FreeBSD to another machine (ZFS)»

How to move FreeBSD to another machine (ZFS)
Кому больше нравится видеоформат, может посмотреть его.