Система не загружается из корневого раздела 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 работать для корневого раздела, когда не работает один из жестких дисков?

2 ответа

Решение

Проблема была решена в LVM v. 2.02.108 в июне 2014 года.

В LVM был добавлен ухудшенный режим активации LV, который стал режимом активации по умолчанию. По сути, он активирует LV, если это возможно без потери данных, но даже если LV является неполным (как в случае RAID1 LVM без одной ветви).

Более подробное описание можно найти здесь: 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
...

Источники:

Другие вопросы по тегам