TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #4199 10.7K
Продолжу тему с LVM Raid, чтобы получить законченное решение, которое можно будет использовать в проде. Я хочу установить корень системы / на 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
More from @srv_admin
  1. Oct 12, 2026Вот мы и вступили в новую реальность, когда стали пропадать датацентры целиком, что повлек…
  2. Oct 12, 2026💻Практический вебинар «СТРАТЕГИЯ РЕЗЕРВНОГО КОПИРОВАНИЯ» 📹 15 октября в 11:00 Мск за 90…
  3. Oct 10, 2026Когда я работал в одной небедной компании, там регулярно обновляли парк оборудования, а ст…
  4. Oct 9, 2026▶️ Очередная подборка авторских IT роликов, которые я лично посмотрел и посчитал интересны…
  5. Oct 9, 2026Астра Мониторинг впустил ИИ-агентов в системы мониторинга заказчика И приглашает вас увиде…
  6. Oct 9, 2026В пятницу расскажу про один сервис, который не имеет отношения к теме канала, но который м…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →