Настройка хранилищ RAID и LVM в Linux

CompTIABeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь настраивать и управлять современными системами хранения данных в среде Linux. Вы освоите два мощных инструмента: менеджер логических томов (LVM) для гибкого управления дисковым пространством и mdadm для создания программных избыточных массивов независимых дисков (RAID). Данное занятие дает практический опыт построения отказоустойчивой и масштабируемой инфраструктуры через командную строку, используя петлевые устройства (loop devices) для имитации физических дисков.

Вы начнете с инициализации физических томов LVM и создания группы томов. Затем вы создадите, отформатируете, примонтируете и измените размер логического тома, чтобы понять принцип его динамической работы. После этого вы перейдете к сборке и монтированию массива RAID 1 (зеркалирование) для обеспечения избыточности данных. В завершение работы вы обеспечите сохранность этих конфигураций после перезагрузки системы, внеся изменения в файлы /etc/fstab и mdadm.conf.

Инициализация LVM с помощью pvcreate и vgcreate

На этом этапе вы начнете работу с менеджером логических томов (LVM). LVM — это мощный инструмент для управления устройствами хранения в Linux. Он добавляет уровень абстракции между физическими жесткими дисками и файловыми системами, что позволяет гибко изменять размеры томов «на лету».

Основные компоненты LVM:

  • Физические тома (Physical Volumes, PV): Это ваши блочные устройства, такие как разделы жесткого диска или, в нашем случае, имитируемые диски.
  • Группы томов (Volume Groups, VG): Это пулы хранения, созданные путем объединения одного или нескольких физических томов.
  • Логические тома (Logical Volumes, LV): Это «виртуальные разделы», которые вы создаете из пространства, доступного в группе томов. Именно на них создаются файловые системы.

Для начала убедимся, что необходимые инструменты, lvm2 и mdadm, установлены в системе.

sudo apt-get update && sudo apt-get install -y lvm2 mdadm

Поскольку в данной среде у нас нет свободных физических дисков, мы имитируем их с помощью петлевых устройств (loop devices). Такое устройство позволяет работать с обычным файлом как с блочным устройством. Создадим в каталоге проекта два файла по 256 МБ, которые будут служить образами дисков.

truncate -s 256M disk1.img disk2.img

Теперь проверьте, что файлы созданы и имеют правильный размер.

ls -lh

Вы должны увидеть результат, похожий на этот:

total 0
-rw-r--r-- 1 labex labex 256M Jan 1 12:00 disk1.img
-rw-r--r-- 1 labex labex 256M Jan 1 12:00 disk2.img

Затем свяжите эти файлы образов с петлевыми устройствами. Мы будем использовать /dev/loop20 и /dev/loop21.

sudo losetup /dev/loop20 disk1.img
sudo losetup /dev/loop21 disk2.img

Теперь, когда у нас есть «диски» (/dev/loop20 и /dev/loop21), мы можем инициализировать их как физические тома LVM с помощью команды pvcreate.

sudo pvcreate /dev/loop20 /dev/loop21

Вывод подтверждает успешное создание PV:

  Physical volume "/dev/loop20" successfully created.
  Physical volume "/dev/loop21" successfully created.

Вы можете просмотреть сводку по физическим томам с помощью pvs или получить подробную информацию через pvdisplay.

sudo pvs
  PV           VG   Fmt  Attr PSize   PFree
  /dev/loop20       lvm2 ---  256.00m 256.00m
  /dev/loop21       lvm2 ---  256.00m 256.00m

Когда физические тома готовы, следующим шагом будет создание группы томов с именем labvg, которая объединит пространство обоих PV. Для этого используем команду vgcreate.

sudo vgcreate labvg /dev/loop20 /dev/loop21

В случае успеха вы увидите:

  Volume group "labvg" successfully created

Наконец, проверим нашу новую группу томов с помощью vgs для краткого обзора или vgdisplay для деталей.

sudo vgs

Вывод покажет группу labvg общим размером около 512 МБ (по 256 МБ от каждого PV).

  VG    #PV #LV #SN Attr   VSize   VFree
  labvg   2   0   0 wz--n- 512.00m 512.00m

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

