Я пытаюсь переместить свой корневой раздел на физические тома, основанные на рейде, и, похоже, у меня ничего не получается.
Процедура, которую я использую, несколько сложна, но это связано с тем, что у моего хостинг-провайдера очень ограниченные возможности установки, поэтому я не могу начать с корневой файловой системой, созданной с использованием 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 и установить загрузочное ядро.
update-initramfs -u
Эта команда обновляет конфигурацию загрузочного ядра в соответствии с текущим состоянием вашей системы.
mdadm --detail --scan > /tmp/mdadm.conf
Копировать /tmp/mdadm.conf
содержание в /etc/mdadm/mdadm.conf
заменяя любые предыдущие записи. Таким образом, информация о конфигурации MD устройства будет правильной.
update-grub
Это обновит конфигурацию GRUB, чтобы он знал о новых устройствах.
dpkg-reconfigure grub-pc
Это установит GRUB на жесткие диски на сервере.