Kako povečam datotečni sistem po povečanju diska VPS?

Linux Branje: 3 min

Če preideš na paket z več prostora (glej: Kako povečam vire svojega paketa VPS?), se velikost navideznega diska poveča, df -h pa še vedno kaže staro velikost. Razlog je, da se particija na disku in datotečni sistem na njej ne povečata sama: razširiti ju je treba enkrat, ročno. Postopek je mogoče izvesti med delovanjem strežnika, brez ponovnega zagona.

Povečanje datotečnega sistema po povečanju diska: preverjanje strukture, povečanje particije z ukazom growpart, nato brez LVM xfs_growfs ali resize2fs, z LVM pa pvresize in lvextend -r

Preden začneš

  • Naredi posnetek ali varnostno kopijo. Sprememba particijske tabele redko povzroči težave, vendar lahko napačno vtipkano ime naprave pomeni izgubo podatkov.
  • Ukaze zaganjaj kot uporabnik root ali s sudo.

1. Preveri velikost diska in particij

lsblk -f
df -hT /

Disk KVM VPS je običajno /dev/vda ali /dev/sda. Tipičen izpis:

NAME                FSTYPE      SIZE MOUNTPOINT
vda                              80G
├─vda1              xfs           1G /boot
└─vda2              LVM2_member  39G
  ├─almalinux-root  xfs          35G /
  └─almalinux-swap  swap          4G [SWAP]

Tu je disk (vda) že 80 GB, particija (vda2) pa šele 39 GB. Zapiši si:

  • ime diska (vda) in številko particije za povečanje (2),
  • ali je na particiji neposredno datotečni sistem ali LVM (LVM2_member),
  • vrsto datotečnega sistema (xfs ali ext4).

Če tudi velikost diska (vrstica vda) kaže staro vrednost, sistem spremembe še ni zaznal. Takrat znova zaženi strežnik in nato nadaljuj.

Na strežnikih, nameščenih iz cloud image, lahko cloud-init ob zagonu sam razširi korensko particijo in datotečni sistem. V preizkusu sta računalnik z Ubuntu 24.04 in računalnik z Debianom 12 ob prvem zagonu po povečanju diska na 12 GB že pokazala celotno velikost (df -h /), brez ročnega koraka. Po ponovnem zagonu zato najprej poglej izpis df -h; če že kaže novo velikost, ti ni treba storiti ničesar.

2. Povečaj particijo

Ukaz growpart particijo razširi do konca diska. Namestitev:

# AlmaLinux, Rocky Linux
sudo dnf install cloud-utils-growpart

# Ubuntu, Debian
sudo apt install cloud-guest-utils

Nato navedi disk in številko particije (ločeno s presledkom, ne v obliki vda2):

sudo growpart /dev/vda 2

Pri uspešnem povečanju je izpis CHANGED: partition=2 start=… old: size=… new: size=….

growpart lahko poveča le zadnjo particijo diska. Če za particijo, ki jo želiš povečati, sledi še ena (na primer swap), postopka ni mogoče preprosto izvesti; takrat prosi za pomoč našo podporo.

3/a. Povečanje datotečnega sistema brez LVM

Če je na particiji neposredno datotečni sistem, glede na vrsto datotečnega sistema:

# XFS (privzeto v AlmaLinux, Rocky Linux): navesti je treba priklopno točko
sudo xfs_growfs /

# ext4 (privzeto v Ubuntu, Debian): navesti je treba napravo
sudo resize2fs /dev/vda2

xfs_growfs po uspešnem zagonu izpiše tudi povečanje, na primer: data blocks changed from 523776 to 786171.

3/b. Povečanje datotečnega sistema pri LVM

Pri LVM je treba za particijo povečati še fizični nosilec (PV), nato pa logični nosilec (LV). O delovanju LVM preberi v članku Kaj je LVM?.

sudo pvresize /dev/vda2
sudo lvs

Iz izpisa lvs je razvidno ime skupine nosilcev (VG) in logičnega nosilca (LV), v zgornjem primeru almalinux in root. Nato:

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

Stikalo -r skupaj z logičnim nosilcem poveča tudi datotečni sistem na njem, ne glede na vrsto, zato ločen xfs_growfs ali resize2fs ni potreben. V preizkusu (z nosilcem LVM na particiji) je bil po growpart, pvresize in lvextend -r izpis Extended file system xfs on data/adat. in Logical volume data/adat successfully resized., datotečni sistem pa se je povečal s 4 na 6 GB.

4. Preverjanje

df -h /

Če izpis že kaže novo velikost, je povečanje končano.

Pogoste napake

  • NOCHANGE: partition 2 is size ... it cannot be grown: particija že sega do konca diska ali sistem večjega diska še ne vidi. Preveri izpis lsblk, po potrebi znova zaženi strežnik. V preizkusu je to izpisal tudi drugi zagon growpart, torej ponovni zagon ukaza ne povzroči škode.
  • xfs_growfs: /dev/vda2 is not a mounted XFS filesystem: XFS je mogoče povečati le v priklopljenem stanju. V preizkusu (AlmaLinux 9 in 10) je xfs_growfs pri priklopljenem datotečnem sistemu sprejel tudi ime naprave (/dev/vdc1), ta napaka se je pojavila po odklopu. Navedba točke priklopa (xfs_growfs /) deluje vedno.
  • resize2fs: Bad magic number in super-block while trying to open /dev/…: datotečni sistem ni ext4, temveč XFS (ali pa je na particiji LVM). Vrsto znova preveri v izpisu lsblk -f.
  • Datotečnega sistema XFS ni mogoče zmanjšati, le povečati. Pred prehodom na manjši paket prosi za pomoč našo podporo.
Nazaj: Linux – članki (76)