Zfs
ZFS 在更改數據集屬性時發送/接收
摘要:ZFS 發送/接收是否始終接收發送數據集的精確複製 - 包括匹配的數據集屬性 - 或者是否可以接收到具有不同屬性(記錄大小、壓縮等)的新創建的數據集,接收數據(之後校驗和驗證等)然後可以寫入。
例如,如果我收到一個(非增量)數據集,其對象最初是用 a 寫入的
recordsize=128K
,並接收到一個新創建的數據集,zfs receive
但該數據集指定選項-o recordsize=1M
或繼承自目前值為 的父數據集recordsize=1M
,這些對象將在我的新數據集中,記錄大小為1M
,還是必須將對象寫為接收數據集的精確“副本”?zfs get recordsize tank/files # returns: 128K # Set parent of receiving dataset to 1M zfs set recordsize=1M freezer # Also set at receive time zfs send tank/files@transfer | zfs receive -o recordsize=1M freezer/files
我的問題本質上是:
# Query recordsize of objects as written in freezer ???
我知道檢查新數據集的記錄大小本身並不是一個答案,因為這只會報告數據集屬性目前設置的內容,它本身並沒有說明任何先前寫入的記錄大小。我試圖用類似的東西直接檢查對象
zdb -dd freezer
但我的 zfs 版本(在 FreeBSD 9 上)似乎不接受這一點。
man zfs
建議只有“設置一次”屬性必須匹配(區分大小寫、規範化、utf8only),但我不清楚在一般情況下對像是如何編寫的。我還檢查了 docs/google,但如果不研究 zfs 內部結構,似乎無法得到關於這種行為的明確答案。
簡而言之 - 不。記錄大小不能通過發送/接收操作更改。其他一些選項可以,但不能記錄大小。