Ubuntu

在 Ubuntu 啟動時等待 zpool 導入

  • June 5, 2018

我已經使用 ZFS 在 Dell PowerEdge R720xd 上安裝了 Ubuntu 18.04。mirrorZFS配置中有兩個 1TB 引導驅動器。我按照Linux Wiki 上的 ZFS中的說明進行操作。

(注意:我的系統使用的是 LSI LSI00244 (9201-16i) 主機匯流排適配器 (HBA) 而不是板載 RAID 卡,因為 ZFS 和這個 RAID 卡不能相處。)

啟動 Ubuntu 時,系統列舉驅動器大約需要 10 秒鐘(有 14 個驅動器 - 兩個用於作業系統,12 個用於稍後將在其他 zpool 中設置的數據儲存)。但是,引導過程會在驅動器被列舉之前嘗試導入引導池。

BusyBox 錯誤消息在螢幕上閃過,它基本上說:

池無法導入。

在此 BusyBox shell 中手動導入池,然後鍵入exit以繼續引導過程。

如果我在該消息後等待幾秒鐘,我會看到 14 個驅動器被列出。

zpool import rpool在 BusyBox 提示符下鍵入,該提示符有效(用 確認zpool list),然後exit繼續啟動過程。(這導致了我的下一個問題,核心崩潰,但這是一個單獨的問題。)

我嘗試添加rootdelay=15引導選項,但這似乎不起作用,因為它似乎想在 ZFS 池導入後執行該延遲。

在嘗試導入池之前,如何讓引導過程等待設備出現?

我終於在以下位置找到了這個/etc/default/zfs

# Wait for this many seconds in the initrd mountroot?
# This delays startup and should be '0' on most systems. This might help on
# systems which have their ZFS root on a USB disk that takes just a little
# longer to be available
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_INITRD_POST_MODPROBE_SLEEP='0'

以下是如何設置它。

  1. 從 Ubuntu Live CD(或任何其他恢復媒體)啟動
  2. 導入池以/mnt使用zpool import rpool -R /mnt
  3. 綁定必要的文件系統mount --rbind /dev /mnt/dev; mount --rbind /proc /mnt/proc; mount --rbind /sys /mnt/sys
  4. chroot 進入/mntchroot /mnt /bin/bash --login
  5. 編輯/etc/default/zfs以將上面的值從更改015
  6. 執行update-initramfsupdate-grub
  7. 退出 Chroot 環境並重新啟動

引用自:https://serverfault.com/questions/915156