web-dev-qa-db-ja.com

BTRFSの自己修復はソフトウェアRAIDによってのみ機能しますか?

私の知る限り。 RAIDには次の3つのタイプがあります。

  • ハードウェア-例:高価なPCIERAIDカード/または、おそらく書き込みキャッシュとBBUを備えた専用CPUを備えたオンボードRAIDはめったにありません
  • ソフトウェア-例: ZFS、MD、BTRFSソフトウェアRAID
  • 偽物-例:安価なPCIERAIDカード/またはマザーボード上のRAMとCPUを使用するほとんどのオンボードRAID。

BTRFSソフトウェアRAIDを使用することにより、ファイルシステムはドライブについて認識し、チェックサムが間違っているブロックを検出すると、クローン(RAID1/10)またはパリティ(RAID5/6)を使用して、影響を受けるブロックを復元し、エラーを修正できます。 。したがって、ファイルが時間の経過とともに劣化することはありません。

問題は、同じ自己修復メカニズムがハードウェアで機能するのか、BTRFSによる偽のRAIDで機能するのかということです。

影響を受けるブロックのクローン/パリティにアクセスして修正するためにBTRFSが使用できるAPIがあるはずです。オンボードRAIDを使用すると、このようなものが発生する可能性が高くなると思いますが、そのようなものが存在するのか、RAIDごとに実装が異なり、BTRFSで使用できる標準APIがないのかはわかりません。

1
inf3rno

この質問を理解するのに苦労していますが、とにかく答えることができると思います。

BTRFSはソフトウェアRAIDであり、Linuxに組み込まれているBTRFSソフトウェアによって処理されます。アレイで何らかのメンテナンスを行うには、オペレーティングシステムでbtrfsコマンドを使用する必要があります。

RAIDコントローラを含むハードウェアに関する限り、ディスクは単なる基本ブロックデバイスです。 Linux *のBTRFSソフトウェア以外には、ディスクがアレイの一部であるとは考えられません。

*他のオペレーティングシステムがBTRFSを実装することは可能ですが、少なくとも現時点では、その可能性は低いと思います。

更新:既存のRAIDアレイ上でBTRFSを使用します。

この場合、RAIDとBTRFSは完全に分離されています。ハードウェアミラーを例にとってみましょう。

  • BTRFSは、ミラー上にあることを認識せず、単一のデバイスにデータを書き込みます(この例ではこれを/dev/raidと呼びます)。両方のディスク間でそれをミラーリングするのはRAIDコントローラー次第です。
  • デバイスに障害が発生した場合、BTRFSは通常どおりデータを読み取るだけで、ディスクに障害が発生したことはわかりません。 /dev/raidの機能を維持し、残りのディスクへのデータの読み取り/書き込みを行うのはRAIDコントローラーの責任です。また、ディスクの交換時にアレイを再構築するのはRAIDコントローラーの責任です。

RAIDの提供方法(ハードウェア/「偽物」またはソフトウェア)に関係なく、同じことが当てはまります。

あまりよく説明していないと思いますが、それは非常に単純な概念です...別のデバイス(またはソフトウェア)がRAIDを処理している場合、RAIDデータを修正するのはBTRFSの責任ではありません。 RAIDアレイで実行されている他のファイルシステムと同じように、単一のディスク上に単一のファイルシステムが表示されます。

2
USD Matt