Создание и монтирование логического тома с помощью lvcreate и mkfs

На этом этапе вы воспользуетесь созданной ранее группой томов labvg для создания логического тома (LV). Логический том в LVM является аналогом обычного раздела диска. После создания его можно отформатировать и примонтировать, чтобы использовать для хранения данных.

Сначала создадим логический том размером 200 МБ с именем lablvm из пула ресурсов labvg. Используем команду lvcreate, указав размер флагом -L и имя флагом -n.

sudo lvcreate -L 200M -n lablvm labvg

Вы увидите подтверждение:

  Logical volume "lablvm" created.

Теперь можно просмотреть новый LV с помощью команды lvs, которая выводит список всех логических томов.

sudo lvs

В выводе отобразится ваш новый том lablvm в составе группы labvg.

  LV     VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lablvm labvg -wi-a----- 200.00m

Новый логический том доступен как устройство по пути /dev/labvg/lablvm, но сейчас это «сырое» неразмеченное блочное устройство. Чтобы хранить на нем файлы, необходимо создать файловую систему. Мы воспользуемся командой mkfs.ext4, чтобы отформатировать его в популярную файловую систему ext4.

sudo mkfs.ext4 /dev/labvg/lablvm

Команда выведет подробности о созданной файловой системе:

mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 51200 4k blocks and 51200 inodes
Filesystem UUID: 28796151-bd37-4cae-a17f-071db8795919
Superblock backups stored on blocks:
        32768

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Далее вам понадобится каталог, который будет служить «точкой монтирования». Это пустая папка, через которую файловая система логического тома будет подключена к общему дереву каталогов. Создадим каталог /lablvm в корневой директории.

sudo mkdir /lablvm

Наконец, используйте команду mount, чтобы подключить файловую систему вашего LV (/dev/labvg/lablvm) к точке монтирования (/lablvm).

sudo mount /dev/labvg/lablvm /lablvm

Чтобы убедиться, что том успешно примонтирован, и проверить доступное место, используйте команду df -h (disk free в удобном для чтения формате).

df -h /lablvm

Вывод покажет, что устройство примонтировано и имеет около 200 МБ свободного места.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  172M   24K  158M   1% /lablvm

Вы успешно создали, отформатировали и примонтировали логический том, сделав его готовым к работе.

Изменение размера логического тома LVM с помощью lvresize

На этом этапе вы познакомитесь с одной из самых мощных возможностей LVM: способностью изменять размер логического тома и его файловой системы прямо во время работы, без отключения устройства. Это огромное преимущество перед традиционными статическими разделами.

Сначала еще раз проверим текущий размер примонтированного логического тома с помощью df -h.

df -h /lablvm

Вы увидите, что размер тома составляет примерно 200 МБ.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  194M  2.6M  179M   2% /lablvm

Теперь представьте, что вашему приложению, работающему в /lablvm, не хватает места. Вам нужно увеличить емкость с 200 МБ до 300 МБ. Это можно сделать командой lvresize. Мы будем использовать флаг -r, который крайне важен: он указывает lvresize автоматически изменить размер файловой системы внутри тома. Без него файловая система осталась бы прежнего размера, и новое пространство было бы недоступно для использования.

sudo lvresize -r -L 300M /dev/labvg/lablvm

Вывод покажет, что и логический том, и файловая система меняют размер.

  Size of logical volume labvg/lablvm changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
  Logical volume labvg/lablvm successfully resized.
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/labvg-lablvm is mounted on /lablvm; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/labvg-lablvm is now 76800 (4k) blocks long.

Снова проверьте дисковое пространство с помощью df -h, чтобы подтвердить изменения.

df -h /lablvm

Теперь объем тома составляет около 300 МБ.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  293M  2.6M  275M   1% /lablvm

Иногда требуется не устанавливать новый абсолютный размер, а просто добавить определенное количество места. Давайте добавим еще 100 МБ. Это можно сделать, поставив знак + перед числом. В данном примере мы продолжим использовать метод указания абсолютного размера для надежности.

