昨日、私のホスティングプロバイダーが私のHDDの1つのSATAケーブルを変更しました。サーバーが再び起動したとき、cat /proc/mdstat
はこれを示しました:
Personalities : [raid1]
md124 : active raid1 sda1[0]
4193268 blocks super 1.2 [2/1] [U_]
md125 : active (auto-read-only) raid1 sda2[0]
524276 blocks super 1.2 [2/1] [U_]
md126 : active (auto-read-only) raid1 sda3[0]
268434296 blocks super 1.2 [2/1] [U_]
md127 : active raid1 sda4[0]
2657109311 blocks super 1.2 [2/1] [U_]
md3 : active (auto-read-only) raid1 sdb4[1]
2657109311 blocks super 1.2 [2/1] [_U]
md2 : active raid1 sdb3[1]
268434296 blocks super 1.2 [2/1] [_U]
md1 : active (auto-read-only) raid1 sdb2[1]
524276 blocks super 1.2 [2/1] [_U]
md0 : active (auto-read-only) raid1 sdb1[1]
4193268 blocks super 1.2 [2/1] [_U]
すべてのアレイが劣化していることを確認して、レスキューコンソールを起動しました。
md3 : active (auto-read-only) raid1 sdb4[1]
2657109311 blocks super 1.2 [2/1] [_U]
md2 : active raid1 sdb3[1]
268434296 blocks super 1.2 [2/1] [_U]
md1 : active (auto-read-only) raid1 sdb2[1]
524276 blocks super 1.2 [2/1] [_U]
md0 : active (auto-read-only) raid1 sdb1[1]
4193268 blocks super 1.2 [2/1] [_U]
次に、不足しているドライブを各アレイに追加しました。
mdadm /dev/md0 -a /dev/sda1
mdadm /dev/md1 -a /dev/sda2
mdadm /dev/md2 -a /dev/sda3
mdadm /dev/md3 -a /dev/sda4
次に、アレイが回復し始めました。完了したら、通常のシステムで再起動し、リカバリを再開しました。
今回は/dev/sdb
が欠落しているとマークされています。
Personalities : [raid1]
md3 : active raid1 sda4[2] sdb4[3]
2657109311 blocks super 1.2 [2/1] [U_]
[===>.................] recovery = 17.1% (456317824/2657109311) finish=288.2min speed=127254K/sec
3時間後にリカバリが停止し、ドライブはスペアとしてマークされます。
md3 : active raid1 sda4[2] sdb4[3](S)
2657109311 blocks super 1.2 [2/1] [U_]
md2 : active raid1 sda3[2] sdb3[1]
268434296 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sda2[2] sdb2[1]
524276 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[2] sdb1[1]
4193268 blocks super 1.2 [2/2] [UU]
これまでのところ、データは失われていません。自分のメールアカウントを確認したところ、サーバーがシャットダウンする前に受け取ったすべてのメールは、3日前にハードドライブに障害が発生していた場所に残っていました。
スペアディスクをRAIDアレイ/dev/md3
に再度追加するにはどうすればよいですか?
私の問題に似た別の質問/回答を見つけました ここ 。これは安全ですか、それともデータ損失が発生する可能性がありますか?:
mdadm --grow /dev/md3 --raid-devices=3
mdadm /dev/md3 --fail /dev/{failed drive}
mdadm /dev/md3 --remove /dev/{failed drive}
mdadm --grow /dev/md3 --raid-devices=2
もちろんバックアップはありますが、使用を避けることができれば、バックアップを作成したいと思います。
EDIT:dmesg
で読み取りエラーを見つけました。これは、おそらくドライブに障害が発生する前のもので、スペアとしてマークされていました。
[17699.328298] ata1.00: irq_stat 0x40000008
[17699.328324] ata1.00: failed command: READ FPDMA QUEUED
[17699.328356] ata1.00: cmd 60/08:00:80:d8:05/00:00:ff:00:00/40 tag 0 ncq 4096 in
[17699.328358] res 51/40:08:80:d8:05/00:00:ff:00:00/40 Emask 0x409 (media error) <F>
[17699.328446] ata1.00: status: { DRDY ERR }
[17699.328471] ata1.00: error: { UNC }
[17699.332240] ata1.00: configured for UDMA/133
[17699.332281] sd 0:0:0:0: [sda] Unhandled sense code
[17699.332308] sd 0:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[17699.332342] sd 0:0:0:0: [sda] Sense Key : Medium Error [current] [descriptor]
[17699.332384] Descriptor sense data with sense descriptors (in hex):
[17699.332415] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
[17699.332491] ff 05 d8 80
[17699.332528] sd 0:0:0:0: [sda] Add. Sense: Unrecovered read error - auto reallocate failed
[17699.332581] sd 0:0:0:0: [sda] CDB: Read(10): 28 00 ff 05 d8 80 00 00 08 00
[17699.332648] end_request: I/O error, dev sda, sector 4278573184
[17699.332689] ata1: EH complete
[17699.332737] raid1: sda: unrecoverable I/O read error for block 3732258944
[17699.377132] md: md3: recovery done.
以前にsmartctl
でドライブをテストしました。
smartctl -l selftest /dev/sda
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 3444 -
[code]
[code]
smartctl -l selftest /dev/sdb
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 3444
ただし、munin
はsmartctl
の終了コード64を示し、smartctl -l error /dev/sda
は次のことを示します。
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
ATA Error Count: 552 (device log contains only the most recent five errors)
......
Error 552 occurred at disk power-on lifetime: 3444 hours (143 days + 12 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 08 80 d8 05 0f
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 08 00 80 d8 05 40 00 20:56:57.342 READ FPDMA QUEUED
ef 10 02 00 00 00 a0 00 20:56:57.342 SET FEATURES [Reserved for Serial ATA]
27 00 00 00 00 00 e0 00 20:56:57.342 READ NATIVE MAX ADDRESS EXT
ec 00 00 00 00 00 a0 00 20:56:57.340 IDENTIFY DEVICE
ef 03 46 00 00 00 a0 00 20:56:57.340 SET FEATURES [Set transfer mode]
Error 551 occurred at disk power-on lifetime: 3444 hours (143 days + 12 hours)
When the command that caused the error occurred, the device was active or idle.
....
編集#2:
mdadm --examine /dev/sdb4
/dev/sdb4:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 38dec3bf:770fb774:6e9a28d0:ff3eac4a
Name : rescue:3
Creation Time : Tue Feb 26 21:21:56 2013
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 5314218895 (2534.02 GiB 2720.88 GB)
Array Size : 5314218622 (2534.02 GiB 2720.88 GB)
Used Dev Size : 5314218622 (2534.02 GiB 2720.88 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 83caa70a:6fe627f8:5a9a22d4:54a457f8
Update Time : Tue Jul 9 23:08:37 2013
Checksum : 7a729887 - correct
Events : 3478472
Device Role : spare
Array State : A. ('A' == active, '.' == missing)
私のハードドライブはちょうど交換されました。
Personalities : [raid1]
md2 : active raid1 sdb3[1]
268434296 blocks super 1.2 [2/1] [_U]
md1 : active raid1 sdb2[1]
524276 blocks super 1.2 [2/1] [_U]
md0 : active (auto-read-only) raid1 sdb1[1]
4193268 blocks super 1.2 [2/1] [_U]
/dev/sdb
のデータが最新であると確信していたため、ツールを使用してデータを復元しませんでしたntilサーバーが再起動し、アレイが壊れたため、パーティションをコピーしましたテーブルを/dev/sdb
から/dev/sda
に変更し、アレイを再構築しました。
copy partitions
sgdisk -R /dev/sda /dev/sdb
mix ids
sgdisk -G /dev/sda
recreate array
--create /dev/md3 --level=1 --raid-devices=2 /dev/sdb4 missing
mdadm /dev/md3 -a /dev/sda3
さて、今回は再構築が終了することを願っています。
アレイを大きくするのをためらっています。より大きな配列は必要ないので、それは間違った操作です。同じことを達成するための回り道かもしれませんが、他に方法がない限り、意図したオペレーターに固執することは良い哲学だと思います。
試してください:
Sudo mdadm manage /dev/md3 --remove /dev/sdb4
Sudo mdadm manage /dev/md3 --re-add /dev/sdb4
また、再構築中の/ dev/sdaまたは/ dev/sdbの読み取り/書き込みエラーについてはdmesg
を監視してください。
/dev/sda
の/dev/sda4
に不良セクタがあるようです。ドライブを交換する必要があります。 /dev/sdb
がS.M.A.R.T.ステータスで良好を示している場合、最も簡単な方法は
/dev/sdc
として表示されると思います)/dev/sda
とまったく同じように再パーティション化します/dev/sdaX
し、/dev/sdcX
に置き換えます/dev/sdb
からmd0
-md2
に再構築しますmdadm
は現在md3
を配列として認識していないため、/dev/sdb4
は特別なものになります。
gddrescue
を使用して/dev/sda4
を/dev/sdc4
に回復し、その後/dev/md3
をアセンブルしてみてください。
Sudo mdadm --assemble /dev/md3 /dev/sdc4 /dev/sdb4
起動するかどうかを確認します。起動したら、ファイルシステムをfsck
してエラーをチェックしてから、sdb4を削除/再追加して再同期を開始します。あなたは悪い/行方不明/損傷しているいくつかのファイルを持っているでしょう、そしてバックアップからそれらを回復する必要があるでしょう。
/dev/sda4
から/dev/sdc4
の適切なコピーを取得できない場合は、/dev/sdc4
と/dev/sdb4
から新しい配列を作成し、コンテンツ全体を復元する必要があります。バックアップから。