単一のデバイスでbtrfs raid1とbtrfs -m dup -d dupの違いは何ですか

単一のデバイスでbtrfs raid1とbtrfs -m dup -d dupの違いは何ですか

私は約2年間、複数のデバイスでbtrfsを使用してきました。

信頼できないセクタを持つ単一ディスク(HDD)でいくつかのbtrfs設定をテストする予定です。ハードドライブの12セクタを読み取れない場合があります。

次の設定では、データの整合性と全体の読み書き速度に違いはありますか?

1 TB HDD
-1 TB btrfs partition created with `mkfs.btrfs -d dup -m dup /dev/sda1`

1 TB HDD
-500 GB partition
-500 GB partition
--500 GB btrfs Raid 1 `mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sda2`

答え1

dup同じデバイスに複数のパーティションを配置して攻撃するのではなく、このバリエーションを使用することをお勧めします。 raidバリアントは、データにアクセスするときに2つのコピーを読み取る必要があるため、これはお勧めできません。デバイスを回転させる単一のデバイスの場合、これは読み取りヘッドが異なるパーティション間を移動するため、キューに複数の要求がある場合(よく発生する場合)パフォーマンスが非常に低下します。キューの深さとCFQスケジューラを増やすと、全体の待ち時間が少し短くなる可能性がありますが、このような混乱を避けるのが最善です。

このdupバリアントは通常、1つのコピーでのみ読み取ることができるほど正常でなければならず、セクタを読み取れない場合にのみ別のコピーに置き換える必要があります。

dup実装についてはわかりませんが、これはdup最初のレプリカからデバイスの1/2ほどレプリカを移動しないため、書き込みdupパフォーマンスも向上する可能性があると思います。 1つの論理書き込み操作は、物理回転デバイスの2つの位置に書き込む必要があり、その違いは常にデバイスの1/2であるため、実際に全体を実装するため、単一デバイスRAIDの書き込みパフォーマンスも悪くなります。装置を回転させるアルゴリズムの最悪の挙動

答え2

DUPとRAID1の違いは次のとおりです。

  • 私のように使用しないと、任意のセクタを読み取ることができないというSSDがある場合
  • これにより、BTRFSパーティションヘッダーで読み取れないセクターの1つがあり、BTRFSはここに保存されているものをマウントまたは読み取ることができないため、DUPがパニックになる可能性があります。 RAID1を使用するときに別のBTRFSパーティションをマウントし(他のBTRFSパーティションのヘッダーに読み取れないセクタがない場合)、それをクリーンアップして読み取れないセクタを書き換えることができます。
  • RAID1はそれぞれヘッダーを持つ2つのパーティションを意味するため、1つのヘッダーが破損し(パーティションを再フォーマットします)、別のパーティションに正しいヘッダーがある場合は、別のパーティションをマウントしてパフォーマンス低下モードでアクセスして問題を解決できます(他の新しい追加パーティション、不足しているパーティションの削除、RAID1レベルでバランスをとる)

KingDian SSDについての個人的な話は、長い時間(8日以上)停電後にランダムに読み取れないセクタが表示され、BTRFS RAID1がそのSSDを保存して使用できるようにする方法です(読み取れないセクタの競合が発生するまで) 。

まず、BTRFSとそのDUP(近い将来にテストする予定)とRAID1(すでに完璧な結果でテスト済み)に感謝したいと思います。これにより、KingDianブランドのSSDを使用することができます。 YucunおよびSamsungブランドと同様、KingDianブランドの3つのSSDの両方で「読めないセクター」の問題を見たことはありません。合計11個のSSDを使用していましたが、KingDianの1つが故障して現在は10個しか使用していません。そしてKingDian 1TiB SSDは使用するのが怖いです(FAT32またはNTFSで使用する予定です)テレビを合法的に再生するには)H.264 / 2xAACに変換されたDVDを購入してください。

