
У меня есть LVM RAID 1 (не mdadm RAID 1, а именно LVM2 RAID 1) для моего корневого раздела. Я хотел бы, чтобы моя система загружалась без любого из HDD, где находятся основные PV корневого раздела LVM.
Строка запуска ядра в grub.cfg (автоматически генерируется GRUB2) выглядит так:
linux /kernel-genkernel-x86-3.11.7-hardened-r1-3 root=/dev/mapper/vg-root ro dolvm
Все выглядит отлично при включенных обоих дисках, а система устойчива к сбоям жесткого диска во время работы, т.е. она работает нормально, если один из жестких дисков выходит из строя во время работы.
Однако, если я попытаюсь загрузиться без одного из жестких дисков, я получаю
Refusing activation of partial LV root. Use --partial to override.
во время загрузки и паники ядра. С одной стороны, это кажется разумным, так как это ненормальное поведение для lvm, чтобы запускаться, когда один из PV отсутствует. Однако это абсолютно необходимо для загрузки сервера. Потенциальный обходной путь, который я могу придумать, — это добавление некоторой дополнительной опции в строку запуска ядра.
Знаете ли вы, как заставить работать LVM RAID 1 для корневого раздела, когда один из жестких дисков не работает?
решение1
Проблема была решена вLVM версия 2.02.108в июне 2014 года.
АдеградировалРежим активации LV был добавлен в LVM, который стал режимом активации по умолчанию. По сути, он активирует LV, если это возможно без потери данных, но даже если LV неполный (как в случае RAID1 LVM без одной ноги).
Более подробное описание можно найти здесь:LVM: активация: добавлен «ухудшенный» режим активации.
решение2
Я раньше этого не пробовал и не уверен, что это лучшее решение, но оно должно вас подбодрить... Я настоятельно рекомендую вам хотя бы просмотреть исходники внизу, чтобы проверить, что у меня тут есть... :)
По сути, вам нужно будет загрузиться с загрузочного носителя, повторно просканировать PV, VG и LV.
lvm pvscan
lvm vgscan
lvm lvscan
Затем вы сможете принудительно активировать VG:
lvm vgchange -ay --partial VolGroup00
После этого вы можете удалить отсутствующую зеркальную копию из VG:
lvm vgreduce --removemissing --force VolGroup00
После этого вы сможете перезагрузиться в конфигурацию без зеркалирования.
После того, как вы восстановите систему и будете довольны, исправив/заменив неисправные диски, вам нужно будет добавить их обратно в систему, а затем сделать что-то вроде следующего (предполагая, что /dev/sdb — это неисправный диск, и вы создали на нем раздел LVM с помощью fdisk как /dev/sdb1, и что /dev/sda1 — это место, где находится хорошее зеркало):
pvcreate /dev/sdb1
lvm vgextend VolGroup00 /dev/sdb1
Затем вам нужно будет воссоздать каждое из зеркал LV примерно так:
lvm lvconvert -m 1 /dev/VolGroup00/usr /dev/sda1 /dev/sdb1
lvm lvconvert -m 1 /dev/VolGroup00/var /dev/sda1 /dev/sdb1
lvm lvconvert -m 1 /dev/VolGroup00/root /dev/sda1 /dev/sdb1
...
Источники: