MDADM - 既存のRAID1に新しいハードドライブを追加する

MDADM - 既存のRAID1に新しいハードドライブを追加する

私の専用サーバーには、2x1TB HDDを搭載したRAID1アレイがあり、いっぱいです。

新しいハードドライブを追加したいです(すでに物理的に追加されています)。

私は何をすべきかわかりません。

データが失われるのは怖いです。

私はこれを見つけました地図時間

 [root@server ~]# fdisk -l

 Disk /dev/nvme2n1: 1024.2 GB, 1024209543168 bytes, 2000409264 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes


 Disk /dev/nvme1n1: 1024.2 GB, 1024209543168 bytes, 2000409264 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk label type: dos
 Disk identifier: 0x844cebe6

Device Boot      Start         End      Blocks   Id  System
 /dev/nvme1n1p1            2048    67110911    33554432   fd  Linux raid autodetect
 /dev/nvme1n1p2        67110912    68159487      524288   fd  Linux raid autodetect
 /dev/nvme1n1p3        68159488  2000407215   966123864   fd  Linux raid autodetect

 Disk /dev/nvme0n1: 1024.2 GB, 1024209543168 bytes, 2000409264 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk label type: dos
 Disk identifier: 0xcb3fcb0e

    Device Boot      Start         End      Blocks   Id  System
 /dev/nvme0n1p1            2048    67110911    33554432   fd  Linux raid autodetect
 /dev/nvme0n1p2        67110912    68159487      524288   fd  Linux raid autodetect
 /dev/nvme0n1p3        68159488  2000407215   966123864   fd  Linux raid autodetect

 Disk /dev/md1: 535 MB, 535822336 bytes, 1046528 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes


 Disk /dev/md2: 989.2 GB, 989175545856 bytes, 1931983488 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes


 Disk /dev/md0: 34.3 GB, 34325135360 bytes, 67041280 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes

答え1

あなたできるRAID1を追加...交換する場合両方ディスク。試してみましたが、次のように動作します。

  • 動作中のRAID1アレイ(md0)から2x4Tドライブ(sda1およびsdb1)から起動
  • 2つの新しい16Tドライブを購入して接続しました(sdcとsdd)。
  • フルドライブパーティション(sdc1とsdd1)を使用してパーティションを分割します。
  • RAID1に両方を追加します。mdadm /dev/md0 --add /dev/sdc1 /dev/sdd1
  • 以前のドライブのいずれかでエラーが発生しました。mdadm /dev/md0 -f /dev/sda1
  • 同期が完了するまで待ちます。watch cat /proc/mdstat
  • 別の古いドライブでエラーが発生しました。mdadm /dev/md0 -f /dev/sdb1
  • 同期が完了するまで待ちます。watch cat /proc/mdstat
  • アレイから既存のドライブを取り外します。mdadm /dev/md0 -r /dev/sda1 /dev/sdb1
  • アレイの増加:mdadm --grow /dev/md0 --size max
  • ファイルシステム拡張:resize2fs /dev/md0

..これで、もともと4TBの代わりに14TB RAID1を使用するようになりました。

答え2

これにより、mdadmraid1からraid5への移行パスがあります。したがって、必要なのは新しいドライブ、それに応じてパーティションを分割し、既存のRAIDを拡張することだけです。

2つのディスクを使用すると、mdadmのraid5はraid1と同じディスクレイアウトを使用するため、すぐにraid5に変換できます(名前のみ)。

mdadm --grow /dev/md2 --level=5

2ディスクRAID5を3ディスクRAID5に拡張し、すべてのデータを再構成します。

mdadm --grow /dev/md2 --raid-devices=3 --add /dev/newXp3

再構成が完了すると、追加のストレージ容量が利用可能になり、resize2fs同様の方法でファイルシステムを拡張できます。


メモ:

完全には明確ではありませんが、raid1をブートパーティションとして使用しているようです。ブートローダがraidをサポートしていない場合、つまりバージョン0.90または1.0メタデータ(メタデータがパーティションの末尾にある)を使用している場合はraid5が利用できないため、ブートローダはraidの代わりに通常のファイルシステムを表示します。

これはraid1でのみ機能するため、あなたおよび/dev/md0/またはあなたのデバイスに対して/dev/md1raid1に固執する必要があります。レベルを変更せずに上記のように3つのディスクに増やすことができます。

前述のように、raid1を3つのディスクに増やすと容量が増えませんが(raid5が必要です)、冗長性は増えます(3方向ミラーraid1)。

答え3

このチュートリアルは「RAID-1の成長」に関するものなので、役に立たないようですが、これを行う上で最も重要なことは言及していません。できない(より大きなドライブに再構築しないと不可能) - アレイに他のドライブを追加することで、せいぜい冗長性を追加できますが、アレイの記憶容量は依然として同じです。 RAID-1 を追加すると、より多くのコピーがあるため、データはより安全になりますが、より多くの記憶容量を得ることはできません。

RAID-1はアレイ内のすべてのデバイスに同じデータをミラーリングし、同じサイズの複数のドライブを含むRAID-1アレイの容量は一つこれらのドライブの容量(さまざまなサイズのドライブのRAID-1の容量は、最小中)。