KingDian SSDの問題は本当に奇妙なので、問題を発見した方法を段階的にお知らせします。

  1. 90%パーティションを作成してフォーマットします。以前はExt4(Linux)/NTFS(Windowsシステムパーティション)を使用していましたが、Windowsは本当に嫌いですが、やむを得ず使用する必要がありました。
  2. このパーティションにシステムをインストールします。
  3. 毎日システムを使用してください - >問題は表示されません
  4. 停電となって8日以上放置 --> KingDian SSの問題
  5. Live Linux ディストリビューション (DVD/USB/ など) でブートするときに発生する問題を確認するために、主に SystemRescueCD を使用しますが、 "ntfsclone"/"partclone.*"/"partimage" または一般的な "dd" を含む他のディストリビューションもあります。使用できます。
  6. パーティションの複製をファイルとして保存します(たとえば、システムパーティションをバックアップメディアに保存します)。
  7. 問題が発生しました。一部のセクター(一部から25または30まで)を読み取ることができません。
  8. 私は読めないセクターを(紙に)記録します。
  9. これから奇妙なことが起き始めるのに電源を正しく切って8日以上放置しておくのに
  10. これで、読み取れないセクタを確認するために手順4〜7を繰り返します。リストが大幅に変更されます。ほとんどの場合、両方のリストに共通点がないため、読み取れないすべてのセクタを読み取ることができ、他のセクタも読み取れるようになりました。読み取りセクタを読み取れません。
  11. SSDにまったく書かずにこれを何度も繰り返すことができ、読み取れないすべてのセクタのリストには共通のセクタがない傾向があります(時には両方のリストにセクタがあります)。

このSSD(KingDianブランドのみ)はなぜそんなに醜くて奇妙なことをするのですか?ランダムに、一部のセクターは長期間停電(8日以上)後に読むことができず、停電後一定期間(8日以上)後に再度読み取れるようになったと言います。

最も奇妙なことは、読み取れなくなって再読み込みできるようになっても、常に正しいデータを持っていることです。

また、SMARTデータを確認したところ、新しい再割り当てされたセクタがないと言いました(かつてWindowsで読み取れないセクタを強制的に再割り当てするツールを使用したため、一部がありました)。

SMART メッセージには読取りエラーがないことが示されていますが、一部のセクタを読み取ることができず、書込みエラーもありません。

明らかに、「読み取り」エラーもなく、「読み取り」された「間違った」データもありません...これは読み取れないものと技術的に異なります...そしてスマートデータには読み取れないエラーの数を示すフィールドがありません。など。

ただし、読み取れないセクタをデータで上書きすると、セクタを再マッピングしなくても再読み込みできるようになります。おそらく、使用された内部セクタが失敗したセクタではないためです(最新のSSDを作成する場合は、フィールドを拡張するために別の場所を使用していることに注意してください。SSDは内部的にマッピングされたものを使用します)。 LBA(チップ内の実際の位置)。

しかし、30GiBのデータを持つパーティションを複製するには1分もかかりません。 24時間以上かかり(そのようなエラーを無視してください。そうしないと終了しません)、一部の「破損した」データ(読み取れない)があります。

BTRFSが私を救った場所は次のとおりです。

  • まず、BTRFSのRAID1レベルで、同じSSDに2つのパーティションを使用してデータとメタデータを保存しました。
  • RAID1ではなくDUPについて知っているので、テストにDUPを使用する場合は、毎回2つのクローンパーティションバックアップを実行せずに1つだけ実行することをお勧めします。

私を救った結果は何でしたか?簡単です。 BackUPメディアを複製する前に読み取れないセクタが原因でBTRFSが別のコピーで上書きされるように(両方のコピーが読み取れないセクタがないことを願っています)、同じ場所に複製するコンテンツを削除します。 )。

2つのパーティションを使用すると、うまく機能し(遅いですが効果的に)、複製されたデータの一部のセクタが失われることはありません。 2つの同じサイズのパーティションではなく、1つのパーティションでDUPとしてテストする必要があります。 RAID1を使用してテストしました。

バックアップ時間は短縮されませんが(追加時間もかかります)、少なくともすべてのデータが正しいことを確認できます。ある日、同じデータ(衝突)に対して読み取れない2つのセクタが表示されるまでです。同じ時間に同じ場所にいると元に戻すことはできません。

