У меня есть LVM RAID 1 (не mdadm RAID 1, а именно LVM2 RAID 1) для моего корневого раздела. Я хотел бы, чтобы моя система загружалась без какого-либо жесткого диска, на котором находятся базовые 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 работать с корневым разделом, когда один из жестких дисков не работает?
Проблема решилась в LVM версии 2.02.108 в июне 2014 г.
А деградированный В LVM был добавлен режим активации LV, который стал режимом активации по умолчанию. По сути, он активирует LV, если это возможно без потери данных, но даже если LV является неполным (как в случае LVM RAID1 без одной ноги).
Более подробное описание можно найти здесь: LVM: активация: Добавить "деградированный" режим активации.
Я не пробовал это раньше, и я не уверен, что это лучшее решение, но оно должно вас поднять и начать ... Я настоятельно рекомендую вам хотя бы просмотреть источники внизу, чтобы проверить, что я попал сюда ... :)
Обычно вам нужно загрузиться с загрузочного носителя, повторно просканировать 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
...
Источники: