Что такое LVM? И зачем он нужен? Создание lvm.

На моем домашнем сервере Linux установлен диск на 250 ГБ. Я только что купил новый 250 ГБ SATA-диск, и я хочу добавить новый диск в мой существующий том LVM, чтобы увеличить его размер до 500 ГБ. Как добавить диск в LVM и расширить объем LVM в операционной системе Linux?

Создание и удаление

Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан физический том (physical volume). К примеру, мы используем для LVM диск sda и раздел sdb2 :

Pvcreate /dev/sda pvcreate /dev/sdb2

На этих физических томах создаём группу томов , которая будет называться, скажем, vg1 :

Vgcreate -s 32M vg1 /dev/sda /dev/sdb2

Посмотрим информацию о нашей группе томов:

Vgdisplay vg1

Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется.

Теперь в группе томов можно создать логические тома lv1 и lv2 размером 20 Гбайт и 30 Гбайт соответствено:

Lvcreate -n lv1 -L 20G vg1 lvcreate -n lv2 -L 30G vg1

Теперь у нас есть блочные устройства /dev/vg1/lv1 и /dev/vg1/lv2 .

Осталось создать на них файловую систему. Тут различий с обычными разделами нет:

/dev/vg1/lv1 /dev/vg1/lv2

Удаление LVM (или отдельных его частей, например, логических томов или групп томов) происходит в обратном порядке — сначала нужно отмонтировать разделы, затем удалить логические тома (lvremove), после этого можно удалить группы томов (vgremove) и ненужные физические тома (pvremove).

Шаг 1: уменьшаем /var

В моем случае (софтовый raid1) я сначала проверил на всякий случай, что все диски подключены и ошибок нет (cat /proc/mdstat).

Я не был уверен, что размонтировать /var (umount /var) в рабочем режиме хорошая мысль, поэтому загрузился с LiveCD CentOS в Rescue Mode (можно было войти в single mode и без LiveCD).

Проверяем доступность физического тома LVM:

Читайте также:  3 полезных сервиса для управления финансами в бизнесе

# pvscan PV /dev/md1 VG VolGroup lvm2

Проверяем доступность групп томов:

# vgscan Reading all physical volumes. This may take a while… Found volume group «VolGroup» using metadata type lvm2

Активируем логические тома:

Смотрим логические тома:

# lvscan ACTIVE «/dev/VolGroup/LogVol01» inherit ACTIVE «/dev/VolGroup/LogVol00» inherit ACTIVE «/dev/VolGroup/LogVol02» inherit

Можно посмотреть подробности тома /dev/VolGroup/LogVol01 (он у нас /var):

# lvdisplay /dev/VolGroup/LogVol01

а можно и не смотреть.

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

Отмонтируем том, который у нас /var и который будет уменьшать:

# umount /dev/VolGroup/LogVol01

Выполняем проверку файловой системы тома:

# /dev/VolGroup/LogVol01

Команда должна пройти без ошибок.

Выполняем проверку на наличие ошибок (-f — force):

# e2fsck -f /dev/VolGroup/LogVol01

Сначала уменьшаем размер файловой системы тома:

resize2fs -p /dev/VolGroup/LogVol01 30G

Внимание: здесь «30G» — это размер, который мы хотим задать для файловой системы, а не на который мы хотим уменьшить файловую систему.

И только после этого изменяем размер тома LVM:

# lvreduce -L 30G /dev/VolGroup/LogVol01

Получили сообщение об успешном завершении.

Теперь можно и не монтировать обратно раздел, а сразу перезагрузиться и проверить, что все ок, система загружается, df -h выдает размер /var равным 30 Гб.

На CentOS после загрузки до входа в систему появилось сообщение от SELinux, который должен переиндексировать изменения. Ок. Это заняло какое-то время и система сама перезагрузилась. После этого я вошел в систему и убедился, что все ок. Только после этого я перешел ко второму шагу (который оказался намного быстрее и проще), а именно увеличению корневого раздела путем добавления к нему всего доступного свободного места на физическом томе LVM. Заупстите pvscan и посмотрите, в выводе команды будет указано, есть доступное место (это плюс-минус то, что было занято раньше под /var). Теперь мы это свободное место добавим к / (корню).

Предварительная подготовка

