Ubuntu
在 Ubuntu 啟動時等待 zpool 導入
我已經使用 ZFS 在 Dell PowerEdge R720xd 上安裝了 Ubuntu 18.04。
mirror
ZFS配置中有兩個 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'
以下是如何設置它。
- 從 Ubuntu Live CD(或任何其他恢復媒體)啟動
- 導入池以
/mnt
使用zpool import rpool -R /mnt
- 綁定必要的文件系統
mount --rbind /dev /mnt/dev; mount --rbind /proc /mnt/proc; mount --rbind /sys /mnt/sys
- chroot 進入
/mnt
:chroot /mnt /bin/bash --login
- 編輯
/etc/default/zfs
以將上面的值從更改0
為15
- 執行
update-initramfs
和update-grub
- 退出 Chroot 環境並重新啟動