[OS] Добавляем диск в lvm без перезагрузки виртуальной машины

Привет, %username% ! Есть такая непередаваемая боль, как “заканчивается место на разделе”. Давайте рассмотрим как это провернуть на боевом сервере без остановки/перезагрузки и вообще сделаем красиво. Сразу скажу, что тут ничего сложного и с этим сможет справиться любой.
Немного вводной информации для понимания. Есть виртуальная машина на базе CentOS с дисковым пространством на 6.5ТБ (несколько дисков которые лежат на СХД). ОС установлена на LVM. Есть группа дисков огромным объёмом для хранения загружаемых пользователями файлов. Задача стоит такая: расширить раздел для пользовательских загрузок.
Приступим к самому простому варианту. Добавим диск и расширим volume group. Для начала надо подключиться к vCentre/vSphere Client и добавить новый диск (не буду показывать как это делается, потому что это просто). Далее после добавления диска в виртуальную машину нам надо заставить увидеть её этот новый диск. Провреяем сколько у нас сейчас свободного места на разделах:
df -h
После посмотрим какие диски присутствуют в системе:
fdisk -l
Заставим виртуалку просканировать устройства:
ls -la /sys/class/scsi_host/ echo - - - > /sys/class/scsi_host/host0/scan echo - - - > /sys/class/scsi_host/host1/scan echo - - - > /sys/class/scsi_host/host2/scan echo - - - > /sys/class/scsi_host/host3/scan
Количество host# у вас может отличаться — у меня их четыре как видно из примера выше. Далее проверяем как называется наш новый диск и появился ли он вообще:
fdisk -l
Далее мы добавляем на наш новый диск раздел (у меня это пусть будет sdd):
# fdisk /dev/sdd
Теперь перед нами консольная утилита для работы с дисками. Помощь вызывается по команде m . Мы же набираем команду p для просмотра текущих настроек диска. Потом добавляем новый раздел на диск командой n , после чего соглашаемся со всеми дефолтными значениями. Так же мы можем выбрать тип диска Linux LVM используя команду t или оставить по дефолту всё как есть. И закончив все настройки запишем их на диск командой w .
Теперь можно и расширять дисковое пространство, вот таким образом:
pvdisplay pvcreate /dev/sdd1 pvdisplay
Посмотрели на диски и увидели какой куда подключен. Далее посмотрим список volume group:
Посмотрели список volume group и выбрали тот который нам нужен. Теперь добавляем туда наш диск и расширяем объём на размер этого диска:
vgextend scan_volume /dev/sdd1 lvextend -l+100%FREE /dev/scan_volume/lv resize2fs /dev/scan_volume/lv df -h
Посмотрев на результаты скромного труда можем довольные налить чаю и отдохнуть. На этом всё!
Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.
- centos
- lvm
- disks
#Как добавить новый диск в Linux?
lsblk — вывести список блочных устройств;
fdisk /dev/sdb — создать новый раздел в неразмеченной области /dev/sdb ,
далее n — создать раздел, p — создать основной раздел, w — записать изменения на диск;
pvs — вывести список физических томов;
vgs — вывести список группы томов;
lvs — вывести список логических томов;
df -hT — вывести список разделов и файловых систем;
pvcreate /dev/sdb1 — создать новый физический том /dev/sdb1;
vgextend centos /dev/sdb1 — добавить том /dev/sdb1 в группу centos;
lvextend -l +100%FREE /dev/centos/root — расширить логический том /dev/centos/root; xfs_growfs /dev/mapper/centos-root — увеличить размер файловой системы XFS на логическом томе /dev/mapper/centos-root (для Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux);
resize2fs /dev/mapper/ubuntu-root — увеличить размер файловой системы EXT4 на логическом томе /dev/mapper/ubuntu-root (для Ubuntu, Debian).
#Добавление диска
В данном примере будет описано как расширить дисковое пространство раздела / (root) на 10Gb путем добавления нового устройства (диска) используя возможности LVM.
Расширение будет выполнено на примере дистрибутива CentOS . Данная инструкция подходит для большинства дистрибутивов Linux, дает подробную информацию, как корректно расширить дисковое пространство даже при нестандартной разметке разделов, учитывает особенности команд различных дистрибутивов.
Примечание: Все команды необходимо выполнять под пользователем root либо с правами суперпользователя (sudo).
При выполнении данной инструкции есть риск потери данных, поэтому предварительно рекомендуется сделать резервную копию виртуальной машины.
#Шаг 1. Анализ конфигурации дискового пространства и поиск нового устройства (диска)
Сперва следует определить название нового добавленного устройства (диска) в системе с помощью команды lsblk .

