Назад | Перейти на главную страницу

Система не загружается из корневого раздела LVM RAID1, если какой-либо из базовых PV отсутствует

У меня есть 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
...

Источники: