Гид по технологиям

Как изменить размер разделов LVM поверх RAID1 — уменьшение и увеличение

9 min read Системное администрирование Обновлено 13 Oct 2025
Изменение размера LVM на RAID1: уменьшение и увеличение
Изменение размера LVM на RAID1: уменьшение и увеличение

Версия 1.0
Автор: Falko Timme

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

Введение

Эта статья объясняет, как можно уменьшать и увеличивать существующие разделы программного RAID1, когда сверху используются LVM-тома. Если вы не используете LVM, используйте руководство по изменению размера RAID-разделов (Shrink & Grow) без LVM. Примеры протестированы с файловой системой ext3 на логических томах. Описаны процедуры для целого массива и для деградированного массива.

Важно: автор не гарантирует, что процедура сработает в вашей среде. Всегда имейте актуальную резервную копию и план отката.

H2: Предварительная заметка

За несколько дней до написания руководства я обнаружил деградировавший RAID1 (/dev/md1, состоящий из /dev/sda5 и /dev/sdb5; /dev/sda5 вышел из строя, /dev/sdb5 был активен). Синхронизация при восстановлении затем несколько раз останавливалась и начиналась заново. В логах ядра были ошибки ввода-вывода на конце раздела /dev/sdb5, что указывает на дефектные сектора.

В худшем случае один диск полностью мёртв, второй — с проблемой на конце раздела. Чтобы обойти проблему, я сократил /dev/md1 так, чтобы исключить проблемные блоки на /dev/sdb5, затем добавил новый /dev/sda5, дождался синхронизации, удалил /dev/sdb5 и заменил диск, снова добавил /dev/sdb5 и расширил /dev/md1.

Используемая конфигурация в примере: /dev/md1 содержит группу томов /dev/server1 с логическими томами /dev/server1/root (система, точка монтирования /) и /dev/server1/swap_1 (swap). Так как приходится изменять системный раздел, работа выполнялась из rescue-системы (например, Knoppix Live-CD). Если массив не содержит системный раздел, возможно, загрузка в rescue не потребуется, но в любом случае логические тома должны быть размонтированы.

1 Целый (intact) массив — обзор текущего состояния

Ниже показано состояние массива и LVM в примере (остальные команды и выводы сохранены в оригинале и приведены далее в неизменном виде в блоках кода):

cat /proc/mdstat

server1:~#cat/proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0] sdb5[1]
4988032 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
248896 blocks [2/2] [UU]

unused devices:
server1:~#

df -h

server1:~#df-h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
4.5G 741M 3.5G 18% /
tmpfs 126M 0 126M 0% /lib/init/rw
udev 10M 68K 10M 1% /dev
tmpfs 126M 0 126M 0% /dev/shm
/dev/md0 236M 18M 206M 8% /boot
server1:~#

pvdisplay

server1:~#pvdisplay
— Physical volume —
PV Name /dev/md1
VG Name server1
PV Size 4.75 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 1217
Free PE 0
Allocated PE 1217
PV UUID Ntrsmz-m0o1-WAPD-xhsb-YpH7-0okm-qfdBQG

server1:~#

vgdisplay

server1:~#vgdisplay
— Volume group —
VG Name server1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 4.75 GB
PE Size 4.00 MB
Total PE 1217
Alloc PE / Size 1217 / 4.75 GB
Free PE / Size 0 / 0
VG UUID X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0

server1:~#

lvdisplay

server1:~#lvdisplay
— Logical volume —
LV Name /dev/server1/root
VG Name server1
LV UUID 3ZgGnd-Sq1s-Rchu-92b9-DpAX-mk24-0aOMm2
LV Write Access read/write
LV Status available

LV Size 4.50 GB
Current LE 1151
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

— Logical volume —
LV Name /dev/server1/swap_1
VG Name server1
LV UUID KM6Yq8-jQaQ-rkP8-6f4t-zrXA-Jk13-yFrWi2
LV Write Access read/write
LV Status available

LV Size 264.00 MB
Current LE 66
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:1

server1:~#

H2: 2.1 Уменьшение размера целого массива — пошагово

Ниже описан рабочий сценарий уменьшения размера массива /dev/md1 (из 5 GB в 4 GB) при условии, что массив цел и оба устройства доступны.

Подготовка

  1. Загрузитесь в rescue-систему и загрузите необходимые модули ядра:
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
  1. Активируйте RAID-массивы и создайте конфигурацию mdadm:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

mdadm -A --scan
  1. Запустите LVM:
/etc/init.d/lvm start
  1. Проверьте файловую систему перед изменением размера:
e2fsck -f /dev/server1/root

Ключевая идея

