Пул ZFS исчезает после перезагрузки в Debian 8

Я начинаю работать с ZFS, и у меня есть основы, но у меня проблема с поддержанием его работы.

Пулы созданы, монтируются, я могу сохранять данные и видеть активность на диске... все выглядит хорошо. Однако после перезагрузки zpool list сообщает "нет доступных пулов".

Я нашел несколько статей по этому поводу в CentOS, в которых говорится о том, что сценарий запуска для zfs является исправлением, но до сих пор я не нашел ни одного в Debian.

Я использую бэкпорт Debian zfs-dkms пакет, в состав которого входит зависимость libzfs2linux, libzpool2linux, bfs-zed, а также zfsutils-linux, Я тоже бегу в SysV init режим вместо systemd,

Я пытался воссоздать бассейн с /dev/disk/by-id а также стандарты /dev/sdx устройства; Я пробовал редактировать /etc/default/zfs и настройки (не все сразу):

ZFS_MOUNT='yes'
ZPOOL_IMPORT_ALL_VISIBLE='yes'
ZPOOL_IMPORT_PATH="/dev/disk/by-vdev:/dev/disk/by-id"
ZPOOL_IMPORT_PATH="/dev"
ZFS_INITRD_POST_MODPROBE_SLEEP='5'

Я вижу имена конфигурации моего пула в /etc/zfs/zpool.cache; Я могу вручную все заново импортировать с zpool import <pool-name> и все данные там.

Это проблема синхронизации при загрузке? Мне не хватает возможных идей, и любые отзывы будут оценены.

4 ответа

Решение

Вчера вечером я наткнулся на список рассылки, который разрешает эту тайну. Это указывает zfs_autoimport_disable теперь компилируется как установлено в 1/true по умолчанию! Так что не имеет значения, что настроено в /etc/default/zfsпри загрузке модуля zfs пулы никогда не будут импортированы.

Так что решение для меня было добавить /etc/modprobe.d/ файл конфигурации (назовите его как хотите) и определите options zfs zfs_autoimport_disable=0, Теперь пулы импортируются, и файловые системы zfs можно монтировать либо с помощью zfs, либо в устаревшем режиме.

Я не понимаю это решение, но сейчас все работает, как ожидалось...

Сначала сделайте резервную копию /etc/default/zfs а затем удалите его.

Я бы порекомендовал пойти на legacy подход. Это удалит функцию автомонтирования zfs и положится на /etc/fstab для монтажа информации. Я также рекомендую использовать /dev/disk/by-id всегда как наименее болезненный сетоп.

Поскольку я не знаю ваших настроек (пул / наборы данных), я приведу пример:

  1. Сначала перечислите свой набор данных, который вы хотите: zfs listвзять набор данных, который вы хотите, например, storagepool/backup
  2. Umount your storagepool/backup ZFS если установлен. (Вы можете проверить через mount | grep zfs или же zfs mount)
  3. Перечислите ваши точки монтирования с zfs get mountpoint:
NAME                    PROPERTY    VALUE                   SOURCE
storagepool/backup      mountpoint  /storagepool/backup     default
  1. Измените точку монтирования zfs set mountpoint=legacy storagepool/backup

  2. Теперь вы должны редактировать /etc/fstab с помощью sudo или же root Введите вторую строку (первая строка предназначена для объяснения деталей)

    <device alias dataset>   <mountpoint>   <filesystem type>  <options> <dump> <fsckorder>
    storagepool/backup       /mnt/backup     zfs               defaults   0      0

Подробное объяснение:

  • Первое поле (пул хранения / резервная копия) обычно физическое устройство / удаленная файловая система, которая должна быть описана, в вашем пуле / наборе данных (ПРИМЕЧАНИЕ: для набора данных zfs нет обратной косой черты ('/')!! (вызвало у меня много проблем))
  • Второе поле (/mnt/backup) указывает точку монтирования, где
    файловая система будет смонтирована.
  • Третье поле (zfs) - это тип файловой системы на устройстве из
    первое поле.
  • Четвертое поле (noauto,suid,ro,user) представляет собой (по умолчанию) список параметров, которые монтирование следует использовать при монтировании файловой системы.
  • Пятое поле (0), чтобы решить, следует ли резервировать файловую систему. Если ноль, то dump будет игнорировать эту файловую систему.
  • Шестое поле (0) используется fsck (утилитой проверки файловой системы), чтобы определить порядок, в котором следует проверять файловые системы.

опция поумолчанию означает: rw, suid, dev, exec, auto, nouser, and async Если вы используете SSD, что маловероятно, я рекомендую использовать noatime после defaults вариант.

Теперь при перезагрузке файловая система zfs должна быть смонтирована в соответствии с /etc/fstab файл.

Важное примечание: если вы хотите смонтировать наследие zfs, вы должны использовать mount -t zfs <dataset> <mountpoint> вместо zfs mount,

@Peter-B Ваше решение решило мою проблему, так как zpool не удалось импортировать при перезагрузке. Большое спасибо. Небольшое пояснение для тех, кто не знаком с синтаксисом modprobe conf: опция должна быть в одной строке, т.е.

options zfs zfs_autoimport_disable=0

У меня была та же проблема, но, кроме того, я использовал шифрование с паролями, хранящимися в ключе.zfs mount -l -aрешил мою проблему. Более подробное описание можно найти здесь https://github.com/openzfs/zfs/issues/8750 .

Другие вопросы по тегам