rsyncの後に参照されたzfsを解釈することはできません。

rsyncの後に参照されたzfsを解釈することはできません。

いくつかの異なるZFSデータセットを含む古いCentos NFSサーバーがあります。私はrsyncを使用してデータを最新のNFSサーバーに移行しました。新しいサーバーはCentos ZFSホストでもあります。私の問題は、あるデータセットの場合、古いサーバーと新しいサーバー間の参照サイズが大きく異なり、その理由がわからないことです。

圧縮や重複排除を使用しません。 zfs属性は同じであると予想しましたが、前のホストではデータセット(device、exec、およびsetuid)に対して次の属性が有効になっていることがわかりました。私が見つけた唯一の違いはCentOSとZFSのバージョンです。

前のホスト:zfs 0.6.5、centos 7.3、zfsリストには参照2.00Tが表示されます。

新しいホスト:zfs 0.7.2 centos 7.4、zfsリストには参照された1.29Tが表示されます。

データをコピーするには、新しいサーバーに古いエクスポートをインストールし、-avhH --delete rsyncオプションを使用しました。 dfを見ると、inodeの数は同じだが、dfは使用空間(1.3T vs. 2T)で大きな差を見せる。私はFindを使用して、データセット内のすべてのファイルのサイズとディスク使用量のcsvを作成しました。行数とサイズ列の合計は2つのホスト間で同じです(サイズの合計は約1.29 TBです)。ディスク使用量は2つのホスト間でわずかに異なり、1.3Tとほぼ一致します。また、以前のサーバーでlsofを実行して容量の違いを消費するリンクされていないファイルがあるかどうかを確認しようとしましたが、何も「(削除済み)」として返されませんでした...違いを説明できる他のアイデアや提案がありますか?

ベストアンサー1

圧縮が無効になると、ZFSはゼロで埋められたブロックを見つけません(これはzio_compress_data()コードで発生します)。したがって、以前のシステムでは、ディスクにゼロに設定されたブロックがたくさんある可能性があります。

私は専門家ではありませんが、おそらく時間/ネットワーク帯域幅を節約するためにゼロになったブロックを送信しないとrsync思います。rsync対象システムでは 0 で指定されたブロックがまったく記録されないため、スペースをあまり使用しなくなるという意味です。

zfs send何らかの理由でシステムが互いに正確にコピーされるようにするには、ソースシステムとターゲットシステムzfs receiveでZFSの内蔵コピーツールを使用できます。また、各ファイルのメタデータを確認し、変更されたファイルの全内容を読んで何が違うかを確認するのではなく、変更されたrsyncファイルシステムツリー部分だけを探索すればよいので、より効率的です。rsync

おすすめ記事