Zwiększyć rozmiar partycji, na której jest zainstalowany Ubuntu?

60

Mam Ubuntu zainstalowany na dysku. Problem polega na tym, że brakuje miejsca na dysku. Jest to instalowane na vmware. Rozszerzyłem dysk wirtualny i uruchomiłem system Ubuntu. Ale kiedy otworzyłem gparted (sudo gparted), opcja przenoszenia / zmiany rozmiaru jest niedostępna. To jest partycja, na której zainstalowano Ubuntu, ale muszę ją zmienić. Jakieś pomysły? Czuję się swobodnie, używając linii poleceń

użytkownik51447
źródło
Możesz zobaczyć, jak to robią raspi-configdla Raspberry Pi, gdzie rozszerzanie głównego systemu plików jest czymś, co robisz prawie za każdym razem, gdy konfigurujesz nowe Raspberry Pi. github.com/RPi-Distro/raspi-config/blob/…
sshow

Odpowiedzi:

16

Jesteś prawie na miejscu.
Nie można zmienić rozmiaru partycji przy użyciu GParted podczas działania Ubuntu.
Będziesz musiał dołączyć GParted ISO jako CD do maszyny VM i zrestartować maszynę, aby GParted został załadowany zamiast Ubuntu (myślę, że możesz uruchomić z wirtualnej płyty CD naciskając F12 natychmiast po uruchomieniu maszyny).
Po uruchomieniu w GParted opcja przenoszenia / zmiany rozmiaru zostanie włączona, ponieważ Ubuntu nie jest aktualnie uruchomiony.

yossile
źródło
139

W rzeczywistości, to MOŻE powiększyć głównego systemu plików podczas Ubuntu działa (niedawno dowiedziałem się tutaj ) - to brzmi to niewiarygodnie, ale to prawda :)

Oto lista kroków dla prostego scenariusza, w którym masz dwie partycje, /dev/sda1jest to partycja ext4, z której system operacyjny jest uruchamiany i /dev/sdb2jest zamieniany. W tym ćwiczeniu chcemy usunąć partycję wymiany /dev/sda1na cały dysk.

  1. Jak zawsze, upewnij się, że masz kopię zapasową danych - ponieważ zmodyfikujemy tablicę partycji, istnieje szansa na utratę wszystkich danych, na przykład jeśli popełnisz literówkę.

  2. Biegać sudo fdisk /dev/sda

    • Użyj, paby wyświetlić listę partycji. Zanotuj cylinder startowy z/dev/sda1
    • użyj, daby usunąć najpierw partycję wymiany ( 2), a następnie /dev/sda1partycję. Jest to bardzo przerażające, ale w rzeczywistości nieszkodliwe, ponieważ dane nie są zapisywane na dysku, dopóki nie zapiszesz zmian na dysku.
    • użyj, naby utworzyć nową partycję podstawową. Upewnij się, że cylinder startowy jest dokładnie taki sam jak poprzedni /dev/sda1. Dla cylindra końcowego zgadzam się z domyślnym wyborem, który polega na tym, aby partycja obejmowała cały dysk.
    • Użyj, aaby przełączyć flagę rozruchową na nowym/dev/sda1
    • sprawdź zmiany, weź głęboki oddech i użyj, waby zapisać nową tablicę partycji na dysk. Otrzymasz komunikat informujący, że jądro nie może ponownie odczytać tabeli partycji, ponieważ urządzenie jest zajęte, ale to jest w porządku.
  3. Uruchom ponownie z sudo reboot. Po uruchomieniu systemu będziesz mieć mniejszy system plików na większej partycji .

  4. Następne magiczne polecenie to resize2fs. Uruchom sudo resize2fs /dev/sda1- ten formularz domyślnie spowoduje, że system plików zajmie całą dostępną przestrzeń na partycji.

To wszystko, właśnie zmieniliśmy rozmiar partycji, na której jest zainstalowany Ubuntu, bez uruchamiania z dysku zewnętrznego.

