====== Измениене размера 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.