Авторская информация о системном администрировании.
Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed
Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Ресурс включён в перечень Роскомнадзора
Post #4199
10.7K

Продолжу тему с LVM Raid, чтобы получить законченное решение, которое можно будет использовать в проде. Я хочу установить корень системы / на LVM Raid, чтобы в случае выхода из строя диска иметь полностью работающую систему.
Для этого взял виртуалку с Debian 12 и установил систему с ручным разбитием диска. Создал ровно один раздел /dev/sda1, на нём создал VG - vgroup и один LV - root на весь доступный объём. Больше не делал ничего. Раздел /boot не выносил отдельно. Всё только в корне. Grub уже давно умеет грузиться с LVM разделов.
Установил систему. Добавил туда ещё один диск
Пробую сконвертировать корневой раздел в RAID1:
Получаю ошибку:
Суть её в том, что при создании любого RAID необходимо создать отдельный малюсенький LV на 4 MiB для хранения метаданных массива. А я полностью весь VG во время установки отдал на LV root. Чтобы избежать этой ошибки, оставляйте во время установки немного места на VG.
Решить эту проблему не трудно. LV можно уменьшить вместе с ФС, если это ext4:
Команда сработает, только если раздел размонтирован. А у меня это корень системы, так что получил ошибку. Решение простое. Загрузился с SystemRescueCD и выполнил её там. Откусил кусочек от LV, теперь конвертирую в RAID1:
Всё проходит без ошибок. Загружаю систему, проверяю массив:
Всё в порядке, оба диска на месте. Ставлю загрузчик на второй диск sdb:
Теперь вынимаю первый диск sda, на который изначально ставилась система и перезагружаю её. Grub запускается со второго диска, а дальше вываливаюсь в initramfs. Система не грузится, пишет, что не видит диск
Находит VG vgroup, но ругается, что там нет sda. Логично, диск этот отключен. После этого выхожу из initramfs:
Так как LVM раздел активирован, грузится система со второго диска. То есть в целом всё в порядке. Система жива, загружается. Надо только разобраться с тем, чтобы initramfs автоматически активировал неактивный VG с raid1.
Как оказалось, проблема эта нередкая. Нашёл решение в интернете. Создаём файл
Пересобираем initramfs:
Перезагружаемся. Теперь загрузка работает нормально. Что с одним, что с двумя дисками.
Заменяем выключенный диск новым. Смотрим, какие диски есть в системе:
У меня с данными диск стал sda, новый sdb. Копирую на него разметку, добавляю в VG и LV с raid1:
Ставим загрузчик на новый диск:
Следим за синхронизацией:
Когда закончится, перезагружаем систему и убеждаемся, что всё работает.
Получилась готовая инструкция по установке системы на LVM Raid1 и по замене вышедшего из строя диска. В целом, всё примерно то же самое, что и в mdadm со своими нюансами. При случае попробую на каком-нибудь железном сервере вместо mdadm - LVM. На вид выглядит удобнее и функциональнее.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#lvm #raid
Для этого взял виртуалку с Debian 12 и установил систему с ручным разбитием диска. Создал ровно один раздел /dev/sda1, на нём создал VG - vgroup и один LV - root на весь доступный объём. Больше не делал ничего. Раздел /boot не выносил отдельно. Всё только в корне. Grub уже давно умеет грузиться с LVM разделов.
Установил систему. Добавил туда ещё один диск
/dev/sdb. Скопировал на него разметку с sda и добавил его в VG:# sfdisk -d /dev/sda | sfdisk /dev/sdb# pvcreate /dev/sdb1# vgextend vgroup /dev/sdb1Пробую сконвертировать корневой раздел в RAID1:
# lvconvert --type raid1 -m 1 vgroup/rootПолучаю ошибку:
Insufficient free space: 1 extents needed, but only 0 availableСуть её в том, что при создании любого RAID необходимо создать отдельный малюсенький LV на 4 MiB для хранения метаданных массива. А я полностью весь VG во время установки отдал на LV root. Чтобы избежать этой ошибки, оставляйте во время установки немного места на VG.
Решить эту проблему не трудно. LV можно уменьшить вместе с ФС, если это ext4:
# lvreduce -l -1 --resizefs /dev/vgroup/rootКоманда сработает, только если раздел размонтирован. А у меня это корень системы, так что получил ошибку. Решение простое. Загрузился с SystemRescueCD и выполнил её там. Откусил кусочек от LV, теперь конвертирую в RAID1:
# lvconvert --type raid1 -m 1 vgroup/rootВсё проходит без ошибок. Загружаю систему, проверяю массив:
# lvs -o+segtype# lvs -a -o name,devices vgroupВсё в порядке, оба диска на месте. Ставлю загрузчик на второй диск sdb:
# dpkg-reconfigure grub-pcТеперь вынимаю первый диск sda, на который изначально ставилась система и перезагружаю её. Grub запускается со второго диска, а дальше вываливаюсь в initramfs. Система не грузится, пишет, что не видит диск
/dev/mapper/vgroup-root. В консоли initramfs ввожу команду на активацию всех lvm томов:# vgchange -ayНаходит VG vgroup, но ругается, что там нет sda. Логично, диск этот отключен. После этого выхожу из initramfs:
# exitТак как LVM раздел активирован, грузится система со второго диска. То есть в целом всё в порядке. Система жива, загружается. Надо только разобраться с тем, чтобы initramfs автоматически активировал неактивный VG с raid1.
Как оказалось, проблема эта нередкая. Нашёл решение в интернете. Создаём файл
/etc/initramfs-tools/scripts/local-top/forcelvm следующего содержания: #!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /scripts/functions
lvm vgchange -ay
Пересобираем initramfs:
# chmod +x /etc/initramfs-tools/scripts/local-top/forcelvm# update-initramfs -u -k allПерезагружаемся. Теперь загрузка работает нормально. Что с одним, что с двумя дисками.
Заменяем выключенный диск новым. Смотрим, какие диски есть в системе:
# lsblk У меня с данными диск стал sda, новый sdb. Копирую на него разметку, добавляю в VG и LV с raid1:
# sfdisk -d /dev/sda | sfdisk /dev/sdb# pvcreate /dev/sdb1# vgextend vgroup /dev/sdb1# vgreduce --removemissing vgroup --force# lvconvert --repair vgroup/root# lvconvert -m1 vgroup/root /dev/sdb1Ставим загрузчик на новый диск:
# dpkg-reconfigure grub-pcСледим за синхронизацией:
# watch lvs -aКогда закончится, перезагружаем систему и убеждаемся, что всё работает.
Получилась готовая инструкция по установке системы на LVM Raid1 и по замене вышедшего из строя диска. В целом, всё примерно то же самое, что и в mdadm со своими нюансами. При случае попробую на каком-нибудь железном сервере вместо mdadm - LVM. На вид выглядит удобнее и функциональнее.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#lvm #raid
- 👍 231
- 👎 4













