LINUX.ORG.RU

Как отключить датасеты из системного пула?

 ,


0

1

При авторазметке zfs создает разделы в массиве, зачем они мне нужны? Как отключить датасеты из пула, оставив только корень zroot?

Вот что имею ввиду:

Filesystem            Size    Used   Avail Capacity  Mounted on
zroot/ROOT/default     98G    932M     97G     1%    /
devfs                 1,0K    1,0K      0B   100%    /dev
zroot/tmp              97G     96K     97G     0%    /tmp
zroot                  97G     96K     97G     0%    /zroot
zroot/var/crash        97G     96K     97G     0%    /var/crash
zroot/var/mail         97G     96K     97G     0%    /var/mail
zroot/usr/ports        98G    715M     97G     1%    /usr/ports
zroot/usr/home         97G    128K     97G     0%    /usr/home
zroot/var/log          97G    176K     97G     0%    /var/log
zroot/var/tmp          97G     96K     97G     0%    /var/tmp
zroot/usr/src          98G    702M     97G     1%    /usr/src
zroot/var/audit        97G     96K     97G     0%    /var/audit

У меня такое ощущение, что нужно грузиться с livecd и создать пул, затем импортировать его. Это правильно?

★★★★★

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

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

Мне нужно, чтобы всё осталось в корне и не монтировалось в отдельные каталоги.

Clockwork ★★★★★
() автор топика

зачем они мне нужны

Для Boot Environments, чтобы дампы ядра (/var/crash), логи (/var/log), и т.д. были актуальны вне зависимости от текущего BE.

  • идея состоит в том, чтобы не тащить в снэпшот системы то, что не должно меняться при загрузке в другой BE.
dsdqmhsx
()
Последнее исправление: dsdqmhsx (всего исправлений: 1)
Ответ на: комментарий от dsdqmhsx

Если сделан снэпшот всей системы, то создаются снэпшоты и в дочерних каталогах /var, /usr. То есть при откате снимка всей системы в zroot@friday будет достаточно для меня не зависимо от BE?

Clockwork ★★★★★
() автор топика
Ответ на: комментарий от Clockwork

BE это немного больше чем просто снэпшот/откат, это специальная инфраструктура, сильно облегчающая жизнь при апгрейдах и тд. Тут лучше почитать первоисточники.

https://wiki.freebsd.org/BootEnvironments

https://vermaden.files.wordpress.com/2018/11/nluug-zfs-boot-environments-reloaded-2018-11-15.pdf

dsdqmhsx
()

Это правильно?

Отказаться от ZFS Boot Environment чтобы что?

ZFS BE — это очень крутая штука (будешь обновляться между релизами — поймёшь), отказываться от неё просто глупо.

zroot/ROOT/default

Корень BE, именно он клонируется.

zroot

Корень пула. Монтировать его совершенно не обязательно (zfs set mountpoint=none zroot).

zroot/tmp

Если оперативки достаточно, можешь заменить на tmpfs(5):

tmpfs  /tmp  tmpfs  rw,nosuid,size=1G,mode=1777  0  0

zroot/var/crash

zroot/var/mail

zroot/var/log

zroot/var/audit

Про это написали выше.

zroot/var/tmp

Не вздумай использовать в этой дире tmpfs(5), это persistent temp!

zroot/usr/ports

zroot/usr/src

Этих вообще бессмысленно снапшотить. Пусть лежат где лежат.

zroot/usr/home

А пихать $HOME в BE — это какое-то извращение: переключился в другой BE, и хомяки всех пользователей тоже переключил.

mord0d ★★★★★
()
Ответ на: комментарий от Clockwork

ZFS BE это не только (точнее даже не столько) снапшоты, но и клоны.

 % bectl list
BE    Active Mountpoint Space Created
12.2R -      -          3.69G 2020-12-01 19:38
13.0R NR     /          4.04G 2021-04-14 06:11
 % zfs list -rt snapshot,bookmark zroot/ROOT/13.0R | wc -l
     737
 % zfs list -rt snapshot,bookmark zroot/ROOT/12.2R | wc -l
     865

И я могу в любой момент откотиться на 12.2-RELEASE с сохранением всего что нужно сохранить при переключениях (логи, почта, дампы — всё доступно между BE).

mord0d ★★★★★
()
Ответ на: комментарий от dsdqmhsx

Даже не искаропки в Linux нет BE.

Нет поддержки ни со стороны загрузчика, ни со стороны ядра, и утилит для этого тоже нет, разве что костылями.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Этих вообще бессмысленно снапшотить. Пусть лежат где лежат.

То есть они не нужны в zroot?

$HOME я не пихал, это авторазметка. При переключении в другой BE пользователи не нужны?

Clockwork ★★★★★
() автор топика
Ответ на: комментарий от Clockwork

То есть они не нужны в zroot?

Ты не понял концепцию.

У тебя есть zroot/ROOT — это корень BE, там лежат датасеты/клоны — rootfs (/), в твоём случае это пока только zroot/ROOT/default. Всё что в zroot/ROOT управляется bectl(8). Всё что находится в zroot/ROOT/<BE_NAME>/* наследуется (даже если оно не имеет маунтпоинта; то есть удалив, например, отдельный датасет для /var/mail у тебя почта будет привязана к BE, старая будет клонироваться в свежесозданный BE, дальше они каждый живёт своей жизнью и только когда активен соответствующий BE).

Считай каждый BE отдельным разделом диска, который при создании нового копирует содержимое предыдущего и дальше развивается сам.

Исходя из этого в BE должно входить:

  • Базовая система (ядро, юзерспейс, загрузчик);
  • Порты/пакеты, собранные под конкретный юзерспейс (слинкованное с 12.2-RELEASE скорее всего не будет работать в 13.0-RELEASE, то же касается сторонних модулей ядра).

Всё остальное (почта, логи, дампы, исходники, временные и пользовательские файлы) должно быть за пределами BE, потому что оно не привязано к версии ядра/базы (и при обновлении с созданием нового BE будет занимать лишнее пространство).

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Ок, спасибо за информацию. Это сэкономит мне кучу времени. Я раньше не обновлялся, только переустанавливал, но сейчас мне захотелось попробовать. Выглядит как-то вкусно.

Clockwork ★★★★★
() автор топика
Ответ на: комментарий от Clockwork

Я раньше не обновлялся, только переустанавливал, но сейчас мне захотелось попробовать. Выглядит как-то вкусно.

Сценарий такой (условно):

На боевой машине стоит 12.2-RELEASE, нужно обновить до 13.0-RELEASE, при этом нужен минимальный даунтайм.

  1. Создаёшь новый BE (он клонирует существующий);
  2. Джейлишься в него (монтируешь критичные файловые системы в);
  3. Обновляешься на новый релиз;
  4. Переустанавливаешь пакеты;
  5. Анджейлишься;
  6. Переключаешь активный BE (изменения вступят в силу после перезагрузки);
  7. Перезагружаешься;
  8. Если всё в порядке — пользуешься дальше;
  9. Если что-то пошло не так, создаёшь новый BE из предыдущего рабочего и GOTO 2.

Причём ты всегда можешь вернуться на любую установленную (обновлённую из более старой) версию FreeBSD с подпиленным под тебя окружением и конфигами. Ну, до тех пор пока ты не удалишь старый BE.

mord0d ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.