LINUX.ORG.RU
ФорумAdmin

Soft RAID1 выкидывает рабочие диски

 ,


0

2

Всем мне нравится mdadm - простота и гибкость настройки и переноса и т.п.

Кроме одного - нет обратной связи и логики выкидывании диска из массива при ошибке.

Т.е. во всяком случае у меня переодически как один из винтов (в простейшей конфе зеркала из 2х) начинает «сыпаться», выкинуть может и рабочий диск.

Т.е. возникает рассинхронизация массива в результате ошибок I/O, и mdadm выкидывает, как он говорит, «старый» (non-fresh) диск из массива.

Правда порой «старым» оказывается вполне рабочий диск, а в массиве остается помирающий.

Всё еще просто, когда можно вновь добавить рабочий диск, дождаться ресинхронизации и выкинуть уже дохлый.

Но иногда из-за дохлости диска не проходит ресинхронизация и соотв. рабочий диск опять помечается «дохлым».

Я конечно могу легко создать новый массив, перенести данные туда «ручками» и т.п. Но тут возникает простой или даже ребут, если раздел был корневым. В любом случае неудобно. Когда выкидывается «правильный, битый» диск - можно online с hotswap'ом всё сделать без простоя.

Есть какие-либо не костыльные варианты решения данной проблемы? Ядро то ведь знает какой из дисков битый (ошибки в dmesg видны явно), smartd знает. Как-то их подружить можно?


Проверь все диски с помощью badblocks, у меня куча массивов, и mdadm не выкидывает ничего без причины

xorik ★★★★★
()
Ответ на: комментарий от xorik

Я и так по SMART вижу сейчас - sda с ошибками, sdb проверил и long SMART тест и badblocks read-write тест. Всё чисто. Однако mdadm выкидывает именно sdb из массива:

md: considering sdb2 ...
md:  adding sdb2 ...
md: sdb1 has different UUID to sdb2
md:  adding sda2 ...
md: sda1 has different UUID to sdb2
md: created md1
md: bind<sda2>
md: bind<sdb2>
md: running: <sdb2><sda2>
md: kicking non-fresh sdb2 from array!
md: unbind<sdb2>
md: export_rdev(sdb2)
raid1: raid set md1 active with 1 out of 2 mirrors
Если сделать mdadm /dev/md1 --add /dev/sdb2 - начинается синхронизации, но как только доходит до ошибки на sda2 и происходит ошибка, sdb2 не добавляется как рабочий, а сразу ставится в [F] (faulty), хотя битый как раз таки sda:
# smartctl -a /dev/sda
...
Error: UNC 32 sectors at LBA = 0x0a8ab0f0 = 176861424
...

nstorm
() автор топика
Последнее исправление: nstorm (всего исправлений: 2)
Ответ на: комментарий от nstorm

Тогда советую примонтировать raid, сделать другой raid на живом винте, сбэкапить туда всё и не использовать винт с бэдами (заменить на нормальный)

xorik ★★★★★
()
Ответ на: комментарий от xorik

Прочитайте мой первый пост внимательнее. Предпоследний абзац.

nstorm
() автор топика
Ответ на: комментарий от nstorm

md: kicking non-fresh sdb2 from array!

это значит что диск sdb2 имеет более старые данные, чем sda2, о чем мд тебе и говорит аглицким по белому.

А вот почему он его изначально выкинул, нужно смотреть в логи более ранние. У меня тоже никаких претензий к mdadm нет, диски выкидывает только после многочисленных i/o ошибок к нему.

blind_oracle ★★★★★
()

Короче, пост не читал, но если диски «вылетают», то надо решать проблему с дисками, а не «учить» mdadm работать на сбойном оборудовании.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Короче, пост не читал

Ну понятно, как и большинство. Просьба остальным тру админам - не читали, тогда и не пишите.

это значит что диск sdb2 имеет более старые данные, чем sda2, о чем мд тебе и говорит аглицким по белому.

Я умею читать. Проблема в том, что ошибки именно на sda, а sdb целый. Ранее в логах лишь ошибки I/O на _sda_. А mdadm упорно выкидывает sdb, лишь потому, что там таймстамп обновился позже.

nstorm
() автор топика
Последнее исправление: nstorm (всего исправлений: 1)
Ответ на: комментарий от nstorm

Покажи логи целиком. Начиная от момента как один из дисков засбоил и заканчивая попыткой добавления.

true_admin ★★★★★
()

Может как-то хитро побились именно метаданные массива, что битый диск теперь всегда выглядит сверхновым. Можно было бы подумать что вам сильно «повезло», но вот слово «переодически» настораживает. Проблема явно не в mdadm.

af5 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.