Raid

RAID1 恢復過程跳過壞塊

  • August 19, 2019

我有一個帶有一個輕微損壞磁碟的 RAID1 陣列/dev/sdb。我將一個新硬碟/dev/sda放入此陣列以進行鏡像sdb(然後我將更換sdb為新硬碟)。

# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda2[2] sdb2[1]
     999872 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda3[2] sdb3[1]
     1952380736 blocks super 1.2 [2/1] [_U]
     [>....................]  recovery =  2.7% (53083136/1952380736) finish=640.0min speed=49453K/sec

unused devices: <none>

但這個“恢復”過程在 30% 左右停止:

# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda2[2] sdb2[1]
     999872 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda3[2](S) sdb3[1]
     1952380736 blocks super 1.2 [2/1] [_U]

unused devices: <none>

我想這裡的問題是/dev/sdb有大約 100 個壞塊(用 發現badblocks -v -b 512 /dev/sdb > sdb-bads.log)。無法讀取/寫入它們:

# tail -n 2 sdb-bads.log
1039341414
1039341415

# dd if=/dev/sdb of=/dev/null bs=512 skip=1039341414 count=1
dd: error reading '/dev/sdb': Input/output error
0+0 records in
0+0 records out
0 bytes copied, 9.33531 s, 0.0 kB/s

# dd if=/dev/sdb of=/dev/null bs=512 skip=1039341415 count=1
dd: error reading '/dev/sdb': Input/output error
0+0 records in
0+0 records out
0 bytes copied, 3.36192 s, 0.0 kB/s

我的問題是:

  • 是否有可能找出受影響的文件(假設 RAID1)?據我了解,諸如debugfs使用物理文件系統而不是虛擬 RAID 之類的工具。
  • 是否有機會在sda同步期間跳過這些塊(假設我可以失去一些數據)以完成 RAID1 鏡像過程?

最後我不得不重寫所有壞扇區(用badblocks -v -b 512 /dev/sdb > sdb-bads.log命令發現)hdparm --write-sector。我失去了一些數據,但至少現在我可以更換sdb新的硬碟,並從sda.

引用自:https://unix.stackexchange.com/questions/535743