1

У нас очень странная проблема на работе. Наш сервер Ubuntu имеет 6 дисков, настроенных с RAID1 следующим образом:

/dev/md0, consisting of:
/dev/sda1
/dev/sdb1

/dev/md1, consisting of:
/dev/sda2
/dev/sdb2

/dev/md2, consisting of:
/dev/sda3
/dev/sdb3

/dev/md3, consisting of:
/dev/sdc1
/dev/sdd1

/dev/md4, consisting of:
/dev/sde1
/dev/sdf1

Как видите, все md0, md1 и md2 используют одни и те же два диска (разделенные на 3 раздела). Я также должен отметить, что это делается с помощью программного рейда Ubuntu, а не аппаратного рейда.

Сегодня массив /md0 RAID1 выглядит как деградированный - ему не хватает диска /dev/sdb1 . Но так как /dev/sdb1 является только разделом (и /dev/sdb2 и /dev/sdb3 работают нормально), очевидно, это не тот диск, который вышел из AWOL, похоже, сам раздел отсутствует.

Как это вообще возможно? И что мы можем сделать, чтобы это исправить?

Мой вывод cat /proc/mdstat:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md1 : active raid1 sda2[0] sdb2[1]
      24006528 blocks super 1.2 [2/2] [UU]


md2 : active raid1 sda3[0] sdb3[1]
      1441268544 blocks super 1.2 [2/2] [UU]


md0 : active raid1 sda1[0]
      1464710976 blocks super 1.2 [2/1] [U_]


md3 : active raid1 sdd1[1] sdc1[0]
      2930133824 blocks super 1.2 [2/2] [UU]


md4 : active raid1 sdf2[1] sde2[0]
      2929939264 blocks super 1.2 [2/2] [UU]


unused devices: <none>

К вашему сведению: я попробовал следующее:

mdadm /dev/md0 --add /dev/sdb1

Но получил эту ошибку:

mdadm: add new device failed for /dev/sdb1 as 2: Invalid argument

2 ответа2

1

Сначала посмотрите на /var/log/messages (т.е. dmesg), чтобы понять, почему /dev /sdb1 был отключен от RAID. Скорее всего, произошла ошибка при чтении или записи в /dev /sdb1.

Если вы запустите smartctl -a /dev/sdb , я подозреваю, что вы обнаружите, что диск имеет ненулевое значение для reallocated sectors или current pending sectors . Если он имеет перераспределенный сектор, диск начинает деградировать и должен быть немедленно заменен, если это рабочий сервер. Хотя вы можете выполнить mdadm /dev/md0 -r /dev/sdb1 а затем mdadm /dev/md0 -a /dev/sdb1 для удаления и повторного добавления раздела, лучше создать резервную копию данных и заменить /dev / SDB прямо сейчас.

Чтобы заменить диск, сделайте следующее:

  1. Сделайте резервную копию ваших данных и выключите машину.
  2. Запишите серийный номер каждого диска (чтобы вы знали, какой из них необходимо заменить).
  3. Установите новый жесткий диск, загрузите компьютер и убедитесь, что имена устройств не изменились. Если имена устройств сместились, возьмите лист бумаги и отметьте, какое имя нового устройства соответствует каждому старому имени и серийному номеру. Возможно, вы уже знаете это, но вы можете использовать cat /proc/mdstat чтобы увидеть, какие имена устройств используются RAID-массивами, и fdisk -l или smartctl -a <device> для проверки серийных номеров.
  4. Разбейте новый диск соответствующим образом (используя те же размеры разделов, что и на других дисках).
  5. Для каждого RAID добавьте соответствующий раздел с нового диска с помощью mdadm <md device> -a <new disk partition> (О, и если вы собирались спросить ... да, программный RAID - это круто. Вы можете добавить столько зеркал, сколько хотите, в программный RAID-массив Linux1.)
  6. Периодически проверяйте состояние восстановления с помощью cat /proc/mdstat .
  7. После завершения восстановления выполните mdadm -f <md device> -f <bad disk's partition> а затем `mdadm -f -f для каждого RAID1, который использует поврежденный диск. Это помечает раздел плохого диска как сбойный, а затем удаляет его из RAID.
  8. Выключите аппарат и удалите неисправный диск.
  9. Если вы хотите, чтобы в будущем было больше одного зеркала, повторите шаги 3-6 для одного или нескольких дополнительных дисков. В противном случае вам придется использовать mdadm для изменения размера RAID до двух устройств (иначе md будет предупреждать вас о поврежденных массивах при каждой перезагрузке).

ПРИМЕЧАНИЕ: если SMART-диагнозы не сообщают о каких-либо критических ошибках для /dev /sdb, возможно, просто /dev /sdb1 был сброшен /dev /md0, потому что он превысил порог тайм-аута. В этом случае /dev /sdb может подойти, но это не помешает сделать резервную копию ваших данных и добавить одно или несколько дополнительных зеркал в любом случае.

0

Сначала сделайте резервную копию этого раздела!

Затем сначала удалите этот диск из массива, затем повторно добавьте его - однако сначала проверьте dmesg на предмет фактической причины его удаления ...

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