このガイドでは、障害が発生したハードドライブを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が正常に置き換えられました!