btrfsのrmlint "レプリケーション"は何をしますか?

btrfsのrmlint "レプリケーション"は何をしますか?

私が読んでいるrmlint手動、冗長ハンドラの1つは、複製および参照接続です。

・クローン:btrfsのみ。 BTRFS_IOC_FILE_EXTENT_SAME ioctl(3p) を使用して両方のファイルを複製してみてください。これにより、重複した範囲が物理的に削除されます。少なくともカーネル4.2が必要です。

· reflink:重複したファイルを元のファイルに再接続しようとします。 man 1 cpの--reflinkも参照してください。ファイルシステムがそれをサポートしていない場合は失敗します。

このレプリカの機能は正確に何であり、参照リンクとどう違うのですか? BTRFS_IOC_FILE_EXTENT_SAME ioctlの機能は何ですか?

答え1

違いはやや微妙です。

Reflinkは重複ファイルを削除し、その場所に元のファイルの複製である新しいファイルを作成します。いくつかのトリックを介してメタデータを保存しようとするrmlintの最善の努力にもかかわらず、レプリカのメタデータは失われますtouch -mr

レプリケーションはBTRFS_IOC_FILE_EXTENT_SAME ioctl(または最新バージョンではFIDEDUPERANGE ioctl)を使用してファイルが同じであることを確認し、その場合は同じデータ範囲を共有するようにカーネルに要求します。元のメタデータを保持します。これはカーネルによって自動的に実行され、ファイルがまだ同じであることを確認するため、reflinkよりも確実に安全です。

関連情報