Как установить Debian и восстановить пул ZFS, содержащий /var, /usr и /home?

Благодаря @Ignacio Vazquez -Abrams и @Jeff Schaller (и другим комментаторам ниже )я понял, что переменная окружения $DISPLAY мне нужна. Если вы находитесь на сервере отображения, значение, хранящееся в $DISPLAY , будет равно 0 , будет возвращено (как что-то ). Следовательно, следующий код (должен? )работает--

if [[ -n $DISPLAY ]];
then
    PROMPT = (etc)
else 
    PROMPT = (etc2)
fi

Всем спасибо.

3
16.06.2020, 14:13
1 ответ

Прежде чем вы начнете, я бы посоветовал вам выполнить аналогичные шаги в альтернативной среде. У меня есть в основном автоматизированная бродячая установка , которая поддерживает экземпляр Debian с zfsonlinux и несколькими дисками. Он немного устарел, но без изменений он должен быстро дать вам среду для работы. Не стесняйтесь обновить его до последней версии Debian, если вы чувствуете необходимость, и поднимите PR.

Чтобы ответить на ваши индивидуальные вопросы:

  1. Нет проблем с загрузкой с RAID1 при использовании grub. Grub прекрасно понимает RAID1 и автоматически -обнаружит его. Сценарий загрузки dest/50setup -в моем репозитории демонстрирует конкретные команды, обеспечивающие надежную работу.

  2. Я бы не рекомендовал переустанавливать -/usrи /varиз старой системы, так как это может привести к поломке. ZFSonLinux автоматически монтирует файловые системы при импорте пула,поэтому вам нужно будет добавить пару шагов, чтобы отключить это перед первой загрузкой вашей системы. Это будет выглядеть примерно так:

    zfs set canmount=off tank/usr
    zfs set canmount=off tank/var
    

    В качестве альтернативы вы можете изменить точку монтирования, чтобы она оставалась для справки:

    zfs set mountpoint=/mnt/old-usr tank/usr
    zfs set mountpoint=/mnt/old-usr tank/var
    

    Если вы действительно хотите заменить монтирование ZFS /usrна новую систему, вы можете сделать это, как вы предлагаете, но вы должны убедиться, что ZFS включена при загрузке через initramfs. Бродячий пример предоставляет root(/)в ZFS, поэтому у вас должны быть все необходимые примеры.

    Что касается /home, установка этого поверх только что созданной домашней системы не должна нарушать работу, но изначально это может работать не так, как вы ожидаете, поскольку пользователи системы и старая файловая система не будут согласны друг с другом. (при условии, что вы не используете внешнюю систему управления пользователями, такую ​​как LDAP ). Здесь у вас есть несколько вариантов:

    1. Сохраните старые системные файлы /etc/passwdи /etc/groupsв качестве эталона, а затем при загрузке новой системы вам потребуется провести согласование вручную.
    2. Измените точку монтирования старого /homeаналогично монтированию /usrили /var, а затем выполните согласование вручную.

    Путь /optне должен создавать проблем, так как он не используется в обычной системе Debian, поэтому его можно оставить для автоматического -монтирования, как и раньше.

  3. Подход с live CD является почти само собой разумеющимся для такой -инсталляции. Например, в папке bootstrap/моего репозитория папка host/относится к живой среде, а dest/относится к недавно установленной системе.

    Чтобы файловые системы были смонтированы в новой системе, вам просто нужно убедиться, что zfsonlinux установлен и работает в новой системе. Обычно это делается автоматически при установке пакета zfs-initramfs.Вы можете дважды проверить, доступен ли модуль zfsв /boot/initrd.img*, используя такую ​​команду, как:

    gunzip /boot/initrd.img-4.19.0-8-amd64 | grep 'usr/lib/libzfs.so'
    

В целом получение некоторого опыта в фиктивной среде значительно повысит ваши шансы на успех в реальной среде.

3
18.03.2021, 23:27

Теги

Похожие вопросы