在 Gentoo 上,ZFS 在 0.6.5 更新後停止工作
我剛剛更新了我的 Gentoo 系統,更新了我的世界,包括 ZFS。除了核心之外的一切。我想我會先重新啟動,然後建構一個新核心。目前,它執行在核心3.17.8-gentoo-r1上。
ZFS 支持我的核心。此外,在過去,我已經能夠從 ZFS 0.6.2 更新到 0.6.3。今天,我從所說的0.6.3到0.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 modules
andmake modules_install
。我需要重建我的核心和 initramfs 嗎?第二個很煩人,因為 genkernel 有一個錯誤。但這是可以完成的。我目前正在使用 Funtoo 的 ZFS 救援 CD 進入系統(安裝了 ZFS)。僅供參考,同樣的錯誤發生在 chrooted 環境中。“主機”環境對卷沒有任何問題。
我會繼續尋找答案。但是,我確實希望此時提出這個問題,因為您可以減少我的搜尋時間。ZFS 更新的確切過程/順序並沒有很好地記錄。
PS 如果這很重要,它在 SystemD 上執行。我不相信它會。
嗯,這確實是我不期待的部分。更新了所有模組後,只有一個地方沒有更新。我一更新 initrd 文件,她就啟動得很好。
所以這個過程是:
- (可選)快照根文件系統。
- 出現 ZFS 更新。
- 如果您使用 initramfs,請更新/重建它以獲取新模組。
- 重新載入核心模組。如果您的 root-fs 是 ZFS,則意味著您需要重新啟動。如果不是,重新啟動仍然是最簡單的。
現在,如果您還需要更新核心,我建議您在更新 ZFS 後進行。這將意味著您將某些事情做兩次,但對我來說,這比想知道它是否是一個新選擇要好。
更新核心後,在生成核心映像之後,但在生成 initrd 文件之前,執行一個
emerge -va @module-rebuild
,它會為新核心創建模組。將隱藏在您的 initrd 文件中的模組。就是這樣了。我只是希望那裡有文件…
在此過程中,我還發現 Genkernel-Next 在壓縮模組時不喜歡它,因此我不得不停用該功能。並且使用 LZ4 壓縮核心工作正常,但只要我對 InitRD 執行相同操作,她就會驚慌失措。
因此,Genkernel 創建了 12 個不同的 InitRD 文件,我必須手動打開這些文件才能更改一行,否則它將無法工作。但它現在有效。在 4.1.15 上執行。並且這些 ZFS 性能提升是顯而易見的。在刪除所有舊的之前,我會讓它執行一段時間。
現在,如果有人能告訴我是否可以升級池功能而不會無法啟動,我將不勝感激。