データセットプロパティの変更時に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「一度設定」プロパティだけが一致する必要があることが提案されていますが(大文字と小文字の区別、正規化、utf8のみ)、一般的な場合にオブジェクトがどのように作成されるかはわかりません。私もdocs / googleをチェックしましたが、zfsの内部を調べなければこの動作に対する明確な答えを得ることはできないようです。

答え1

要するに - いいえ。レコードサイズは送受信操作では変更できません。他のいくつかのオプションは機能しますが、サイズは機能しません。

関連情報