
當我做快照時,我試圖理解 ZFS 的工作方式。當我在機器上使用 zfs list 時,我得到一些安裝點和一些路徑。例如我得到類似的東西:
rpool/ROOT/s10x_u10_wos_17b 5.3gb 58.2gb 5.3gb /
我將 root 作為安裝點/
。
我的第一個想法是存在實際的文件,當我導航到該/rpool
目錄時,沒有 ROOT 目錄。經過一番思考,我發現它/rpool/ROOT
實際上是安裝在遺產上的,所以它一定在其他地方。
有人可以解釋一下當它安裝在舊版上時文件在哪裡,也許為什麼要使用這種舊版模式?
答案1
我不明白遺留安裝點的目的。
ZFS 在池內提供資料集的分層結構。在您的情況下,您有一個名為 的池rpool
,並且至少有以下資料集:
rpool
rpool/ROOT
rpool/ROOT/s10x_u10_wos_17b
這些資料集通常是一個檔案系統(儘管它可以是磁碟區/區塊裝置)。
正如每個資料集都可能是完整/獨立的檔案系統一樣,每個資料集也可以獨立安裝或不安裝。
預設情況下,ZFS 將在父資料集內的邏輯位置安裝子資料集...如果rpool
資料集安裝在/rpool
(即:預設),那麼您會發現rpool/ROOT
資料集安裝在/rpool/ROOT
,等等...
這是由屬性控制的mountpoint
- 運行zfs get -rt filesystem mountpoint
以查看每個資料集的當前值。
- 如果該值是路徑,則匯入池時 ZFS 將自動將資料集掛載到該路徑。預設情況(如上所述)是將檔案系統掛載在父級下。
- 如果值為
none
,則 ZFS 將不會掛載檔案系統,且檔案系統不能使用任一方式安裝mount
。 - 如果值為
legacy
,則 ZFS 將不會掛載檔案系統,但您可以使用mount
和umount
手動管理檔案系統的掛載點。您也可以使用/etc/fstab
它來指導自動安裝。
在您的情況下,rpool/ROOT/s10x_u10_wos_17b
資料集安裝在/
(即:它是您的根檔案系統)。為了實現這一點,您可以設定mountpoint=/
並讓 ZFS 處理事務,或mountpoint=legacy
明確設定並掛載它。
由於這是您的根檔案系統,因此讓 ZFS 為您管理它並不是真正的選擇,您需要明確指定掛載點。
因此,rpool/ROOT/s10x_u10_wos_17b
有mountpoint=legacy
.
答案2
當使用 掛載檔案系統時,通常會使用舊掛載點fstab
。
來自 FreeBSD 手冊頁:
如果需要,也可以使用傳統工具(mount(8)、umount(8)、fstab(5))管理 ZFS 檔案系統。如果檔案系統的掛載點設定為legacy,ZFS 不會嘗試管理檔案系統,並且管理員負責掛載和卸載檔案系統。