Gentoo

在 Gentoo 上,ZFS 在 0.6.5 更新後停止工作

  • January 31, 2016

我剛剛更新了我的 Gentoo 系統,更新了我的世界,包括 ZFS。除了核心之外的一切。我想我會先重新啟動,然後建構一個新核心。目前,它執行在核心3.17.8-gentoo-r1上。

ZFS 支持我的核心。此外,在過去,我已經能夠從 ZFS 0.6.2 更新到 0.6.3。今天,我從所說的0.6.30.6.5.4

由於除 /boot 之外的所有內容都在 ZFS 上,因此我無法再啟動並陷入半衰期。沒有核心恐慌,但文件系統為空。每當我嘗試任何 zfs/zpool 操作時,都會出現錯誤:

# zpool status
internal error: Success
Aborted

儘管這個成功的聲明可能很有趣,但我是飄忽不定的。

按名稱呼叫它會產生不同的錯誤:

# zpool status system
zpool: libzfs_status.c:201: Assertion `nvlist_lookup_uint64(config, ZPOOL_CONFIG_VERSION, &version) == 0' failed.
Aborted

起初我記得 ZFS 會檢查核心版本以針對該核心進行編譯。另外,ZFS 是一個模組。所以我已經做了一個make modulesand make modules_install。我需要重建我的核心和 initramfs 嗎?第二個很煩人,因為 genkernel 有一個錯誤。但這是可以完成的。

我目前正在使用 Funtoo 的 ZFS 救援 CD 進入系統(安裝了 ZFS)。僅供參考,同樣的錯誤發生在 chrooted 環境中。“主機”環境對卷沒有任何問題。

我會繼續尋找答案。但是,我確實希望此時提出這個問題,因為您可以減少我的搜尋時間。ZFS 更新的確切過程/順序並沒有很好地記錄。

PS 如果這很重要,它在 SystemD 上執行。我不相信它會。

嗯,這確實是我不期待的部分。更新了所有模組後,只有一個地方沒有更新。我一更新 initrd 文件,她就啟動得很好。

所以這個過程是:

  1. (可選)快照根文件系統。
  2. 出現 ZFS 更新。
  3. 如果您使用 initramfs,請更新/重建它以獲取新模組。
  4. 重新載入核心模組。如果您的 root-fs 是 ZFS,則意味著您需要重新啟動。如果不是,重新啟動仍然是最簡單的。

現在,如果您還需要更新核心,我建議您在更新 ZFS 後進行。這將意味著您將某些事情做兩次,但對我來說,這比想知道它是否是一個新選擇要好。

更新核心後,在生成核心映像之後,但在生成 initrd 文件之前,執行一個emerge -va @module-rebuild,它會為新核心創建模組。將隱藏在您的 initrd 文件中的模組。

就是這樣了。我只是希望那裡有文件…

在此過程中,我還發現 Genkernel-Next 在壓縮模組時不喜歡它,因此我不得不停用該功能。並且使用 LZ4 壓縮核心工作正常,但只要我對 InitRD 執行相同操作,她就會驚慌失措。

因此,Genkernel 創建了 12 個不同的 InitRD 文件,我必須手動打開這些文件才能更改一行,否則它將無法工作。但它現在有效。在 4.1.15 上執行。並且這些 ZFS 性能提升是顯而易見的。在刪除所有舊的之前,我會讓它執行一段時間。

現在,如果有人能告訴我是否可以升級池功能而不會無法啟動,我將不勝感激。

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