Jak zmienić rozmiar partycji przy użyciu wiersza polecenia bez interfejsu GUI na serwerze?


44

Mam dostęp do serwera tylko przez terminal i nie mogę korzystać z narzędzi graficznych, takich jak GParted!
Chcę utworzyć nową partycję z części katalogu głównego (około 768 MB) do wymiany.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock

Odpowiedzi:


36

Nie można zmniejszyć / edytować partycji, jeśli jakakolwiek partycja na urządzeniu pamięci masowej jest zamontowana. Aby więc odmontować i edytować główny system plików, system operacyjny musi zostać zamknięty. Następnie uruchom system na żywo i edytuj partycję zgodnie z opisem w innych odpowiedziach.

Alternatywne rozwiązanie: plik wymiany

Alternatywnie do tworzenia całej partycji, plik wymiany umożliwia zmianę jego rozmiaru w locie i jest łatwiejszy do usunięcia. Plik wymiany może być podłączany na gorąco . tzn. można je dodawać i usuwać bez odmontowywania / wyłączania systemu operacyjnego.

  1. Utwórz plik 512 MB o nazwie /swapfile. To będzie nasz plik wymiany.

    fallocate -l 512M /swapfile  
    

    LUB

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. Ustaw odpowiednie uprawnienia (ponieważ plik wymiany, który można odczytać na całym świecie, to ogromna lokalna luka):

    chmod 600 /swapfile
    
  3. Po utworzeniu pliku o odpowiednim rozmiarze sformatuj go, aby zamienić:

    mkswap /swapfile
    
  4. Aktywuj plik wymiany:

    swapon /swapfile
    
  5. Edytuj /etc/fstabi dodaj wpis dla pliku wymiany:

    /swapfile none swap defaults 0 0
    

Więcej informacji na arch arch Linux .


Myślę, że to najłatwiejsza i najskuteczniejsza odpowiedź =)! Czy są jakieś konsekwencje korzystania z pliku zamiast partycji?
Alaa Ali

2
Nieznacznie niska wydajność, jeśli plik jest pofragmentowany. Zarówno ciągły plik wymiany, jak i partycja nie mają przewagi wydajnościowej, obie są traktowane w ten sam sposób.
totti

1
Myślę, że to najlepsze rozwiązanie. Ponieważ nie formatujesz, nie zmniejszasz ani nie zmieniasz w żaden sposób partycji (tabel), nie ma ryzyka utraty danych.
R110

27

Przede wszystkim należy wiedzieć, że nie można zmienić rozmiaru, aby zmniejszyć partycję główną, jeśli jej używasz (nazywa się to zmniejszaniem online). Możesz go rozwijać tylko online. Jest to obsługiwane przez resize2fspolecenie. Zakładam, że:

  • Nie chcesz stracić informacji na partycji głównej.
  • Nie masz fizycznego dostępu do dysku twardego, aby korzystać z LiveCD. Może to dotyczyć środowiska wirtualnego lub zdalnego. W przypadku wirtualnego nadal możesz zarządzać uruchamianiem z LiveCD, jeśli ustawisz uruchamianie VM z LiveCD. Zakłada się, że maszyna wirtualna obsługuje wysyłanie graficznego interfejsu użytkownika na pulpicie, z którego można uruchomić aplikację Gparted w celu łatwej zmiany rozmiaru. Ale ponieważ jest to mniej prawdopodobne, zakładam, że nie możesz.

Istnieją 2 typy partycji, których rozmiar można zmienić, partycje LVM lub partycje Logical Volume Manager, które obsługują zmianę rozmiaru w trybie online (zmniejszanie / powiększanie) od czasu utworzenia galaktyki i standardowych partycji, z których większość z nas korzysta. Obecnie jedynym, który ma prawie 100% wsparcie pełnego zmieniania rozmiaru online (Shrink / Grow) jest system plików btrfs (który jest wciąż w fazie rozwoju). Wyjaśnię, jak wykonywać normalne partycje, których większość z nas używa w systemie plików ext4.

Zmiana rozmiaru (powiększanie) partycji

Aby powiększyć partycję, możesz to zrobić z zamontowanym rootem. Aby to zrobić, po prostu wykonaj:

sudo resize2fs /dev/sda1

Pod warunkiem, że masz już puste miejsce gotowe do scalenia. Następnie zalecam ponowne uruchomienie, aby zmiany odniosły skutek. Powyższe polecenie zmieni rozmiar na maksymalny dozwolony. Jeśli chcesz zmienić rozmiar do określonego rozmiaru, po prostu dodaj rozmiar na końcu:

sudo resize2fs /dev/sda1 25G

Pamiętaj, że jeśli chcesz podać 25,4 GB, nie możesz użyć „.”. musisz zejść o jedną jednostkę miary. W tym przypadku z GB na MB, więc wyglądałoby to tak:

sudo resize2fs /dev/sda1 25400M

W ten sposób będziesz mieć partycję 25,4G

Zmiana rozmiaru (zmniejszanie) partycji

Zmniejszenie partycji jest procesem dwuetapowym, który obejmuje:

  • Zmniejszenie rozmiaru systemu plików o wymaganą ilość.
  • Zmniejszenie rozmiaru podstawowego urządzenia blokowego, aby pasowało do rozmiaru systemu plików.

