Przejdź do treści
System

Rozszerzenie partycji głównej Ubuntu po zwiększeniu rozmiaru dysku

Avatar illustré de Julien Macé 5 min czytania
Technicien intervenant sur une baie serveur avec un SSD lors d’une maintenance Ubuntu
Avant d’étendre la racine, identifiez le disque et prévoyez un accès de reprise.

Wszystko zwiększyłeś rozmiar wirtualnego dysku w hypervisorze, ale Ubuntu wciąż nie wykorzystuje całej przestrzeni dla swojego systemu. Dysk musi najpierw zostać powiększony po stronie hypervisora i jego nowa pojemność musi być widoczna w gościu. Ta procedura dotyczy wyłącznie systemu /, który jest bezpośrednio zamontowany na pojedynczej partycji ext4, a następnie następnie kontynuowanej wolnej przestrzeni.

Technik pracujący nad serwerem z SSD podczas konserwacji Ubuntu
Zanim powiększysz system, zidentyfikuj dysk i zapewnij dostęp do odzyskiwania.

Partycja i system plików to dwie różne warstwy. Procedura najpierw powiększa wpis partycji, a następnie ext4. Przechodź do następnego kroku tylko wtedy, gdy wcześniejsze kontrole odpowiadają twojej maszynie.

Zidentyfikuj ext4, dysk i partycję

Rozpocznij od zlokalizowania źródła i rodzaju systemu plików zamontowanego na /, a następnie zbadaj urządzenia i ich relacje:

findmnt -no SOURCE /
findmnt -no FSTYPE /
lsblk

Pierwsze polecenie powinno wskazywać partycję, która zawiera system; drugie powinno wskazywać ext4. W lsblk, przejdź od tej partycji do jej rodzica. Aby uzyskać szczegółowe kolumny, możesz uzupełnić kontrolę w ten sposób:

lsblk -b -o NAME,PATH,TYPE,FSTYPE,SIZE,MOUNTPOINTS,PKNAME,PARTN

Nie wydedukuj nazwy dysku na podstawie przykładu. System może na przykład znajdować się na /dev/vda2: dysk to /dev/vda, a numer partycji to 2. Na NVMe, /dev/nvme0n1p2 odpowiada dyskowi /dev/nvme0n1 i numerowi 2. Zawsze weryfikuj te elementy w swoich własnych wynikach.

W poniższych poleceniach, /dev/sdX jest placeholderem dla całego dysku, nigdy dla partycji. N reprezentuje rzeczywisty numer partycji systemowej. Zastąp je przed wykonaniem; nie kopiuj tych przykładów tak jak są.

Następnie zbadaj tabelę i granice partycji na zidentyfikowanym dysku. W następnym poleceniu zastąp /dev/sdX ścieżką zweryfikowanego całego dysku:

sudo fdisk -l /dev/sdX

fdisk -l służy tutaj do odczytu tabeli, a nie do jej modyfikacji. Porównaj pojemność dysku, granice partycji i ich kolejność. Dostępna przestrzeń powinna znajdować się tuż po partycji systemowej, bez innej partycji pomiędzy nimi. Dokumentacja fdisk opisuje informacje o tabeli prezentowane przez to narzędzie; to odczyt nie zastępuje weryfikacji rzeczywistej topologii.

Przed jakimkolwiek zapisaniem, przeprowadź diagnostykę na sucho. Zastąp obie placeholdery zidentyfikowanym dyskiem i numerem partycji:

sudo growpart --dry-run /dev/sdX N

Tryb --dry-run informuje, co narzędzie by zrobiło, nie zmieniając tabeli. Powinno ogłosić możliwe powiększenie odpowiedniej partycji w dostępnej kontynuuącej przestrzeni. Dokumentacja Ubuntu dotycząca growpart szczegółowo wskazuje składnię dysk-numer partycji oraz rolę diagnostyki na sucho.

Przestań, jeśli system przechodzi przez LVM, LUKS lub RAID, jeśli system plików to Btrfs lub XFS — lub nie jest ext4 — jeśli partycja rozszerzona/logiczna lub inna warstwa sprawia, że topologia jest niejednoznaczna, jeśli wolna przestrzeń znajduje się przed systemem lub nie jest kontynuuąca, lub jeśli inna partycja znajduje się za systemem. Przestań również, jeśli powiększony dysk nie jest widoczny, jeśli narzędzie jest nieobecne, jeśli diagnostyka nie ogłasza oczekiwanego powiększenia lub zwraca błąd. Nie próbuj obejść tych przypadków za pomocą manipulacji partycji.

Przygotuj zmianę i cofnięcie

Przed jedynym poleceniem tej procedury, które zapisuje tabelę partycji, upewnij się, że masz wykonalną kopię zapasową, że wiesz, jak ją przywrócić i że wyniki inspekcji są zachowane. Snapshot jest przydatny jako cofnięcie tylko wtedy, gdy rzeczywiście możesz go przywrócić.

Potwierdź również dostęp do konsoli odzyskiwania maszyny oraz hypervisora, a także możliwość ponownego uruchomienia Ubuntu. Zaplanuj okno interwencyjne: może być konieczne ponowne uruchomienie, jeśli jądro nie rozpoznaje nowego rozmiaru partycji na gorąco. Jeśli kopia zapasowa, dostęp do konsoli lub możliwość ponownego uruchomienia nie są zapewnione, przestań.

Rejestruj aktualny stan systemu plików i zachowaj wyniki findmnt, lsblk, fdisk -l oraz diagnostyki na sucho, aby porównać później:

df -hT /

Ten wynik stanowi punkt odniesienia, a nie dowód, że partycja i ext4 zostały już zwiększone.

