Menambah ukuran partisi tempat Ubuntu diinstal?

60

Saya telah menginstal Ubuntu pada drive. Masalahnya adalah kehabisan ruang disk. Ini diinstal pada vmware. Saya memperluas drive virtual dan boot ke ubuntu. Tetapi ketika saya membuka gparted (sudo gparted), opsi pindah / ubah ukuran tidak tersedia. Ini adalah partisi tempat Ubuntu terinstal, tetapi saya perlu mengubah ukurannya. Ada ide? Saya nyaman menggunakan baris perintah

pengguna51447
sumber
Anda dapat melihat bagaimana mereka melakukannya raspi-configuntuk Raspberry Pi, di mana memperluas sistem file root adalah sesuatu yang Anda lakukan hampir setiap kali Anda membuat Raspberry Pi baru. github.com/RPi-Distro/raspi-config/blob/…
sshow

Jawaban:

16

Anda hampir sampai.
Anda tidak dapat mengubah ukuran partisi menggunakan GParted saat Ubuntu sedang berjalan.
Anda harus melampirkan ISO GParted sebagai CD ke mesin VM dan reboot mesin sehingga GParted akan dimuat bukan Ubuntu (saya pikir Anda bisa boot dari CD virtual dengan menekan F12 segera setelah mesin dimulai).
Setelah Anda mem-boot ke GParted, opsi untuk memindahkan / mengubah ukuran akan diaktifkan karena Ubuntu saat ini tidak berjalan.

yossile
sumber
139

Sebenarnya, Anda BISA memperbesar sistem file root saat Ubuntu berjalan (saya baru-baru ini mempelajari sendiri di sini ) - ini terdengar luar biasa tapi itu benar :)

Berikut daftar langkah-langkah untuk skenario sederhana di mana Anda memiliki dua partisi, /dev/sda1adalah partisi ext4 tempat OS di-boot dan /dev/sdb2swap. Untuk latihan ini kami ingin menghapus perluasan partisi swap /dev/sda1ke seluruh disk.

  1. Seperti biasa, pastikan Anda memiliki cadangan data Anda - karena kita akan mengubah tabel partisi ada kemungkinan kehilangan semua data Anda jika Anda membuat kesalahan ketik, misalnya.

  2. Lari sudo fdisk /dev/sda

    • gunakan puntuk membuat daftar partisi. Catat silinder mulai dari/dev/sda1
    • gunakan duntuk menghapus dulu partisi swap ( 2) dan kemudian /dev/sda1partisi. Ini sangat menakutkan tetapi sebenarnya tidak berbahaya karena data tidak ditulis ke disk sampai Anda menulis perubahan pada disk.
    • gunakan nuntuk membuat partisi primer baru. Pastikan silinder start-nya persis sama dengan yang /dev/sda1dulu. Untuk silinder akhir setuju dengan pilihan default, yaitu membuat partisi untuk menjangkau seluruh disk.
    • gunakan auntuk beralih bendera bootable di yang baru/dev/sda1
    • tinjau perubahan Anda, tarik napas panjang dan gunakan wuntuk menulis tabel partisi baru ke disk. Anda akan mendapatkan pesan yang mengatakan bahwa kernel tidak dapat membaca kembali tabel partisi karena perangkat sedang sibuk, tapi tidak apa-apa.
  3. Mulai ulang dengan sudo reboot. Saat sistem melakukan boot, Anda akan memiliki sistem file yang lebih kecil yang hidup di dalam partisi yang lebih besar .

  4. Perintah sihir berikutnya adalah resize2fs. Jalankan sudo resize2fs /dev/sda1- formulir ini akan secara default membuat sistem file mengambil semua ruang yang tersedia di partisi.

Itu saja, kami baru saja mengubah ukuran partisi tempat Ubuntu diinstal, tanpa mem-boot dari drive eksternal.

Sergey
sumber
@EliahKagan: Silakan lihat jawabannya (dari Gilles) yang saya tautkan. Idenya adalah memungkinkan untuk fdiskmemperbesar partisi , sementara OS terus menggunakan sistem file yang lebih kecil. Kemudian. setelah reboot, setelah kernel membaca ulang tabel partisi yang diperbarui, kita dapat mengubah ukuran sistem file karena sekarang tinggal di partisi yang lebih besar.
Sergey
1
@Isaac: Ya, kita masih harus reboot untuk membuat kernel membaca kembali tabel partisi. Namun, reboot cepat dalam banyak skenario adalah masalah yang jauh lebih kecil daripada mem-boot dari media eksternal (pikirkan mesin jarak jauh, mesin tanpa kepala, VPS, dll.)
Sergey
2
Dua catatan cepat: 1. Anda dapat menggunakan dfuntuk menunjukkan ruang "hasil" setelah ini (konfirmasi bahwa itu berfungsi), dan 2. ingat untuk membuat ulang beberapa ruang swap!
Christian Rondeau
1
Terima kasih banyak. Ubuntu tidak pernah menggunakan ruang yang saya berikan pada VirtualBox vdisk. Sekarang saya tahu kenapa. Terimakasih banyak!
penderi
1
@ Id: Sangat penting bahwa silinder start adalah persis sama. Jika ruang kosong ada di mana saja tetapi segera setelah partisi Anda perlu menggunakan metode lain (yang akan membutuhkan boot dari drive lain)
Sergey
21

Dua Metode

1. Diuji di Ubuntu Server 16.04 hingga 18.10

Setelah memperluas volume di VMware ESXi (shutdown vm, backup / export vm, hapus semua snapshot, lalu tambah jumlah dalam ukuran disk, ambil snapshot dari vm lagi sebelum mengikuti langkah-langkah selanjutnya sehingga Anda dapat mengembalikan kesalahan / kesalahan).

