web-dev-qa-db-ja.com

内蔵SSDを使用して外付けドライブへの書き込みをバッファリングする方法

この質問は少し奇妙なものです。できるだけ詳しく説明しようと思います。

古いコンピューターを自宅のバックアップソリューションとして使用するために転用しています。データの最後の休憩場所は、USB 2.0を介して接続された外部Gドライブです(古いコンピューターだと言いました)。コンピューターの新しい光沢のあるSSDドライブのスペースを使用して、への書き込みをバッファリングする方法を理解したいと思います。外付けドライブ。サーバーをインストールしてOpenSUSELeap15を使用しています。

これまでのところ、 bcache を見つけました。これをライトバックモードに設定して、探しているものと同様のものを取得できます。問題は、バッファリングするパーティションがbtrfs(透過圧縮)を使用していて、 2つを一緒に使用して報告された問題 であるということです。 Arch wikiによると、これは3.9で修正されたとのことです ですが、リンクされたソースのどこにも見つかりません。

lvmcache もあります。私が目にするライトバックへの唯一の言及は、manページの短いブリップであり、それ以上の説明はありません。また、すでにlvmを使用してSSDをシンプールのあるさまざまなパーティションに分割しているので、lvmcacheを使用すると、シンプールが発生しないように2つのドライブに新しい専用lvm-vgを作成する必要があるのではないかと心配しています。外部に広がる。さらに、BTRFS wikiには、ブロックレベルでBTRFSを使用すると問題が発生する可能性があるという注記があります。

DM-Cache は、私がまだ学習中のもう1つの高度に構成可能なオプションです。ブロックレベルで機能するため、btrfsと競合する可能性があります。

最後のオプションは、zfsを使用してSLOGベースのZILをセットアップすることです。 このソース は、1Gbps接続の場合、5秒ごとにフラッシュするため、SLOGが最大である必要があるのは.625GBであると述べています。ただし、広範なテストに基づくと、このドライブに到達できる最高の持続書き込み速度は30MB /秒です。これは、.625GBのslogをZFSドライブにダンプするのに20秒かかることを意味します。 (更新: このソース および このソース に基づくSLOGデバイスは、遅延を減らすためだけに、スループットを向上させることを目的としていません。) (更新の更新:コメントで、ダンはこれが何を意味するのかを明確にしました。このシナリオではZILを利用できる可能性があります。)

大規模な書き込みが外部接続によって必然的にボトルネックになることを知っています。数十GB程度のものは、最終的に30MB /秒になると思います。私の目標はその問題を解決することではありません。私はおそらくrsyncを使用してデータを外部に送信するので、10GB未満のほとんどの転送を高速化したいと思います。

私は基本的に、他の誰かがこれに似た何かをしたかどうか、そして推奨事項があるかどうか、または特定のオプションを他よりも優れていると指摘できるかどうかについて興味があります。現在、10GBのslogドライブを使用するZFS/SLOGオプションが最適であると考えていますが、その大きなドライブが5秒のフラッシュでどのように再生されるかわかりません。

tl; dr:内蔵ドライブに約10GB相当のデータをバッファリングするための最良の方法は何ですか(これがすべて正確に推奨されるわけではありません)。その後、外付けドライブに転送されますか?

3
Zyra

あなたが言及した解決策はどれもうまくいくと思います(bcache/LVMとBtrFSの間の相互作用を除いて-私はあなたがそこで行う以上のことは知りません)。選択はおそらく、あなたが理解し、設定し、維持するのに最も簡単なものに帰着します。

個人的には、次の理由でZFSを選択します。

  1. 私はそれについて多くの経験があります。
  2. これは、このユースケース(圧縮に加えてSSDを使用して読み取りや書き込みをキャッシュする)のオールインワンソリューションを提供します。
  3. それはあなたが見つけるかもしれない他のたくさんの素晴らしい機能(スナップショットとクローン、重複排除、RAID-Z、zfs sendによるレプリケーション、暗号化、圧縮RAMキャッシュ、...))を提供します現在使用していなくても、将来的には便利です。また、常に新しい機能を追加している健全なオープンソースコミュニティもあります。
2
Dan