GNU/Linux >> Linux の 問題 >  >> Linux

LinuxソフトウェアRAIDで故障したハードディスクを交換する方法

このガイドでは、障害が発生したハードドライブをLinux RAID1アレイ(ソフトウェアRAID)から削除する方法と、データを失うことなく新しいハードディスクをRAID1アレイに追加する方法について説明します。 gdiskを使用してパーティションスキームをコピーするので、GPT(GUIDパーティションテーブル)を備えた大容量ハードディスクでも機能します。

1予備メモ

この例では、2台のハードドライブ/ dev/sdaと/dev/ sdbがあり、パーティションは/ dev/sda1と/dev/ sda2、および/ dev/sdb1と/dev/sdb2です。

/ dev/sda1と/dev/sdb1はRAID1アレイ/dev/md0を構成します。

/ dev/sda2と/dev/ sdb2は、RAID1アレイ/ dev/md1を構成します。

/dev/sda1 + /dev/sdb1 = /dev/md0
/dev/sda2 + /dev/sdb2 = /dev/md1

/ dev / sdbに障害が発生したため、置き換えたいと考えています。

2ハードディスクに障害が発生したかどうかを確認するにはどうすればよいですか?

ディスクに障害が発生した場合、ログファイルに多くのエラーメッセージが表示される可能性があります。 / var / log/messagesまたは/var/ log/syslog。

実行することもできます

cat /proc/mdstat

RAID1アレイが劣化している場合は、文字列[UU]の代わりに[U_]が表示されます。

3故障したディスクの取り外し

/ dev / sdbを削除するには、/ dev/sdb1と/dev/ sdb2を失敗としてマークし、それぞれのRAIDアレイ(/ dev/md0と/dev/ md1)から削除します。

まず、/ dev / sdb1を失敗としてマークします:

mdadm --manage /dev/md0 --fail /dev/sdb1

の出力
cat /proc/mdstat

次のようになります:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[2](F)
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

次に、/ dev/md0から/dev/ sdb1を削除します:

mdadm --manage /dev/md0 --remove /dev/sdb1

出力は次のようになります:

server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1

そして

cat /proc/mdstat

これを表示する必要があります:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

ここで、/ dev / sdb2(/ dev / md1の一部)に対して同じ手順を再度実行します。

mdadm --manage /dev/md1 --fail /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[2](F)
      24418688 blocks [2/1] [U_]

unused devices: <none>
mdadm --manage /dev/md1 --remove /dev/sdb2
server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
      24418688 blocks [2/1] [U_]

unused devices: <none>

次に、システムの電源を切ります:

shutdown -h now

古い/dev/ sdbハードドライブを新しいものと交換します(少なくとも古いものと同じサイズである必要があります。古いものより数MB小さい場合、アレイの再構築は失敗します)。

>

4新しいハードディスクの追加

ハードディスク/dev/ sdbを変更したら、システムを起動します。

ここで最初に行う必要があるのは、/ dev/sdaとまったく同じパーティションを作成することです。これは、gdiskパッケージのコマンドsgdiskを使用して実行できます。 gdiskをまだインストールしていない場合は、次のコマンドを実行してDebianとUbuntuにインストールします。

apt-get install gdisk

CentOSのようなRedHatベースのLinuxディストリビューションの場合:

yum install gdisk

OpenSuSEでの使用:

yast install gdisk

次のステップはオプションですが、お勧めします。パーティションスキームのバックアップを確保するために、sgdiskを使用して両方のディスクのパーティションスキームをファイルに書き込むことができます。バックアップを/rootフォルダーに保存します。

sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb

障害が発生した場合は、sgdiskコマンドの--load-backupオプションを使用してパーティションテーブルを復元できます。

次に、パーティションスキームを/ dev/sdaから/dev/sdbrunにコピーします。

sgdisk -R /dev/sdb /dev/sda

その後、新しいハードディスクのGUIDをランダム化して、それらが一意であることを確認する必要があります

sgdisk -G /dev/sdb

実行できます

sgdisk -p /dev/sda
sgdisk -p /dev/sdb

両方のハードドライブのパーティションが同じかどうかを確認します。

次に、/ dev/sdb1を/dev/ md0に追加し、/ dev/sdb2を/dev/ md1に追加します:

mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
server1:~# mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: re-added /dev/sdb2

これで、両方のaray(/ dev/md0と/dev/ md1)が同期されます。実行

cat /proc/mdstat

いつ終了するかを確認します。

同期中、出力は次のようになります。

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  9.9% (2423168/24418688) finish=2.8min speed=127535K/sec

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  6.4% (1572096/24418688) finish=1.9min speed=196512K/sec

unused devices: <none>

同期が完了すると、出力は次のようになります。

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

これで、/ dev / sdbが正常に置き換えられました!


Linux
  1. Linux:/ dev / console、/ dev / tty、/ dev / tty0の違いは?

  2. /dev/random または /dev/urandom を base64 でエンコードする方法は?

  3. /dev/sdb:そのようなファイルやディレクトリはありません (ただし /dev/sdb1 などは存在します)

  1. / dev/randomを使用してLinuxでランダムパスワードを生成する方法

  2. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い

  3. カーネル:/dev/kmem と /dev/mem を無効化

  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. / dev / stdin、/ dev / stdout、および/ dev / stderrはどの程度移植可能ですか?

  3. / dev/randomと/dev/ urandomをいつ使用するか?