Contoh berikut adalah memperluas volume pada partisi root pada sistem yang sudah menggunakan LVM.

  1. sshke dalam sistem, beralih ke root dan jalankan cfdisk
    # cfdisk

  2. masukkan deskripsi gambar di sini

  3. masukkan deskripsi gambar di sini

  4. masukkan deskripsi gambar di sini

  5. masukkan deskripsi gambar di sini

  6. masukkan deskripsi gambar di sini

  7. masukkan deskripsi gambar di sini

  8. masukkan deskripsi gambar di sini

  9. masukkan deskripsi gambar di sini

  10. masukkan deskripsi gambar di sini

  11. masukkan deskripsi gambar di sini

  12. masukkan deskripsi gambar di sini

  13. Setelah keluar dari 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. Nyalakan ulang sistem sebelum langkah berikutnya (atau yang mungkin Anda dapatkan Device /dev/sda3 not found (or ignored by filtering))

     # shutdown now -r
    
  15. Inisialisasi volume baru

     # pvcreate /dev/sda3
       Physical volume "/dev/sda3" successfully created
    
  16. Dapatkan nama volume untuk diperluas

     # 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. Perpanjang grup volume

     # vgextend linuxetc1-vg /dev/sda3
       Volume group "linuxetc1-vg" successfully extended
    
  18. Perluas 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. Dapatkan nama sistem file untuk langkah selanjutnya

     # 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. Perpanjang sistem file

     # 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. Lihat peningkatan ukuran

     # 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. Metode Lebih Cepat Diuji di Ubuntu Server 18.04.3 LTS

Metode ini sedikit lebih cepat daripada yang pertama. Ini karena opsi baru di cfdiskmenu yang disebut "Ubah ukuran" yang menyimpan beberapa langkah.

Setelah memperluas volume di VMware ESXi (shutdown vm, backup / export vm, hapus semua snapshot, lalu tambah jumlah dalam ukuran disk, ambil snapshot dari vm lagi sebelum mengikuti langkah-langkah selanjutnya sehingga Anda dapat mengembalikan kesalahan / kesalahan).

Contoh berikut adalah memperluas volume pada partisi root pada sistem yang sudah menggunakan LVM.

  1. sshke dalam sistem, beralih ke root dan jalankan cfdisk.

  2. Pilih partisi untuk memperpanjang dan pilih "Ubah ukuran". masukkan deskripsi gambar di sini

  3. Atur "Ukuran baru". masukkan deskripsi gambar di sini

  4. Setelah menekan enter, Anda akan melihat layar dengan catatan berikut "Partition [someNumber] resize": masukkan deskripsi gambar di sini

  5. Selanjutnya Anda harus "Menulis" (menyimpan) perubahan Anda: masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

  6. Berhenti cfdisk. Saat Anda keluar, Anda mungkin melihat pesan "sinkronisasi disk". masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

  7. Saya mem-boot ulang sistem saya pada saat ini tetapi mungkin tidak perlu. Sekarang Anda dapat mengambil dari langkah 19 dari metode pertama (diulang di bawah).

  8. (19) Dapatkan nama sistem file untuk langkah selanjutnya

     # 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) Perpanjang sistem file

     # 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) Lihat ukuran yang ditingkatkan

     # 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
    

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

jtlindsey
sumber
Wow. Ini sangat membantu. Seandainya saya bisa memilih lebih dari satu kali. Terima kasih!
Mario Tacke
1
Bekerja dengan sempurna pada 18.10 berjalan di bawah ESXi. Terima kasih!
John Vinopal
Benar-benar luar biasa, Hanya apa yang saya butuhkan sebagai noob linux. .
bigbadmouse
Panduan hebat! Ikuti ini untuk memperluas penyimpanan di Ubuntu yang berjalan sebagai Proxmox VM.
tokenizer_fsj
Fantastis! Terima kasih untuk ini. Ini bekerja selama 18,04 berjalan pada ESXi.
one.time
0

Jawaban dari Sergey sangat bagus. Namun, jika Anda memiliki ruang kosong yang tidak langsung di perangkat berikutnya, Anda harus menghapus perangkat lain. Sebagai contoh:

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

Dalam kasus di atas, jika Anda ingin menggabungkan /dev/sda3dengan /dev/sda1, Anda akan perlu untuk menghapus /dev/sda1, /dev/sda2dan /dev/sda3(dengan dperintah), dan menambahkan /dev/sda2dan memperbarui jenisnya (dengan ndan tperintah).

kode jay
sumber
0

Saya berhasil memperbesar partisi ext4 utama saya menggunakan metodologi yang dijelaskan di sini .

Beberapa catatan dari pengalaman pribadi saya:

  • Contoh tautan adalah untuk menyusut partisi, maka urutannya adalah resize2fs pertama dan kemudian fdisk. Ketika memperbesar partisi (seperti dalam kasus saya), urutannya haruslah fdisk pertama, reboot dan kemudian resize2fs. Juga, ketika menggunakan fdisk, partisi primer dan perluasan harus dihapus dan didefinisikan ulang.
  • Saya mem-boot Ubuntu dari drive lain dan kemudian bekerja pada drive ini yang sebenarnya adalah mirror (menggunakan dd) dari drive yang lebih lama. Jadikan bootable menggunakan GParted
  • Versi resize2fs saat ini (saya menggunakan Ubuntu 12.04LTS) mendukung ext4 - tidak perlu melakukan tindakan yang dijelaskan dalam tautan untuk mengubahnya ext2.
Elchanan
sumber
1
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Braiam