LVM-стек: файловая система → логический том → группа томов → физический том (PV) → программный RAID (/dev/md1) → диски. Перед уменьшением массива нужно уменьшить файловую систему, затем соответствующий LV, затем PV, затем снизить размер md-устройства. При этом освобождаемое пространство должно располагаться в конце PV (последовательность физических расширений и расположение LV имеют значение).

Практические шаги (в примере)

  1. Сжать файловую систему на /dev/server1/root до безопасного размера (в примере — 2G):
resize2fs /dev/server1/root 2G
  1. Сжать сам логический том до 2.5G:
lvreduce -L2.5G /dev/server1/root
  1. Если swap-том находится в конце PV и мешает (в примере он был в конце), удалить swap:
lvremove /dev/server1/swap_1
  1. Уменьшить PV до 3G:
pvresize --setphysicalvolumesize 3G /dev/md1
  1. Уменьшить /dev/md1 до 4G (размер указывать в KiB и он должен делиться на 64: 4 1024 1024 = 4194304):
mdadm --grow /dev/md1 --size=4194304
  1. После изменений дать PV использовать всё доступное пространство:
pvresize /dev/md1
  1. Восстановить swap и/или расширить LV /dev/server1/root до желаемого размера:
lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1

# Просмотреть и расширить root, например
lvextend -l +317 /dev/server1/root
resize2fs /dev/server1/root

e2fsck -f /dev/server1/root

Проверки после перезагрузки

После перезагрузки в обычную систему вы увидите уменьшившийся /dev/md1 и соответствующие размеры в vgdisplay/pvdisplay/lvdisplay и df -h (выводы сохранены в исходном тексте и приведены выше в неизменном виде).

H2: Практические примечания и ошибки

  • Всегда проверяйте целостность файловой системы перед уменьшением.
  • При использовании других ФС (xfs) уменьшать нельзя — xfs не поддерживает уменьшение. В этом случае потребуется миграция файловой системы.
  • Убедитесь, что сокращаемый LV действительно помещается в новый PV; оставьте запас.
  • Если swap не в конце — не удаляйте, а перераспределите размер последнего LV.
  • Команды mdadm –grow и pvresize работают с блоками и PE — проверяйте выравнивание и кратность.

H2: Когда этот метод не сработает

  • Если на диске есть битые сектора внутри области, которую нельзя исключить простым уменьшением — потребуется перенос данных на новый диск.
  • Если файловая система не поддерживает уменьшение (например, XFS) — нужно создать новый том и скопировать данные.
  • При повреждённых метаданных LVM или mdadm может понадобиться восстановление метаданных из резервной копии или более сложный подход.

H2: Альтернативные подходы

  • Полная замена диска с синхронизацией: заменить диск, дождаться resync, затем выполнить расширение/уменьшение более безопасно.
  • Использовать временный новый RAID/mirror и rsync: создать новый массив нужного размера, перенести данные rsync, переключить точки монтирования.
  • Использовать инструмент LVM mirror и pvmove: добавить новый диск, выполнить pvmove для миграции PE, затем удалить старый диск.

H2: Мини-методология (как думать о задаче)

  1. Оцените текущее состояние: mdstat, pvdisplay, vgdisplay, lvdisplay, df -h.
  2. Определите порядок зависимостей: FS <= LV <= VG/PV <= md <= диски.
  3. Подготовьте среду восстановления (rescue), обеспечьте доступ к mdadm и LVM.
  4. Проверка FS + резервное копирование.
  5. Уменьшение: сначала FS, затем LV, затем PV, затем md.
  6. Увеличение: сначала md, затем PV, затем LV, затем FS.
  7. Тестирование, мониторинг, откат при необходимости.

H2: Факты и числовые параметры

  • Размер mdadm указывается в блоках KiB; для mdadm –grow –size используется число в 1 KiB.
  • PE в LVM часто — 4 MiB (в примере PE Size = 4.00 MB).
  • Всегда проверяйте кратность размера PV по отношению к PE (PV должен позволять целое число PE).

H2: План действий — сжато (SOP)

  1. Резервная копия и план отката.
  2. Загрузиться в rescue/демонтировать LV.
  3. Проверить FS: e2fsck -f /dev/…
  4. resize2fs до нового размера (если FS поддерживает уменьшение).
  5. lvreduce до целевого LV.
  6. lvremove (только если LV в конце мешает).
  7. pvresize –setphysicalvolumesize (уменьшить PV).
  8. mdadm –grow –size=… (уменьшить md).
  9. pvresize без параметров (дать PV использовать весь объект).
  10. lvcreate/mkswap или lvextend+resize2fs.
  11. e2fsck и перезагрузка.