sudo lvresize -r -L 400M /dev/labvg/lablvm

Если во время операций изменения размера возникнет ошибка файловой системы, не волнуйтесь — такое иногда случается при быстрых последовательных изменениях. В этом случае можно восстановить работу, отмонтировав систему, запустив проверку и примонтировав обратно:

## Если возникла ошибка файловой системы, выполните эти команды:
## sudo umount /lablvm
## sudo e2fsck -f /dev/labvg/lablvm
## sudo mount /dev/labvg/lablvm /lablvm

Наконец, выполните df -h в последний раз, чтобы увидеть итоговый результат.

df -h /lablvm

Теперь объем тома составляет около 400 МБ, а свободное место в группе томов labvg соответственно уменьшилось.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  392M  2.7M  369M   1% /lablvm

Вы успешно дважды изменили размер работающего тома LVM, продемонстрировав, как легко управлять распределением хранилища без простоя системы.

Сборка и монтирование массива RAID 1 с помощью mdadm

На этом этапе мы переключим внимание с LVM на другую важную технологию хранения: RAID (избыточный массив независимых дисков). Вы воспользуетесь утилитой mdadm для создания массива RAID 1, также известного как «зеркало». В конфигурации RAID 1 данные записываются идентично на два диска, обеспечивая избыточность. Если один диск выйдет из строя, данные останутся в сохранности на другом.

Сначала нам понадобятся еще два имитируемых диска. Создадим два новых файла образов по 256 МБ, disk3.img и disk4.img, в каталоге ~/project.

truncate -s 256M disk3.img disk4.img

Затем свяжите эти новые файлы с неиспользуемыми петлевыми устройствами /dev/loop22 и /dev/loop23.

sudo losetup /dev/loop22 disk3.img
sudo losetup /dev/loop23 disk4.img

Теперь вы готовы к сборке RAID 1. Мы используем команду mdadm для создания нового RAID-устройства с именем /dev/md0.

  • --create /dev/md0: Создает новое RAID-устройство.
  • --level=1: Указывает уровень RAID, в данном случае RAID 1 (зеркалирование).
  • --raid-disks=2: Указывает, что массив будет состоять из двух дисков.
  • /dev/loop22 /dev/loop23: Устройства-компоненты массива.

Выполните следующую команду:

sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/loop22 /dev/loop23

Система запросит подтверждение перед продолжением. Введите y и нажмите Enter.

mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Вы можете проверить состояние вашего нового RAID-массива, просмотрев файл /proc/mdstat.

cat /proc/mdstat

Вывод покажет, что /dev/md0 активен и использует /dev/loop23 и /dev/loop22. Вы также можете увидеть процесс синхронизации массива (resync), что является нормальным. Массив можно использовать даже во время завершения этого процесса.

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 loop13[1] loop12[0]
      261120 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.4% (1088/261120) finish=0.1min speed=21760K/sec

unused devices: <none>

Как и в случае с томом LVM, новому RAID-устройству /dev/md0 нужна файловая система. Отформатируем его в ext4.

sudo mkfs.ext4 /dev/md0

Затем создайте точку монтирования для RAID-массива.

sudo mkdir /labraid

Наконец, примонтируйте RAID-устройство к новому каталогу.

sudo mount /dev/md0 /labraid

Убедитесь, что RAID-массив примонтирован правильно, используя df -h.

df -h /labraid

Вывод подтвердит, что устройство /dev/md0 общим размером около 256 МБ (так как это зеркало) примонтировано и готово к работе.

Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        249M  2.6M  234M   2% /labraid

Вы успешно создали и примонтировали массив RAID 1, обеспечив избыточность данных для точки монтирования /labraid.

Сохранение настроек монтирования и RAID в /etc/fstab и mdadm.conf

