Этот программный массив raid1 вышел из строя? (Mdadm)
Длинная версия: я использую компьютер Red Hat Enterprise Linux 5 (REHL5) с программным обеспечением raid1 (mdadm).
Несколько дней назад я пошел, чтобы сделать резервную копию некоторых данных MySQL, и внезапно я больше не мог войти в машину. Я набрал имя пользователя для входа в систему, а затем он просто сидел там. Если нажата управляющая последовательность, они появятся на экране, но она никогда не войдет в систему. Она также не реагирует на ctrl+alt+delete. Таким образом, я сделал жесткую силу вниз.
Я загрузил его обратно и контролировал массив raid1 через:
mdadm --detail /dev/md1
Этот массив содержит корневую точку монтирования.
Он начал делать повторную синхронизацию массива. Я не уверен, произошло ли это из-за аварии или просто потому, что я отключил питание. В любом случае, я позволю этому закончить:
[f@mysqldatanode ~]# mdadm --detail /dev/md1
/dev/md1:
Version : 00.90.03
Creation Time : Thu Apr 19 15:28:52 2007
Raid Level : raid1
Array Size : 479893568 (457.66 GiB 491.41 GB)
Device Size : 479893568 (457.66 GiB 491.41 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent
Update Time : Fri Dec 25 10:03:50 2009
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : ab4849de:1f4f41c4:defd01e8:a4979ca6
Events : 0.78
Number Major Minor RaidDevice State
0 8 2 0 active sync /dev/sda2
1 8 18 1 active sync /dev/sdb2
Я просмотрел некоторые журналы (/var/log/messages*) и обнаружил несколько сообщений, подобных приведенному ниже, которые указывают на проблему с жестким диском:
Dec 21 11:39:47 localhost kernel: sd 0:0:1:0: SCSI error: return code = 0x08000002
Dec 21 11:39:47 localhost kernel: sdb: Current: sense key: Medium Error
Dec 21 11:39:47 localhost kernel: Additional sense: Unrecovered read error
Dec 21 11:39:47 localhost kernel: Info fld=0x3348912
Dec 21 11:39:47 localhost kernel: end_request: I/O error, dev sdb, sector 53774610
Dec 21 11:39:47 localhost kernel: raid1:md1: read error corrected (8 sectors at 53565760 on sdb2)
Dec 21 11:39:48 localhost kernel: raid1: sdb2: redirecting sector 53565648 to another mirror
Тогда я попытался найти плохие блоки, и они снова заблокировались таким же образом.
[f@mysqldatanode ~]# badblocks -s /dev/md1
Checking for bad blocks (read-only test): 0/ 479893568
Итак, как мне оценить здоровье двух дисков? Поскольку рассматриваемый массив содержит корневую точку монтирования, нужно ли перемещать их на другой компьютер для их анализа?
2 ответа
Вы можете дать сбой устройству /dev/sdb через mdadm (лучше всего убедиться, что вы провалили все устройство, т.е. все mds, которые его запускают), а затем проверить его на наличие ошибок, но из того, что вы описываете, вам, скорее всего, лучше просто заменить устройство,
У меня были идеальные устройства, которые выходили из строя регулярно, я продолжал повторно добавлять отклоненное устройство, пока компьютер не начал зависать, как вы описали. Замена неисправного устройства решила проблему.
В любом случае вы должны сделать резервную копию как можно скорее.
Ошибки чтения встречаются часто, но большинство из них исправляют сами диски. Некоторые диски лежат и сообщают о хорошем чтении в информации SMART, а некоторые сообщают правильное количество ошибок и количество восстановленных ECC. Некоторые диски (в частности, перпендикулярные) могут иметь миллионы ошибок чтения и восстанавливать 99,9999% (или более) ECC.
Однако на этот раз /dev/sdb2 не удалось правильно прочитать 8 секторов.
Затем софтрайд просто восстанавливается путем извлечения недостающих секторов с другого диска и их перезаписи. Тогда он решил, что все снова хорошо.
Это МОЖЕТ быть признаком плохого диска, но это также может быть ошибка "один раз в mtbf", случайные частицы пыли или что-то еще. Подождите и посмотрите, не появится ли больше ошибок, прежде чем вы удалите этот диск.