Cum să redimensionezi un volum LVM în Linux

  • 4 minute de citit
  • 11 exemple de cod
  • 1 imagine

Disponibil și în English

Pe această pagină

Introducere

Salut tuturor!

Acest post este un ghid rapid despre cum să redimensionezi un volum LVM pe un sistem Linux. O greșeală pe care am făcut-o când am configurat serverul meu Linux mini PC cu Alma Linux a fost că nu am dat atenție valorilor implicite la partiționarea discului.

M-am trezit câteva luni mai târziu, incapabil să instalez pachete și cu mai multe servicii docker care nu porneau, motivul principal: spațiu insuficient pe /.

Se pare că, implicit, partiția /home primise 400GB de spațiu, iar partiția / doar ~70GB.

Asta e rău.

Filesystem                  Size  Used Avail Use% Mounted on/dev/mapper/almalinux-root   70G   42G   29G  60% //dev/mapper/almalinux-home  400G  8.0G  392G   2% /home

Deoarece foloseam LVM și /home are un sistem de fișiere XFS, redimensionarea lui nu a fost simplă. Din fericire, cu ajutorul unui asistent AI am reușit să găsesc o soluție și o împărtășesc aici pentru referință.

Redimensionarea lui Home

Iată cum redimensionezi de obicei partiția /home.

ext4

Dacă home este ext4, lucrurile sunt puțin mai ușoare: trebuie să pornești în modul de recuperare, să demontezi partiția și să o micșorezi.

sudo umount /homesudo e2fsck -f /dev/mapper/almalinux-homesudo resize2fs /dev/mapper/almalinux-home 100Gsudo lvreduce -L 100G /dev/mapper/almalinux-home

Apoi extinzi /

sudo lvextend -r -L +300G /dev/mapper/almalinux-root

Notă: nu am testat acest flux.

xfs

Dacă /home este XFS, lucrurile sunt mai complicate. Home nu poate fi redimensionat și trebuie recreat.

Poți folosi următoarele comenzi pentru a verifica spațiul disponibil. Reține că acest rezultat este de după ce am redimensionat partiția.

➜  ~ sudo lvs  LV   VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  home almalinux -wi-ao----  70.00g                                                      root almalinux -wi-ao---- 399.50g                                                      swap almalinux -wi-ao----   5.85g                                                    ➜  ~ sudo lvs  LV   VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  home almalinux -wi-ao----  70.00g                                                      root almalinux -wi-ao---- 399.50g                                                      swap almalinux -wi-ao----   5.85g                                                    ➜  ~ sudo pvs  PV             VG        Fmt  Attr PSize   PFree  /dev/nvme0n1p3 almalinux lvm2 a--  475.35g    0 

Dacă nu mai există spațiu liber, nu poți mări /. Va trebui să distrugi și să recreezi /home.

Pentru asta trebuie să urmezi următorii pași:

  1. Fă o copie de rezervă a conținutului din /home
sudo rsync -aXS /home/ /root/home-backup/

Nu aveam multe date în el, doar configurația gitlab-runner, iar în cazul meu copia de rezervă a fost rapidă și mică.

  1. Recreează /home

Următoarele comenzi vor distruge toate datele din /home și îl vor crea cu 70G de spațiu

sudo umount /homesudo lvremove /dev/mapper/almalinux-homesudo lvcreate -L 70G -n home almalinuxsudo mkfs.xfs /dev/mapper/almalinux-homesudo mount /home

Dacă întâmpini erori la demontarea și montarea lui /home, consultă secțiunea următoare pentru sfaturi de depanare și remediere.

Depanarea montării și demontării

Nu vei putea demonta /home dacă un utilizator îl folosește. Eu a trebuit să opresc gitlab runner înainte de demontare.

Poți verifica ce ține sistemul de fișiere ocupat cu următoarele comenzi:

➜  ~ sudo fuser -vm /home                     USER        PID ACCESS COMMAND/home:               root     kernel mount /home                     root       1449 ..c.. gitlab-runner➜  ~ sudo lsof +D /home | head -100COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAMEgitlab-ru 1449 root  cwd    DIR  253,2        6 16777344 /home/gitlab-runner

