Jak rozszerzyć partycję ext4 i system plików?

44

Mam dysk 400 GB z partycją ext4 320 GB. Chciałbym rozbudować partycję ext4, aby wykorzystywała lewą przestrzeń (80 GB wolnego miejsca).

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

Jak mogłem to zrobić?

Widziałem ludzi używających, resize2fsale nie rozumiem, czy zmienia rozmiar partycji.

Innym rozwiązaniem byłoby użycie, fdiskale nie chcę usuwać mojej partycji i tracić danych. Jak mogę po prostu powiększać partycję bez utraty jakiegokolwiek pliku?

Uwaga: mówię o niezmontowanej partycji danych bez LVM i mam kopie zapasowe, ale chciałbym uniknąć poświęcania czasu na odzyskiwanie.

mimipc
źródło
Tego rodzaju pytanie zostało zadane i udzielono odpowiedzi wiele razy, o których jestem świadomy. Czy przeglądałeś tutaj archiwa?
mdpc

Odpowiedzi:

45

Musisz rozpocząć od odłączonej partycji. Jeśli nie możesz go odmontować (np. Jest to twoja partycja główna lub coś innego, co system musi uruchomić), użyj czegoś takiego jak System Rescue CD .

  1. Uruchom partedlub, gpartedjeśli wolisz GUI, i zmień rozmiar partycji, aby użyć dodatkowej przestrzeni. Wolę, gpartedponieważ daje ładne przedstawienie graficzne, bardzo podobne do tego, które narysowałeś w swoim pytaniu.

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (aby dowiedzieć się, czy jesteś po bezpiecznej stronie)

  4. Zainstaluj ponownie partycję.

Chociaż nigdy nie widziałem tego niepowodzenia, najpierw wykonaj kopię zapasową danych!

Flup
źródło
5
resize2fsStrona człowiek mówi: Jeśli system plików jest zamontowany, może być stosowany w celu rozszerzenia wielkości plików zamontowany, zakładając wsporniki jądra zmiany rozmiaru on-line. (W tym piśmie jądro Linux 2.6 obsługuje zmianę rozmiaru on-line dla systemów plików montowanych przy użyciu ext3 i ext4.). Jednak zmiana rozmiaru zamontowanego systemu plików jest bardziej niebezpieczną operacją, ponieważ jądro może łatwo zawiesić się lub zawiesić podczas uruchamiania rzadko wykorzystywanego kodu, pozostawiając system plików w złym stanie.
200_sukces
1
To prawda - ale nie chcesz się bawić w tablicę partycji z zamontowanym systemem plików. Dlatego zacząłem od fs odmontowane.
Flup
1
Dla ext4 może być resize4fszamiast tego na RHEL 5.
Zac Thompson
1
Rozwijanie partycji przy użyciu głównego systemu plików powinno działać dobrze, o ile: 1.Nie zmienisz początkowego numeru sektora. 2.Ponowne uruchomienie następuje po zmianie tablicy partycji przed wykonaniem następnego kroku.
kasperd
parted odmawia zmiany rozmiaru partycji ext4 na CentOS 6.
reinierpost
21

Tak, możesz rozwinąć EXT4 fs online, jeśli masz już posortowaną partycję. Czy masz posortowaną partycję? Czy masz LVM?

sudo resize2fs /dev/drive_to_grow

fdiskzmieni rozmiar partycji, prawda, ale jeśli jest to partycja root (lub jeśli w ogóle jakakolwiek zamontowana partycja), najpierw trzeba ją odmontować. Najprawdopodobniej offline!

Podobnie jak w przypadku wszystkich elementów związanych z operacjami na dyskach / dyskach twardych, zdecydowanie zalecam tworzenie kopii zapasowych i przetestowanie dobrze zrozumiałego procesu odzyskiwania.

Chris
źródło
Jeśli używasz fdisk, sprawdź, czy używasz MBR, a nie GPT (na przykład z hybrydowym MBR).
stek29
2
Na moim serwerze Debian XEN zmieniłem rozmiar mojego woluminu logicznego lvextend +40G /dev/vg0/volumeName, następnie zalogowałem się jako root w vm i wprowadziłem, resize2fs /dev/xvda2który powiększa działający główny system plików do nowego maksimum. Nie jestem pewien, czy było to potrzebne, ale ponownie uruchomiłem vm po tej akcji. Wszystko wydaje się w porządku.
rubo77
1
@ rubo77 Nie, nie ma potrzeby ponownego uruchamiania komputera,
Chris
5

Uwaga: na niektórych serwerach VDS możesz mieć inną niż podstawowa partycja root i najpierw musisz zmienić rozmiar kontenera partycji rozszerzonej

Na przykład właśnie zaktualizowałeś swój plan i masz coś takiego:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4

Tutaj / dev / vda2 - jest twoim rozszerzonym kontenerem. I / dev / vda5 - partycja główna, której rozmiar musimy zmienić na pełną dostępną przestrzeń.

Najprostszy sposób:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space
WSR
źródło
Co naprawdę mi pomogło, to zobaczyć, że możesz ustawić ENDliczbę ujemną. Zwykle nie znasz dokładnego rozmiaru linux partycji o zmienionym rozmiarze - nie wiesz, jak ustawić ENDargument resizepart. Ustawienie go -1sspowoduje zmianę rozmiaru partycji na maks.
srigi,
Błąd: Nieprawidłowy token -1s
starbeamrainbowlabs
3

