Linux для админа Windows 18. LVM и RAID (mdadm): расширение томов без простоя
Note
Материал сверен с официальной документацией (Ubuntu Server, man-страницы и документация проектов; ссылки — в конце статьи). Примеры вывода — иллюстрации: на вашем сервере значения и формат могут отличаться. Перед работой на боевом сервере проверьте команды на тестовой машине.
В Windows для объединения дисков и отказоустойчивости служит Storage Spaces: пул носителей, из которого создают виртуальные диски с выбранной защитой (простой, зеркальный, с чётностью). В Linux те же задачи решают два независимых слоя. LVM (Logical Volume Manager, менеджер логических томов) превращает диски в общий пул, из которого нарезают тома и увеличивают их, не останавливая сервер. mdadm собирает программный RAID (Redundant Array of Independent Disks, избыточный массив независимых дисков), переживающий отказ диска. В этой статье вы:
- разберётесь, как устроен LVM, и проверите, как он настроен на вашем сервере;
- создадите том, увеличите его без отключения и добавите в пул новый диск;
- соберёте RAID1 на тестовых дисках, прочитаете
/proc/mdstat, сохраните конфигурацию и переживёте «отказ» диска; - поймёте, почему RAID не заменяет резервную копию.
| Понятие | Windows | Linux |
|---|---|---|
| Пул дисков | пул носителей Storage Spaces | группа томов (VG) |
| Том, который можно растягивать | виртуальный диск (Storage Space) | логический том (LV) |
| Исходные диски | физические диски пула | физические тома (PV): диск или раздел |
| Защита от отказа диска | зеркало (mirror), чётность (parity) | RAID1/10, RAID5/6 в mdadm |
| Без защиты, только скорость | простой (simple) | RAID0 |
| Посмотреть состояние | Управление дисками | lsblk, pvs, vgs, lvs, /proc/mdstat |
Что нужно знать заранее
- Файловая система, диски и права доступа: точки монтирования, UUID и порядок безопасной правки
/etc/fstabсnofail. - Установка Ubuntu Server: установщик умеет ставить систему на LVM.
- Командная строка Linux и журналы: события массива и ошибки дисков ищут в журнале.
- Идея резервного копирования: правило 3-2-1.
Note
Для Ubuntu 24.04 LTS (на 04.11.2026: lvm2 2.03.16, mdadm 4.3, smartmontools 7.4); в 26.04 LTS пакеты новее — проверьте apt policy lvm2 mdadm smartmontools и документацию выпуска. Использованные здесь опции lvextend и mdadm есть и в справочниках 26.04.
Warning
Команды практики стирают данные на указанных устройствах: pvcreate, mkfs, mdadm --create, pvremove, --zero-superblock. Вместо имён дисков в них стоят <ДИСК1>…<ДИСК4>: подставляйте только имена пустых тестовых дисков. Если вы выполняли статью 04, у вас уже есть диск с данными (там это sdb, смонтированный в /srv/data): его трогать нельзя. Перед каждой такой командой выполняйте lsblk -f: у тестового диска нет разделов, файловой системы (FSTYPE пуст) и точки монтирования. Практику делайте на тестовой ВМ после контрольной точки; перед правкой fstab и mdadm.conf снимайте копию.
LVM: пул дисков и тома
В LVM три понятия:
- PV (physical volume, физический том): диск или раздел, инициализированный для LVM;
- VG (volume group, группа томов): пул из одного или нескольких PV;
- LV (logical volume, логический том): «раздел» из свободного места группы, на нём создают файловую систему.
В отличие от раздела, LV может занимать несколько дисков и не обязан быть непрерывным. Пока файловая система это умеет, том увеличивают при смонтированной файловой системе, а место берётся из любого свободного участка группы, даже с другого диска.
диск 1 диск 2 физические тома (PV)
\ /
группа томов vg_lab общий пул места (VG)
/ \
lv_data lv_logs логические тома (LV) с файловыми системами
Установщик Ubuntu Server умеет ставить систему на LVM (флажок «Set up this disk as an LVM group», см. статью 02), при этом корневой том не обязательно занимает всю группу. Проверьте свой сервер:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
sudo vgs
Пример вывода lsblk (имена и размеры в вашей системе другие):
NAME SIZE TYPE FSTYPE MOUNTPOINTS
sda 40G disk
├─sda1 1G part vfat /boot/efi
├─sda2 2G part ext4 /boot
└─sda3 37G part LVM2_member
└─ubuntu--vg-ubuntu--lv 18.5G lvm ext4 /
Пример вывода vgs:
VG #PV #LV #SN Attr VSize VFree
ubuntu-vg 1 1 0 wz--n- <36.95g <18.47g
Колонка VFree показывает свободное место группы: если оно есть, корневой том можно увеличить на лету (ниже).
Основные команды
| Команда | Что делает |
|---|---|
pvcreate /dev/<ДИСК> |
записывает на устройство метку LVM, делая его PV |
vgcreate vg_lab /dev/<ДИСК> |
создаёт группу томов из PV |
vgextend vg_lab /dev/<ДИСК> |
добавляет PV в группу |
lvcreate -n lv_data -L 500M vg_lab |
создаёт LV заданного размера |
lvextend -r -L +300M vg_lab/lv_data |
увеличивает LV на 300 МБ и расширяет файловую систему |
lvextend -r -l +100%FREE vg_lab/lv_data |
увеличивает LV на всё свободное место группы |
Опция -r (--resizefs) вызывает fsadm, который умеет работать с ext2/3/4, ReiserFS и XFS. Вручную то же делают так: ext4 расширяет resize2fs <устройство> (можно при монтировании), XFS — xfs_growfs <точка_монтирования> (файловая система должна быть смонтирована). Если вы увеличили том без -r, а df показывает прежний размер, расширьте файловую систему одной из этих команд.
Практика: LVM на тестовых дисках
Подготовка. Нужны четыре пустых виртуальных диска по 1 ГБ: два для LVM, два для RAID. Добавляйте их только тестовой ВМ (отдельной или клону lnx1). В Hyper-V для ВМ 2-го поколения (имя ВМ и пути учебные):
Stop-VM -Name '<ТЕСТОВАЯ_ВМ>'
1..4 | ForEach-Object {
$p = "D:\VM\lab-disk$_.vhdx"
New-VHD -Path $p -SizeBytes 1GB -Dynamic | Out-Null
Add-VMHardDiskDrive -VMName '<ТЕСТОВАЯ_ВМ>' -ControllerType SCSI -Path $p
}
Start-VM -Name '<ТЕСТОВАЯ_ВМ>'
В гостевой системе появятся четыре новых диска sd? (имена и порядок могут быть любыми). Убедитесь, что они пусты (wipefs без опций только перечисляет сигнатуры и ничего не стирает; пустой вывод означает чистый диск):
lsblk -f
sudo wipefs /dev/<ДИСК1> /dev/<ДИСК2> /dev/<ДИСК3> /dev/<ДИСК4>
Пример вывода lsblk -f (часть колонок опущена; sdb — диск с данными из статьи 04, sdc…sdf — пустые тестовые):
NAME FSTYPE MOUNTPOINTS
sda ... (системный диск, разделы опущены)
sdb
└─sdb1 ext4 /srv/data
sdc
sdd
sde
sdf
Дальше <ДИСК1> и <ДИСК2> — тестовые диски под LVM, <ДИСК3> и <ДИСК4> — под RAID. Подставляйте имя вида sdc без скобок <…>.
Шаг 1. Группа и том. PV можно создать и на разделе (так сделано в документации Ubuntu), и на диске целиком; для учебных дисков берём диск:
sudo pvcreate /dev/<ДИСК1>
sudo vgcreate vg_lab /dev/<ДИСК1>
sudo lvcreate -n lv_data -L 500M vg_lab
sudo mkfs.ext4 /dev/vg_lab/lv_data
sudo mkdir -p /mnt/lvdemo
sudo mount /dev/vg_lab/lv_data /mnt/lvdemo
echo "before resize" | sudo tee /mnt/lvdemo/test.txt
df -h /mnt/lvdemo
mkfs.ext4 здесь стирает только что созданный том (путь /dev/vg_lab/lv_data, он же /dev/mapper/vg_lab-lv_data).
Шаг 2. Увеличиваем без отключения. В группе осталось свободное место (диск 1 ГБ, том 500 МБ), поэтому:
sudo vgs vg_lab
sudo lvextend -r -L +300M vg_lab/lv_data
df -h /mnt/lvdemo
cat /mnt/lvdemo/test.txt
Том остался смонтированным, файл на месте, а df показывает новый размер: ext4 расширен на лету.
Шаг 3. Снимок (по желанию). Снимок (snapshot) «замораживает» состояние тома: он хранит только блоки, изменённые после создания. После шага 2 в группе осталось около 200 МБ свободного места, этого хватит. Вызов взят из документации Ubuntu:
sudo lvcreate --snapshot --name lv_snap --size 100M vg_lab/lv_data
sudo lvs
sudo lvremove vg_lab/lv_snap
lvremove спросит подтверждение ([y/n]): проверьте имя тома и ответьте y.
Размер снимка — запас под изменения исходного тома: если он израсходован целиком, снимок ломается. Снимок лежит в той же группе на тех же дисках, поэтому это не резервная копия, а способ получить согласованный образ файловой системы и скопировать его, не останавливая службу. Возврат к состоянию снимка (lvconvert --merge) — отдельная тема.
Шаг 4. Тому нужно больше, чем осталось в группе: добавляем диск.
sudo pvcreate /dev/<ДИСК2>
sudo vgextend vg_lab /dev/<ДИСК2>
sudo lvextend -r -l +100%FREE vg_lab/lv_data
sudo pvs -o pv_name,vg_name,pv_size,pv_free
sudo vgs -o vg_name,pv_count,lv_count,vg_size,vg_free
sudo lvs -o lv_name,vg_name,lv_attr,lv_size
Пример вывода (имена и значения приблизительные):
PV VG PSize PFree
/dev/sdc vg_lab 1020.00m 0
/dev/sdd vg_lab 1020.00m 0
VG #PV #LV VSize VFree
vg_lab 2 1 1.99g 0
LV VG Attr LSize
lv_data vg_lab -wi-ao---- 1.99g
Один том теперь занимает два диска, и надёжность от этого падает: от отказа диска LVM не защищает, для этого служит RAID (ниже).
Шаг 5. Постоянное подключение. Порядок тот же, что в статье 04: копия файла, UUID, строка с nofail, проверка до перезагрузки:
sudo cp -a /etc/fstab /etc/fstab.bak
sudo blkid /dev/vg_lab/lv_data
sudo nano /etc/fstab
UUID=<UUID_ИЗ_BLKID> /mnt/lvdemo ext4 defaults,nofail 0 2
sudo systemctl daemon-reload
sudo findmnt --verify --verbose
sudo umount /mnt/lvdemo
sudo mount -a
findmnt /mnt/lvdemo
Если findmnt /mnt/lvdemo ничего не показывает, не перезагружайтесь: исправьте строку или верните копию (sudo cp /etc/fstab.bak /etc/fstab).
Увеличить можно на ходу, уменьшить — осторожно
Увеличение безопасно и не требует остановки. Уменьшение — нет, и ошибка стоит данных: сначала нужно уменьшить файловую систему, потом том, а lvreduce без этого просто отрезает конец тома, и данные из него пропадают (справочник lvreduce предупреждает об этом прямо). ext4 уменьшают только размонтированной. Для XFS в документации утилит основной сценарий — расширение (xfs_growfs), возможности уменьшения ограничены: планируйте так, будто XFS уменьшить нельзя. Если том нужно уменьшить, заранее сделайте проверенную резервную копию; часто проще создать новый том нужного размера и перенести данные.
Заменить диск, не останавливая сервер
Ещё одно преимущество LVM: данные можно переносить между дисками при работающих томах. Так меняют старый диск на новый.
Warning
Это иллюстрация для боевого сервера; в учебной группе её не выполняйте (места для переноса там нет). pvmove переносит данные, vgreduce убирает диск из группы, pvremove стирает метку LVM. Перед началом сверьте имена по lsblk и sudo pvs -o pv_name,vg_name,pv_free: свободного места на остальных PV должно быть не меньше, чем занято на старом. Резервная копия обязательна.
sudo pvcreate /dev/<НОВЫЙ_ДИСК>
sudo vgextend <ВГ> /dev/<НОВЫЙ_ДИСК>
sudo pvmove /dev/<СТАРЫЙ_ДИСК>
sudo vgreduce <ВГ> /dev/<СТАРЫЙ_ДИСК>
sudo pvremove /dev/<СТАРЫЙ_ДИСК>
pvmove без имени тома переносит все тома с указанного PV; --background и --interval позволяют уйти в фон и следить за ходом. Если перенос прервался (например, из-за сбоя питания), выполните sudo pvmove без аргументов: он продолжит с последней контрольной точки. Отменить перенос можно командой sudo pvmove --abort: перенесённые участки останутся на новом диске, остальные на старом (с опцией --atomic — все на старом). Перед vgreduce проверьте sudo pvs -o pv_name,pv_size,pv_free: у старого PV pv_free должен равняться pv_size, то есть данных на нём не осталось; vgreduce убирает только неиспользуемый PV.
На корневом томе не хватает места
Если в vgs есть VFree, одна команда решает задачу (подставьте имена из lvs):
sudo lvextend -r -l +100%FREE <ВГ>/<ЛВ>
Если свободного места нет, а вы увеличили виртуальный диск в гипервизоре, сначала нужно расширить раздел с PV и сам PV. На системном диске это рискованно: сначала контрольная точка ВМ, номер раздела возьмите из lsblk и pvs. Если lsblk не показывает новый размер диска, перезагрузите ВМ:
sudo growpart -N /dev/<СИСТЕМНЫЙ_ДИСК> <НОМЕР_РАЗДЕЛА>
sudo growpart /dev/<СИСТЕМНЫЙ_ДИСК> <НОМЕР_РАЗДЕЛА>
sudo pvresize /dev/<РАЗДЕЛ_С_PV>
-N (dry run) только показывает, что будет сделано. growpart входит в пакет cloud-guest-utils; если команды нет, выполните sudo apt install cloud-guest-utils. После pvresize в группе появится свободное место, и можно выполнять lvextend -r.
RAID: отказоустойчивость, но не резервная копия
RAID объединяет несколько дисков в одно устройство. Программный RAID Linux реализует драйвер md, управляют им утилитой mdadm. Состав массива записан в метаданных (суперблоке) на каждом диске, по умолчанию версии 1.2, поэтому массив можно собрать заново из тех же дисков. Готовое устройство (/dev/md0) работает как обычный диск: на нём создают файловую систему либо делают его физическим томом LVM, сочетая надёжность md с гибкостью LVM. У LVM есть и собственные RAID-тома (lvcreate --type raid1), но здесь мы разбираем классический md.
| Уровень | Что делает | Полезная ёмкость | Переживает отказ |
|---|---|---|---|
| RAID0 | чередует данные по дискам, избыточности нет | сумма дисков | ничего: отказ любого диска теряет всё |
| RAID1 | зеркало: на каждом диске одни и те же данные | один диск (меньший из них) | всех дисков, кроме одного |
| RAID5 | данные и распределённая чётность | (N−1)×S | одного диска |
| RAID6 | две распределённые чётности | (N−2)×S | любых двух дисков |
| RAID10 | зеркала плюс чередование | N×S, делённое на число копий | зависит от настройки |
Здесь N — число дисков, S — размер наименьшего из них. По смыслу простой том Storage Spaces соответствует RAID0, зеркальный — RAID1 и RAID10, с чётностью — RAID5 и RAID6.
Warning
RAID не резервная копия. Он защищает от отказа диска, но не от удалённого файла, ошибки администратора, вируса-шифровальщика, пожара и кражи: изменения пишутся на все диски параллельно, и ошибочное тоже. Пока массив перестраивается после отказа, запаса прочности у него нет. Копия на другом носителе и в другом месте обязательна: см. правило 3-2-1 и статью про rsync и restic.
Практика: RAID1 на тестовых дисках
Пакет mdadm входит в набор Ubuntu Server; проверьте command -v mdadm, а если его нет, поставьте sudo apt install mdadm (установка может спросить адрес для уведомлений, по умолчанию root).
Warning
mdadm --create записывает метаданные на диски, и прежнее содержимое устройств нельзя считать сохранённым. Используйте её только для новых массивов на пустых тестовых дисках: lsblk -f показывает у них пустые FSTYPE и MOUNTPOINTS. Существующий массив собирают заново командой --assemble, а не --create.
Шаг 1. Создаём массив.
lsblk -f
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 \
/dev/<ДИСК3> /dev/<ДИСК4>
Команда напечатает Note: this array has metadata at the start and may not be suitable as a boot device и спросит Continue creating array?. Для RAID1 с метаданными по умолчанию (1.2) этот вопрос штатный: наш массив не загрузочный, поэтому на пустых тестовых дисках ответьте y. Если выше есть строки вроде appears to contain an ext2fs file system, appears to be part of a raid array или partition table exists on …, ответьте n: диск не пуст или выбран не тот, перепроверьте имена по lsblk -f. Состояние:
cat /proc/mdstat
sudo mdadm --detail /dev/md0
Массивом можно пользоваться сразу, не дожидаясь начальной синхронизации (resync), но для проверки подождите её окончания. Пример /proc/mdstat:
Personalities : [raid1]
md0 : active raid1 sdf[1] sde[0]
1046528 blocks super 1.2 [2/2] [UU]
[=========>...........] resync = 48.2% (505088/1046528)
unused devices: <none>
Как читать: в первой строке массива перечислены диски (sde[0], sdf[1]); [2/2] значит «нужно 2 диска, работает 2»; [UU] — состояние каждого диска (U работает, _ выпал); (F) возле диска помечает отказавший; строка с процентами показывает идущую синхронизацию. Вывод mdadm --detail содержит State : clean, число активных и отказавших дисков и таблицу участников (active sync).
Шаг 2. Файловая система и данные.
sudo mkfs.ext4 /dev/md0
sudo mkdir -p /mnt/raiddemo
sudo mount /dev/md0 /mnt/raiddemo
echo "raid test" | sudo tee /mnt/raiddemo/test.txt
Шаг 3. Сохраняем конфигурацию. Без записи в mdadm.conf массив после перезагрузки может быть собран под другим именем. Пакет создаёт /etc/mdadm/mdadm.conf при установке, а новые массивы вы добавляете сами. Вывод --detail --scan стоит просмотреть до использования: в нём бывают лишние детали.
sudo cp -a /etc/mdadm/mdadm.conf /root/mdadm.conf.orig
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo cat /etc/mdadm/mdadm.conf
sudo update-initramfs -u
Пример добавленной строки: ARRAY /dev/md0 metadata=1.2 name=lnx1:0 UUID=<UUID> (путь зависит от того, как создан массив). Зачем update-initramfs -u: скрипт пакета копирует /etc/mdadm/mdadm.conf в образ initramfs, из которого система собирает массивы на раннем этапе загрузки; для массива с корневой файловой системой это обязательно, для остальных нужно, чтобы конфигурация внутри образа совпадала с настоящей. Сборка системы на RAID — отдельная тема.
Шаг 4. Подключаем по UUID с nofail. Как в статье 04 и в LVM-практике выше (копию fstab вы уже сделали; если пропустили LVM-практику, сделайте её сейчас: sudo cp -a /etc/fstab /etc/fstab.bak):
sudo blkid /dev/md0
sudo nano /etc/fstab
sudo systemctl daemon-reload
sudo findmnt --verify --verbose
sudo umount /mnt/raiddemo
sudo mount -a
findmnt /mnt/raiddemo
Строка в fstab — UUID=<UUID_ИЗ_BLKID> /mnt/raiddemo ext4 defaults,nofail 0 2.
Шаг 5. Имитируем отказ диска. Пометим диск неисправным и посмотрим, что останется:
sudo mdadm /dev/md0 --fail /dev/<ДИСК4>
cat /proc/mdstat
cat /mnt/raiddemo/test.txt
sudo mdadm /dev/md0 --remove /dev/<ДИСК4>
В /proc/mdstat появится sdf[1](F) и [2/1] [U_]: массив деградировал, но работает, и файл читается. В жизни диск заменяют физически и добавляют новый; в тесте вернём тот же:
sudo mdadm /dev/md0 --add /dev/<ДИСК4>
cat /proc/mdstat
Пойдёт перестроение (в mdstat строка recovery), по его окончании снова [UU]. Порядок замены такой: --fail, --remove, замена диска, --add нового. Если добавить диск в здоровый массив, он станет запасным (hot spare) и включится в работу сам при отказе другого диска. Не откладывайте замену: следующий отказ деградировавшего массива приведёт к потере данных.
Шаг 6. Мониторинг. Отказ диска нужно заметить. Служба mdmonitor.service следит за массивами и при событиях Fail, DegradedArray и некоторых других отправляет письмо на адрес из строки MAILADDR в mdadm.conf (пакет по умолчанию записывает root) или запускает вашу программу (PROGRAM). Подключённые к ней таймеры: mdmonitor-oneshot.timer раз в сутки напоминает о деградировавших массивах, а mdcheck_start.timer раз в месяц запускает проверку (scrubbing) — чтение всего массива в поисках ошибок. Посмотрите:
systemctl status mdmonitor
systemctl list-timers | grep md
sudo mdadm --monitor --scan --test --oneshot --no-sharing
Последняя команда генерирует проверочное оповещение (TestMessage) для MAILADDR и PROGRAM; доставку она сама не показывает. --no-sharing не даёт ей вмешиваться в работу постоянно запущенного монитора. Письмо с сервера отправляется только при настроенной почтовой службе (отдельная тема); без неё читайте состояние массива сами (/proc/mdstat) или подключите внешнюю систему мониторинга (Zabbix, Prometheus).
Note
SMART (Self-Monitoring, Analysis and Reporting Technology, технология самодиагностики дисков) позволяет диску сообщать о своём состоянии. Если команды smartctl нет, выполните sudo apt install smartmontools. Тогда sudo smartctl -H /dev/sda покажет общий вердикт, а sudo smartctl -x /dev/sda — подробности. Статус «failing» означает, что диск уже отказал или предсказывает отказ в течение 24 часов, поэтому данные нужно срочно копировать. Отсюда следует и обратное: «PASSED» говорит лишь об отсутствии такого сигнала, а не о том, что диск здоров, и предупреждение может не прийти вовсе. В виртуальной машине виртуальные диски SMART-данных, скорее всего, не дадут; пробуйте на физическом сервере.
Уборка. После практики верните систему в исходное состояние. Перед каждой разрушающей командой проверьте имена по lsblk -f (lvremove попросит подтверждение):
sudo umount /mnt/lvdemo /mnt/raiddemo
sudo nano /etc/fstab # удалите строки с /mnt/lvdemo и /mnt/raiddemo
sudo systemctl daemon-reload
sudo findmnt --verify --verbose
sudo lvremove vg_lab/lv_data
sudo vgremove vg_lab
sudo pvremove /dev/<ДИСК1> /dev/<ДИСК2>
sudo mdadm --stop /dev/md0
sudo mdadm --zero-superblock /dev/<ДИСК3> /dev/<ДИСК4>
sudo cp /root/mdadm.conf.orig /etc/mdadm/mdadm.conf
sudo update-initramfs -u
sudo rmdir /mnt/lvdemo /mnt/raiddemo
Вместо правки можно вернуть копию (sudo cp /etc/fstab.bak /etc/fstab), если больше ничего в файле не менялось. Затем выключите ВМ, отключите тестовые диски и удалите файлы VHDX. Когда findmnt --verify не сообщает об ошибках, а система загружается, удалите созданные копии.
Типичные ошибки и недоразумения
- Перепутали имя диска. После добавления диска имена могут сдвинуться. Перед каждой разрушающей командой смотрите
lsblk -f, а вfstabиспользуйте UUID. - Увеличили LV, а
dfне изменился. Файловая система не расширена: нужна опция-rлибоresize2fs(ext4) илиxfs_growfs(XFS). - Уменьшили файловую систему или том в неверном порядке и без копии. Данные в отрезанной части теряются.
- Снимок переполнился. Он перестал быть пригодным; следите за заполнением в
lvsи не оставляйте снимки надолго. - Массив не записан в
mdadm.conf. После перезагрузки он может собраться под другим именем (чаще/dev/md127). Запись вfstabпо UUID это переживёт, а запись/dev/md0нет; сохранение конфигурации делает имя предсказуемым. - Повторный
mdadm --createна существующих дисках. Для сборки служит--assemble. - Считают RAID резервной копией. Это не так: см. предупреждение выше.
- Отказ диска заметили через месяцы. Мониторинг не проверен; проверьте оповещение командой
--test.
Проверьте себя
- Чем отличаются PV, VG и LV? PV — диск или раздел, инициализированный для LVM; VG — пул из PV; LV — том из свободного места группы, на нём создают файловую систему.
- Как увеличить смонтированный том
lv_dataиз группыvg_labна всё свободное место группы?sudo lvextend -r -l +100%FREE vg_lab/lv_data: опция-rрасширит и файловую систему; ext4 и XFS расширяются при монтировании. - Почему уменьшение тома опаснее увеличения? Сначала нужно уменьшить файловую систему, потом том; иначе данные в отрезанной части теряются. ext4 уменьшают только размонтированной, XFS планируют как не уменьшаемую. Нужна резервная копия.
- Защитит ли RAID1 от удаления файла или от шифровальщика? Нет: изменение мгновенно попадает на оба диска. Нужна отдельная резервная копия на другом носителе.
- В
/proc/mdstatвидно[2/1] [U_]. Что это значит и что делать? Один из двух дисков выпал, массив деградировал, но работает. Найти диск (mdadm --detail), пометить и убрать его (--fail,--remove), заменить и добавить новый (--add), следить за перестроением и проверить резервную копию.
Что дальше
- Резервное копирование в Linux: tar, rsync и restic — то, чего RAID не заменяет.
- Журналы: journald, rsyslog и logrotate — как искать события дисков и ограничивать размер журналов.
- Мониторинг: Prometheus, node_exporter и Grafana — графики и оповещения о свободном месте.
Источники
- Ubuntu Server: About Logical Volume Management (LVM) — PV, VG, LV, расширение при монтировании, предупреждение об уменьшении, снимки
- Ubuntu Server: How to manage logical volumes —
pvcreate,vgcreate,lvcreate,lvextend --resizefs,pvmove, снимки,lvconvert --merge - lvextend(8), Ubuntu 24.04 —
-r,-L,-l +100%FREE - pvcreate(8), Ubuntu 24.04 — PV на диске целиком или разделе
- fsadm(8), Ubuntu 24.04 — поддерживаемые файловые системы при
lvextend -r - resize2fs(8), Ubuntu 24.04 — расширение ext4 при монтировании, уменьшение только размонтированной
- xfs_growfs(8), Ubuntu 24.04 — расширение XFS, требование монтирования, ограничения при уменьшении
- growpart(1), Ubuntu 24.04 — расширение раздела, опция
-N - mdadm(8), Ubuntu 24.04 —
--create,--detail,--fail,--remove,--add,--monitor,--zero-superblock, метаданные 1.2 - md(4), справочник пакета mdadm (Debian) — уровни RAID, сколько отказов переживает каждый, ёмкость зеркала и RAID10
- Linux Raid Wiki: How to protect your data — RAID не заменяет резервную копию
- Linux Raid Wiki: Mdstat — формат
/proc/mdstat - mdadm для Ubuntu 24.04 (исходники пакета) — каталоги
debian/иsystemd/:mdadm.conf,MAILADDR, хук initramfs, таймеры;Create.c: предупреждение и вопрос при--create - smartctl(8), Ubuntu 24.04 — опция
-Hи смысл статуса - Microsoft Learn: Storage Spaces overview — пул, виртуальные диски, simple, mirror, parity