Freebsd

從整個磁碟 ZFS 池引導 FreeBSD?

  • September 29, 2015

我有一個 FreeBSD 文件伺服器,它配置了一個從整個磁碟設備創建的 ZFS 池。也就是說,池是這樣創建的:

zpool create pool0 raidz ada0 ada1 ada2

這意味著磁碟有 ZFS 磁碟標籤,而不是 FreeBSD 磁碟標籤。這是在 ZFS 中使用磁碟的推薦方法:

ZFS 可以使用單個片或分區,但推薦的操作模式是使用整個磁碟。[來自zpool(1M)]

像這樣格式化磁碟可以最大限度地提高文件系統在各種 ZFS 實現之間的可移植性。不幸的是,這意味著沒有地方可以放置freebsd-boot包含 FreeBSD 載入程序的分區……或者至少,我認為這就是它的意思,但我正在尋找確認。

系統目前從包含嵌入式載入程序(以及/boot目錄,儘管這可以在 ZFS 中很好地存在)的 CF 卡引導。這工作得很好,但我很好奇——有沒有辦法將嵌入式載入程序安裝到 ZFS 標記的磁碟上?

編輯:我一直在嘗試自己回答這個問題。我想也許我可以非破壞性地將 GPT 標籤應用到 ZFS 磁碟,然後嘗試嵌入引導程式碼——但是雖然 GPT 標籤不會導致 ZFS 出現問題,但 ZFS 似乎以某種方式超越了標籤。所以這裡有一個不同的問題:OpenSolaris 支持 GPT 磁碟標籤嗎?這裡的最終目標是擁有一個可以在 FreeBSD 和 OpenSolaris 下工作的磁碟池,同時能夠從它引導到 FreeBSD。

好吧,看起來答案是“你不能那樣做”。

此答案的其餘部分適用於碰巧遇到此條目並對它的設置方式感到好奇的任何人:

我的引導程式碼在 CF 卡上,其他所有內容(也就是 /boot目錄)都在 ZFS 上。CF卡分區如下:

# gpart show ad0
=>     34  7847213  ad0  GPT  (3.7G)
      34      128    1  freebsd-boot  (64K)
     162  7847085       - free -  (3.7G)

我安裝了這樣的引導程式碼:

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad0

bootfs並在我的 ZFS 池上設置適當的屬性:

zpool set bootfs=pool0/sys/freebsd pool0

我的 FreeBSD 根文件系統在哪裡pool0/sys/freebsd(除其他外,還包含/boot目錄)。

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