- Настройка и управление LVM разделами в Linux
- Установка утилиты lvm2
- Изменение размера дисков LVM
- Шаг 1: уменьшаем /var
- Шаг 2: увеличиваем размер тома LVM (который у нас / ) без перезагрузки
- Изменение размера томов LVM
- Подготовка к добавлению
- Примеры
- Расширение LVM диска внутри OS Linux (на примере Debian)
- Шаг первый
Настройка и управление LVM разделами в Linux
LVM (Logical Volume Manager) – подсистема операционных систем Linux, позволяющая использовать разные области физического жесткого диска или разных жестких дисков как один логический том. LVM встроена в ядро Linux и реализуется на базе device mapper.
Главные преимущества LVM – высокий уровень абстракции от физических дисков, гибкость и масштабируемость. Вы можете на лету изменять размер логического тома, добавлять (и удалять) новые диски. Для LVM томов поддерживается зекалирование, снапшоты (persistent snapshot) и striping (расслоение данных между несколькими дисками с целью увеличения производительности).
В данной статье мы рассмотрим использование LVM разделов на примере Linux CentOS 8, покажем процесс объединения двух дисков в одну группу LVM, посмотрим как создавать группы, тома, монтировать, расширять и уменьшать размер LVM разделов.
Прежде всего нужно разобраться с уровнями дисковых абстракций LVM.
- Physical Volume (PV) – физический уровень. Физические диски инициализируются для использования в LVM.
- Volume Group (VG) – уровень группы томов. Инициализированные диски объединяются в логические группы с именем.
- Logical Volume (LV) — создается логический том на группе томов, на котором размещается файловая система и данные.
Установка утилиты lvm2
Чтобы начать работу с LVM, нужно установить утилиту lvm2. Выполним следующие команды:
Изменение размера дисков LVM
На днях пришлось менять диски на сервере CentOS 6.7. Старые диски хоть и рабочие еще, но с нагрузкой не справлялись. Поэтому раскошелились и купили SSD диски такой же емкости, как и старые. Но т.к. стоимость 1 Гб на SSD диске намного дороже, то посмотрев на размер /var (180 Гб) и / (корневой раздел) 300 Гб, само собой напросилось решение увеличить размер / за счет уменьшения размера /var. Идея, конечно, хорошая, но раньше я никогда таким не баловался, поэтому провел выходные на форумах, проверил сначала все на виртуальной машине без raid, потом подумал, что на моем сервере работает софтовый raid1 и сделал тестовый стенд (на старый комп поставил CentOS 6.7 с двумя дисками в программном raid1) и проверил все на нем, потом уже выполнил повторно на рабочем сервере. Но все же волнительно было, чего уж. Итак, поехали!
Совет: если вы раньше никогда не развлекались изменениями разделов, никогда не пробуйте это делать на рабочем компьютере.
Итак, есть система из двух дисков, объединенных в raid1 (зеркало).
/dev/sda:
/dev/sda1 200 Мб, /dev/md0
/dev/sda2 480 Гб, /dev/md1
/dev/sdb:
/dev/sdb1 200 Мб, /dev/md0
/dev/sdb2 480 Гб, /dev/md1
На /dev/md1 тома LVM:
/dev/VolGroup/LogVol00 swap 2 Гб
/dev/VolGroup/LogVol01 /var 180 Гб, ext4
/dev/VolGroup/LogVol02 / 300 Гб, ext4
Для чего я привел пример разбивки? Чтобы вы обратили внимание, что мы в дальнейшем ни разу не будем ресайзить тома на устройствах /dev/sdXY. Мы все изменения разделов будем проводить только с логическими томами LVM!
Задача: изменить размер /var до 30 Гб и отдать все освободившееся место в / (корень). Файловая система обоих разделов ext4. Система CentOS 6.7.
Шаг 1: уменьшаем /var
В моем случае (софтовый raid1) я сначала проверил на всякий случай, что все диски подключены и ошибок нет (cat /proc/mdstat).
Я не был уверен, что размонтировать /var (umount /var) в рабочем режиме хорошая мысль, поэтому загрузился с LiveCD CentOS в Rescue Mode (можно было войти в single mode и без LiveCD).
Проверяем доступность физического тома LVM:
# pvscan
PV /dev/md1 VG VolGroup lvm2 [480.00 GiB / 0 free]
Проверяем доступность групп томов:
# vgscan
Reading all physical volumes. This may take a while.
Found volume group «VolGroup» using metadata type lvm2
Активируем логические тома:
# lvscan
ACTIVE ‘/dev/VolGroup/LogVol01’ [180.00 GiB] inherit
ACTIVE ‘/dev/VolGroup/LogVol00’ [2.00 GiB] inherit
ACTIVE ‘/dev/VolGroup/LogVol02’ [300.00 GiB] inherit
Можно посмотреть подробности тома /dev/VolGroup/LogVol01 (он у нас /var):
Все вышеуказанные проверки служат для того, чтобы вы были уверены, что тома LVM видны и активны и чтобы вы понимали, с каким именно томом вам следует проводить дальнейшие дествия. Идем дальше.
Отмонтируем том, который у нас /var и который будет уменьшать:
Выполняем проверку файловой системы тома:
Команда должна пройти без ошибок.
Выполняем проверку на наличие ошибок (-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). Теперь мы это свободное место добавим к / (корню).
Шаг 2: увеличиваем размер тома LVM (который у нас / ) без перезагрузки
Да, вы не очитались. Чтобы увеличить размер тома LVM нам не придется загружаться в single mode (или через LiveCD в Rescue mode).
На всякий случай, чтобы не перепутать, какому тому вы хотите отдать свободное место, выполните cat /etc/fstab и lvscan, убедитесь, что раздел / (корень) — это /dev/VolGroup/LogVol02, а не что-то иное 😉
Именно так, без пробелов между -l (это маленькая L) и +100%FREE. Заметьте, я не стал указывать, на сколько точно я хочу увеличть размер тома. В данной ситуации мне это было не нужно и чтобы не гадать, сколько конкретно надо добавить Гбайт, я просто указал, чтобы было добавлено все, что можно. man lvextend для ознакомления с вариациями -L+100G 😉 Опция -r указывает на то, чтобы был выполнен ресайз файловой системы после увеличения логического тома. Без этой опции команды было бы две:
# lvextend -l+100%FREE /dev/VolGroup/LogVol02
# resize2fs /dev/VolGroup/LogVol02
После успешного завершения я бы перезагрузился и проверил, что все ок.
Естественно, все вышеописанное может дать сбой на любом этапе, хотя бы из-за сбоя электропитания. Поэтому если данные на изменяемых разделах хоть как-то важны, вы должны иметь их копию.
Все вышеперечисленное верно для CentOS. Для Ubuntu вроде бы все то же самое. Думаю (не знаю) что для всех современных Linux все команды такие же.
Авторизуйтесь для добавления комментариев!
Изменение размера томов LVM
Одним из основных преимуществ использования LVM является простота изменения размеров томов LVM, что очень полезно, если в вашей файловой системе заканчивается свободное место на диске.
Если используется файловая система XFS, объем можно увеличить, но не уменьшить. Другие файловые системы, такие как Ext4 и Btrfs, поддерживают уменьшение размера файловой системы.
Уменьшение файловой системы Ext4 может быть выполнено только в автономном режиме, что означает, что вам нужно размонтировать ее, прежде чем вы сможете изменить ее размер. В этой статье вы узнаете, как увеличить размер логического тома LVM.
Подготовка к добавлению
Итак. Мы добавили в систему диск. Командой fdisk создали раздел, пометили его как LVM и назначили ему файловую систему XFS.
Командой pvsвидим наш чистый том /dev/sdc1
[root@server2 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a--
Добавление хранилища в VG
[root@server2 ~]# vgextend vgDATA /dev/sdc1 Volume group "vgDATA" successfully extended
[root@server2 ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- 10.00g
Физический том в 10g добавлен, но не используется в логическом томе.
[root@server2 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao----
[root@server2 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 19G 5.6G 14G 30% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 792K 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 470M 209M 262M 45% /boot tmpfs 379M 0 379M 0% /run/user/0 /dev/mapper/vgDATA-lvDATA 20G 33M 20G 1% /mnt/lvDATA
Как видно, все еще используется 20g.
Чтобы увеличить размер логического тома, используйте lvresize, затем идет опция -r, чтобы изменить размер файловой системы:
[root@server2 ~]# lvresize -r -l +100%FREE /dev/vgDATA/lvDATA Size of logical volume vgDATA/lvDATA changed from (7678 extents). Logical volume vgDATA/lvDATA successfully resized. meta-data=/dev/mapper/vgDATA-lvDATA isize=512 agcount=4, agsize=1310464 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=5241856, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 5241856 to 7862272
[root@server2 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- lvDATA vgDATA -wi-ao---- 29.99g
Убеждаемся, что логический том lvDATA стал на 10g больше.
Примеры
lvresize -r -l 75% VG /dev/vgdata/lvdata
Попытается добавить 75% от общего размера группы томов к логическому тому. (Обратите внимание на разницу с предыдущей командой.).
lvresize -r -l +75%VG /dev/vgdata/lvdata
lvresize -r -l +75%FREE /dev/vgdata/lvdata
Изменяет размер логического тома до общего размера, равного 75% объема свободного дискового пространства. (Обратите внимание на разницу с предыдущей командой.).
lvresize -r -l 75%FREE /dev/vgdata/lvdata
При изменении размера логического тома вы также можете использовать опцию -l, после которой указывается количество логических экстентов, которые вы хотите добавить или удалить.
Логическим экстентом является логический строительный блок, используемый при создании логических томов, который сопоставляется с физическим экстентом, размер которого можно указать при создании группы томов. Все операции по изменению размера должны соответствовать полным логическим экстентам. Иногда вы заметите, что размер изменения размера округляется в большую или меньшую сторону до размера логического экстента. Вы также можете указать количество логических экстентов, которые должны быть добавлены или удалены напрямую, используя опцию -l с командой lvresize.
Как видите, изменение размера логического тома имеет много опций, и вам нужно позаботиться об использовании правильных опций, потому что легко ошибиться!
Расширение 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 был успешно создан: