====== Измениене размера LVM томов ======
===== Подготовка =====
==== VMWare ====
Зайдя в свойства виртуальной машины:
- Выбираем нужный жесткий диск
- Изменяем размер, до желаемого объема
- Нажимаем кнопку **Ок**
{{ :main:linux:lvm-extend:1.png?500 |}}
==== ProxMox ====
- Выбираем виртуальную машину, и открываем раздел **Hardware**
- Находим нужный диск и выделяем его.
- Вверху нажимаем кнопку **Resize disk**
{{ :main:linux:lvm-extend:2.png?900 |}}
Откроется окно, где необходимо ввести количество **гигабайт**, на которые желаем увеличить диск.
{{ :main:linux:lvm-extend:3.png?900 |}}
===== Проверка доступного пространства на диске =====
После увеличения размера диска необходимо, проверить, что система увидела доступное место. Для этого выполним команду:
fdisk -l
Вывод в моем случае был таким:
[root@lvm2 askadmin]# fdisk -l
Диск /dev/sda: 35 GiB, 37580963840 байт, 73400320 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xe51a470c
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 41943039 39843840 19G 8e Linux LVM
Диск /dev/mapper/rl-root: 17 GiB, 18249416704 байт, 35643392 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Диск /dev/mapper/rl-swap: 2 GiB, 2147483648 байт, 4194304 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Как можно видеть по первой же строчке вывода - система увидела добавленные мной 15ГБ (диск изначально был 20ГБ).
Если же автоматически система не обнаружила добавленное место - может потребоваться запустить сканирование дисков вручную.\\
Выполнить это можно командой:
echo 1 > /sys/block/sda/device/rescan
Обратите внимание, что в мое случае речь идет про устройство **/dev/sda** в вашем оно может отличаться!
===== Изменение размера раздела на диске =====
Для изменения размера потребуется выполнить следующие шаги:
* Необходимо переразметить диск. Для этого выполним следующую команду fdisk /dev/sda
\\ Мы войдем в меню утилиты **fdisk** для работы с дисками. Вывод будет примерно таким Добро пожаловать в fdisk (util-linux 2.32.1).
Изменения останутся только в памяти до тех пор, пока вы не решите записать их.
Будьте внимательны, используя команду write.
Команда (m для справки):
* Введем **p** и нажмем **Enter**. Это позволит просмотреть текущие разделы на диске: Команда (m для справки): p
Диск /dev/sda: 35 GiB, 37580963840 байт, 73400320 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x512fa909
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 41943039 39843840 19G 8e Linux LVM
В моем случае разделов 2 и нас интересует только тот, который помечен как **Linux LVM**.
* вводим **d**: Команда сообщит об удалении раздела - не пугайтесь, данные сохранятся. Команда (m для справки): d
Номер раздела (1,2, default 2): 2
Раздел 2 был удален.
Команда (m для справки):
* Теперь создаем новый раздел введя команду **n**: Команда (m для справки): n
Тип раздела
p основной (1 первичный, 0 расширеный, 3 свободно)
e расширенный (контейнер для логических разделов)
После чего система придложит выбрать тип раздела, жмем **p**: Выберите (по умолчанию - p):p
Далее выбираем номер раздела (можно просто нажать **Enter** система присвоит номер раздела по умолчанию: Номер раздела (2-4, default 2):
На вопросах о первом и последнем секторах тоже жмем **Enter**: Первый сектор (2099200-73400319, default 2099200):
Последний сектор + число секторов или + размер{K,M,G,T,P} (2099200-73400319, default 73400
Система сообщит, что создан новый раздел и что он подписан, как **LVM_member** Создан новый раздел 2 с типом 'Linux' и размером 34 GiB.
Partition #2 contains a LVM2_member signature.
Do you want to remove the signature? [Y] Да/[N] Нет: n
Жмем **N** и двигаемся дальше.
* Далее преобразуем раздел в LVM. Для этого последовательно вводим **t**, затем номер раздела (у меня **2**) и тип тома в шестнадцатиричной системе (для LVM **8e**: Команда (m для справки): t
Номер раздела (1,2, default 2): 2
Шестнадцатеричный код (введите L для получения списка кодов): 8e
Тип раздела 'Linux' изменен на 'Linux LVM'.
Появится сообщение, что Тип раздел успешно изменен.
* После всего этого записываем внесенные изменения **w**: Команда (m для справки): w
Таблица разделов была изменена.
Синхронизируются диски.
* И выходим из консоли **q**: Команда (m для справки): q
[root@lvm askadmin]#
На этом этап по увеличению тома завершен и переходим к расщирению **VG** (Volume Group).\\
===== Расширение Physical Volume =====
Выполним команду:
pvdisplay
Как можем видеть из вывода этой команды, система считает, что **Physical volume** все еще 19ГБ --- Physical volume ---
PV Name /dev/sda2
VG Name rl_lvm
PV Size <19,00 GiB / not usable 3,00 MiB
Allocatable yes (but full)
PE Size 4,00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID PvruJt-UxaO-aZZw-U8Gr-glJ5-rE6c-C250A8
Для расширения воспользуемся командой:
pvresize /dev/sda2
Получаем примерно следующий вывод:
Physical volume "/dev/sda2" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
Что говорит о том, что все прошло успешно. Для подтверждения вводим снова **pvdisplay** и получаем следующий вывод:
[root@lvm askadmin]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name rl_lvm
PV Size <34,00 GiB / not usable 2,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 8703
Free PE 3840
Allocated PE 4863
PV UUID PvruJt-UxaO-aZZw-U8Gr-glJ5-rE6c-C250A8
Как видим размер **physical volume** изменился.
Теперь если введем команду **vgdisplay** получим следующий вывод:
[root@lvm askadmin]# vgdisplay
--- Volume group ---
VG Name rl_lvm
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <34,00 GiB
PE Size 4,00 MiB
Total PE 8703
Alloc PE / Size 4863 / <19,00 GiB
Free PE / Size 3840 / 15,00 GiB
VG UUID qzwYbY-VF4p-Ak9S-eRSP-Ubhv-QldK-AjY1T3
Как видим нам стало доступно 15ГБ, которые мы можем потратить для изменения размера любого **Logical Volume**
==== Увеличиваем Logical Volume=====
Выполним команду **lvdisplay**, чтобы отобразить все доступные логические тома:
[root@lvm askadmin]# lvdisplay
--- Logical volume ---
LV Path /dev/rl_lvm/root
LV Name root
VG Name rl_lvm
LV UUID FS01Q8-wg6U-SC4t-jcqX-JZF1-5DET-1eyAr1
LV Write Access read/write
LV Creation host, time lvm, 2022-04-06 13:51:05 +0700
LV Status available
# open 1
LV Size <17,00 GiB
Current LE 4351
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/rl_lvm/swap
LV Name swap
VG Name rl_lvm
LV UUID YFtfnn-4N9F-IcCr-P4oS-OI8S-jdl2-3pvGfi
LV Write Access read/write
LV Creation host, time lvm, 2022-04-06 13:51:06 +0700
LV Status available
# open 2
LV Size 2,00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
Как видим у меня в системе 2 **Logical Volume** (**root** и **swap**)\\
В данном выводе нас в первую очередь интересуют строки **LV Path**, в которых указан путь к устройству.\\
Теперь для изменеия размера **LV** мы воспользуемся командой **lvextend**:
[root@lvm askadmin]# lvextend -L +5GiB /dev/rl_lvm/root
Size of logical volume rl_lvm/root changed from <17,00 GiB (4351 extents) to <22,00 GiB (5631 extents).
Logical volume rl_lvm/root successfully resized.
Как видим сообщение гласит, что изменение размера прошло успешно.\\
Так же можно использовать команду со строчно **l** и указать расширяемый объем в блоках или процентах:
[root@lvm askadmin]# lvextend -l +30%FREE /dev/rl_lvm/root
Size of logical volume rl_lvm/root changed from <22,00 GiB (5631 extents) to <25,00 GiB (6399 extents).
Logical volume rl_lvm/root successfully resized.
Так как в моем случае, после приращения 5ГБ свободного места оставалось 10ГБ - команда прирастила еще 3ГБ расширив тем самым **LV** с 22ГБ до 25ГБ
===== Расширение файловой системы XFS =====
Если проверить доступное место в системе, то мы увидим, что несмотря на все проделанное **root** остался 16ГБ.
[root@lvm askadmin]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 1,9G 0 1,9G 0% /dev
tmpfs 1,9G 0 1,9G 0% /dev/shm
tmpfs 1,9G 8,6M 1,9G 1% /run
tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup
/dev/mapper/rl_lvm-root 17G 1,8G 16G 11% /
/dev/sda1 1014M 252M 763M 25% /boot
tmpfs 374M 0 374M 0% /run/user/1000
Это произошло потому, что файловая система все еще покрывает только 16ГБ пространства на диске. Нам необходимо "растянуть" файловую систему.\\
Для этого выполним следующую команду:
xfs_growfs /
Получим следующий вывод:
meta-data=/dev/mapper/rl_lvm-root isize=512 agcount=4, agsize=1113856 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=4455424, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4455424 to 6552576
Теперь проверяем доступное место в системе:
[root@lvm askadmin]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 1,9G 0 1,9G 0% /dev
tmpfs 1,9G 0 1,9G 0% /dev/shm
tmpfs 1,9G 8,6M 1,9G 1% /run
tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup
/dev/mapper/rl_lvm-root 25G 1,9G 24G 8% /
/dev/sda1 1014M 252M 763M 25% /boot
tmpfs 374M 0 374M 0% /run/user/1000
Как видим корневой раздел увеличился до 24ГБ, что и требовалось.
===== Расширение ext4 =====
Для расширения файловой системы используем команду:
resize2fs /dev/sdb1
Получим примерно следующий вывод:
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/sdb1 is mounted on /srv/nav; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 19
The filesystem on /dev/sdb1 is now 39321344 (4k) blocks long.