Bagaimana cara memperpanjang partisi ext4 dan sistem file?

44

Saya memiliki disk 400GB dengan partisi ext4 320GB. Saya ingin menumbuhkan partisi ext4 untuk menggunakan ruang kiri (ruang kosong 80GB).

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

Bagaimana saya bisa melakukan ini?

Saya pernah melihat orang menggunakan resize2fstetapi saya tidak mengerti apakah itu mengubah ukuran partisi.

Solusi lain adalah menggunakan fdisktetapi saya tidak ingin menghapus partisi saya dan kehilangan data. Bagaimana saya bisa menumbuhkan partisi tanpa kehilangan file apa pun?

Catatan: Saya sedang berbicara tentang partisi data yang tidak dipasang tanpa LVM dan saya memiliki cadangan, tetapi saya ingin menghindari menghabiskan waktu untuk pemulihan.

mimipc
sumber
Jenis pertanyaan ini telah ditanyakan dan dijawab beberapa kali yang saya ketahui. Sudahkah Anda berkonsultasi dengan arsip di sini?
mdpc

Jawaban:

45

Anda harus mulai dengan partisi yang tidak di-mount. Jika Anda tidak dapat melepasnya (mis. Itu partisi root Anda atau sesuatu yang perlu dijalankan sistem), gunakan sesuatu seperti System Rescue CD sebagai gantinya.

  1. Jalankan parted, atau gpartedjika Anda lebih suka GUI, dan ubah ukuran partisi untuk menggunakan ruang ekstra. Saya lebih suka gpartedkarena memberi Anda representasi grafis yang bagus, sangat mirip dengan yang Anda buat dalam pertanyaan Anda.

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (hanya untuk mengetahui apakah Anda berada di sisi yang aman)

  4. Hitung ulang partisi Anda.

Meskipun saya belum pernah melihat ini gagal, lakukan back up data Anda terlebih dahulu!

Flup
sumber
5
The resize2fshalaman manual mengatakan: Jika filesystem sudah terpasang, dapat digunakan untuk memperluas ukuran dari mount filesystem, dengan asumsi mendukung kernel on-line Resize. (Saat tulisan ini dibuat, kernel Linux 2.6 mendukung pengubahan ukuran secara online untuk sistem file yang dipasang menggunakan ext3 dan ext4.). Namun, mengubah ukuran sistem file yang dipasang adalah operasi yang lebih berbahaya, karena kernel dapat dengan mudah membeku atau macet saat menjalankan kode yang jarang dilakukan, meninggalkan sistem file Anda dalam keadaan buruk.
200_sukses
1
Benar - tetapi Anda tidak ingin dipusingkan dengan tabel partisi Anda dengan sistem file yang terpasang. Itu sebabnya saya mulai dengan fs unmount.
Flup
1
Untuk ext4, mungkin resize4fsdi RHEL 5.
Zac Thompson
1
Menumbuhkan partisi dengan sistem file root Anda akan berfungsi dengan baik selama: 1.Anda tidak mengubah nomor sektor awal. 2.Anda reboot setelah mengubah tabel partisi sebelum mengambil langkah selanjutnya.
kasperd
parted menolak untuk mengubah ukuran partisi ext4 pada CentOS 6.
reinierpost
21

Ya, Anda dapat menumbuhkan EXT4 fs online jika partisi Anda sudah diurutkan. Sudahkah Anda menyortir partisi? Apakah Anda punya LVM?

sudo resize2fs /dev/drive_to_grow

fdiskakan mengubah ukuran partisi Anda, benar, tetapi jika ini partisi root (atau jika memang ada partisi yang dipasang) itu harus dilepas dahulu. Jadi offline kemungkinan besar!

Seperti apa pun yang terkait dengan operasi disk / fs, saya sangat menyarankan untuk memiliki cadangan, dan proses pemulihan yang teruji dan dipahami dengan baik.

Chris
sumber
Jika Anda menggunakan fdiskpastikan untuk memeriksa Anda menggunakan MBR dan bukan GPT (dengan MBR hybrid misalnya).
stek29
2
Pada server XEN debian saya, saya mengubah ukuran volume logis saya lvextend +40G /dev/vg0/volumeName, kemudian login sebagai root di vm dan masuk resize2fs /dev/xvda2yang menumbuhkan filesystem root yang berjalan ke max baru. Saya tidak yakin apakah itu diperlukan, tetapi saya me-reboot vm setelah tindakan ini. Segalanya tampak baik-baik saja.
rubo77
1
@ rubo77 Tidak, tidak perlu reboot,
Chris
5

Catatan, pada beberapa server VDS Anda bisa memiliki partisi root non-primer dan perlu mengubah ukuran wadah partisi Extended terlebih dahulu

Misalnya, Anda baru saja memutakhirkan paket dan memiliki sesuatu seperti:

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

Di sini / dev / vda2 - adalah wadah Extended Anda. Dan / dev / vda5 - partisi utama yang perlu kita ubah ukurannya menjadi ruang penuh yang tersedia.

Cara paling sederhana:

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
sumber
Yang benar-benar membantu saya, adalah melihat bahwa Anda dapat mengatur ENDke angka negatif. Biasanya Anda tidak tahu ukuran linux persis dari partisi yang diubah ukurannya - Anda tidak tahu cara mengatur ENDargumen resizepart. Pengaturan untuk -1sakan mengubah ukuran partisi Anda ke maks.
srigi
Kesalahan: Token -1s tidak valid
starbeamrainbowlabs
3

Parted tidak berfungsi pada ext4 di Centos. Saya harus menggunakan fdisk untuk menghapus dan membuat ulang partisi, yang (saya validasi) berfungsi tanpa kehilangan data. Saya mengikuti langkah-langkah di http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Singkatnya, singkatnya:

$ 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
sumber
1
Selamat Datang di Kesalahan Server! Harap rangkum langkah-langkah dalam jawaban itu sendiri, untuk menjaga agar tautan tidak membusuk.
200_sukses
Menggunakan proses ini tetapi menggunakan gdisk untuk membuat partisi. Ini memungkinkan saya untuk menyimpan data dan membuat partisi yang> 2TB
pcnate
2

parteddapat resizepartisi dan sistem file mereka.

200_sukses
sumber
Terima kasih, saya menggunakan grafis dan itu tidak mendukung ukuran partisi. Saya telah melihat opsi pada program cli, tetapi dapatkah Anda memberi tahu saya cara menggunakannya tanpa kehilangan data? Di resize NUMBER START END, apakah MULAI dan AKHIR angka sektor? Bagaimana saya tahu itu?
mimipc
Selalu disarankan untuk mencadangkan data Anda sebelum melakukan operasi berisiko seperti mengubah ukuran partisi. partedmendukung pilihan unit - misalnya, gunakan sakhiran untuk sektor, Batau GBuntuk byte, %untuk persentase ukuran perangkat, dan cyluntuk silinder.
200_sukses
2

Anda dapat menggunakan fdiskatau cfdiskuntuk memodifikasi (atau membuat ulang) partisi (pastikan Anda tidak akan mengubah batas mulai), lalu reboot dan resize2fs. Tetapi secara umum lebih baik menggunakan LVM-2 daripada MBR / GPT karena memungkinkan Anda untuk membawa perubahan-perubahan tersebut tanpa me-reboot kernel.

poige
sumber
1

Hanya untuk mengklarifikasi bagaimana saya melakukan ini untuk siapa pun yang masih membaca utas ini.
Jika ini adalah partisi boot yang ingin Anda ubah ukurannya, maka Anda harus mem-boot dari drive "rescue" bootcd atau bootusb yang hanya merupakan Live Linux. Ini memungkinkan Anda untuk menjalankan Linux di mesin selain drive yang ingin Anda ubah.

Saya pikir yang terbaik "penyelamatan" cd atau usb dalam kasus ini akan menjadi bootable USB atau CD
Kasus di mana Anda memerlukan gambar penyelamatan
1. Partisi yang akan diperluas adalah partisi terakhir, tetapi Anda boot dari itu dan tidak dapat melepasnya.
sda1 = boot (atau swap)
sda2 = swap (atau boot)
sda3 = /
Ruang yang tidak digunakan

  1. Jika partisi yang akan diperluas BUKAN partisi terakhir, Anda harus menggunakan gambar boot gparted untuk memindahkan atau mengubah ukuran partisi.
    sda1 = boot
    sda2 = / (partisi yang akan diperluas bukan yang terakhir)
    sda3 = tukar
    ruang yang tidak digunakan

Jika Anda ingin mengubah partisi yang dipasang bukan partisi "root" (/), seperti / home yang merupakan partisi yang berbeda, maka tidak perlu menggunakan gambar cadangan. Ini terutama benar jika partisi terakhir.
sda1 = boot
sda2 = /
sda3 = / home
space yang tidak digunakan
-atau-
sda1 = /
sda2 = / home
space yang tidak digunakan

Ini adalah situasi yang saya miliki ketika saya mengambil gambar dari drive yang lebih kecil atau SSD dan memindahkannya ke SSD yang lebih besar.

Dalam hal ini, Anda hanya perlu melepas / home saat memperpanjangnya. Tetapi untuk melepas / home, Anda harus memastikan Anda tidak masuk ke akun pengguna mana pun yang direktori home-nya ada di dalamnya. Karena direktori home pengguna "root" berada langsung di bawah root sistem / as in / root, jika Anda dapat login ke root, maka Anda dapat meng-unmount / home

Saya keluar dari sesi GUI (KDE / Gnome / etc) dan menggunakan [CTRL] + [ALT] + [F1] untuk membuka sesi shell.
Jika Anda baru saja keluar dari login pengguna, dibutuhkan Linux 20-30 detik untuk menyelesaikan penutupan semua file, sehingga Anda mungkin mendapatkan kesalahan saat mencoba umount / home.
1. umount / home (saya coba lagi perintah ini jika gagal hingga 30 detik, lalu lihat sesi lain untuk melihat apakah saya "cd / home / xxx" di suatu tempat.)
2. parted / dev / sda
a. mengubah ukuran x (x = partisi yang ingin Anda ubah ukurannya, gunakan "p" untuk mendapatkan daftar partisi)
b. Masukkan sektor terakhir dari resize = "-1" (minus 1 berarti 1 sektor dari akhir disk)
c. q (berhenti berpisah)
3 resize2fs / dev / sda "x" (x = partisi yang akan diubah ukurannya. Ini juga mengatur ulang sistem file)
4. df -m (saya periksa / home untuk memverifikasi ukurannya)
Saya tidak pernah kehilangan file atau merusak drive menggunakan metode ini.

Semoga berhasil

Chuck A
sumber
Namun, Anda tidak membuat cadangan.
Pemburu Rusa