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