Siergiej
źródło
@EliahKagan: Proszę spojrzeć na odpowiedź (od Gillesa), do której linkowałem. Chodzi o to, że można użyć fdiskdo powiększenia partycji , podczas gdy system operacyjny nadal korzysta z mniejszego systemu plików. Następnie. po ponownym uruchomieniu, po ponownym odczytaniu przez jądro zaktualizowanej tablicy partycji, możemy zmienić rozmiar systemu plików, ponieważ teraz znajduje się on na większej partycji.
Siergiej
1
@Isaac: Tak, nadal musimy ponownie uruchomić komputer, aby jądro ponownie odczytało tablicę partycji. Jednak szybki restart w wielu sytuacjach jest znacznie mniejszy niż błąd uruchamiania z nośnika zewnętrznego (myśleć zdalnych komputerach, maszynach bezgłowych, VPSes itd.)
Sergey
2
Dwie krótkie uwagi: 1. Możesz dfpóźniej użyć „wynikowej” przestrzeni (potwierdź, że zadziałało) i 2. pamiętaj, aby odtworzyć trochę przestrzeni wymiany!
Christian Rondeau
1
Dzięki wielkie. Ubuntu nigdy nie używał miejsca, które podałem vdisk VirtualBox. Teraz wiem dlaczego. Wielkie dzięki!
penderi
1
@Sid: Bardzo ważne jest, aby cylinder startowy był dokładnie taki sam. Jeśli wolne miejsce jest gdziekolwiek, ale zaraz po partycji, musisz użyć innej metody (która wymagałaby rozruchu z innego dysku)
Sergey
21

Dwie metody

1. Testowane na Ubuntu Server 16.04 do 18.10

Po rozszerzeniu woluminu w VMware ESXi (zamknij vm, backup / export vm, usuń wszystkie migawki, a następnie zwiększ liczbę dysków, ponownie wykonaj migawkę vm przed wykonaniem kolejnych kroków, aby móc przywrócić błąd / błąd).

Poniższy przykład przedstawia rozszerzenie woluminu na partycji głównej w systemie, który już korzysta z LVM.

  1. sshw systemie, przełącz się na root i uruchom cfdisk
    # cfdisk

  2. wprowadź opis zdjęcia tutaj

  3. wprowadź opis zdjęcia tutaj

  4. wprowadź opis zdjęcia tutaj

  5. wprowadź opis zdjęcia tutaj

  6. wprowadź opis zdjęcia tutaj

  7. wprowadź opis zdjęcia tutaj

  8. wprowadź opis zdjęcia tutaj

  9. wprowadź opis zdjęcia tutaj

  10. wprowadź opis zdjęcia tutaj

  11. wprowadź opis zdjęcia tutaj

  12. wprowadź opis zdjęcia tutaj

  13. Po wyjściu z cfdisk

     # fdisk -l /dev/sda 
     Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/O size (minimum/optimal): 512 bytes / 512 bytes
     Disklabel type: dos
     Disk identifier: 0xc8b647ff
    
     Device     Boot    Start      End  Sectors  Size Id Type
     /dev/sda1  *        2048   999423   997376  487M 83 Linux
     /dev/sda2        1001470 16775167 15773698  7.5G  5 Extended
     /dev/sda3       16775168 41943039 25167872   12G 8e Linux LVM (***** See new partition /dev/sda3*****)
     /dev/sda5        1001472 16775167 15773696  7.5G 8e Linux LVM
    
  14. Uruchom ponownie system przed następnym krokiem (w przeciwnym razie możesz uzyskać Device /dev/sda3 not found (or ignored by filtering))

     # shutdown now -r
    
  15. Zainicjuj nowy wolumin

     # pvcreate /dev/sda3
       Physical volume "/dev/sda3" successfully created
    
  16. Uzyskaj nazwę woluminu do rozszerzenia

     # vgdisplay
       --- Volume group ---
       VG Name               linuxetc1-vg (***** this is vg i'm extending*****)
       System ID             
       Format                lvm2
       Metadata Areas        1
       Metadata Sequence No  3
       VG Access             read/write
       VG Status             resizable
       MAX LV                0
       Cur LV                2
       Open LV               2
       Max PV                0
       Cur PV                1
       Act PV                1
       VG Size               7.52 GiB
       PE Size               4.00 MiB
       Total PE              1925
       Alloc PE / Size       1925 / 7.52 GiB
       Free  PE / Size       0 / 0  
       ...
    
  17. Rozszerz grupę woluminów

     # vgextend linuxetc1-vg /dev/sda3
       Volume group "linuxetc1-vg" successfully extended
    
  18. Rozszerz root

     # lvextend -l+100%FREE /dev/linuxetc1-vg/root
       Size of logical volume linuxetc1-vg/root changed from 6.52 GiB (1669 extents) to 18.52 GiB (4741 extents).
       Logical volume root successfully resized.
    
    
     Or if you only wanted to give 5 more GB to root
     # lvextend -L +5g /dev/linuxetc1-vg/root
    
  19. Uzyskaj nazwę systemu plików do następnego kroku

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  20. Rozszerz system plików

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  21. Zobacz zwiększony rozmiar

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

2. Szybsza metoda przetestowana w Ubuntu Server 18.04.3 LTS

Ta metoda jest nieco szybsza niż pierwsza. Wynika to z nowej opcji w cfdiskmenu o nazwie „Resize”, która zapisuje niektóre kroki.

Po rozszerzeniu woluminu w VMware ESXi (zamknij vm, backup / export vm, usuń wszystkie migawki, a następnie zwiększ liczbę dysków, ponownie wykonaj migawkę vm przed wykonaniem kolejnych kroków, aby móc przywrócić błąd / błąd).

Poniższy przykład przedstawia rozszerzenie woluminu na partycji głównej w systemie, który już korzysta z LVM.

  1. sshdo systemu, przełącz się na root i uruchom cfdisk.

  2. Wybierz partycję do rozszerzenia i wybierz „Zmień rozmiar”. wprowadź opis zdjęcia tutaj

  3. Ustaw „Nowy rozmiar”. wprowadź opis zdjęcia tutaj

  4. Po naciśnięciu Enter zobaczysz ekran z następującą notatką „Zmieniono rozmiar partycji [someNumber]”: wprowadź opis zdjęcia tutaj

  5. Następnie musisz „Zapisać” (zapisać) zmiany: wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

  6. Quit cfdisk. Po wyjściu może zostać wyświetlony komunikat „synchronizowanie dysków”. wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

  7. W tym momencie zrestartowałem system, ale może nie być to konieczne. Teraz możesz odebrać od kroku 19 z pierwszej metody (powtórzonej poniżej).

  8. (19) Uzyskaj nazwę systemu plików dla następnego kroku

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  9. (20) Rozszerz system plików

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  10. (21) Zobacz powiększony rozmiar

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

Artykuły:
https://wiki.ubuntu.com/Lvm
http://www.geoffstratton.com/expand-hard-disk-ubuntu-lvm

jtlindsey
źródło
Łał. To było bardzo pomocne. Chciałbym móc głosować więcej niż raz. Dzięki!
Mario Tacke
1
Działa idealnie na 18.10 działającym pod ESXi. Dzięki!
John Vinopal
Absolutnie fantastyczny, właśnie to, czego potrzebowałem jako linux noob. .
bigbadmouse
Świetny przewodnik! Następnie rozbudowano pamięć masową na Ubuntu działającą jako maszyna wirtualna Proxmox.
tokenizer_fsj
Fantastyczny! Dziękuję Ci za to. Działa to w przypadku 18.04 działającego na ESXi.
one.time
0

Odpowiedź Siergieja była doskonała. Jeśli jednak puste miejsce nie znajduje się bezpośrednio w następnym urządzeniu, konieczne będzie usunięcie innych urządzeń. Na przykład:

Device     Boot    Start       End  Sectors Size Id Type
/dev/sda1  *        2048  33556477 33554430  16G 83 Linux
/dev/sda2       33556478  41940991  8384514   4G  5 Extended
/dev/sda3       41940992 125829119 83888128  40G 83 Linux
/dev/sda5       33556480  41940991  8384512   4G 82 Linux swap / Solaris

W powyższym przypadku, jeśli chcesz połączyć się /dev/sda3z /dev/sda1, trzeba by usunąć /dev/sda1, /dev/sda2i /dev/sda3(z dpolecenia) i ponownie dodać /dev/sda2i aktualizować swój typ (z ni tkomend).

jaycode
źródło
0

Udało mi się powiększyć moją podstawową partycję ext4, korzystając z opisanej tutaj metodologii .

Kilka notatek z mojego osobistego doświadczenia:

  • Przykład linku dotyczy zmniejszania partycji, stąd kolejność to najpierw resize2fs, a następnie fdisk. Podczas powiększania partycji (jak w moim przypadku) najpierw powinna być kolejność fdisk, uruchom ponownie, a następnie resize2fs. Ponadto przy korzystaniu z programu fdisk należy usunąć i ponownie zdefiniować partycję podstawową i rozszerzoną.
  • Uruchomiłem Ubuntu z innego dysku, a następnie pracowałem na tym dysku, który faktycznie był kopią lustrzaną (używając dd) starszego dysku. Sprawiło, że można go uruchomić przy użyciu GParted
  • Obecna wersja resize2fs (używam Ubuntu 12.04LTS) obsługuje ext4 - nie trzeba wykonywać akcji opisanych w linku zmiany ext2.
Elchanan
źródło
1
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Braiam