パーティションレベルでの重複排除


8

ブロックレベルまたはより詳細な重複排除に利用できるソリューションは何ですか?

ファイルベースのものがあります-「コピーオンライト」アプローチ。

私はブロックレベルの「コピーオンライト」を探しているので、定期的に一般的なブロックを探すか、できれば-ファイルの一部を探し、それらをマージして、CoWの使用方法にフラグを立てることができます。このようなものはありますか、それとも作成する必要がありますか?Btrfs重複排除がブロック/ファイル/サブパートレベルかどうかわかりません。LessFSはありますが、それが提供する重複排除のレベルはわかりませんか?多分他の解決策?


なぜこの質問が賛成投票されているのか理解できません。「Linux重複排除」をグーグルすると、ここで複製する必要のないファイルシステムと製品のリストが表示されます。
カイルジョーンズ

このようなグーグルは、ファイルレベルで機能する多くのソリューションを返します。この質問の目的は何ですか、そのうちのどれが私の目的に合っているかをアドバイスします。できれば、ブロックレベルに調整する必要のない、ファイルの2つの部分の重複排除を可能にすることが望ましいです。そのようなソリューションが利用できない場合は、ブロックレベルよりも。もう1つは、多くのものが実験的な印象を与えるということです。他のユーザーの経験を頼りに、成熟したソリューションをアドバイスします。
Grzegorz Wierzowiecki 2012年

1
@GrzegorzWierzowieckiはそれが法案に適合するかどうかはわかりませんが、正式には縮図であるcyphertiteを確認してください: peereboom.us/epitome cyphertite.com

回答:


3

ブロックレベルの重複排除が進むにつれ、ZFSは現在、競合されていない最高の実装だと思います。重複排除(オンになっている場合)が読み取り/書き込み関数に直接組み込まれているため、実際には事後の最適化のために設計されていません。このため、重複排除テーブルの最も関連性の高い部分をメモリに保持しようとすると、負荷がかかると少しメモリが高価になる可能性がありますが、ZFSは、メモリの50%以下を消費するように制限するのに適しています。搭載されているメモリの量はかなり恣意的に見える可能性があります(特にメモリを必要とするユーザータスクが少ない場合は、2Gbの50%と64Gbの50%)。

何に使用するかによって、いくつかのオプションがあります。

OpenIndianaには、Solarisに基づいたいくつかの優れたデスクトップおよびサーバーオプションがあるようです。

FreeBSD(9.0以降)には、かなり高度なバージョンのZFS(重複排除を含む)が組み込まれています。注目すべきFreeBSD(当時はMonoWall)から派生したディストリビューションの1つはNAS4Freeです。これにより、NASが非常に簡単になります。

Linuxにはいくつかのオプションがあり、一部は重複除去あり、他はなしです。あなたが重複除去を探しているので、私が見た中で最も注目すべきはzfsonlinuxです。彼らの進捗状況やプロジェクトがどれほど安定しているかはわかりませんが、確かに有望に見えます。

部分的なブロック重複排除に関するものについては、これまでのところ、それを実行する機能を報告していないものを見てきました。


0

あなたの質問は、「ブロック」という用語のために少し混乱します。これは、ディスクやファイルシステムに関して非常に過負荷の言葉です。(しかし、周囲のコンテキストは明確にするのに役立ちます。)Btrfsは固定サイズのファイルシステム「ブロック」を処理せず、可変サイズの「エクステント」を処理します。(紛らわしいことに、可変サイズのブロックゾーンも定義します。)ZFSはファイルシステムの「ブロック」を扱います。BtrfsとZFSはどちらもディスクレベルの「ブロック」を認識しています。これらはそれ自体が抽象化です。(次に、「ブロックレベルのストレージ」もあり、意味的に異なる意味になる場合があります。)これらの説明が少しずれているか、十分に明確でないか、100%正確でない可能性があります。(ブロックのトピックについて明確さと100%の正確さが必要な場合は、読んでいないふりをしてください。続行するために大まかな理解が必要な場合は、次に進んでください。)この回答の主なポイントは、「ブロック」を完全に定義することではなく、以下の説明です。

@killermistが書いたように、ZFSは[ZFS]ブロックレベルの重複排除をネイティブでサポートしています。

ZFSではデフォルトで有効になっていません。十分なメモリなしでオンにすると、パフォーマンスに多大な影響が及びます。また、ZFSでは、ハッシュテーブル全体をRAMに収めるために、「1 TBのストレージあたり1 GBのRAM」の経験則よりもかなり多くの量が必要です。しかし、それでも、ハードウェアによっては、40 MB / s以上の書き込み速度を得ることができます。私はそれを2008年の時代の技術で〜2015年のドライブで動かしています。主にアーカイブデータについては、完全に受け入れられます。ZFS重複排除の最大の欠点は、重複排除をオンにしてすべてをコピーする以外に、「バッチ/オフライン」(またはより正確には「帯域外」)モードでこれを行うための洗練された方法がまだないことです。同じファイルシステム上の新しい一時ディレクトリ、元のファイルを削除してから、(現在重複排除されている)一時コンテンツを元に戻します。

