web-dev-qa-db-ja.com

データ重複排除を効率的かつ透過的に処理するファイルシステム

ユーザーにとってデータ重複排除を効率的かつ透過的に処理するファイルシステムはありますか?

例:

  • 私はC:\documents\2019\bigfile.csv(250 MB)を持っています
  • C:\temp\bigfile.csvにコピーしましたが、ディスクの使用容量はまだ250 MB(500 MBではありません!)です。 コピーオンライト スタイル
  • bigfile.csvの数行を変更します:ディスクで使用されるスペースはおそらく251 MBです(まだ500 MBではありません)

例2:

  • ディスクのどこかにファイルmyOSinstalldisk.isoがあります
  • 6か月後、気付かずに同じファイルをインターネットから再ダウンロードし、別の場所に保存します:OS自動的に実際、ディスク上の新しいスペースは使用されていません

これは、OSがすべてのファイルをたとえば1 MBのチャンクに自動的に分割し、SHA256ハッシュを(I/O操作ごとに)保存する場合、透過的に機能する可能性があります。例2では、​​myOSinstalldisk.isoをディスクに保存すると、OSはチャンクがすでにFS(SHA256ハッシュはハッシュテーブルに存在します)にあることに気付きます。その必要はありません。そのために再びディスクスペースを浪費します。

どのFS Windowsでこれをサポートしますか?Mac用のものはありますか?Linux?

参照: Linuxに重複ファイルを効率的に保存する

PS:私はWindowsショートカット、シンボリックリンク、ジャンクションなどを探していません(私はすでにこれを知っていて使用しています)


このようなFSは、たとえば次のようになります。

Chunk table
==========
SHA256 of the chunk         Location on disk (sector)
2cb4b1431b84ec15...         3467634
d35ed83bb927e27e...         23789
8967d75f4bcd9cc4...         872372
b25c8d879ae23e18...         1265152
...

File table 
==========
File                        Chunks
/home/user/file_a           8967d75f4bcd9cc4... b25c8d879ae23e18... 2cb4b1431b84ec15...
/home/user/file_b           b25c8d879ae23e18... d35ed83bb927e27e...

この(疑似)例では、file_afile_bが1MBの共通チャンクを共有していることがわかります。

もちろん、これは多くの理由で注意が必要です。たとえば、2つの重複ファイルfile_afile_bがあり、file_bの先頭に1バイトを追加し、次に各チャンクのSHA256ハッシュを追加するとします。異なるため、異なるデータと見なされます...また、このようなFSは、特定のチャンクが使用されなくなったことを知るために、特定のチャンクを使用するファイル数のカウンターを保持する必要があります。必要(ガベージコレクタースタイル)など。

3
Basj

ZFS

ZFSは、インバンドブロックベースの重複排除をサポートします。これは、LinuxとFreeBSDを適切にサポートするファイルシステム/ LVMハイブリッドです。 ZFSには多くの優れた機能があります。基本的に、ファイルデータからファイルシステムメタデータまですべてがチェックサムされるため、ファイルシステムの破損を即座に検出でき、RAID-Z(RAIDはZFS自体によってのみ管理されます)を使用して修復することもできます。

しかし、支払うべき代償があります。まず、パフォーマンスは従来のファイルシステムほど良くありません。 ZFSは、速度ではなく信頼性に重​​点を置いています。次に、基本的なZFSには、少なくとも1GBのRAM + 1GBのRAM各1 TB重複排除を希望する(重複排除を効率的に行うには、使用可能なブロックに関する情報をどこかに保存する必要があります)。ECCRAM(サーバーおよびApple =コンピュータ、通常のPCは非ECCを使用します)従来のファイルシステムとは異なり、反転したビットはデータに損傷を与えるだけでなく、たとえばメタデータチェックサムが破損した場合、ファイルシステムに回復不能な損傷を与える可能性があります。ECCはRAMエラーがディスクに到達することはありません。

2
gronostaj