webh.pl

Rozszerzanie partycji w Linuksie: growpart i resize2fs

Powiększanie partycji na VPS po dodaniu miejsca - cfdisk, growpart, resize2fs.

  • czytania
  • Zaktualizowano:
Zasoby serwera Rozwiązywanie problemów
Serwery VPS

Po zwiększeniu rozmiaru dysku na VPS webh.pl nowa przestrzeń może nie pojawić się automatycznie w systemie plików. Część obrazów ma skonfigurowane automatyczne rozszerzanie i wtedy miejsce dochodzi samo. W pozostałych przypadkach dysk widzi więcej miejsca, ale partycja i system plików nadal mają stary rozmiar - musisz je rozszerzyć ręcznie.

Jakie mamy partycje w systemie?

Najpierw sprawdź df -h / - jeśli rozmiar zgadza się już z nowym dyskiem, nic nie musisz robić. Jeśli nie, wykonaj kroki poniżej.

Uwaga

Operacje na partycjach niosą ryzyko utraty danych. Choć growpart i resize2fs są praktycznie niezawodne, przed rozszerzaniem wykonaj kopię zapasową. W razie problemu przywrócisz stan sprzed zmiany.

Zanim cokolwiek rozszerzysz, sprawdź układ i typ partycji. Użyj cfdisk:

cfdisk

Narzędzie pokaże partycje na dysku. W typowym przypadku partycją do rozszerzenia jest /dev/vda2:

                            Disk: /dev/vda
          Size: 80 GiB, 85899345920 bytes, 167772160 sectors
       Label: dos, identifier: 0x1a2b3c4d

    Device       Boot   Start      End  Sectors  Size  Id  Type
    /dev/vda1    *       2048  1050623  1048576  512M  83  Linux
 >> /dev/vda2         1050624 41943039 40892416   19G  83  Linux
    Free space       41943040 167772159           61G

   ┌─────────────────────────────────────────────────────────────┐
   │ [ Bootable ]  [ Delete ]  [ Quit ]  [ Type ]  [ Help ]  ... │
   └─────────────────────────────────────────────────────────────┘

Oryginalny zrzut ekranu: lista partycji w cfdisk z zaznaczoną partycją docelową /dev/vda2 i widocznym wolnym miejscem (Free space) poniżej niej. Wolne miejsce to nowa przestrzeń dodana do dysku, której partycja jeszcze nie obejmuje.

Partycje typu Extended

Czasem jedna partycja zawiera się w drugiej. Partycja Extended (np. /dev/vda2) jest kontenerem, a wewnątrz niej znajduje się partycja logiczna (np. /dev/vda5) z faktycznym systemem plików:

    Device         Start      End  Sectors  Size  Id  Type
    /dev/vda1       2048  1050623  1048576  512M  83  Linux
 >> /dev/vda2    1050624 41943039 40892416   19G   5  Extended
      └ /dev/vda5 1052672 41943039 40890368  19G  83  Linux
    Free space  41943040 167772159           61G

Oryginalny zrzut ekranu: układ partycji, w którym /dev/vda5 (logiczna) jest zagnieżdżona wewnątrz /dev/vda2 (Extended). Wcięcie / oznaczenie typu Extended odróżnia kontener od partycji logicznej.

Wskazówka

Przy układzie Extended growpart uruchamiasz dwa razy: najpierw na partycji Extended /dev/vda 2, a potem na partycji logicznej /dev/vda 5. Inaczej powiększysz kontener, ale system plików w środku nadal nie urośnie.

Jak rozszerzyć partycję? (growpart)

Narzędzie growpart znajduje się w pakiecie cloud-utils. Na Ubuntu/Debian zainstaluj je:

apt-get update && apt-get install cloud-utils

Następnie rozszerz partycję, podając urządzenie i numer partycji jako dwa osobne argumenty:

growpart /dev/vda 2

Uwaga

Między /dev/vda a 2 jest spacja - to zamierzona składnia, nie literówka. growpart przyjmuje dysk i numer partycji jako dwa osobne argumenty (growpart /dev/vda 2), a nie growpart /dev/vda2.

Dla układu Extended z poprzedniej sekcji wykonaj kolejno:

growpart /dev/vda 2
growpart /dev/vda 5

Po tej operacji partycja obejmuje już nową przestrzeń dysku, ale system plików wciąż ma stary rozmiar - przed Tobą ostatni krok.

Jak rozszerzyć system plików? (resize2fs)

resize2fs dopasowuje rozmiar systemu plików (ext2/ext3/ext4) do dostępnej przestrzeni na powiększonej partycji. Wskaż partycję z systemem plików (nie sam dysk):

resize2fs /dev/vda2

Przy układzie Extended celem jest partycja logiczna:

resize2fs /dev/vda5

Bez argumentu rozmiaru resize2fs rozszerza system plików do maksymalnej dostępnej przestrzeni na partycji. Sprawdź wynik:

df -h /

Kolumna Size powinna pokazać nowy, większy rozmiar.

Wskazówka

resize2fs obsługuje rodzinę ext. Jeśli używasz XFS (np. domyślny system plików na części obrazów), zamiast resize2fs użyj xfs_growfs / - XFS rozszerza się tylko po zamontowaniu.

Pełna procedura w skrócie

Krok Komenda Co robi
1. Diagnoza cfdisk Sprawdza układ i typ partycji
2. Instalacja apt-get install cloud-utils Dostarcza growpart
3. Partycja growpart /dev/vda 2 Powiększa partycję o wolne miejsce
3a. Extended growpart /dev/vda 5 Powiększa partycję logiczną w kontenerze
4. System plików resize2fs /dev/vda2 Rozszerza ext do rozmiaru partycji
5. Weryfikacja df -h / Potwierdza nowy rozmiar

Typowe problemy

growpart: command not found

Pakiet cloud-utils nie jest zainstalowany. Wykonaj apt-get update && apt-get install cloud-utils (Debian/Ubuntu) lub yum install cloud-utils-growpart (CentOS/Rocky/AlmaLinux).

NOCHANGE: partition X is size ... it cannot be grown

Za partycją nie ma wolnego miejsca lub dysk nie został powiększony po stronie webh. Uruchom cfdisk i sprawdź, czy widać Free space za partycją. Jeśli go nie ma, najpierw zwiększ rozmiar dysku VPS w panelu / przez BOK.

Partycja urosła, ale df -h pokazuje stary rozmiar

Powiększyłeś partycję (growpart), ale nie system plików. Wykonaj resize2fs /dev/vda2 (ext) lub xfs_growfs / (XFS).

Rozszerzam Extended, a miejsca nadal brak

Powiększyłeś tylko kontener Extended. Uruchom growpart także na partycji logicznej (/dev/vda 5), a dopiero potem resize2fs /dev/vda5.

Coś poszło nie tak po operacji

Przywróć VPS z kopii sprzed zmiany. Dlatego backup przed rozszerzaniem partycji jest ważny.

Podsumowanie

Rozszerzenie dysku na VPS to dwa etapy: growpart powiększa partycję, a resize2fs (lub xfs_growfs dla XFS) - system plików. Najpierw zdiagnozuj układ przez cfdisk; przy partycjach Extended uruchom growpart zarówno na kontenerze, jak i na partycji logicznej. Pamiętaj o spacji w składni growpart /dev/vda 2 i o kopii zapasowej przed startem.