Centos

CentOS 7:重啟後,zfs 模組不會載入,沒有 /dev/zfs

  • January 12, 2022

959 天后,需要在 CentOS 7 系統上重新啟動,該系統在過去幾年中完美地使用了 ZFS。yum update那段時間我每個月跑一次。

重啟系統顯然無法載入其 ZFS 模組,如下所示

# zpool list
/dev/zfs and /proc/self/mounts are required.
Try running 'udevadm trigger' and 'mount -t proc proc /proc' as root.
# modprobe zfs
modprobe: FATAL: Module zfs not found.
# uname -a
Linux foo 3.10.0-1160.49.1.el7.x86_64 #1 SMP Tue Nov 30 15:51:32 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
# yum install zfs zfs-kmod
Package zfs-0.7.13-1.el7_6.x86_64 already installed and latest version
Package kmod-zfs-0.7.13-1.el7_6.x86_64 already installed and latest version
Nothing to do

/proc已安裝並且udevadm trigger沒有效果。/dev/zfs不存在。為 ZFS 查詢 dmesg(不區分大小寫)為空。手動載入模組說

# modprobe zfs
modprobe: FATAL: Module zfs not found.

我難住了。我怎樣才能讓 ZFS 再次執行?

編輯

一個問題是我的回購/etc/yum.repos.d/zfs.repo仍然是 7.6,而/etc/yum.repos.d/zfs.repo.rpmnew7.9。我保存了舊的 zfs.repo 並將 7.9 的那個複製到zfs.repo. 然後再次按照 kABI 的說明進行操作。現在我得到了這個:

# yum install zfs
Resolving Dependencies
--> Running transaction check
---> Package spl.x86_64 0:0.7.13-1.el7_6 will be obsoleted
--> Processing Dependency: spl = 0.7.13 for package: kmod-spl-0.7.13-1.el7_6.x86_64
---> Package zfs.x86_64 0:0.7.13-1.el7_6 will be updated
--> Processing Dependency: zfs = 0.7.13 for package: kmod-zfs-0.7.13-1.el7_6.x86_64
---> Package zfs.x86_64 0:2.0.7-1.el7 will be obsoleting
--> Processing Dependency: libzpool4 = 2.0.7 for package: zfs-2.0.7-1.el7.x86_64
--> Processing Dependency: libzfs4 = 2.0.7 for package: zfs-2.0.7-1.el7.x86_64
--> Processing Dependency: libuutil3 = 2.0.7 for package: zfs-2.0.7-1.el7.x86_64
--> Processing Dependency: libnvpair3 = 2.0.7 for package: zfs-2.0.7-1.el7.x86_64
--> Processing Dependency: libzpool.so.4()(64bit) for package: zfs-2.0.7-1.el7.x86_64
--> Processing Dependency: libzfs_core.so.3()(64bit) for package: zfs-2.0.7-1.el7.x86_64
--> Processing Dependency: libzfs.so.4()(64bit) for package: zfs-2.0.7-1.el7.x86_64
--> Processing Dependency: libuutil.so.3()(64bit) for package: zfs-2.0.7-1.el7.x86_64
--> Processing Dependency: libnvpair.so.3()(64bit) for package: zfs-2.0.7-1.el7.x86_64
--> Running transaction check
---> Package kmod-zfs.x86_64 0:0.7.13-1.el7_6 will be updated
---> Package kmod-zfs.x86_64 0:2.0.7-1.el7 will be an update
---> Package libnvpair1.x86_64 0:0.7.13-1.el7_6 will be obsoleted
---> Package libnvpair3.x86_64 0:2.0.7-1.el7 will be obsoleting
---> Package libuutil1.x86_64 0:0.7.13-1.el7_6 will be obsoleted
---> Package libuutil3.x86_64 0:2.0.7-1.el7 will be obsoleting
---> Package libzfs2.x86_64 0:0.7.13-1.el7_6 will be obsoleted
---> Package libzfs4.x86_64 0:2.0.7-1.el7 will be obsoleting
---> Package libzpool2.x86_64 0:0.7.13-1.el7_6 will be obsoleted
---> Package libzpool4.x86_64 0:2.0.7-1.el7 will be obsoleting
---> Package spl.x86_64 0:0.7.13-1.el7_6 will be obsoleted
--> Processing Dependency: spl = 0.7.13 for package: kmod-spl-0.7.13-1.el7_6.x86_64
--> Finished Dependency Resolution
Error: Package: kmod-spl-0.7.13-1.el7_6.x86_64 (@zfs-kmod)
          Requires: spl = 0.7.13
          Removing: spl-0.7.13-1.el7_6.x86_64 (@zfs-kmod)
              spl = 0.7.13-1.el7_6
          Obsoleted By: zfs-2.0.7-1.el7.x86_64 (zfs-kmod)
              Not found
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

# yum install --skip-broken zfs
[...]
Packages skipped because of dependency problems:
   kmod-zfs-2.0.7-1.el7.x86_64 from zfs-kmod
   libnvpair3-2.0.7-1.el7.x86_64 from zfs-kmod
   libuutil3-2.0.7-1.el7.x86_64 from zfs-kmod
   libzfs4-2.0.7-1.el7.x86_64 from zfs-kmod
   libzpool4-2.0.7-1.el7.x86_64 from zfs-kmod
   zfs-2.0.7-1.el7.x86_64 from zfs-kmod

我該如何解決依賴問題?

959天不重啟?哇。我假設你沒有使用kexec,這意味著你第一次啟動了新核心。問題是您安裝的 ZFS 模組是為不同的核心建構的,因此您現在無法載入它。

您的選擇:

  • 嘗試使用weak-modules腳本(weak-modules --add-kernel --no-initramfs如果您在 initramfs 中不需要 ZFS)。如果沒有 kABI 更改,它會將模組符號連結到新/lib/module目錄,以使其可用於新核心。(如果這真的是您第一次使用新核心,那麼可能是 kABI 發生了變化。)

  • 如果上述方法不起作用,您可以嘗試重新安裝軟體包。OpenZFS提到這是在 CentOS 次要版本之間升級時的必要步驟。

    1. 您需要先刪除現有的zfs,spl和.kmod-zfs``yum remove zfs spl kmod-zfs
    2. 從OpenZFS安裝 7.9 的最新儲存庫。
yum install https://zfsonlinux.org/epel/zfs-release.el7_9.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux
  1. 從新添加的 repo安裝zfs和安裝。kmod-zfs
  • 您也可以嘗試安裝DKMS模組(將在核心更新後自動重建)而不是您現在使用的 kmod 包。

引用自:https://unix.stackexchange.com/questions/685955