Что означает «запасное» число mdadm?

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

# 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 ? На странице man указано, что «Specif [ies] количество запасных (eXtra) устройств в исходном массиве». Но это, похоже, не так.

Этот вывод правильный. Вы создали 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.

EDIT: добавление ссылки с официальной страницы рейда: вы можете увидеть рейд 5 с 6 дисками, и он указывает на резерв = 1: создание начального массива

ОБНОВЛЕНИЕ: я решил создать рейд 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 у него есть запасной диск до завершения сборки / синхронизации рейда.

Для ясности я обобщил информацию, предоставленную derobert и Alexandre Alves, и некоторые дополнительные испытания здесь:

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

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

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

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

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