私は巨大なストレージサーバー(Linuxを実行している必要があります)を構築して実行する方法を研究しています。ここでは、すべてのデータアレイに対して、アレイを使用する通常のアプリケーション(読み取りと書き込み)が通常どおり機能している間、整合性チェックと修正を実行できます。 。
数百人のユーザーが使用する単一の従来のLinuxファイルシステム(EXT4、XFS)に数TBのデータがあり、突然システムが一貫性/破損の問題を報告した場合、またはマシンが最近ダウンしたことがわかっているとします。汚い方法とファイルシステムの破損は非常に可能性が高いです。
ファイルシステムをオフラインにしてファイルシステムチェックを実行すると、通常の操作ではEXT4もXFSもチェックと修復を実行できないため、数時間/日のダウンタイムが発生する可能性があります。最初にファイルシステムをオフラインにする必要があります。
LinuxでEXT4/XFSのこの弱点を回避するにはどうすればよいですか?メンテナンスのために何時間もオフラインにする必要なしに、どうすれば大容量のストレージサーバーを構築できますか?
データ/メタデータの整合性チェックを使用しているため、ZFSとその信頼性について多くのことを読みました。整合性チェックを実行して、オフラインにせずにZFSファイルシステムを修正することは可能ですか?他の新しいファイルシステムまたはディスク上のデータの他の編成はより良いでしょうか?
私が考えているもう1つのオプションは、データ配列を途方もなく多く(数百)のパーティションに分割し、それぞれが独自の独立したファイルシステムを持ち、それらすべてのパーティションを使用するようにアプリケーションを修正することです。次に、それらの1つをチェックする必要が生じた場合、その1つだけをオフラインにする必要があります。完璧な解決策ではありませんが、何もないよりはましです。
この問題に対する完璧な解決策はありますか?
大まかな現実は、レガシーファイルシステムはマルチTBボリュームにはあまり適していないということです。たとえば、RedHatは推奨します 50 TB以下のEXT4ファイルシステム ; fsck
時間は制限要因の1つです。
XFSは、(古いxfs_repair
と比較して)はるかに高速なxfs_check
と、進行中のプロジェクト オンラインスクラブを追加するため の両方により、より良い状態になっています。
EXT4、XFS、およびその他のファイルシステム(BTRFSを除く)は、メインボリュームのスナップショットを作成し、メインファイルシステム自体ではなくスナップショットに対してfsck
を実行することで、オンラインで確認できます。これにより、ダウンタイムを必要とせずに重大なエラーをキャッチできますが、ファイルシステムの下にボリュームマネージャー(スナップショット機能付き)を配置する必要があることは明らかです。ちなみに、これがRedHatがデフォルトでLVMを使用する主な理由の1つです。
とはいえ、オンラインスクラブを備えた最もよく知られた信頼性の高いファイルシステムは明らかにZFSです。これは最初から非常に大きなアレイを効率的にサポートするように設計されており、オンラインスクラブ機能は非常に効果的です。もしあれば、それは反対の問題を抱えています:それはofflinefsck
を欠いており、これは いくつかのまれな修正を修正する)に役立ちますエラーのクラス 。
これは、XFSまたはZFSの場合です。 FSCKはZFSの世界では概念ではありません。
このようなものを堅牢な方法で構築するには、かなりのスキルがあります。専門家または ZFSコンサルタント を導入するための予算がある場合、組織はそうすることを検討する必要があります。
このストレージのダウンタイムが許容できるかどうかを組織に尋ねて、ビジネス継続性分析を行います。計画された少数の停止や年間数時間のダウンタイムよりも優れたパフォーマンスを実現するには、通常、マルチノードソリューションに投資する必要があります。
考えられる限り多くのダウンタイムリスクから保護します。たとえば、データセンターで火災が発生すると、ストレージテクノロジーに関係なく、数時間シャットダウンします。サービスを継続する必要がある場合は、データを別の建物の別のシステムに複製します。
ファイルシステムに関しては、修正できるものやベンダーがサポートできるものを選択してください。 EXT4は、非常に多くのマウントごとにfsckを実行することを強くお勧めします。 XFS fsckはジャーナルのために何もしませんが、xfs_checkはオフラインです。 ZFSにはfsckがなく、オンラインスクラブがあります。
データを複数のボリュームに分割することは、ある程度意味があるかもしれません。おそらく組織単位またはアプリケーションによって、障害を切り分けます。ただし、fsckを高速に保つためだけに数百の小さなボリュームを使用すると、作業が増加します。一元管理されたストレージの利点の1つは、管理作業が少ないことです。
複数ノードの可用性とパフォーマンスについては、別のレイヤーにスケールアウト分散ファイルシステムを追加することを検討してください。 Ceph、Lustre、Gluster、その他。 1つの大きなアレイとはかなり異なります。実装は、その下にあるファイルシステムを使用するかどうか、およびユーザーにブロックプロトコルとファイルプロトコルのどちらを提供するかによって異なります。