H2: Инцидентный runbook и откат

Сценарий: после уменьшения md массив не загружается или данные повреждены.

  1. Остановите дальнейшие изменения.
  2. Если есть резервная копия образа md или LVM metadata, восстановите метаданные LVM/MD.
  3. Если PV уменьшен неверно и часть LV оказалась вне PV, используйте резервную копию тома или перенос данных на новый том.
  4. Если /dev/md1 был уменьшен ошибочно: если есть старые метаданные mdadm (mdadm.conf_orig или /etc/mdadm/mdadm.conf_orig), попытайтесь пересоздать md с исходным размером в режиме –create с параметром –assume-clean (опасно, только если уверены).
  5. При невозможности восстановления вернитесь к последней целевой резервной копии данных.

H2: Ролевые чеклисты

Администратор (планирование)

  • Оценить текущее использование диска и расположение LV.
  • Решить, какие LV нужно уменьшить/удалить.
  • Подготовить резервное копирование.
  • Назначить окно обслуживания и оповестить заинтересованных сторон.

Оператор (исполнение)

  • Загрузить rescue-систему и смонтировать необходимые утилиты.
  • Выполнить команды в SOP, фиксируя вывод и время.
  • Проверить целостность и перезагрузить систему.
  • Мониторить систему после рестарта.

H2: Критерии приёмки

  • Все LVM-тома доступны и монтируются, размер соответствует ожидаемому.
  • Проверка файловой системы прошла без ошибок.
  • mdadm показывает массив в состоянии [UU] (оба устройства) или соответствующее состояние при деграде.
  • Резервная копия успешно валидирована.

H2: Тесты и критерии приёмки

  • Тест 1: имитация уменьшения в тестовой среде с аналогичным количеством PE. Критерий: корректная загрузка и целостность данных.
  • Тест 2: восстановление из резервной копии после намеренной порчи метаданных. Критерий: успешное восстановление.
  • Тест 3: проверка производительности после изменения размера. Критерий: отсутствие значимого падения I/O для критических сервисов.

H2: Галерея крайних случаев

  • XFS на LV: не поддерживает уменьшение — требуется миграция.
  • LV занимает весь PV, и в PV нет свободных PE: для уменьшения потребуется удалить/переместить LV.
  • Битые сектора внутри области, не поддающейся исключению: перенос данных на новый диск или временный массив.

H2: Совместимость и миграция

  • Если вы используете разные верcии mdadm или LVM, убедитесь, что rescue-система имеет совместимые версии утилит.
  • При миграции с ext2/3 на ext4 следите за поддержкой resize2fs и требованиями к резервной копии.

H2: Краткий словарь терминов

  • PV: Physical Volume — физический том LVM (в данном примере /dev/md1).
  • VG: Volume Group — группа томов, объединяющая PV.
  • LV: Logical Volume — логический том, внутри которого содержится файловая система.
  • md: программный RAID (mdadm).

H2: Матрица рисков и смягчения

  • Риск: повреждение данных при уменьшении FS. Смягчение: полная резервная копия и проверка FS перед операцией.
  • Риск: потеря метаданных LVM. Смягчение: резервное копирование metadata (vgcfgbackup).
  • Риск: аппаратные ошибки диска во время операции. Смягчение: выполнение в окне обслуживания с запасными дисками под рукой.

H2: Резюме

  • Изменение размера RAID1 с LVM поверх требует строгого порядка действий: FS → LV → PV → md → диски.
  • Для уменьшения сначала уменьшают файловую систему, затем соответствующие LVM-объекты, и только потом уменьшают md-устройство.
  • Всегда имейте резервные копии и тестируйте процедуру в ближайшей к продакшену тестовой среде.

Важно

Если вы не уверены в шагах или ваша конфигурация отличается от примера (другие файловые системы, зеркала, или распределение томов), сначала протестируйте процедуру в лаборатории.

Конец статьи

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Переход на RAID1: создание и настройка
Системное администрирование

Переход на RAID1: создание и настройка

Beeftext: сниппеты текста в Windows
Продуктивность

Beeftext: сниппеты текста в Windows

Как разблокировать iPhone при забытом пароле
iPhone

Как разблокировать iPhone при забытом пароле

Изменение размера LVM на RAID1: уменьшение и увеличение
Системное администрирование

Изменение размера LVM на RAID1: уменьшение и увеличение

Просмотр недавно открытых файлов в Windows
Windows

Просмотр недавно открытых файлов в Windows

Блокировка кнопки «Нравится» Facebook в Chrome
Конфиденциальность

Блокировка кнопки «Нравится» Facebook в Chrome