他のオプションは明らかです。もうKingDian SSDを使用しないでください。これは私が今まで使用した唯一のSSDであり、この問題があります(長期間停電後にセクタを読み取ることができません)。

休暇に行って家の主電源を切って戻って、SSDに読めない部品があることを発見したと想像してみてください。これは家庭用ユーザーにとって大きな問題ですが、SSDに常に電力が供給されるデータセンターではそうではありません。

素晴らしいBTRFS! ! !もう1つの醜い部分であるNTFSパーティション(Windowsシステムパーティション)で同様の作業を実行する方法を学びましょう。まったく不可能です。 NTFSにはこのオプションはありません(SERVERSなどではなく、Windows HOMEのバージョンを覚えておいてください)。

そのため、BTRFSのおかげで、Linuxは数日前に思ったよりもはるかに優れていました...私は何十年もの間Linuxユーザーでした...しかし、完全な破損などに関するすべての悪い情報のためにBTRFSを使用することを拒否しました。 SSDの問題により重複した内容が必要でした。

私の心に浮かんだもう一つのオプションはZFSでした。より複雑で、GRUB2ブートローダに統合されておらず、カーネルに統合されていません(ライセンスシステムのために決して統合されない可能性があります)。だから私は(昨日)BTRFSを熱心に試しました。驚くべきことに、非常に信頼性が高く、比較的使いやすいようです(新しいディスクを追加するとRAID1ではなくRAID0に追加されるという警告、私はRAID5 / 6 /などを使用せず、このようなものを使用したくありません)。データ損失(KingDian SSDではない場合)なしで致命的な破損(2つのパーティションのいずれかを再フォーマット)から簡単に回復できます。

もちろん、サブボリューム、スナップショットなどは使用しません。前述したように、RAID1のLinuxルート「/」として通常のファイルシステムを使用しているため、テストにRAID1の代わりにDUPを使用する必要があります。心配です(非常に編集的です)。パーティションヘッダーの読み取れないセクタは、すべてのBTRFSを回復できないか、または読み取れないという意味であるため、RAID1の同じSSDに両方のパーティションを保持します。

このようにランダムに読み取れないセクタエラーが発生した場合、KingDian SSDを選択できればコストが節約されます。本当に高価でサイズが大きいほど、高価なシングルビットセルSSDのみを使用したいので、SSDは安くはありません。 (私は編集証跡と言います。)すべてのデータの10個以上のオフラインバックアップと100個以上の最後のステータス履歴があります(私は知っていますが、編集証的です)。

答え3

少なくとも1つの違いを見つけました。

ダウングレードされたraid1 rwは一度だけマウントできます。デバイスの他のパーティションが正常な場合、あるパーティションでエラーが発生する可能性は低いかもしれませんが、違いがあります。

源泉: https://btrfs.wiki.kernel.org/index.php/Gotchas#raid1_volumes_only_mountable_once_RW_if_degraded

ダウングレードすると、raid1ボリュームはRWに一度だけマウントできます。

単一のプロファイルブロックがなくても、パフォーマンスが低下したraid1ボリュームは、-o Degraded、rwオプションを使用して一度だけ読み取り/書き込みでマウントできます。

メモ:

  • 報告によると、デバイスの数が2つを超えると、この現象は発生しません。

  • これはraid10プロファイルボリュームでは発生しません。

  • これは通常、単一のブロックが残っている「不完全なブロック変換」の問題が原因です。

可能な回復:

  • それでも読み取り/書き込み状態の場合、十分なスペースがある場合は、プロファイルraid1のブロックをプロファイル単一(またはプロファイルdup)に変換できます。

  • それでも読み書きできる場合は、欠落しているデバイスをbtrfsデバイスに置き換えることができます。

  • 何らかの理由でraid1ボリュームが読み取り専用状態になった場合は、そのコンテンツをダンプして再作成した後に復元する必要があります。

答え4

パーティーに遅れましたが、とにかく。私は(dupについて)私が読んだ人々の中で同じ問題について疑問に思いました。

たとえば、SSDドライブはブロックを単一のコピーに内部的に再マッピングすることで重複を排除することができます。

おそらく、raid1はこの問題を回避したり回避したりするかもしれません。

関連情報