kacToHbI4
@kacToHbI4
11 лет anykey - надоело, хочу в разработчики.

Как освободить пространство с LVM?

Добрый день.
Суть вопроса такая, есть LVM раздел, по спешке, глупости и слабому знанию вопроса, бахнул под LVM, больше чем в итоге использую, сейчас понадобилось пространство на ноуте, понял, что с этой целью стал чаще подключать съемные носители под windows 11, при этом в LVM покрывается пылью аж 180ГБ неиспользуемого пространства.
Возможно ли каким-то безопасным способом освободить некоторое количество места, для создания тома под NTFS?

Ниже приведу вывод команд, для понимания общей картины.

sudo df -h

Filesystem Size Used Avail Use% Mounted on
udev 3.8G 0 3.8G 0% /dev
tmpfs 771M 1.6M 769M 1% /run
/dev/mapper/LVM-root 23G 5.3G 17G 25% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/mapper/LVM-boot 451M 100M 324M 24% /boot
/dev/mapper/LVM-tmp 919M 124K 855M 1% /tmp
/dev/mapper/LVM-home 46G 6.1G 38G 14% /home
/dev/mapper/LVM-var 9.1G 485M 8.2G 6% /var
/dev/nvme0n1p1 96M 49M 48M 51% /boot/efi
tmpfs 771M 872K 770M 1% /run/user/1000

sudo df -T

Filesystem Type 1K-blocks Used Available Use% Mounted on
udev devtmpfs 3918404 0 3918404 0% /dev
tmpfs tmpfs 788692 1736 786956 1% /run
/dev/mapper/LVM-root ext4 23852880 5517136 17098752 25% /
tmpfs tmpfs 3943440 0 3943440 0% /dev/shm
tmpfs tmpfs 5120 4 5116 1% /run/lock
/dev/mapper/LVM-boot ext4 461522 102117 330938 24% /boot
/dev/mapper/LVM-tmp ext4 940768 124 875520 1% /tmp
/dev/mapper/LVM-home ext4 47741676 6295132 38988944 14% /home
/dev/mapper/LVM-var ext4 9509056 496292 8508140 6% /var
/dev/nvme0n1p1 vfat 98304 49593 48711 51% /boot/efi
tmpfs tmpfs 788688 872 787816 1% /run/user/1000

sudo pvdisplay

--- Physical volume ---
PV Name /dev/nvme0n1p7
VG Name LVM
PV Size 264.86 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 67804
Free PE 47183
Allocated PE 20621
PV UUID 1fr5Mk-F40z-Gl4O-7EPX-rccM-da5T-R5J0JH

sudo vgdisplay

--- Volume group ---
VG Name LVM
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 5
Open LV 5
Max PV 0
Cur PV 1
Act PV 1
VG Size <264.86 GiB
PE Size 4.00 MiB
Total PE 67804
Alloc PE / Size 20621 / 80.55 GiB
Free PE / Size 47183 / <184.31 GiB
VG UUID VmIc2E-H2t6-V8Ad-FIpQ-FQP9-b0Ef-H6cx4i

sudo lvdisplay

--- Logical volume ---
LV Path /dev/LVM/root
LV Name root
VG Name LVM
LV UUID 5D7zmj-4Pqw-vhlH-BcE9-tI73-p2Dm-iKdUh9
LV Write Access read/write
LV Creation host, time deb-sys, 2021-09-07 15:18:12 +0300
LV Status available
# open 1
LV Size 23.28 GiB
Current LE 5960
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0

--- Logical volume ---
LV Path /dev/LVM/var
LV Name var
VG Name LVM
LV UUID Ors245-T5q3-cV5D-CI2D-rsZT-R4VY-ZGPVdL
LV Write Access read/write
LV Creation host, time deb-sys, 2021-09-07 15:18:39 +0300
LV Status available
# open 1
LV Size 9.31 GiB
Current LE 2384
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1

--- Logical volume ---
LV Path /dev/LVM/tmp
LV Name tmp
VG Name LVM
LV UUID p79uWG-RHDE-QWy9-AMYy-b2vz-UVnH-dBmPMJ
LV Write Access read/write
LV Creation host, time deb-sys, 2021-09-07 15:21:05 +0300
LV Status available
# open 1
LV Size 952.00 MiB
Current LE 238
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:2

--- Logical volume ---
LV Path /dev/LVM/home
LV Name home
VG Name LVM
LV UUID bpdGoS-1SVe-QAQO-UE1u-Qumt-phDl-qAwMAl
LV Write Access read/write
LV Creation host, time deb-sys, 2021-09-07 15:21:33 +0300
LV Status available
# open 1
LV Size 46.56 GiB
Current LE 11920
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:3

--- Logical volume ---
LV Path /dev/LVM/boot
LV Name boot
VG Name LVM
LV UUID 7VJEFy-0YVs-Y8Cb-6cVR-YLTT-ksnF-dKkNjW
LV Write Access read/write
LV Creation host, time Deb-sys, 2022-11-25 18:38:39 +0300
LV Status available
# open 1
LV Size 476.00 MiB
Current LE 119
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:4

sudo lvscan

ACTIVE '/dev/LVM/root' [23.28 GiB] inherit
ACTIVE '/dev/LVM/var' [9.31 GiB] inherit
ACTIVE '/dev/LVM/tmp' [952.00 MiB] inherit
ACTIVE '/dev/LVM/home' [46.56 GiB] inherit
ACTIVE '/dev/LVM/boot' [476.00 MiB] inherit

sudo lvmdiskscan

