Настройка hot spare в LVM на Linux

В linux подсистема Logical Volume Manager довольно активно развивается, и несколько лет назад в LVM была добавлена поддержка RAID5 и RAID6. Если сейчас сравнивать LVM с программным RAID с использованием mdadm(8), то LVM оказывается более гибким, и, например, поддерживает:

  • использование разных уровней RAID для разных логических томов в рамках одной группы томов
  • кэширующие устройства, которые могут работать и как кэш для чтения, и так и как кэш с отложенной записью.

С учётом того, что VMware ESXi не имеет поддержки программного RAID, для сервера с большим количеством дисков, но не имеющего аппаратного RAID контроллера, использование комбинации из KVM и LVM выглядит перспективным.

И в этот момент возникает актуальный вопрос - а как в LVM настроить hot spare диски?

Результаты поиска в google содержат тысячи ссылок, которые рассказывают про настройку hot spare в mdadm, использование LVM в HP-UX, восстановление работы после сбоя при отсутствии hot spare и так далее.

Ответ оказался на поверхности - в LVM фактически нет понятия hot spare, но в файле /etc/lvm/lvm.conf в секции activation есть две настройки:

raid_fault_policy = "warn"
mirror_image_fault_policy = "remove"

Первая определяет поведение для RAID5/6 томов, и при использовании значения по умолчанию LVM запишет сообщение в syslog, а вторая поведение для зеркала - LVM молча удалит половинку зеркала. Но для обеих настроек можно указать значение allocate:

raid_fault_policy = "allocate"
mirror_image_fault_policy = "allocate"

И в случае выхода из строя диска LVM будет пытаться выделить простраство для extent на других дисках, что фактически заменяет функционал hot spare. При этом LVM фактически позволяет распределить нагрузку по всем дискам, не назначая выделенного hot spare. Главное, чтобы на дисках оставалось свободное место, необходимое для размещения extent-ов сбойного диска.

Вперед