Структуру дискового пространства можно отобразить в виде схемы:

В данном примере мы видим, что в системе имеется 3 устройства:
На устройстве /dev/sda (30Gb) созданы 2 раздела:
- Раздел /dev/sda1 (1Gb) является первичным с меткой /boot, на который установлен загрузчик ядра linux.
- Раздел /dev/sda2 (29Gb) является расширенным разделом LVM, на котором создан физический том /dev/sda2. На основе физического тома создана группа томов centos, в которую входят 2 логических тома root и swap.
Устройства /dev/sdb (10Gb) и /dev/vda (20Gb) добавлены в систему, но не имеют разделов.
Выберем для расширения устройство /dev/sdb размером 10Gb.
Устройства (диски) в linux могут иметь следующие названия: sda, sdb, sdc и др.
Примечание: устройство vda было создано во время первичного заказа виртуальной машины с опцией дополнительный диск.
В данном примере мы используем новое устройство /dev/sdb (название устройства может отличаться).
#Шаг 2. Создание нового раздела на новом устройстве (диске)
Необходимо создать новый раздел командой: fdisk /dev/sdb , где /dev/sdb — имя нового раздела.
Далее последовательно ввести нижеуказанные ключи:
n — создать новый раздел
p — создать новый основной раздел
выбрать номер раздела, его первый и последний секторы (по умолчанию Enter )
w — сохранить новый раздел на диск
Созданный раздел можно увидеть, снова введя команду lsblk .
2.1 Используя утилиту fdisk , создайте новый раздел на новом устройстве, в нашем случае это /dev/sdb .
Примечание: название устройства может отличаться.
Введите n , чтобы создать новый раздел:
[root@centos ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.32.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0xba91dc06. Command (m for help): n
2.2 Затем выберите p , чтобы создать новый основной раздел:
Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1
Примечание: В вашей системе может быть только 4 основных раздела на одном диске.
Если вы уже достигли этого предела, создайте расширенный раздел.
2.3 Выберите номер раздела и его первый и последний секторы, если вы нажмете Enter , то по умолчанию новый раздел будет использовать все доступное дисковое пространство:
First sector (2048-20971519, default 2048): Last sector, +sectors or +size (2048-20971519, default 20971519): Created a new partition 1 of type 'Linux' and of size 10 GiB.
2.4 Наконец, вам нужно записать раздел на диск с помощью команды w .
Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
2.5 Проверьте, был ли создан раздел с помощью команды lsblk .

На устройстве /dev/sdb (10Gb) имеется раздел /dev/sdb1 (10Gb).
#Шаг 3. Анализ имеющейся конфигурации LVM и файловой системы
Для проверки существующей конфигурации LVM можно ввести команды:
pvs — вывести название и количество имеющихся физических томов (PV)
vgs — вывести группы томов (VG)
lvs — вывести логические тома (LV)
Необходимо определить системный раздел и тип файловой системы на нем, который требуется расширить с помощью команды
df -hT .

В данном примере мы видим, что в системе имеется физический том /dev/sda2, который входит в созданную группу томов centos.
В этой группе томов созданы 2 логических тома: root и swap.

В данном примере мы хотим расширить раздел с названием /dev/mapper/centos-root, размером 28Gb имеющий файловую систему xfs, который имеет точку монтирования /.
Структура дискового пространства до расширения LVM отображена на схеме:

#Шаг 4. Расширение LVM
4.1 На новом диске необходимо создать новый физический том с помощью команды:
pvcreate /dev/sdb1 , где /dev/sdb1 — имя нового раздела.
4.2 Расширить группу томов добавив к ней новый физический том с помощью команды:
vgextend centos /dev/sdb1 , где centos — название группы томов (можно узнать по команде vgs ).
4.3 Расширить логический том, выполнив команду:
lvextend -l +100%FREE /dev/centos/root , где /dev/centos/root — путь расширяемой файловой системы,
centos — название группы (можно узнать по команде vgs ),
root — название логического тома (можно узнать по команде lvs ).
В команде выше, вместо /dev/centos/root можно указать другой путь /dev/mapper/centos-root (можно узнать по команде df -hT ), результат будет тот же.
4.1 Создайте на только что созданном разделе физический том с помощью команды pvcreate . (в нашем примере созданный раздел это /dev/sdb1 . Обратите внимание,что название раздела может отличаться, а также проверьте созданный физический том командой pvs :

В данном примере физический том имеет свободное пространство 10Gb и не имеет группы томов.
4.2 На шаге 3.1 мы узнали название группы томов. Расширьте эту группу томов, добавив к ней новый физический том с помощью команды vgextend .
Проверьте изменения с помощью команды vgs . (в нашем примере группа томов называлась centos, новый физический том — /dev/sdb1 . Обратите внимание, у вас будет свое название группы и физического тома. Столбец VFree показывает количество свободного места.

В данном примере группа томов centos включает 2 физических тома и имеет 10Gb свободного пространства.
4.3 На шаге 3.1 мы узнали названия группы томов и расширяемого логического тома. Расширьте этот логический том, выполнив команду lvextend . (в нашем примере группа томов называлась centos , логический том — root . Обратите внимание, у вас будет свое название группы и логического тома. Убедитесь в расширении логического тома командой lvs .

В данном примере общий размер логического тома из группы томов centos расширен до 37.99Gb.
#Шаг 5. Расширение файловой системы
Примечание: Данная операция несет риск потери данных. Предварительно рекомендуется сделать резервную копию виртуальной машины.
Для увеличения файловой системы на логическом томе, необходимо ввести команду в зависимости от дистрибутива:
- Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux (файловая система XFS):
xfs_growfs /dev/mapper/centos-root , где
/dev/mapper/centos-root — название расширяемой файловой системы (название и тип можно узнать по команде df -hT ). - Ubuntu, Debian (файловая система ext4):
resize2fs /dev/mapper/ubuntu-root ,
где /dev/mapper/ubuntu-root — название расширяемой файловой системы (название и тип можно узнать по команде df -hT ).
5.1 Определим путь монтирования файловой системы раздела root, точку монтирования и тип файловой системы.
В нашем примере путь — /dev/mapper/centos-root (или /dev/centos/root ),
точка монтирования — / ,
тип файловой системы — xfs .
Примечание: Обратите внимание, у вас будет свой путь и тип файловой системы.
5.2 Далее необходимо увеличить размер файловой системы на логическом томе. В зависимости от типа файловой системы и дистрибутива выберите ниже подходящий вам тип.
5.2.1 Для файловой системы XFS (дистрибутивы Fedora, CentOS, RHEL, Oracle Linux, Alma Linux, Rocky Linux) используется утилита xfs_growfs и путь указанный в выводе команды df -hT для расширяемого раздела (в примере ниже для Centos — это /dev/mapper/centos-root ).

5.2.2 Для файловой системы ext4 (дистрибутивы Ubuntu, Debian) используется утилита resize2fs и путь указанный в выводе команды df -hT для расширяемого раздела (в примере ниже для Ubuntu это /dev/mapper/ubuntu-root ).

#Шаг 6. Проверка.
Для проверки нового размера диска и файловой системы следует повторить команды: df -hT и lsblk .

Итоговая конфигурация дискового пространства и файловой системы отображена на схеме:
Расширение LVM диска внутри OS Linux (на примере Debian)
Исходные данные: OS – Debian Linux 8. Оригинальный размер LVM – 15 GB. Задача: Расширить LVM до 20 GB, на весь доступный объем жесткого диска.
Важно! До внесения изменений обязательно сделайте резервную копию (бэкап) всех данных сервера. Любые манипуляции с разделами несут в себе риск потери данных.
Шаг первый
На данном этапе у нас есть один PV (physical volume) один VG (volume group) и один LV (logical volume).

Как видно из скриншота, у нас нет доступного места в physical volume и volume group для расширения нашего logical volume. Чтобы расширить logical volume, нам необходимо создать новый physical volume. Затем расширить наш logical volume, добавив в него новый physical volume.
Для создания нового раздела на жестком диске мы воспользуется программой fdisk:
n – для создания нового раздела на диске; p – для присвоения primary новому разделу.
Укажите номер, который будет носить этот раздел. First sector и Last sector указываем по умолчанию. После этого мы получим уведомление, что был создан раздел типа Linux размером 5 GB.
Теперь необходимо сменить тип раздела с Linux на Linux LVM: t – для смены типа созданного раздела. Указываем номер нашего раздела: 8e – это hex-код для типа LVM.
В результате этой операции мы получим сообщение, что раздел был изменен с типа Linux на Linux LVM.

Теперь убедимся, что все хорошо, – нажав p: p – для вывода всех томов на нашем диске

После чего – w, для записи изменений на диск и выхода из программы fdisk.
Выйдя из программы, мы получаем сообщение, что для применения изменений необходимо перезагрузиться (предпочтительно), либо выполнить команду partprobe.

После того, как мы успешно создали раздел, необходимо создать новый physical volume на основе этого раздела:
Команда вернет, что physical volume был успешно создан:
Как создать и настроить LVM раздел в ОС Linux
В статье мы опишем способы создания, настройки и модернизации инструмента LVM в операционной системе Linux, а также остановимся на безопасном способе восстановления данных.
Logical Volume Management
Что представляет собой LVM? Это системный инструмент, позволяющий совокупно использовать разные части одного диска или отдельные области различных дисков объединяя их в единый логический том. С его помощью пользователи могут выбрать нужные тома одного или нескольких накопителей и выделить отобранные группы в единичное пространство как отдельный диск.
LVM имеет ряд существенных преимуществ перед обычным способом организации дискового пространства в системе. Например, количество физических накопителей, участвующих в LVM, ограничено только желанием пользователей, конечный размер LVM и его состав можно изменить в любое время, функционал LVM оснащен технологией зеркалирования, идентичной принципам массива RAID-1.
Проверьте наличие и установите LVM
В отдельных версиях операционной системы Linux инструмент LVM предустановлен изначально. Проверьте его наличие, набрав в консоли команду «lvm».
А при его отсутствии, выполните установку LVM. Наберите в терминале системное указание «sudo apt install lvm2», а затем подтвердите свой выбор вводом пароля администратора и дополнительным согласием на установку LVM, путем набора в консоли ответа «Y» на соответствующий запрос системы.
LVM будет установлена, переходите к следующим настройкам.
Разметьте дисковые носители
Возьмите чистый один или, как в нашем примере, несколько накопителей (3 диска), не содержащих каких-либо разделов, и выполните соответствующую разметку. Это можно сделать двумя способами: напрямую управляя дисками и через терминал.
В первом случае сначала кликните требуемый носитель, а потом через дополнительные параметры выберите раздел, ответственный за форматирование.
Задайте предпочитаемые параметры и запустите процесс форматирования.
Подтвердите свои действия вводом пароля администратора и диск будет размечен. Повторите процесс для всех оставшихся накопителей, если их несколько.
Во втором случае в терминале введите команду «sudo –i» для входа под рутом, а потом наберите пароль администратора.
Форматируйте носитель командой «fdisk /dev/sdb» («sdb» в команде форматирования означает носитель, подвергающийся разметке).
Теперь задайте характеристики форматирования, а именно укажите параметры для индексов «n» (новый раздел), «p» (тип основной), «1» (первый номер раздела). Затем дважды кликните «Ввод» для исполнения.
Затем приспособьте раздел для LVM. Поменяйте тип готового раздела вводом атрибута «t» и задайте ему требуемую характеристику, набрав следом атрибут «8e».
Ознакомьтесь с конфигурацией полученного раздела. Введите атрибут «p» для просмотра. Если все верно, сохраните заданные установки. И повторите описанный алгоритм действий для оставшихся дисков.
Теперь создайте LVM. В терминале задайте команду «pvcreate /dev/sdb1». Повторите указание для всех последующих накопителей. Введите «pvcreate /dev/sdс1» для второго диска и «pvcreate /dev/sdd1» для третьего.
Создайте LVM
Когда разметка дисков выполнена, создайте из них LVM. В терминале наберите
«vgcreate vg1 /dev/sdb1 dev/sdc1 dev/sdd1» для сборки группы разделов. В команде перечислите все нужные диски («sdb1», «sdc1», «sdd1») и присвойте имя группе («vg1»). Название может быть любым, но предпочтительнее использовать в имени атрибут «vg», который означает групповое соединение дисков.
Подготовьте LVM для дальнейшего применения
Создайте логический том из собранной воедино группы дисков. Наберите в терминале команду «lvcreate -L 10G -n lv1 vg1».
Атрибут «-L» позволяет выбрать объем (в примере мы приняли 10ГБ), «-n» — присваивает имя, «vg1» определяет место получения зарезервированного объема.
Завершите настройку воссозданного тома
На этом этапе пользователям следует выполнить процедуру форматирования и последующего монтажа готового тома. Выполните операцию в управлении дисками или, как и ранее, посредством возможностей терминала. При выборе первого способа нажмите на логический том, перейдите к дополнительным параметрам, выберите раздел форматирования, задайте требуемые характеристики и дождитесь завершения форматирования.
Пройдите аутентификацию, а потом щелкните раздел, ответственный за монтаж. Теперь том смонтирован и готов к применению.
При выборе второго способа, откройте терминал и задайте соответствующую команду «mkfs -t ext4 /dev/vg1/lv1», которая содержит указания по установке файловой системы (в примере выбрана система Ext4), имя группы («vg1») и название тома («lv1»).
После форматирования осуществите процедуру монтирования. Наберите последовательно две команды «mkdir /mnt/lv1» и следом «mount -t ext4 /dev/vg1/lv1 /mnt/lv1».
Все операции завершены.
Примеры модификации LVM
При необходимости пользователи могут дополнительно изменить число накопителей в логическом томе, как напрямую добавив отдельный диск или несколько дисков, увеличив их общее количество, так и исключив незадействованный носитель из тома или совокупной группы.
Чтобы добавить дополнительный дисковый накопитель в существующую группу томов, предварительно разметьте его, используя ранее представленные способы. А затем в терминале введите команду «vgextend vg1 /dev/sde1» (атрибут «vg1» соответствует названию группы, атрибут «sde1» – добавляемый диск).
Чтобы произвести удаление, логический раздел следует сперва принудительно размонтировать. В терминале исполните команду «umount /mnt/lv1».
Теперь задайте команду «lvremove /dev/vg1/lv1». Подтвердите действие, введя в строке запроса «Yes». Система сообщит о завершении процедуры соответствующим уведомлением.
Удаляем группу. Наберите в терминале «sudo vgremove vg1».
Следом надо убрать диски, из которых она состоит. Задайте команду «sudo pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1», в которой последовательно перечислены все составляющие носители («sdb1», «sdc1», «sdd1», «sde1»).
Восстановление данных в LVM
Для возврата утраченных материалов с логического тома LVM пользователи могут воспользоваться специализированной программой для восстановления. В сети представлено много разных вариантов от многих сторонних разработчиков. Однако, чтобы итоговый результат восстановления не разочаровал, программа должна обладать некоторыми базовыми характеристиками.
Утилита на первичном этапе должна верно определять файловую системы, точно и корректно идентифицировать логический том, правильно отображать все сведения о нем. Также преимуществом программы будет наличие нескольких видов сканирования обнаруженных носителей, умение создавать образ диска для последующего восстановления, предварительно отображать содержимое любых файлов по выбору, поддерживать разные расширения файлов, предлагать на выбор различные способы для сохранения восстановленной информации, быть дружественной к пользователям и иметь понятный, простой и функциональный интерфейс.
Но в любом случае, конечный выбор программы для восстановления безусловно будет зависеть от персональных предпочтений пользователей и востребованного функционала.
Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике. Если у вас остались вопросы, задавайте их в комментариях.