Przed zmniejszeniem pojemności systemu plików należy zmniejszyć rozmiar urządzenia blokowego (którym może być partycja lub wolumin logiczny). Ponieważ nie jest to dostępne dla żadnego systemu plików ext *, nie będzie można go zmniejszyć z 20 GB do 19,5 GB, aby utworzyć system wymiany 500 MB.

Nawet Ext4 nie obsługuje kurczenia się online. Jeśli spróbujesz to zrobić, otrzymasz:

wprowadź opis zdjęcia tutaj

O ile wiem, Twoim jedynym zakładem jest:

  • Zainstaluj inną wersję Ubuntu na tym samym serwerze (na innej partycji), której można następnie użyć do zmniejszenia partycji głównej oryginalnego serwera Ubuntu.

  • Zainstaluj serwer Ubuntu od zera w rozmiarze, którego faktycznie potrzebujesz

  • Użyj obrazu Live Ubuntu Server, aby zmienić rozmiar partycji. W takim przypadku musisz przejść do tego ekranu:

    wprowadź opis zdjęcia tutaj

    I wybierz opcję Zmień rozmiar, jak pokazano na powyższym obrazku. Stamtąd wybierzesz nowy rozmiar, ponieważ odtąd możesz odmontować jednostkę i zmniejszyć ją, jeśli chcesz.

Dodatkową pomocą jest tutaj system plików gparted suppor http://gparted.org/features.php, który podaje bardzo szczegółową listę obsługiwanych i obejmuje, jeśli mają one pełną zmianę rozmiaru online. Btrfs jest wśród nich.


Jestem ciekawy, czy istnieją inne systemy plików, które obsługują zmniejszanie się w Internecie? może ZFS lub BTRFS?
Seth

Dodałem link na dole. Jądro musi również to obsługiwać, jeśli system plików ma poprawnie zmienić rozmiar w trybie online.
Luis Alvarado,

Mam serwer Ubuntu na maszynie VMware, a jego rozmiar dysku to 120G. Ale po użyciu pierwszego rozwiązania pojawia się ten błąd: System plików ma już 27262720 bloków. Nic do roboty!
Dr.jacky,

1
Dziękuję @ Mr.Hyde. Było kilka problemów ze stacją roboczą 10, a nawet 11. Poleciłbym 12, a dla Ubuntu zaktualizowałbym też najnowszą lub nową wersję LTS, ponieważ były też pewne problemy. W moim przypadku mam stację roboczą VMware 12.0.1 i 64-bitową wersję Ubuntu 15.10.
Luis Alvarado,

3
Ze strony podręcznika resize2fs:The resize2fs program does not manipulate the size of partitions.
ACK_stoverflow

6

Odpowiedź zależy od tego, czy można odmontować partycję, aby ją zmniejszyć, czy nie. W twoim przypadku prawdopodobnie nie możesz odmontować partycji. W systemie Linux (UNIX / MAC OS) podłączenie partycji oznacza użycie systemu plików i odwzorowanie go na punkt montowania (w twoim przypadku /). Odmontowanie oznacza, że ​​przestajesz używać systemu plików i usuwasz mapowanie do punktu montowania. Nie można odmontować systemu plików zawierającego działający system operacyjny.

Jeśli partycja może być odmontowana

Załóżmy, że chcesz zmniejszyć partycję ext4 200 GB na /dev/sda4zamontowanym /data. Obecnie zawiera muzykę i filmy lub podobne, więc możesz tymczasowo odmontować. Chcesz utworzyć zamianę 4 GB.

sudo umount /dev/sda4

odmontować partycję.

sudo resize2fs /dev/sda4 196G

zmienić rozmiar systemu plików ext4 do 196 GB, przy założeniu, że jest wystarczająco dużo miejsca. Teraz musisz zmniejszyć partycję. Obecnie uważam, że musisz użyć, cfdiskaby usunąć istniejącą partycję i odtworzyć mniejszą partycję na jej miejscu. Następnie możesz także utworzyć nową partycję dla wymiany.

sudo cfdisk /dev/sda 

da ci GUI tekstowe do sprawdzenia tablicy partycji. printW tym momencie poleciłbym Ci tablicę partycji do pliku lub ekranu i zanotuje bieżącą konfigurację jako kopię zapasową. Następnie możesz wybrać /dev/sda4i deletepartycję. W jego miejscu free spacepojawi się. Użyj, newaby utworzyć nową partycję z 196 GB na swoim miejscu i ustaw typ na ext4. Następnie przejdź do końcowej wolnej przestrzeni i utwórz partycję wymiany 4 GB z typem swap. Uwaga: Nie testowałem tych poleceń, ponieważ /w tej chwili nie mogę się nimi bawić .

Jeśli partycji nie można odmontować

Nie można zmniejszyć zamontowanej partycji ext3 / 4 (patrz strona podręcznika resize2fs). Podczas uruchamiania systemu operacyjnego /nie można odmontować /. Oznacza to, że musisz wprowadzić inny system operacyjny (np. Z klucza USB), aby dokonać zmian.

W twoim przypadku jest to serwer zdalny (najprawdopodobniej na KVM), więc może nie być możliwe uruchomienie z USB / obrazu systemu operacyjnego na żywo. Mogą istnieć inne sposoby zmiany partycjonowania od dostawcy vServer za pomocą GUI administratora. Uważam, że jest to obecnie twój najlepszy zakład.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.