/dev/nvme0n1 [ <476.94 GiB]
/dev/nvme0n1p1 [ 100.00 MiB]
/dev/nvme0n1p2 [ 16.00 MiB]
/dev/nvme0n1p3 [ 194.52 GiB]
/dev/nvme0n1p4 [ 688.00 MiB]
/dev/nvme0n1p5 [ 1.86 GiB]
/dev/nvme0n1p6 [ 14.90 GiB]
/dev/nvme0n1p7 [ 264.86 GiB] LVM physical volume
0 disks
7 partitions
0 LVM physical volume whole disks
1 LVM physical volume

sudo vgs

VG #PV #LV #SN Attr VSize VFree
LVM 1 5 0 wz--n- <264.86g <184.31g

sudo lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
boot LVM -wi-ao---- 476.00m
home LVM -wi-ao---- 46.56g
root LVM -wi-ao---- 23.28g
tmp LVM -wi-ao---- 952.00m
var LVM -wi-ao---- 9.31g

sudo lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 100M 0 part /boot/efi
├─nvme0n1p2 259:2 0 16M 0 part
├─nvme0n1p3 259:3 0 194.5G 0 part
├─nvme0n1p4 259:4 0 688M 0 part
├─nvme0n1p5 259:5 0 1.9G 0 part
├─nvme0n1p6 259:6 0 14.9G 0 part [SWAP]
└─nvme0n1p7 259:7 0 264.9G 0 part
├─LVM-root 254:0 0 23.3G 0 lvm /
├─LVM-var 254:1 0 9.3G 0 lvm /var
├─LVM-tmp 254:2 0 952M 0 lvm /tmp
├─LVM-home 254:3 0 46.6G 0 lvm /home
└─LVM-boot 254:4 0 476M 0 lvm /boot
  • Вопрос задан
  • 1049 просмотров
Решения вопроса 1
kacToHbI4
@kacToHbI4 Автор вопроса
11 лет anykey - надоело, хочу в разработчики.
Всем спасибо, методом гугла и работая головой, внимательно всё считая и правильно вводя команды у меня всё получилось, на то что, я написал ниже меня натолкнул вот этот топик

Смотрю что у меня с местом:
pvs --unit m

в моём случае требовалось оставить под LVM только 100Гб, так и сделал:
pvresize /dev/nvme0n1p7 --setphysicalvolumesize 100000m

проверил что именно столько получилось:
pvs --unit m

теперь переходим непосредственно к переразметке:
parted /dev/nvme0n1

меры обозначений:
unit

выбираю:
MiB

смотрю что у нас с разделами:
print

узнал number и в моём случае мне нужен был start раздела, прибавил к нему моих 100000MiB и уменьшил раздел с LVM до необходимого

команда для изменения размера партиции:
resizepart

номер партиции:
7

Ввожу цифру которая получилась у меня в результате сложения значений start и 100000MiB

перезагрузка в Debian, всё загрузилось и работает штатно, перезагрузка в Windows 11 и создание раздела на неразмеченном пространстве

В моём случае я не делал никаких бэкапов, просто не было под рукой харда, а ноутбук у меня моя песочница, так что без бэкапа даже интереснее было, но не рекомендую такое делать тем, у кого целевой компьютер единственный и нужен постоянно =)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@rPman
Настучать бы тем кто дает советы дробить ОДИН диск на разделы и раскидывать файловую систему linux по нему, причем используя lvm который тут ну совсем не нужен.

Настоятельно рекомендую избавиться от этой формы разбиения диска, сделать резервную копию всего корня / диска (tar, например сделав отдельно для каждого раздела, добавив ключ --one-file-system) и удалить lvm. Абсолютно все фичи, которые дает lvm можно получить с помощью btrfs или zfs, при этом это будет еще и быстрее (снапшоты у этих cow файловых систем бесплатные, а у lvm за 2х понижение записи)

настоятельно рекомендую следующий конфиг:
gpt таблица разделов
* 1Мб biosboot - раздел нужен если используешь legacy mbr в биосе
* 100Мб EFIboot - раздел нужен если используешь UEFI secure boot в биосе
* 512Мб ext4 /boot - раздел не обязательный, нужен только если используется нестандартная фйловая система или странные конфиги (типа bcache ssd кеш для hdd), так же он нужен для дисков больше 2Тб
* сколько надо btrfs / - раздел куда установишь систему
благодаря btrfs можно точно так же наклепать в нем виртуальных разделов для /var /home /tmp причем можно даже не указывать лимиты (будет использоваться общее место)

btrfs прекрасно умеет grub и не считается экзотикой (/boot раздел не требуется)

p.s. кстати, если загрузчик grub можно установить на другой диск (например карта памяти или другой диск), то системный диск nvme даже не придется разбивать на разделы и использовать буквально весь под файловую систему

p.p.s. btrfs мощная файловая система но настоятельно не рекомендую использовать его raid5, он еще нестабилен, хотя критичных багов, ведущих к потере данных нет, но есть сообщения о потерях свободного места в экзотических ситуациях

для софтварного рейда лучше пользоваться mdadm
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
Если есть под рукой пустой накопитель от 82гб:
- подключить доп диск
- pvcreate на него на всю ёмкость
- vgextend
- pvmove старый_диск новый_диск
- vgreduce
- pvremove
- переделываете партиции на nvme как нравится
- повторить заново с pvcreate только теперь pvmove с временного диска обратно на nvme

Если на время перенести некуда - то pvresize + уменьшить размер раздела, потом создать новый раздел на освободившемся месте.

PS: доктор, я в каждой команде написал pg вместо vg, это ещё лечится?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы