Я создал два раздела 2TB HDD ( /dev/sdb1
и /dev/sdc1
) в RAID 1 массив называется /dev/md0
использованием mdadm
на Ubuntu 12.04 LTS Precise Pangolin.
Команда, sudo mdadm --detail /dev/md0
используемая для обозначения обоих дисков в качестве активной синхронизации .
Затем, для тестирования, я потерпел неудачу /dev/sdb1
, удалил его, затем снова добавил его с помощью командыsudo mdadm /dev/md0 --add /dev/sdb1
watch cat /proc/mdstat
показывал индикатор перестройки массива, но я не стал бы часами наблюдать за ним, поэтому я предположил, что программное обеспечение знает, что оно делает.
После того, как индикатор выполнения больше не отображается, cat /proc/mdstat
отображается:
md0 : active raid1 sdb1[2](S) sdc1[1]
1953511288 blocks super 1.2 [2/1] [U_]
И sudo mdadm --detail /dev/md0
показывает:
/dev/md0:
Version : 1.2
Creation Time : Sun May 27 11:26:05 2012
Raid Level : raid1
Array Size : 1953511288 (1863.01 GiB 2000.40 GB)
Used Dev Size : 1953511288 (1863.01 GiB 2000.40 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon May 28 11:16:49 2012
State : clean, degraded
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Name : Deltique:0 (local to host Deltique)
UUID : 49733c26:dd5f67b5:13741fb7:c568bd04
Events : 32365
Number Major Minor RaidDevice State
1 8 33 0 active sync /dev/sdc1
1 0 0 1 removed
2 8 17 - spare /dev/sdb1
Мне сказали, что mdadm автоматически заменяет удаленные диски запасными, но /dev/sdb1
не перемещается в ожидаемую позицию, RaidDevice 1
.
UPDATE (30 мая 2012):badblocks
разрушительный тест чтения-записи всего /dev/sdb
не дали никаких ошибок , как и ожидалось; оба жестких диска являются новыми.
На момент последнего редактирования я собрал массив с помощью этой команды:
sudo mdadm --assemble --force --no-degraded /dev/md0 /dev/sdb1 /dev/sdc1
Выход был:
mdadm: /dev/md0 has been started with 1 drive (out of 2) and 1 rebuilding.
Восстановление выглядит так, как будто оно идет нормально:
md0 : active raid1 sdc1[1] sdb1[2]
1953511288 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.6% (13261504/1953511288) finish=2299.7min speed=14060K/sec
unused devices: <none>
Я сейчас жду этого восстановления, но я ожидаю /dev/sdb1
стать запасным, как пять или шесть раз, которые я пытался восстановить раньше.
ОБНОВЛЕНИЕ (31 мая 2012 года): Да, это все еще запасной. Тьфу!
ОБНОВЛЕНИЕ (1 июня 2012): я пытаюсь предложить команду Адриана Келли :
sudo mdadm --assemble --update=resync /dev/md0 /dev/sdb1 /dev/sdc1
В ожидании восстановления сейчас ...
ОБНОВЛЕНИЕ (02 июня 2012): Нет, все еще запасной ...
ОБНОВЛЕНИЕ (04 июня 2012 г.): PB поднял вопрос, который я упустил из виду: возможно /dev/sdc1
, возникают ошибки ввода-вывода . Я не удосужился проверить, /dev/sdc1
потому что он работал нормально и был совершенно новым, но ошибки ввода-вывода в конце диска - рациональная возможность.
Я купил эти жесткие диски в продаже, поэтому неудивительно, что один из них уже выходит из строя. Плюс, ни у кого из них нет поддержки SMART , поэтому неудивительно, что они были такими дешевыми ...
Вот процедура восстановления данных, которую я только что составил, и я следую:
sudo mdadm /dev/md0 --fail /dev/sdb1
так что я могу вынуть/dev/sdb1
.sudo mdadm /dev/md0 --remove /dev/sdb1
удалить/dev/sdb1
из массива./dev/sdc1
установлен в/media/DtkBk
- Формат
/dev/sdb1
как ext4. - Маунт
/dev/sdb1
к/media/DtkBkTemp
. cd /media
работать в этой области.sudo chown deltik DtkBkTemp
дать мне (логинdeltik
) права на раздел.- Делаем копии всех файлов и каталогов:
sudo rsync -avzHXShP DtkBk/* DtkBkTemp
ОБНОВЛЕНИЕ (6 июня 2012 г.): я провел badblocks
разрушительный тест в режиме записи /dev/sdc
, выполнив следующие процедуры:
sudo umount /media/DtkBk
разрешить снос массива.sudo mdadm --stop /dev/md0
остановить массив.sudo badblocks -w -p 1 /dev/sdc -s -v
чтобы очистить подозрительный жесткий диск, и в процессе проверьте наличие ошибок ввода / вывода. Если есть ошибки ввода-вывода, это не очень хороший знак. Надеюсь, я смогу вернуть деньги ...
Теперь я подтвердил, что на любом жестком диске нет проблем с вводом / выводом .
Из всего этого расследования мои два оригинальных вопроса все еще стоят.
Мои вопросы:
- Почему запасной диск не становится активной синхронизацией?
- Как сделать активным запасной диск?
/dev/sdc1
в то время, когда/dev/sdc1
его читали/dev/sdb1
было написано, и плохие сектора в/dev/sdb1
были бы прозрачно переназначены во время записи.watch -n 60 cat /proc/mdstat
где60
находится количество секунд между обновлениями.У меня была точно такая же проблема, и в моем случае я обнаружил, что активный raid-диск страдал от ошибок чтения во время синхронизации. Поэтому новый диск был более успешно синхронизирован и поэтому был помечен как запасной.
Возможно, вы захотите проверить ваши / var / log / messages и другие системные журналы на наличие ошибок. Кроме того, также может быть хорошей идеей проверить состояние SMART на вашем диске:
1) Запустите короткий тест:
2) Показать результаты теста:
В моем случае это вернуло что-то вроде этого:
Мне пришлось загрузить живой дистрибутив и вручную скопировать данные с дефектного диска на новый (в настоящее время «запасной»).
источник
У меня была точно такая же проблема, и я всегда думал, что на моем втором диске, который я хотел добавить в массив, были ошибки. Но это был мой оригинальный диск с ошибками чтения.
Вы можете проверить это
smartctl -t short /dev/sdX
и увидеть результаты через несколько минутsmartctl -l selftest /dev/sdX
. Для меня это выглядело так:Я пытался исправить их с помощью этого руководства . Это было весело :-). Я знаю, что вы проверили оба диска на наличие ошибок, но я думаю, что ваша проблема в том, что диск, который все еще находится в массиве md, имеет ошибки чтения, поэтому добавление второго диска завершается неудачно.
Обновить
Вы должны дополнительно запустить
smartctl -a /dev/sdX
Если вы видите Current_Pending_Sector> 0 что-то не так197 Current_Pending_Sector 0x0012 098 098 000 Old_age Always - 69
Для меня определенно была проблема, что я удалил диск из рейда только для тестирования, и повторная синхронизация не могла быть выполнена из-за ошибок чтения. Синхронизация прервана на полпути. Когда я проверил мой диск, который все еще был в raid-массиве, smartctl сообщил о проблемах.
Я мог бы исправить их с помощью приведенного выше руководства и увидел, что число ожидающих секторов уменьшилось. Но их было много, и это долгая и скучная процедура, поэтому я использовал свою резервную копию и восстановил данные на другом сервере.
Поскольку у вас не было возможности использовать SMART, я полагаю, что в ходе вашего самопроверки не было обнаружено этих поврежденных секторов.
Для меня это урок: проверь свои диски перед тем, как удалить их из массива.
источник
У меня была похожая проблема, и я исправил ее, увеличив количество дисков RAID от 1 до 2.
источник
ОБНОВЛЕНИЕ (24 мая 2015 г.): Через три года я выяснил истинную причину деградации массива RAID 1.
tl; dr: Один из дисков был неисправен, и я не заметил этого, потому что я только провел полное тестирование поверхности на хорошем диске.
Три года назад я не думал проверять какие-либо журналы о проблемах ввода-вывода. Если бы я подумал проверить
/var/log/syslog
, я бы увидел нечто подобное, еслиmdadm
бы разочаровался в перестройке массива:Чтобы получить этот вывод в журнале, я искал первый проблемный LBA (14381058, в моем случае) с этой командой:
Не зря
md
сдался! Он не может восстановить массив с плохого диска.Новая технология (улучшенная
smartmontools
совместимость оборудования?) Позволила мне получить SMART- информацию с диска, включая последние пять ошибок (из 1393 ошибок на данный момент):Ааа ... это сделало бы это.
Теперь я решил этот вопрос в три простых шага:
ОБНОВЛЕНИЕ (19 июля 2015 г.): Для всех, кому интересно, на диске, наконец, закончились секторы для переназначения:
источник
В моем случае это был плохой исходный диск. Хотя в то время это выглядело так, как будто это было не так (/ proc / mdstat обычно превышал 99,9%, но на самом деле он терпел неудачу на уровне 99,97%, что соответствовало окончанию регулярной синхронизации). Так что вам нужно проверить
dmesg(1)
вывод - он скажет вам, есть ли какие-либо ошибки чтения.Вы можете увидеть подробности моего случая в ошибке Debian # 767243 . Мне, наконец, удалось завершить синхронизацию путем принудительной перезаписи нескольких поврежденных секторов на исходном диске (которые, к счастью, не использовались в моем случае, в противном случае произошла бы потеря данных)
источник
Вы могли бы попробовать
обновить диски и синхронизировать их.
источник
/dev/sdb1
все еще не становится "активным" после того, как это восстановлено как запасной.Не уверен, что это сработает, так как вы уже
--add
редактировали диск, но,--re-add
похоже, вам нужна эта опция.Или, может быть, вам нужно
--grow
устройство на 2 активных дискаmdadm --grow -n 2
,? Не проверено, поэтому будьте осторожны.источник
sudo mdadm --grow -n 2
был одним из первых, что я сделал, поэтомуsudo mdadm --detail /dev/md0
показывает два слота. Извините, это не работает.Я бы порекомендовал удалить sdc1, обнулить суперблок на sdc1, а затем снова добавить его.
источник