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

Дождитесь импорта zpool при загрузке Ubuntu

Я установил Ubuntu 18.04 на Dell PowerEdge R720xd с помощью ZFS. В ZFS есть два загрузочных диска по 1 ТБ. mirror конфигурация. Я выполнил инструкции в ZFS в Linux Wiki.

(Примечание. Моя система использует адаптер главной шины (HBA) LSI LSI00244 (9201-16i) вместо встроенной карты RAID, поскольку ZFS и эта карта RAID не работают вместе.)

При загрузке Ubuntu требуется около десяти секунд для перечисления дисков системой (имеется 14 дисков - два для ОС и 12 для хранения данных, которые позже будут настроены в других zpools). Однако процесс загрузки пытается импортировать пул загрузки до того, как диски будут перечислены.

На экране мигает сообщение об ошибке BusyBox, которое в основном гласит:

Пул не удалось импортировать.

Вручную импортируйте пул в эту оболочку BusyBox, а затем введите exit чтобы продолжить процесс загрузки.

Если я подожду несколько секунд после этого сообщения, я увижу, что в списке появятся 14 дисков.

Я печатаю zpool import rpool в приглашении BusyBox, которое работает (подтверждено zpool list) а потом exit чтобы продолжить процесс загрузки. (Это приводит к моей следующей проблеме, сбою ядра, но это отдельный вопрос.)

Я пробовал добавить rootdelay=15 к параметрам загрузки, но это, похоже, не работает, так как кажется, что он хочет запустить эту задержку после импорт пула ZFS.

Как я могу заставить процесс загрузки дождаться появления устройств, прежде чем он попытается импортировать пул?

Я наконец нашел это в /etc/default/zfs:

# Wait for this many seconds in the initrd mountroot?
# This delays startup and should be '0' on most systems. This might help on
# systems which have their ZFS root on a USB disk that takes just a little
# longer to be available
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_INITRD_POST_MODPROBE_SLEEP='0'

Вот как это установить.

  1. Загрузитесь с Ubuntu Live CD (или любого другого носителя для восстановления)
  2. Импортировать пул в /mnt с помощью zpool import rpool -R /mnt
  3. Свяжите необходимые файловые системы mount --rbind /dev /mnt/dev; mount --rbind /proc /mnt/proc; mount --rbind /sys /mnt/sys
  4. Chroot в /mnt: chroot /mnt /bin/bash --login
  5. редактировать /etc/default/zfs чтобы изменить значение выше с 0 к 15
  6. Бегать update-initramfs и update-grub
  7. Выйдите из среды Chroot и перезагрузитесь