web-dev-qa-db-ja.com

LinuxソフトウェアRAID5のアップグレード

私の自宅のLinuxサーバーには4つのドライブソフトウェアRAID5があり、各SATAドライブにはsd [abcd] [12]という名前の2つのパーティションがあります。/dev/md1はsd [abcd] 1から構築され、/ dev/md2はsd [abcd] 2から構築されます。各ドライブは500GB、各パーティションは250GBです。 LVMを使用して、md1とmd2を単一のボリュームグループにマージします。

これらのドライブをそれぞれ1TBにアップグレードするための良い手順は何でしょうか?使用可能なSATAポートがもうありません。ドライブの1つを引き出し、2つの250GBパーティションと500GBパーティションでパーティション分割された新しい1TBドライブと交換し、アレイを再構築することを検討しました。ドライブごとに繰り返し、sd [abcd] 3に新しいRAID5を作成します。これは「最適とは言えない」ようです。同期/リカバリプロセスを悪用することは、これを行う正しい方法ではないようです。

外部USBエンクロージャーを使用し、新しい1TBディスクを貼り付け、パーティションを作成し、それをmd1およびmd2アレイに追加し、再同期してから、アレイから古いディスクの1つを削除し、ディスクごとにそれを繰り返す方が理にかなっていますか?

複数のアレイを同じディスクに分散させる理由は実際にはありません。したがって、プロセスでそれが排除されれば、それは良いことです。

あなたの提案をありがとう!

2
joev

まず、ドライブを複数のRAIDアレイに分割し、それらをLVMとマージして戻すことはほとんど意味がありません。

USBは非常に低速で、CPUを集中的に使用するため、4つのドライブを順番に接続し、その量のデータをコピーするには時間がかかります。ドライブを一度に1つずつ交換したいだけです。

これに対する私のレシピは次のようになります(データが非常に重要で、非常に妄想的である場合、この操作中にホットスペアとしてUSBドライブを追加できますが、さらに時間がかかります):

  1. 古いドライブの1つを引き出し、新しいドライブを挿入します。同期するのを待ちます
  2. 残りのドライブについても繰り返します
  3. これで、2つの250GBパーティションとして500GBが割り当てられた4つの1TBドライブと、500GBの未使用スペースができました。
  4. ディスク全体を使用するように、既存のパーティションの1つを250GBから750GBに拡張します
  5. mdadm growを使用して、拡張パーティションを含むレイドを拡張します
  6. サイズ全体が使用されるようにLVMを拡張します
  7. 250GBx4アレイpvをLVMから削除します。これにより、データが小さなパーティションから大きなパーティションに移動するため、時間がかかります
  8. 250GBパーティションを削除し、750GBパーティションに対して拡張プロセスを繰り返します

この後、それぞれ1つの1TBパーティションを持つ4つの1TBディスクが作成され、LVMが上部にあるRAID5に結合されます。完璧な結果。

提案どおりに再同期と置換のダンスを行うこともできますが、完了したら、すべてのファイルをmd1と2からmd3にコピーし、md1と2のパーティションを削除し、md3のパーティションを展開して新しいスペースを使用します。これを行うには、TBドライブの最初のパーティションをmd3の一部にすることで、後でデータを再配置する必要がなくなります。

1
pjz

サンドボックスでそのような作業を行うことをお勧めします。
パーティションではなくファイルを使用してこのようなサンドボックスをセットアップする方法について、より長い記事を書きました: LinuxソフトウェアRAIDでraid5ドライブを「原子的に」交換できますか?

1
ThorstenS

現在のHD使用量が1TB未満の場合、私は次のことをしたくなるでしょう。

  • 500GBドライブの1つを引き出し、1TBをインストールします
  • すべてを1TBドライブにコピーします
  • 他の1TBドライブをインストールします
  • 劣化した新しいRAID5 + lvmを作成し、他のディスクと希望どおりにパーティション分割します
  • スタンドアロンの1TBドライブから劣化したraid5にデータをコピーします
  • スタンドアロンドライブをアレイに追加します。
0
Zoredache