Btrfs重複排除は間違いなく少しおおざっぱですが、現在この作業に使用できるのはサードパーティのユーティリティのみです。(しかし、十分にサポートされているカーネルAPIやcpへの十分にサポートされているオプションのいずれかを使用します。どちらの方法でも、重複を決定するために独自のロジックを必要としますが、正確であることが望まれます。 「アウトオブバンド」です。ただし、ほとんどのユーティリティにかかるコストは、ハンマーで叩くとパフォーマンスが低下することです。完了するまでに数時間、数日、さらには数週間かかることがあります。(個人的には、インバンドZFS重複排除の書き込みパフォーマンスを常に遅くすることに対処します。たとえば、HDDを何日もハンマーで叩くよりも、年に1回は終了します。)

私が認識している2つのBtrfsソリューションは、ファイルではなく「ブロック」(ただし別の定義では)を処理するもので、dduperです。

たとえば、ミツバチは、利用可能なメモリやその他の要因に基づいて、最初の実行時に自身の「ブロック」サイズを任意に定義します。(私はおそらくその目的、機能、メカニズム、および賛否両論を誤って伝えていると思いますが、私はそれを使用していないため、オプションとして最近評価しただけです。)

ミツバチは間違いなくわずかにハイブリッドっぽく、継続的に実行するように設計されており、ディスクをそれほど強くハンマーで打たないようになっています。実際に重複を取得し、軽いタッチで重複排除を試みるだけです。任意に定義されたブロックサイズでの作業は、設計により、ハッシュテーブルをRAMに適合させることを意味します。(おそらく)欠点は、同じ「ブロック」内にエクステントが存在する可能性があることですが、蜂が含まれている「ブロック」が異なるため、蜂が​​重複除去できない場合があります。

「ファイル」レベルのBtrfs重複排除を具体的に実行するユーティリティ(bedupduperemovermlintなど)でも、要件を満たしている可能性があることに注意してください。確かではありませんが、確かにそうです。これは、「cp --reflink = always」コマンドでも「ファイル」を実際に重複排除しないためです。Btrfs エクステントを重複排除しています。再リンクされた「ファイル」が変更された場合、Btrfsは、変更されたエクステントのみを重複排除解除して、独自の一意のエクステントにします。ファイルの残りの部分は重複排除されたままです。これが、重複排除された大きなファイルが独自の一意のファイルのように分岐できる方法ですが、ほとんどの場合は重複排除されます。

(これは、「ファイル」がreflinkされているかどうかを判断するのが非常に難しい理由でもあります。その概念は実際には意味をなさないためです。ファイルのすべてのエクステントは、他の同じエクステント自体にreflinkされる可能性があります。理にかなっていますが、それは偶然に答えるのが特に難しい質問です。そのため、Btrfs重複排除ユーティリティがすでに重複排除されたものを追跡しない限り、ファイルがすでに重複排除されているかどうかを「検出」しようとする価値はありません。検査するrefcountのような属性はありません。いずれにしても、重複排除を再度行う方が簡単です。対照的に、ファイル全体が旧式の方法でハードリンクされているかどうかを判断するのは簡単です。特定のiノードのst_nlinkカウントを確認するだけです。)

「ファイル全体のクローン」の欠如は、実際には「無料」のスナップショットや重複排除をサポートするすべてのCoWファイルシステムに固有の機能であり、Btrfsエクステント、ZFSブロック、またはその他のものを処理する場合に当てはまります。どちらかがおそらくあなたの質問への答えになることができる理由です。(私が知っている、それをすべて実行できる、または実行できるように計画されている他のCoWファイルシステムが少なくとも3つあります:nilfs2、bcachefs、およびxfs。)

これについては言及しませんでしたが、私の知る限り、ファイルタイプに対応した重複排除技術はありません。言い換えると、重複排除者は* .jpgメタデータをスキップして、圧縮された画像データのみを重複排除の対象とすることを認識していません。同様に、それらのいずれもファイルのマジックナンバーを考慮していません(少なくとも重複排除について何を考慮すべきかを決定するため)。それはキラー機能になる可能性があります-確かに、継続的で継続的な定義の更新が必要です。また、ファイルをエクステントやブロックなどの抽象的なM:Mコレクションとして扱う一方で、設計が本当に難しい場合もあります。


この古い答えを拡大するために、少なくとも現在のところ、rmlintは今や争われていないbtrfs重複排除ツールになっています。1)他のオプションを使い果たしていない限り、重複した候補を不必要にハッシュしないように、スマート比較を行います。2)開発(および私はマスターと考えています)ブランチは、増分ハッシュをサポートしています。3)増分重複排除をサポートしています。最後の2つは大きな機能です。他の重複排除機能が3つすべての機能を提供しているわけではありません。これらの機能は、後続の実行の日数を文字通り削減できます。
ジム

rmlintは、重複ファイルの候補として同一のファイルのみを考慮し、部分的に重複する範囲のみを持つファイルは無視します。
トム・ヘイル

@ tom-hale私はあなたの言い分を理解できませんか?
ジム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.