Parted nie działa na ext4 na Centos. Musiałem użyć fdisk, aby usunąć i ponownie utworzyć partycję, która (zweryfikowałem) działa bez utraty danych. Postępowałem zgodnie z instrukcjami na http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Oto one w skrócie:

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w
JTW
źródło
1
Witaj w Server Fault! Proszę streścić kroki w samej odpowiedzi, aby uchronić się przed gniciem linków.
200_sukces
Użyłem tego procesu, ale użyłem gdisk do utworzenia partycji. Pozwoliło mi to zapisać dane i utworzyć partycję o
rozmiarze
2

partedmoże resizepartycje i ich systemy plików.

200_sukces
źródło
Dzięki, korzystałem z graficznego i nie obsługuje zmiany rozmiaru partycji. Widziałem opcję w programie cli, ale czy możesz mi powiedzieć, jak z pewnością korzystać z niej bez utraty danych? W resize NUMBER START END, czy START i END to numery sektorów? Skąd mam to wiedzieć?
mimipc
Zawsze zaleca się wykonanie kopii zapasowej danych przed wykonaniem jakiejkolwiek ryzykownej operacji, takiej jak zmiana rozmiaru partycji. partedobsługuje wybór jednostek - na przykład użyj sprzyrostka dla sektorów Blub GBbajtów, %dla procentu wielkości urządzenia i cyldla cylindrów.
200_sukces
2

Możesz użyć fdisklub, cfdiskaby zmodyfikować (lub odtworzyć) partycję (upewnij się, że nie zmienisz jej granicy początkowej), a następnie uruchom ponownie i resize2fs. Ale ogólnie lepiej jest używać LVM-2 zamiast MBR / GPT, ponieważ pozwala wprowadzić te zmiany bez ponownego uruchamiania jądra.

poige
źródło
1

Aby wyjaśnić, jak to zrobić dla każdego, kto wciąż czyta ten wątek.
Jeśli chcesz zmienić rozmiar partycji rozruchowej, musisz uruchomić komputer z dysku ratunkowego bootcd lub bootusb, który jest tylko Live Linux. Pozwala to na uruchomienie Linuksa na komputerze innym niż dysk, na którym chcesz wprowadzić zmiany.

Myślę, że najlepszym „ratunkowym” dyskiem CD lub USB w tym przypadku byłyby bootowalne obudowy USB lub CD z partycjami,
w których potrzebujesz obrazu ratunkowego
1. Partycja do rozszerzenia jest ostatnią partycją, ale uruchomiłeś się z niej i nie możesz jej odmontować.
sda1 = boot (lub swap)
sda2 = swap (lub boot)
sda3 = /
Niewykorzystane miejsce

  1. Jeśli partycja, która ma zostać rozszerzona, NIE jest ostatnią partycją, musisz użyć obrazu rozruchowego gparted, aby przenieść lub zmienić rozmiar partycji.
    sda1 = boot
    sda2 = / (partycja do rozszerzenia nie jest ostatnia)
    sda3 = zamień
    nieużywane miejsce

Jeśli chcesz zmienić zamontowaną partycję, która nie jest partycją „root” (/), na przykład / home, która jest inną partycją, nie ma potrzeby używania obrazu ratunkowego. Jest to szczególnie prawdziwe, jeśli jest to ostatnia partycja.
sda1 = boot
sda2 = /
sda3 = / home
nieużywane miejsce
-lub-
sda1 = /
sda2 = / home
nieużywane miejsce

Tak jest w przypadku, gdy biorę obraz z mniejszego dysku lub dysku SSD i przenoszę go na większy dysk SSD.

W takim przypadku wystarczy odmontować / home podczas jego przedłużania. Ale aby odmontować / home, musisz upewnić się, że nie jesteś zalogowany na żadnym koncie użytkownika, którego katalog domowy znajduje się w nim. Ponieważ katalog domowy użytkownika „root” znajduje się bezpośrednio w systemie root / as in / root, jeśli możesz zalogować się do roota, możesz odmontować / home

Wylogowuję się z sesji GUI (KDE / Gnome / etc) i używam [CTRL] + [ALT] + [F1], aby wywołać sesję powłoki.
Jeśli właśnie wylogowałeś się z konta użytkownika, zamknięcie plików może zająć Linuksowi 20-30 sekund, więc możesz napotkać błędy podczas próby umountowania / home.
1. umount / home (ponawiam to polecenie, jeśli nie powiedzie się to przez 30 sekund, a następnie przejrzyj inne sesje, aby sprawdzić, czy gdzieś jestem „cd / home / xxx”.)
2. parted / dev / sda
a. zmień rozmiar x (x = partycja, której rozmiar chcesz zmienić, użyj „p”, aby uzyskać listę partycji)
b. Wpisz ostatni sektor zmiany rozmiaru = „-1” (minus 1 oznacza 1 sektor od końca dysku)
c. q (kończy
partycje ) 3 resize2fs / dev / sda "x" (x = partycja, której rozmiar ma zostać zmieniony. Spowoduje to także ponowne zamontowanie systemu plików)
4. df -m (sprawdzam / home, aby sprawdzić, czy zmieniłem rozmiar)
Nigdy nie straciłem plików ani nie uszkodziłem dysku przy użyciu tej metody.

Powodzenia

Chuck A.
źródło
A jednak nie tworzysz kopii zapasowych.
Deer Hunter,