mdadmの共有ホットスペア

(ここまたはシステム管理で書くことをhesしました)



インターネットでは、mdadmが共有(グローバル)ホットスワップディスクとどのように機能するかについてはほとんど説明していませんでした(非常に明確ではありません)。 メモでは、それが何であるかを説明し、共有ホットスペアが/ proc / mdstatで一般としてマークされていないのはなぜかを説明しますが、代わりにかなりローカルであるように見えます。



ホットスペアとは何ですか?



(私は初心者向けではありませんので、ヨーロッパ中を駆け巡ってください)

アレイに冗長性があり、そのディスクの1つに障害が発生した場合、冗長情報をバックアップディスクに復元する可能性があります。 ディスクが手動でアレイに追加された場合(管理者が障害に関する手紙を受け取り、手紙を読んで目を覚ます/着替え、仕事に着き、故障したディスクを取り出し、スペアディスクを挿入し、アレイに追加し、冗長性を復元するコマンドを与えた)、このディスクはコールドと呼ばれます予備。 単なる「スペアディスク」。



サーバーにアレイディスクのいずれかの障害の直後に冗長性が復元されるアイドルディスクがある場合、このディスクはホットスペアと呼ばれます。 主な利点は、管理者の電子メールが間に合わなかった場合でも、再構築(冗長性の復元)できることです。



ローカルホットスペア

通常、スペアディスクがアレイに追加されます。つまり、アレイに障害が発生すると、スペアディスクが使用されます。 隣接アレイで障害が発生した場合、「外部」アレイからのホットスペアは使用されません。



システムパーティションまたはデータパーティションの冗長性を復元するためにホットスペアを使用するという選択肢がある場合、これは実際には論理的です。データパーティションの冗長性を復元する必要があります。 また、システムパーティションがホットスペアによってすでに「占有されている」場合、問題が発生します。 さらに、一部のメーカーは1EEホットスペアを提供しています。このストレージでは、バックアップディスクがデータストレージにも使用されます(アレイディスク間に空のスペースが「広がり」、通常モードでの迅速な再構築とパフォーマンスの向上を可能にします)。



グローバル(一般)ホットスペア

ただし、データの配列が多数あることがあります。 そして、すべてホットスペアドライブが必要です。 しかし、運転するのは残念です。 そして、どのアレイにも使用できる「共通」ディスクが必要です(さらに良いのは、2〜3個のディスク)。



それは序論でした。 それでは最後に行きましょう。



Linux md

mdadm(DMスタックのカーネルモジュール)は、共有ホットスペアをサポートしていません。 ディスクは、特定のアレイにのみホットスペアとして追加できます。



しかし、mdadmはサポートしています!

そうです。 mdadmはサポートしていますが、カーネルモジュールはサポートしていません。 Mdadmは、「損傷したアレイ間でホットスペアをスローする」という一般的なホットスペア方式を実装しています。



つまり、これが機能するには、mdadmを-F(フォロー)モードで起動する必要があります。 彼は通常、襲撃問題に関するメッセージをメールに送信します。 ほとんどの最新のディストリビューションはそれを実行します(配列がある場合)が、それはmdadm.confからアセンブルされ、ハンドルによってアセンブルされていない配列のみを処理することを理解することが重要です。 (はい、はい、ここでセットアップを待っています)。



予備グループ

異なるアレイ間でディスクを分散できるようにするために、スペアグループ、つまりドライブをスローできるグループの概念があります。 このようなグループは多数存在する可能性があり、ホットスペアはそれらの間でのみ転送されます。



上記からmdadm / linux mdについて理解するのは簡単なので、/ proc / mdstatには何もありません。また、予備グループについては何もできません。 これらはmdadmの個人的な思考と思考であり、それに関するカーネルは夢でも精神でもないためです(/ procのファイルはカーネルモジュールによって作成されます...)。



したがって、共有ホットスペアはmdadmでのみ提供できます。 2つのオプションがあります。ロードするアレイ(/etc/mdadm/mdadm.conf)にグループが指定されている場合、次のようなホットスペアを指定できます。



ARRAY / dev / md1 level = raid1 num-devices = 2 metadata = 1.2 spares = 1 spare-group = myhostparegroupname name = server:1 UUID = 18219495:03fda335:3f1ad1ee:a5f5cd44

デバイス= / dev / sda、/ dev / sdb、/ dev / sdc

ARRAY / dev / md2 level = raid1 num-devices = 2 metadata = 1.2 spare-group = myhostparegroupname name = server:2 UUID = 18219495:03fda335:3f1ad1ee:a5f5cd45

デバイス= / dev / sdd、/ dev / sde



(私はすぐに質問に答えます、非常に多くの巧妙な言葉を取りmdadm --detail --scan --verbose







mdadmの出力と比較すると、スペアグループのみがあります。 注意してください-2番目の配列では、ホットスペアはありません。 グループが指定されている場合、障害が発生した場合、同じグループの別のアレイのディスクが使用されます。 この例では、/ dev / md1になります。



もちろん、これはすべて-Fモードでmdadmを実行している場合にのみ発生します。 Debianでは、ps出力では次のようになります。

 / sbin / mdadm --monitor --pid-file /var/run/mdadm/monitor.pid --daemonise --scan --syslog




同じシステム上に複数のグループが存在する場合があります。



ちなみに、ここにはささいな汚点があります。--detailを指定してmdadmを呼び出すと、スペアグループについては言及されないため、自分で追加する必要があります。



ローカルおよびグローバルのホットスペア



そして、ここで、悲しいかな、ヨーク。 私の知る限り、mdadmはローカル(1つのアレイのみに属する)と一般的なホットスペアの両方を同時にサポートしていません。 1つのスペアグループを持つ2つのアレイがある場合、1つのアレイからのすべてのホットスペアを別のアレイの利益のために使用できます。



シナリオは見かけほどまれではありません。 簡単なトポロジを次に示します。



SYS_ARRAY

DATA_ARRAY

2ホットスペア



1つのホットスペアをDATA_ARRAYのみが所有し、2番目を共有して、SYS_ARRAYのリザーブとDATA_ARRAYの「第2リザーブレベル」の両方として使用するのが論理的です。



悲しいかな、悲しいかな、これはそうではありません(彼らがコメントで私を思いとどまらせるなら、私はとても幸せです)。



All Articles