У меня есть сервер Ubuntu 18, использующий программный массив RAID-1, и smartctl
указывает, что мой / dev / sda
дает сбой. Оба параметра Throughput_Performance
и Reallocated_Sector_Ct
указаны как «FAILING_NOW».
Однако это не привело к сбою RAID, поскольку / proc / mdstat
по-прежнему указывает на оба диски в порядке.
К сожалению, хотя smartctl показывает, что мой / dev / sdb
в порядке, ошибка на / dev / sda
каким-то образом привела к тому, что моя файловая система стала доступной только для чтения. Любая попытка записи или удаления файлов сообщает об ошибке, например:
rm: cannot remove '<somefile>': Read-only file system
Я понимаю, что Linux делает это, когда обнаруживает возможный сбой диска, чтобы предотвратить дальнейшее повреждение записи.
Тем не менее, я думал, что вся суть RAID-1 , и причина, по которой я его использовал, заключалась в том, что он позволяет избежать отказа одного диска из-за повреждения файловой системы за счет зеркалирования всех данных между двумя дисками? Сбой диска должен остановить зеркалирование, но по-прежнему предоставить ОС полный доступ для чтения / записи к оставшемуся диску, верно?
Я собираюсь заменить неисправный диск, но как мне тем временем исправить файловую систему, и предотвратить отказ одного диска от поломки моего массива RAID-1?
Если диск повреждает данные, уровень MD не знает об этом, и он может возвращать или хранить недопустимые данные, которые он, в свою очередь, может использовать для записи поврежденных данных обратно на другой диск; если он получит неправильное представление о структуре файловой системы, он примет неправильные решения.
Уровень MD не считывает данные с нескольких дисков и не сравнивает их, а также не слишком разбирается в сбоях дисков. Он будет постоянно пытаться использовать неисправные диски. Вот почему я отслеживаю варианты «исключения ata» в моем журнале ядра, потому что они указывают на то, что диск выйдет из строя задолго до чего-либо еще. Затем я просто mdadm --manage / dev / mdX --remove / dev / xxx
диск и добавляю еще один с помощью mdadm --manage / dev / mdX --add / dev / xxx
.
А пока вы можете удалить неисправный диск, возьмите полный dd
клон устройства / dev / mdX
в качестве резервной копии ( dd if = / dev / mdX of = / some / file / on / some / other / device bs = 4M
) (или записать в stdout и перенаправить через ssh) и с sysrescue CD / USB-накопителя, выполнить fsck -f -C / dev / mdX
, несколько раз (это оказалось необходимым).
(вместо этого может быть разумнее создать резервную копию диска компонента, а не зеркало)