Powiększ wpis partycji

Następuj tylko wtedy, gdy wszystkie wcześniejsze kontrole są zgodne, wykonalna kopia zapasowa jest gotowa, a dostęp do odzyskiwania i ponowne uruchomienie są możliwe. Następujące polecenie modyfikuje tabelę partycji. Obowiązkowo zastąp /dev/sdX i N zatwierdzonym dyskiem i numerem; pierwszy odnosi się do całego dysku, drugi do partycji systemowej.

sudo growpart /dev/sdX N

Oczekiwanym wynikiem jest sprawozdanie z powiększenia wpisu partycji systemowej do dostępnej kontynuuącej przestrzeni. growpart zmienia rozmiar partycji, a nie systemu plików ext4.

Jeśli polecenie zwraca błąd, nie zgłasza żadnego powiększenia, informuje o ostrzeżeniu na temat tabeli lub wydaje się kierować do innego urządzenia, przestań. Nie przechodź do resize2fs i nie próbuj na ślepo ponownie utworzyć lub poprawić partycji.

Sprawdź rozmiar rozpoznawany przez jądro

Po operacji porównaj tabelę i urządzenia. Zastąp /dev/sdX zidentyfikowanym dyskiem:

lsblk -b -o NAME,PATH,TYPE,FSTYPE,SIZE,MOUNTPOINTS,PKNAME,PARTN
sudo fdisk -l /dev/sdX
findmnt -no SOURCE /

Taka sama partycja powinna wciąż zawierać system, a jej aktualny rozmiar, jak przedstawione przez jądro w lsblk, powinien być większy i odpowiadać powiększonemu wpisowi partycji. Widoczna zmiana w tabeli nie wystarczy, jeśli jądro wciąż ujawnia stary rozmiar.

Jeśli rozmiar nie zmienił się, jeśli ponowne odczytanie tabeli się nie powiodło, jeśli tabela i jądro się nie zgadzają, lub jeśli rozpoznana partycja nie jest tą zamontowaną na /, przestań: nie uruchamiaj resize2fs. Jeśli tylko odczyt gorący się nie powiódł, podczas gdy powiększenie tabeli jest potwierdzone, zaplanuj kontrolowane ponowne uruchomienie z użyciem konsoli odzyskiwania. Po ponownym uruchomieniu powtórz kontrole źródła, typu i rozmiaru. Jeśli oczekiwany rozmiar nadal nie jest rozpoznawany lub jeśli występują problemy z uruchomieniem, przestań i zdiagnozuj maszynę; nie wydawaj przypadkowych poleceń.

Powiększ ext4 po potwierdzeniu partycji

Ten krok jest zarezerwowany dla przypadku, gdy findmnt wciąż potwierdza ten sam system ext4 oraz gdy lsblk potwierdza, że jego partycja rzeczywiście ma nowy rozmiar. Placeholder /dev/sdXN oznacza tutaj pełną ścieżkę do systemu plików, a nie całego dysku. Zastąp go zweryfikowanym źródłem; w przypadku NVMe, nazwa partycji wygląda na przykład jak /dev/nvme0n1p2.

sudo resize2fs /dev/sdXN

Oczekiwanym wynikiem jest rozszerzenie systemu plików ext4 w teraz większej partycji. Dokumentacja resize2fs rozróżnia tę operację od modyfikacji tabeli: resize2fs nie zmienia partycji. Rozszerzenie na bieżąco zależy od wsparcia jądra i systemu plików; nie zakładaj, że powiedzie się w każdej konfiguracji.

Przestań, jeśli typ nie jest ext4, jeśli partycja zachowuje swój stary rozmiar, jeśli źródło nie odpowiada już ustalonemu systemowi plików lub jeśli polecenie zgłasza błąd. Nie odmontowywuj /, aby improwizować inną procedurę; nie wykonuj ani nie zmniejszaj e2fsck na zamontowanej partycji. Błąd wymaga odpowiedniej diagnostyki, a nie nowego przypadkowego polecenia.

Sprawdź użyteczną przestrzeń

Na zakończenie przeprowadź kontrole źródła, typu, rozmiaru partycji i użytecznej przestrzeni:

findmnt -no SOURCE /
findmnt -no FSTYPE /
lsblk -b -o NAME,PATH,TYPE,FSTYPE,SIZE,MOUNTPOINTS,PKNAME,PARTN
df -hT /

Aby potwierdzić efektywne zwiększenie, należy znaleźć to samo źródło systemu, typ ext4, nowy rozmiar partycji rozpoznawany przez jądro oraz wyższą pojemność systemu plików w df -hT /. Rozmiar partycji i przestrzeń zgłoszona przez df nie są identyczne: ext4 wykorzystuje część swojej pojemności na własne struktury.

Jeśli df nie wzrosło, jeśli wartości się nie zgadzają lub jeśli jakiekolwiek polecenie zgłosiło błąd, nie ogłaszaj operacji zaudanowanych i nie powtarzaj growpart. Zachowaj wyniki dla diagnostyki. W przypadku partycji z danymi ext4, która nie jest systemem do powiększenia za pomocą fdisk, procedura jest inna i ta procedura nie ma zastosowania.

Krótko mówiąc: dokładnie zidentyfikuj system, potwierdź dostępność kontynuuącej przestrzeni oraz wynik diagnostyki na sucho, przygotuj kopię zapasową i odzyskiwanie, a następnie osobno sprawdź partycję rozpoznawaną przez jądro i ext4. Przy najmniejszej niezgodności, przestań przed kolejnym krokiem.

Udostępnij Facebook X WhatsApp LinkedIn Pinterest Reddit E-mail