ストレージ容量を増やすには、リカバリモード(またはリカバリCD / DVD / USB /など)で起動し、既存のRAID-1アレイのフルバックアップを実行し、新しいRAID-5アレイに復元する必要があります。あるいは、mdadmの代わりにLVMのRAID-5機能を使用することもできます。 LVMは非常にRHELとCentosでよくサポートされ文書化されており、これらのディストリビューションのほぼ基本的な環境です。または、以下を参照してZFSを使用することもできます。

別の 1 TB ドライブ (たとえば、他の nvme ドライブではなく機械式 HDD) がある場合は、それをバックアップの対象として使用できます。次に、3つのnvmeドライブをすべて使用して新しいRAID-5アレイを作成し、すべてをここに復元します。

それ以外の場合は、新しいnvmeドライブをバックアップ先として使用し、すべてをここにバックアップし、元の2つのnvmeドライブを使用して1つを作成する必要があります。退化したRAID-5アレイ、すべてをここに復元してから(RAID-5アレイでシステム実行をテストした後)、新しいnvmeをアレイに追加します。

新しいRAID-5アレイは2TBです(Nドライブを搭載したRAID-5アレイの容量はN-1です。

私はrsyncバックアップと復元を好む。クラッシュ、停電、またはプロセスが中断された場合は、最初からやり直してコピーしたのと同じファイルをコピーする必要なく再起動すると、中断した部分から続行できるためです。前に。

このサイトには、これを行う方法、データを新しいドライブに移行する方法に関する質問の検索、ZFSおよび(またはZFS)に関する質問と回答に特に注意する方法のステップバイステップの例がたくさんありますmdadm。ディスクイメージのビットコピーではなくファイルベースのバックアップとリカバリを実行したいので、lvm使用について話す内容は無視してください。dd私は長年にわたってこのトピックについていくつかの答えを書いていることを知っています(例:LVMに移行する方法は?そして既存のパーティションをファイルシステムと統合できますか?)、他の人も同じです。

すべてを読んだら、何をすべきかを段階的に計画してください。移行災害は慎重な計画で避けることができます。計画を立てないと、災害が発生することはほぼ確実です。特に以前に一度もやったことがない場合ならさらにそうです。私は何年もかけて物理マシンと仮想マシンの両方を使用して何百もの移行を行ってきました。

システムで仮想マシンを実行できる場合は、RAID-1アレイに仮想マシンを設定し、追加のディスクを含むRAID-1アレイに最小Centosをインストールして移行を実践することをお勧めします。今後物理ドライブで試してみてください。 VMの仮想ディスクは大きくする必要はなく、それぞれ数百MBで十分です。最小のオペレーティングシステム(およびmdadm、lvm、rsync、およびその他の必要なツール)にも十分です。これにより、実際の移行計画がはるかに簡単になり、以前に一度も行ったことのない作業を計画することは困難です。

プロセスを理解し、どのような問題が発生するのか(そしてその問題から回復する方法)を知るまで数回練習してください。また、mdadm RAID-1からmdadm RAID-5へ、mdadm RAID-1からLVM RAID-5またはZFSへのさまざまなタイプの移行を練習して、どちらが最適かを判断するのに役立ちます。最初の設定が完了したら、RAID-1仮想ディスクの2つのコピーを作成して簡単に作成できます。これにより、もう1つの練習を実行するために仮想マシンを「起動状態」にすばやく簡単に復元できます。


別のオプションは、RAID-5の代わりにZFS RAIDZを使用することです。この方法はほぼ同じ記憶容量を提供しますが、ZFSは透明な圧縮をサポートしているため、テキスト(構成ファイル、ログファイル、ソースコード、マークダウン、またはTeX)などの圧縮率の高いファイルをサポートします。ファイル、HTML、XML、jsonなど)は、ディスク容量を少なくします。すでに圧縮されているファイル(PDFやほとんどのビデオ、画像、オーディオ形式)は、以前と同じスペースを使用します。また、ZFSには、エラー検出と修正、スナップショット、さまざまな属性(圧縮タイプ、暗号化、レコードサイズなど)を持つさまざまな種類のデータに対して別々のデータセットを作成する機能など、他の利点もあります。

ZFS dkmsモジュールとZFSユーティリティをインストールする必要があります。これはDebianとUbuntuでは非常にシンプルでシンプルですが、Centosではやったことがないので、どれほど難しいかわかりません。これについてのブログ投稿とチュートリアルがあると確信しています。

答え4

ただコメントをつけようとしましたが、コメントできる評判が足りず、回答として投稿する必要があります。

raid1に別のディスクを追加すると、スペースがなくなった別のミラーが追加されます。 Raid5/6は、パリティ計算に関連する計算のため、好みが低下しています[引用が必要]。もちろん、アプリケーションによって異なります。

raid10はraid1に似ていますが、ディスクの数が増えるにつれてサイズが大きくなる可能性があります(もともとネストされたraid1 / 0(偶数のドライブが必要です)が、raid10は奇数のドライブを使用できます)。同等。ドライブ2個raid10はraid1なので無料で変更できます。

 mdadm <device> --grow --raid-level=10

デフォルトのレイアウトは2に近く、これで十分です。ドライブ全体に分散された各ブロックの2つのコピーが得られます(現在は2つなので、まだRAID 1です)。
次に、新しいドライブを追加します。

mdadm <device> --add /dev/new-disk
mdadm <device> --grow --raid-devices=3

今、私たちの攻撃にはより多くの空き容量がありますが、ファイルシステムはまだ元のサイズなので、最後に次のようになります。

resize2fs <device>

関連情報