Я хотел бы программно проверить, не сломаны ли RAID-массивы Linux.

Для массива RAID-1 (зеркальный) я использую этот простой метод, который работал в течение нескольких лет с хорошими результатами:

cat /proc/mdstat | grep "_" > /dev/null
EC=$?

Идея этого заключается в том, что /proc/mdstat показывает [UU] если оба жестких диска в порядке, и [U_] если один вышел из строя, [__] если оба вышли из строя, и т.д. Обычно вывод /proc/mdstat имеет нет "_" внутри, так что это работает.

Теперь у нас есть дополнительно массив RAID-0 (чередование). В /proc/mdstat это выглядит так:

md2 : active linear sde1[0] sdf1[1]
      3906699440 blocks super 1.2 0k rounding

У меня вопрос, как я могу определить, не поврежден ли этот массив RAID? Как будет выглядеть mdstat? (Примечание: я знаю, что /dev /md2 будет уничтожен при выходе из строя одного из этих дисков, но я хотел бы программно проверить массив RAID вместо проверки работоспособности виртуального диска md2)

ОС Debian 9

2 ответа2

1

Хотя анализ /proc/mdstat возможен, он становится беспорядочным, если вы хотите специализироваться на массиве или хотите охватить различные уровни RAID и режимы сбоев.

mdadm --detail /dev/md0 | grep -e '^\s*State : ' | awk '{ print $NF; }'

выдаст "чистый" или "активный" для хорошего массива. Вы также можете перебрать /dev/md/* чтобы получить все массивы.

0

Другое решение - запросить состояние диска cat /sys/block/md*/md/dev-*/state . Это проще и не требует прав суперпользователя.

Возможные значения (могут быть разделены запятыми) описаны здесь:

https://www.kernel.org/doc/html/v4.15/admin-guide/md.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .