Назад | Перейти на главную страницу

Как перенести тюрьмы iocage из одного пула ZFS в другой?

Как происходит перемещение iocage и всех его тюрем из одного пула ZFS в другой?

Я пробовал процесс из этого сообщения: https://www.ixsystems.com/community/threads/how-to-move-jails-between-pools.72593/post-502840

т.е. iocage export каждую тюрьму, активируйте новый пул, затем iocage import. Это не удается:

$ iocage start syncthing
No default gateway found for ipv6.
* Starting syncthing
  + Started OK
  + Using devfs_ruleset: 6
  + Configuring VNET FAILED
  jexec: execvp: ifconfig: No such file or directory
  jexec: execvp: ifconfig: No such file or directory

Stopped syncthing due to VNET failure

FreeNAS 11.3

Чтобы переместить iocage из /mnt/OLD/iocage к /mnt/NEW/iocage:

Экспорт тюрем

iocage stop JAILNAME
iocage export JAILNAME

Это создает датированный .zip тюрьмы в /mnt/OLD/iocage/images.

Настроить новый пул

Используйте графический интерфейс FreeNAS jails или iocage activate /mnt/NEW для активации iocage в новом пуле. Убедитесь, что в новой активации есть версии iocage, используемые вашими тюрьмами. Использовать iocage fetch установить их. Смотрите каждую тюрьму fstab чтобы узнать, какой выпуск ожидается.

Импортировать тюрьмы

Скопируйте экспортированные файлы .zip-архивов тюрьмы туда, где iocage будет их искать:

cp /mnt/OLD/iocage/images/* /mnt/NEW/iocage/images

Импортировать:

iocage import JAILNAME

Обратите внимание, что это имя тюрьмы, а не имя файла zip-архива.

Исправить точки монтирования и fstab

Любые точки монтирования в тюрьме, особенно те, которые предоставляет iocage, будут указывать на /mnt/OLD и заставить тюрьму не запускаться из-за ошибки VNET в вопросе. Их нужно исправить вручную.

редактировать /mnt/NEW/iocage/jails/JAILNAME/fstab и заменить экземпляры /mnt/OLD с участием /mnt/NEW по мере необходимости. Для простых тюрем :%s/OLD/NEW/g в vi сделает свое дело.

Например, первые три строки fstab созданный плагином Syncthing выглядит так:

/mnt/OLD/iocage/releases/11.3-RELEASE/root/bin  /mnt/OLD/iocage/jails/syncthing/root/bin    nullfs  ro  0   0 # Added by iocage on 2020-04-17 00:16:34
/mnt/OLD/iocage/releases/11.3-RELEASE/root/boot /mnt/OLD/iocage/jails/syncthing/root/boot   nullfs  ro  0   0 # Added by iocage on 2020-04-17 00:16:35
/mnt/OLD/iocage/releases/11.3-RELEASE/root/lib  /mnt/OLD/iocage/jails/syncthing/root/lib    nullfs  ro  0   0 # Added by iocage on 2020-04-17 00:16:35

Каждый /mnt/OLD необходимо заменить на /mnt/NEW.

Готово

iocage start JAILNAME