Dacă primești un uid invalid la montarea lui home, va trebui să editezi fișierul /etc/fstab.

Poți obține UUID-ul noii partiții /home cu următoarele comenzi:

➜  ~ sudo lsblk --fsNAME               FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTSnvme0n1                                                                                             ├─nvme0n1p1        vfat        FAT32          E5B7-DC76                               589.9M     1% /boot/efi├─nvme0n1p2        xfs                        b11659d8-531b-4d08-a809-e6740a32d0c5    333.8M    65% /boot└─nvme0n1p3        LVM2_member LVM2 001       Tsnalq-dvtn-CVFS-h85H-aBcz-sOrs-jeQkfK                  ├─almalinux-root xfs                        7e852464-4b83-4f16-a831-a9d794e584b7    350.6G    12% /  ├─almalinux-swap swap        1              7e6ce228-b5f2-454b-b7fe-61480d34fcbd                  [SWAP]  └─almalinux-home xfs                        c88fb303-2e9a-4ec1-8654-45ac7a0a675f     68.3G     2% /home➜  ~ sudo blkid/dev/mapper/almalinux-swap: UUID="7e6ce228-b5f2-454b-b7fe-61480d34fcbd" TYPE="swap"/dev/nvme0n1p3: UUID="Tsnalq-dvtn-CVFS-h85H-aBcz-sOrs-jeQkfK" TYPE="LVM2_member" PARTUUID="69c5165d-0709-43ec-8791-9a4227c61164"/dev/nvme0n1p1: UUID="E5B7-DC76" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3e215e38-446f-4f9e-a6d6-109f69cd1e04"/dev/nvme0n1p2: UUID="b11659d8-531b-4d08-a809-e6740a32d0c5" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="7d56dc6b-8ba3-43d8-a3a6-cf76fee5b8cb"/dev/mapper/almalinux-home: UUID="c88fb303-2e9a-4ec1-8654-45ac7a0a675f" BLOCK_SIZE="512" TYPE="xfs"/dev/mapper/almalinux-root: UUID="7e852464-4b83-4f16-a831-a9d794e584b7" BLOCK_SIZE="512" TYPE="xfs"

Apoi editează /etc/fstab cu nano și înlocuiește partea UID (UUID=c88fb303-2e9a-4ec1-8654-45ac7a0a675f), după care mount /home ar trebui să funcționeze.

➜  ~ tail /etc/fstab # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.## After editing this file, run 'systemctl daemon-reload' to update systemd# units generated from this file.#UUID=7e852464-4b83-4f16-a831-a9d794e584b7 /                       xfs     defaults        0 0UUID=b11659d8-531b-4d08-a809-e6740a32d0c5 /boot                   xfs     defaults        0 0UUID=E5B7-DC76          /boot/efi               vfat    umask=0077,shortname=winnt 0 2UUID=c88fb303-2e9a-4ec1-8654-45ac7a0a675f /home                   xfs     defaults        0 0
  1. Restaurează copia de rezervă

Restaurează copia de rezervă a lui home cu următoarea comandă și pornește serviciile oprite.

sudo rsync -aHAX /root/home-backup/ /home/
  1. Extinde /

Extinde volumul / cu 100% din spațiul LIBER, folosind următoarea comandă.

sudo lvextend -r -l +100%FREE /dev/mapper/almalinux-root

Concluzie

Dacă nu dăm atenție când instalăm o distribuție Linux nouă pe un server, s-ar putea să avem o surpriză. Uneori valorile implicite nu sunt chiar bune. În acest post am explorat cum să micșorăm volumul /home și să mărim volumul /.

Dacă sistemul de fișiere al /home este ext4, atunci doar îl micșorăm și mărim /; altfel, dacă /home este un sistem de fișiere xfs, trebuie să facem backup la date, să recreăm partiția /home de la zero, să restaurăm copia de rezervă și apoi să mărim /.

Mulțumesc că ai citit!