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

Почему мой сервер не загружается после перемещения root fs внутри LVM в raid?

Я пытаюсь переместить свой корневой раздел на физические тома, основанные на рейде, и, похоже, у меня ничего не получается.

Процедура, которую я использую, несколько сложна, но это связано с тем, что у моего хостинг-провайдера очень ограниченные возможности установки, поэтому я не могу начать с корневой файловой системой, созданной с использованием lvm на томах raid.

Чтобы проверить свой случай, я создал виртуальный экземпляр в VirtualBox с 4 дисками:

И установил там Linux (Debian 8.5). Изначально после установки макет:

Вот как это выглядит:

=# mount /
mount: /dev/mapper/vg-root is already mounted or / busy
=# lvs
LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
root vg   -wi-ao---- 3.72g
=# vgs
VG   #PV #LV #SN Attr   VSize VFree
vg     1   1   0 wz--n- 3.72g    0
=# pvs
PV         VG   Fmt  Attr PSize PFree
/dev/sda1  vg   lvm2 a--  3.72g    0

Теперь, что мне нужно / хочу, это создать пару рейдов на малых и больших дисках и поставить / на них.

Итак, сначала я создаю перегородки. Поскольку мне нужно будет переразбить / dev / sda, это промежуточный макет, и он выглядит так:

=# for a in /dev/sd[abcd]; do fdisk -l $a; done | grep ^/
/dev/sda1  *     2048 7813119 7811072  3.7G 8e Linux LVM
/dev/sdb1        2048 16777215 16775168   8G fd Linux raid autodetect
/dev/sdc1           2048 16777215 16775168   8G fd Linux raid autodetect
/dev/sdc2       16777216 41943039 25165824  12G fd Linux raid autodetect
/dev/sdd1           2048 16777215 16775168   8G fd Linux raid autodetect
/dev/sdd2       16777216 41943039 25165824  12G fd Linux raid autodetect

Затем я делаю raid1 на разделах / dev / sd [cd] 2:

= # mdadm -C / dev / md0 -l 1 --raid-devices 2 / dev / sd [cd] 2

Это сделало меня / dev / md0, которое я буду использовать как временное место для / filesystem:

=# pvcreate /dev/md0
=# vgextend vg /dev/md0
=# pvmove /dev/sda1 /dev/md0
=# vgreduce vg /dev/sda1
=# pvremove /dev/sda1

В настоящее время / dev / sda бесплатен, поэтому я могу переразбить его в соответствии с точной спецификацией / dev / sdb. (этот шаг не имеет значения, но он нужен для полноты картины).

Теперь, когда все это готово, я обновляю mdadm.conf:

=# mdadm --detail /dev/md0 --brief >> /etc/mdadm/mdadm.conf && update-initramfs -u

Эта добавленная строка:

ARRAY /dev/md0 metadata=1.2 name=debian:0 UUID=55692d54:b0beedae:9d85bc20:324d7f9f

После этого я перезагружаю систему, чтобы убедиться, что она работает нормально. И сразу же вылетает на GRUB с сообщением:

error: disk `lvmid/F9eO8I-PB9F-Dsli-ZOSY-rVA1-7a37-Faos46/1N3Ah7-wIjT-HFxc-MS9U-lAcw-tYZw-N7sRO8' not found.
Entering rescue mode...
grub rescue>

ls в командной строке показывает:

(hd0) (hd0,msdos1) (hd1) (hd1,msdos1) (hd2) (hd2,msdos2) (hs2,msdos1) (hd3) (hd3,msdos2) (hd3,msdos1)

Что я сделал не так? Что я забыл?

Вам необходимо обновить GRUB и установить загрузочное ядро.

  1. update-initramfs -u

Эта команда обновляет конфигурацию загрузочного ядра в соответствии с текущим состоянием вашей системы.

  1. mdadm --detail --scan > /tmp/mdadm.conf

Копировать /tmp/mdadm.conf содержание в /etc/mdadm/mdadm.conf заменяя любые предыдущие записи. Таким образом, информация о конфигурации MD устройства будет правильной.

  1. update-grub

Это обновит конфигурацию GRUB, чтобы он знал о новых устройствах.

  1. dpkg-reconfigure grub-pc

Это установит GRUB на жесткие диски на сервере.