Вам необходимо запустить систему с LiveCD и подключить компьютер к интернету. Далее откройте терминал и установите прямо в LiveCD сессию необходимые утилиты командой:

Всё, теперь можно начинать работу с LVM. Но сначала необходимо выделить место, на котором мы будем создавать LVM. Для этого вам потребуется редактор разделов Gparted, который находится в меню Система→Администрирование (System→Administration).

Читайте также:  3 способа узнать список пользователей в Linux

Из-за особенностей загрузчика GRUB лучше при использовании LVM сделать для /boot отдельный маленький раздел. Скажем, 200Mb должно хватить.

Создайте с помощью Gparted /boot раздел и раздел, поверх которого вы будете разворачивать LVM. Если вы готовы выделить под LVM весь жёсткий диск, то не забудте, что /boot раздел вашей Ubuntu нужно размещать не на LVM. Таким образом вам понадобятся два раздела — 200Mb под /boot и всё остальное под LVM. Не выбирайте никакую файловую систему для LVM раздела — просто пустой раздел (unformatted). Не забудьте, для применения всех внесённых вами через Gparted изменений нужно нажать на зелёную галочку на верхней панели или выбрать в меню Edit пункт Apply.

После того, как изменения в разметку будут успешно внесены, необходимо будет поменять тип нужного вам раздела на Linux LVM . Для этого нажмите правой клавишей на разделе, и выберите пункт «Управление флагами» (Manage flags). В открывшемся окне поставьте галочку в поле с именем lvm , дождитесь окончания применения всех изменений и закройте Gparted. На этом подготовительный этап закончен.

Присоединение диска

Прикрепить диск к спасательной VM, сделанный из снимка, взятого ранее.

Портал Azure > выберите диски спасения VM->

Заполнять поля. Назначьте имя на новый диск, выберите ту же группу ресурсов, что и снимок, затронутый VM, и службу спасения VM.

Исходный тип — Снимок . Исходный снимок — это имя ранее созданного снимка.

Создайте точку установки для прикрепленного диска.

mkdir /rescue

Запустите команду fdisk-l, чтобы убедиться, что диск моментального снимка присоединен и перечислить все доступные устройства и разделы

fdisk -l

В большинстве сценариев присоединенный диск моментального снимка будет рассматриваться как /dev/sdc, отображающий два раздела /dev/sdc1 и /dev/sdc2

Указывает раздел загрузки, оба раздела должны * быть установлены.

Запустите командный lsblk, чтобы увидеть LVM пострадавшего VM

Читайте также:  Топ 5 лучших российских дистрибутивов Linux 2019

lsblk

Убедитесь, отображаются ли LVM из пострадавшего VM. Если нет, используйте ниже команд, чтобы включить их и повторно использовать lsblk. Убедитесь, что LVMs с присоединенного диска видны перед началом разбирательства.

vgscan —mknodes vgchange -ay lvscan mount –a lsblk

Найдите путь для установки логического тома, который содержит раздел / (корневой). Он имеет файлы конфигурации, такие как /etc/default/grub

В этом примере взятие вывода из предыдущей команды lsblk rootvg-rootlv является правильной корневой LV для установки и может использоваться в следующей команде.

Выход следующей команды покажет путь к монтажу корневого LV

pvdisplay -m | grep -i rootlv

Приступить к монтажу этого устройства в каталоге /спасении

mount /dev/rootvg/rootlv /rescue

Установите раздел, на который установлен флаг загрузки /rescue/boot

mount /dev/sdc1 /rescue/boot

Проверка правильной установки файловых систем присоединенного диска с помощью команды lsblk

или командой df-Th

Снапшоты

Одна из важнейших особенностей LVM — это поддержка механизма снапшотов. Снапшоты позволяют сделать мгновенный снимок логического тома и использовать его в дальнейшем для работы с данными.

Примеры использования

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

Также снапшоты можно применить для организации поддержки файловым сервером с Samba механизма архивных копий, об этом в соответствующей статье:

Снапшоты

Одна из важнейших особенностей LVM — это поддержка механизма снапшотов. Снапшоты позволяют сделать мгновенный снимок логического тома и использовать его в дальнейшем для работы с данными.

Примеры использования

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

Также снапшоты можно применить для организации поддержки файловым сервером с Samba механизма архивных копий, об этом в соответствующей статье: