ZFSで牛のコピーを作成する方法はありますか?

ZFSで牛のコピーを作成する方法はありますか?

いくつかのファイル/ディレクトリのきれいなコピーを作成しようとしていますが、私が知っているいくつかの方法のどれも最適ではないと思います。

たとえば、btrfsを使用すると、cp --reflink=autoファイルのoxenコピーをすばやく作成できます。

私が試したこと:

  1. シンボリックリンク:不良。ファイル名が変更され、リンクが失われました。
  2. ハードリンク:良いですが、まだ悪いです。あるファイルを変更すると、他のファイルも変更されますが、必ずしも別のファイルを変更したくはありません。
  3. データセットのスナップショットを作成してから、スナップショットを複製します。動作しますが、それほど効果的ではありません。通常、私はデータセット全体のコピーを探したり、そのコピーを他のデータセットのように動作させたりしません。その後、レプリカ/スナップショット/ソース間の親/子関係がありますが、私が知っている限り、それを破ることは不可能ではない場合でも難しいです。
  4. 重複排除を有効にしてzfs send/receive有効にして、データセットを新しいデータセットにコピーします。これにより、複製された親/子関係を使用する必要がなくなりますが、依然として不要に他のデータセットが生成され、ファイルを100%読み取る必要がある速度低下の問題が引き続き発生します。問題は再び言及されます。ブロックを書く代わりにブロックを使用してください。
  5. ファイルをコピーし、重複排除でその操作を実行します。これはうまくいきますが、ファイルを100%読み取る必要があり、書き込みではなくブロックから再参照する必要があるため、遅くなります。

zfsの送受信と物理コピーまたはrsyncの速度の低下は、ほとんどのコンテンツが圧縮されて保存され、読み取り中に解凍され、重複排除が重複ブロックを参照し始める前に圧縮される必要があるという事実によってさらに複雑になります。

私のすべての研究では、btrfsの--reflinkの単純さに似ているものが見つかりませんでした。

それでは、ZFSで牛のコピーを作成する方法はありますか?それとも、「物理的に」コピーして重複排除を実行することが唯一の実際のオプションですか?

ベストアンサー1

上記のオプション3がおそらく最善の方法だと思います。望ましい最大の問題は、ZFSが実際にデータセット/スナップショットレベルでのみこの書き込み時にコピーを処理することです。

特定の環境で動作していることを確認しない限り、重複排除を避けることをお勧めします。私の個人的な経験によると、重複排除は1人のユーザーまたはVMストレージを移動するまでうまく機能し、パフォーマンスの崖から離れて多くの問題を引き起こします。最初の10人のユーザーにはうまく機能しているようですが、11番目(または12番目、13番目など)を追加すると、コンピュータがクラッシュする可能性があります。このパスに行きたい場合は、本番環境を正確に模倣するテスト環境があり、その環境でうまく機能していることを絶対に確認してください。

オプション3に戻って、この方法で管理する各ファイルシステムツリーを保持する特定のデータセットを設定する必要があります。設定と初期フィルの後、スナップショット(各データセットごとに1つずつ、わずかに異なる)を作成し、レプリカに昇格します。もう一度元のデータセットに触れないでください。

はい、このソリューションには問題があります。そうではないということではありませんが、ZFSの限界を考慮すると、まだ最高です。複製を効果的に使用する人を見つけました。http://thegreyblog.blogspot.com/2009/05/sparing-disk-space-with-zfs-clones.html

私はbtrfsについてはわかりませんが、必要なオプションをサポートしている場合は、これらのデータセットをサポートするために別々のサーバーを設定し、そのサーバーでLinuxとbtrfsを使用することを検討しましたか?

おすすめ記事