У меня только что была в значительной степени та же проблема с массивом RAID1. Поврежденный сектор был правильным в начале одного из разделов - сектор 16/dev/sdb2. Я следовал инструкциям выше: после проверки, что логический блок 2 не использовался файловой системой и стараться, добираются, dd ищут и пропускают правильный путь вокруг, и обнуленный 1 блок файловой системы:
# dd if=/dev/zero of=/dev/md0 bs=4096 count=1 seek=2
Что это делало? Это не зафиксировало поврежденный сектор. Это, я теперь знаю, то, потому что/dev/md0 не отображается непосредственно на/dev/sdb2, необходимо принять во внимание СМЕЩЕНИЕ ДАННЫХ RAID! Больше на этом ниже. То, что это действительно делало, было маленьким, но потенциально разрушительным куском дерьма в моей файловой системе. Оказывается, что логический блок 2 из/dev/md0 содержали полезные метаданные файловой системы и были прекрасны на обоих дисках, пока я не гадил на обеих копиях путем записи в/dev/md0. К счастью e2fsck-y/dev/md0 решил проблему (после извергания сигнализирующей суммы вывода) без очевидной потери данных. Урок извлечен: если debugfs icheck говорит 'блок, не найденный', это не обязательно означает, что соответствующие секторы не используются.
Назад к данным сместите: используйте mdadm для нахождения смещения как это:
# mdadm --examine /dev/sdb2
/dev/sdb2:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : ef7934b9:24696df9:b89ff03e:b4e5a05b
Name : XXXXXXXX
Creation Time : Sat Sep 1 01:20:22 2012
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 1953241856 (931.38 GiB 1000.06 GB)
Array Size : 976620736 (931.38 GiB 1000.06 GB)
Used Dev Size : 1953241472 (931.38 GiB 1000.06 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : f3b5d515:446d4225:c2191fa0:9a9847b8
Update Time : Thu Sep 6 12:11:24 2012
Checksum : abb47d8b - correct
Events : 54
Device Role : Active device 0
Array State : AA ('A' == active, '.' == missing)
В этом случае смещение данных является 262 144 секторами 512 байтов. Если Вы, dd от/dev/md0 и сравнивают его с данными из необработанного раздела со смещением 131072K, Вы найдете, что они соответствуют. Таким образом в моем случае, логический блок 2 (секторы 16 - 23)/dev/sdb2 даже не находится в файловой системе; они находятся в суперблоке RAID, о котором можно читать здесь: https://raid.wiki.kernel.org/index.php/RAID_superblock_formats - для версии 1.2, это состоит из 256 байтов + 2 байта для каждого устройства в массиве, все стартовые 4 096 байтов в, таким образом, в моем случае, поврежденный сектор не использовался. Соответствующие секторы/dev/sdc2 (другая половина массива RAID1) являются нулем, таким образом, я полагал, что будет безопасно сделать это:
# dd if=/dev/zero of=/dev/sdb2 bs=4096 count=1 seek=2
Это работало!
Мне удалось решить проблему первой установкой наследия 304,08 драйвера и затем обновление до 319 драйверов. Я не абсолютно уверен, почему это работало, но каждая вещь правильно настроена теперь.