На этом заключительном этапе вы сделаете конфигурации LVM и RAID постоянными. В данный момент, если вы перезагрузите систему, RAID-массив не соберется автоматически, а ни том LVM, ни RAID-массив не будут примонтированы. Чтобы исправить это, нужно обновить два ключевых конфигурационных файла: /etc/mdadm/mdadm.conf для RAID-массива и /etc/fstab для точек монтирования.

Сначала разберемся с RAID-массивом. Системе нужно знать, как пересобрать /dev/md0 при загрузке. Утилита mdadm может сама сгенерировать необходимую строку конфигурации.

Выполните следующую команду, чтобы просканировать активный массив и вывести его параметры:

sudo mdadm --detail --scan

Вывод будет представлять собой одну строку с описанием вашего массива.

ARRAY /dev/md0 metadata=1.2 name=<hostname>:0 UUID=<some-uuid>

Теперь добавим эту конфигурацию в файл настроек mdadm, который находится по адресу /etc/mdadm/mdadm.conf. Мы перенаправим вывод команды сканирования прямо в файл с помощью tee.

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Вы можете убедиться, что строка добавлена, просмотрев содержимое файла:

cat /etc/mdadm/mdadm.conf

Далее нужно указать системе автоматически монтировать файловые системы при загрузке. Это делается путем добавления записей в /etc/fstab (таблицу файловых систем). Каждая строка в этом файле определяет точку монтирования.

Сначала добавим запись для тома LVM. Мы используем echo для создания строки и tee -a для добавления ее в /etc/fstab от имени суперпользователя.

echo '/dev/labvg/lablvm /lablvm ext4 defaults 0 0' | sudo tee -a /etc/fstab

Теперь сделайте то же самое для точки монтирования RAID-массива.

echo '/dev/md0 /labraid ext4 defaults 0 0' | sudo tee -a /etc/fstab

Проверьте правильность добавления обеих строк, просмотрев последние две строки файла /etc/fstab.

tail -n 2 /etc/fstab

Вы должны увидеть две только что добавленные строки:

/dev/labvg/lablvm /lablvm ext4 defaults 0 0
/dev/md0 /labraid ext4 defaults 0 0

Чтобы проверить правильность записей в /etc/fstab без перезагрузки, можно отмонтировать файловые системы, а затем использовать команду mount -a, которая монтирует всё, что перечислено в /etc/fstab.

Сначала отмонтируйте оба тома:

sudo umount /lablvm
sudo umount /labraid

Теперь выполните mount -a, чтобы система прочитала /etc/fstab и примонтировала всё необходимое.

sudo mount -a

Наконец, убедитесь, что они снова примонтированы, используя df -h.

df -h /lablvm /labraid

Вывод должен показать обе файловые системы примонтированными, как и раньше.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  392M  2.7M  369M   1% /lablvm
/dev/md0                  249M  2.6M  234M   2% /labraid

Поздравляем! Вы успешно настроили систему на автоматическую сборку RAID-массива и монтирование файловых систем LVM и RAID при загрузке.

Резюме

В этой лабораторной работе вы изучили основы продвинутого управления хранилищем в Linux с использованием LVM и программного RAID. Вы начали с имитации физических дисков с помощью truncate и losetup, затем инициализировали их как физические тома LVM (PV) с помощью pvcreate. Эти PV были объединены в группу томов (VG) с помощью vgcreate. Из этого пула ресурсов вы создали гибкий логический том (LV) с помощью lvcreate, отформатировали его в файловую систему ext4 с помощью mkfs и примонтировали к системе. Ключевая особенность LVM была продемонстрирована путем динамического изменения размера LV с помощью lvresize и расширения файловой системы для использования нового пространства с помощью resize2fs.

Кроме того, вы настроили программный массив RAID 1 (зеркало) с помощью утилиты mdadm для обеспечения избыточности данных. После сборки массива из двух имитируемых дисков вы отформатировали и примонтировали его аналогично тому LVM. Лабораторная работа завершилась обеспечением сохранности этих конфигураций после перезагрузки. Это было достигнуто путем добавления точек монтирования для тома LVM и RAID-массива в /etc/fstab, а также сохранения параметров RAID-массива в /etc/mdadm/mdadm.conf.