Что означает «запасной» номер mdadm?

8

Я создал RAID 5 на основе mdadm из шести жестких дисков, используя следующую команду:

# mdadm --create /dev/md0 --level=5 --raid-devices=5 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 \
--spare-devices=1 /dev/sdg1

Я ожидал, что массив будет иметь один горячий резерв, а именно / dev / sdg1. Однако проверка mdadm --detailпоказывает 2 запчасти:

# mdadm --detail --scan 
ARRAY /dev/md0 metadata=1.2 spares=2 name=...

Кроме того, размер массива, как показано на рисунке, dfравен 2 ТБ, что соответствует только четырем из моих 500 ГБ используемых дисков.

Так что же такое семантика --spare-devices? На странице руководства указано, что она «указывает [число] количество запасных (eXtra) устройств в исходном массиве», но здесь это не так.

jstarek
источник
1
RAID 5 использует ценность паритета одного устройства. Я не знаю, именно поэтому я делаю это комментарий, но может ли это быть как-то связано с этим? ( mdadm --detailВключая диск четности в число «запасных частей».) Вы можете проверить это, создав массив RAID 6 без оперативного резерва; если моя теория верна, она также покажет spares = 2.
CVn
2
В стандартной терминологии RAID резерв - это просто неактивный, в основном чистый диск, который может автоматически включиться в действие, чтобы помочь восстановить массив после отказа другого диска. Диск четности не является резервным. Кроме того, количество запасных дисков - это не количество дисков, которые могут выйти из строя до того, как ваши данные окажутся в опасности. (Число не совсем точно определено. RAID 10 с четырьмя дисками может обрабатывать до 2 сбоев диска, но он также может быть мертвым с 2 сбоями диска.)
200_success
4
Я предполагаю, что вы видите две резервные копии, потому что он все еще выполняет инициализацию массива инициализации - он "перестраивается" на одну из двух резервных частей. Как только это будет сделано (проверьте прогресс cat /proc/mdstat), я думаю, вы увидите ожидаемое 1.
Дероберт
@derobert, вы правы: после того, как начальная перестройка была закончена, я получил метаданные ARRAY / dev / md0 = 1.2 spares = 1 name = [...] из mdadm --detail --scan и эквивалентную информацию из / proc / mdstat.
Jstarek

Ответы:

4

Этот вывод правильный. Вы создали RAID 5 с 5 дисками (только 4 из них будут «использованы» для пространства). И вы добавили дополнительный запасной диск.

Таким образом, у вас действительно есть RAID 5, который допускает один сбой диска + дополнительный запасной диск.

Если вам нужен RAID 5 с 6 дисками и объемом 5 дисков, вам нужно изменить команду на:

mdadm --create /dev/md0 --level=5 --raid-devices=6 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1

Но в этом случае вы можете допустить только один сбой диска в соответствии со спецификациями RAID 5.

РЕДАКТИРОВАТЬ: Добавление ссылки с официальной страницы рейда: Вы можете увидеть рейд 5 с 6 дисками, и он заявляет запасной = 1: Начальное создание массива

ОБНОВЛЕНИЕ: я решил создать raid 5 в моей системе, и запасное значение исчезает, когда массив находится в чистом состоянии:

   Raid Devices : 4
  Total Devices : 4
              State : clean, degraded, recovering
     Active Devices : 3
    Working Devices : 4
     Failed Devices : 0
      Spare Devices : 1

Чистое состояние:

   Raid Devices : 4
  Total Devices : 4
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

Таким образом, это как комментарий OP, во время первоначального создания рейда 5 у него есть запасной диск до завершения сборки или синхронизации рейда.

BitsOfNix
источник
1
Я думаю, что ключевая информация на вики-странице, на которую вы ссылаетесь, такова: «Для raid5 существует оптимизация: mdadm берет один из дисков и помечает его как« запасной »; затем он создает массив в ухудшенном режиме». - это хорошо согласуется с наблюдением, сделанным Деробертом в комментариях выше. Кроме того, я боюсь, что вы неправильно поняли мой вопрос: я не хотел иметь место на 5 дисках. Упоминание о 2 ТБ было просто наблюдением.
Jstarek
3

Для ясности я соберу информацию, предоставленную Деробертом и Александром Алвесом, и проведу здесь некоторые дальнейшие проверки:

mdadm«S --spare-devicesпараметр работает как состояния человека страниц, т.е. определяет количество„горячих“запасных дисков в массиве. «Горячий» резерв, как и в обычной терминологии RAID, не имеет ничего общего с дополнительными дисками, присутствующими в массиве RAID 5 или RAID 6, - это дополнительный диск, предназначенный для замены, как только диск в массиве провалился.

Количество запасных дисков указывается при создании массива. Позже это можно проверить с помощью #mdadm --detail --scan.

Однако в течение короткого периода инициализации RAID 5 на основе mdadm существует оптимизация, описанная в https://raid.wiki.kernel.org/index.php/Initial_Array_Creation , которая заставляет дополнительный запасной диск появляться в вывод этой команды:

«Для raid5 существует оптимизация: mdadm берет один из дисков и помечает его как« запасной »; затем создает массив в деградированном режиме. Ядро помечает резервный диск как« перестроенный »и начинает читать из« хорошего » дисков, вычислить четность и определить, что должно быть на запасном диске, а затем просто записать на него ".

После завершения инициализации массива количество сообщаемых запасных частей возвращается к числу, выбранному во время создания.

jstarek
источник