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

Обновление с zfs-0.6.2-1.el6.x86_64 до zfs-0.6.3-1.el6.x86_64 сделало zpool нечитаемым

После запуска # yum update zfs и перезапускаю мой CentOS 6 ZFS on Linux система больше не может видеть свои zpools или взаимодействовать с ними.

# zpool status
no pools available
# zpool import
zpool: ../../lib/libzfs/libzfs_import.c:356: Assertion `nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_POOL_GUID, &theguid) == 0' failed.
Aborted
# dmesg | grep -i spl 
SPL: Loaded module v0.6.2-1 
SPL: using hostid 0x43a4c8a0

Это канареечная система, поэтому я не беспокоюсь о ее содержимом, но у меня есть другие машины, которые я в конечном итоге хотел бы безопасно обновить. Что я сделал не так, и, что более важно, как я могу сделать это правильно для важных систем?

Это обсуждалось на Список рассылки ZFS.

ABI ядра изменился между 0.6.2 и 0.6.3 таким образом, что пользовательские инструменты 0.6.3 не могут взаимодействовать с модулями ядра 0.6.2, что является конфигурацией после обновления до 0.6.3. Согласно многочисленным сообщениям в этом списке, правильный подход - просто перезагрузить компьютер.

Это описано в отчете об ошибке ZFS: https://github.com/zfsonlinux/zfs/issues/2400#issuecomment-46118193

Я использую ZFS только для разделов данных, поэтому я удалил пакеты, избавился от ссылок на слабые модули и переустановил ZFS.

# rpm -e `rpm -qa | egrep '(spl|zfs)'`
# cd /lib/modules/2.6.32-431.17.1.el6.x86_64/weak-updates/
# rm -fr spl* z*
# yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release$(rpm -E %dist).noarch.rpm
# yum install zfs

редактировать: Перезагрузить все равно пришлось.

Редактировать:

Оба представленных обходных пути привели к некоторым проблемам с установкой ZFS. При загрузке модуля возникают проблемы из-за отсутствия критически важного параметра (zfs: Unknown parameterzfs_vdev_max_pending ''). Я считаю этот выпуск небезопасным для общего выпуска или слепых обновлений существующих систем.

Похоже на ... ошибку. По факту, это ошибка. Пользовательская среда ZFS обновлена, но модули ядра не обновляются DKMS. Это утверждение вызвано несоответствием версий.

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

$ find /lib/modules/$(uname -r)/extra -name "splat.ko" -or -name "zcommon.ko" -or -name "zpios.ko" -or -name "spl.ko" -or -name "zavl.ko" -or -name "zfs.ko" -or -name "znvpair.ko" -or -name "zunicode.ko" | xargs rm -f
$ find /lib/modules/$(uname -r)/weak-updates -name "splat.ko" -or -name "zcommon.ko" -or -name "zpios.ko" -or -name "spl.ko" -or -name "zavl.ko" -or -name "zfs.ko" -or -name "znvpair.ko" -or -name "zunicode.ko" | xargs rm -f
$ yum reinstall zfs-release
$ yum reinstall $(rpm -qa | egrep "zfs|spl")

Если вы когда-нибудь окажетесь на этой странице и начнете Debian, вам нужно только сделать следующее, чтобы исправить проблему:

# apt-get update
# apt-get dist-upgrade
# reboot

Проблема возникла из-за простого update не заменяет старые файлы библиотеки новыми. Вот почему dist-upgrade нужно. Из apt-get справочная страница:

dist-upgrade помимо выполнения функции обновления, также интеллектуально обрабатывает изменение зависимостей с новыми версиями пакетов; apt-get имеет «умную» систему разрешения конфликтов, и при необходимости он пытается обновить наиболее важные пакеты за счет менее важных. Поэтому команда dist-upgrade может удалить некоторые пакеты.

Источник: http://bernaerts.dyndns.org/linux/75-debian/312-debian-wheezy-zfsonlinux-zpool-lost