4

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

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

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

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

Я попытался воссоздать пул с /dev/disk/by-id а также с устройствами standard /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> и все данные есть.

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

3 ответа3

3

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

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

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

1

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

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

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

  1. Сначала перечислите свой набор данных, который вы хотите: zfs list берет набор данных, который вы хотите, например, storagepool/backup
  2. Размонтируйте ваш 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) - это список параметров (по умолчанию), которые mount должен использовать при монтировании файловой системы.
  • Пятое поле (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 .

0

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

options zfs zfs_autoimport_disable=0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .