Pertanyaan Bagaimana saya bisa mengubah ukuran partisi ext root saat runtime?


Bagaimana saya bisa meningkatkan ukuran partisi root dari sistem saat runtime?

Saya memiliki partisi yang tidak dialokasikan setelah partisi root (yang juga ext4), bagaimana saya dapat menambahkan ruang yang tidak teralokasikan ke ruang yang dialokasikan ke partisi root tanpa harus mematikan server?


194
2018-01-30 17:23


asal


Aku benci terdengar seperti tongkat di lumpur, tapi ini membawa sedikit risiko? Mengapa ini perlu terjadi? Apakah uptime adalah kendala utama? - DevNull
Anda tidak dapat mengubah ukuran partisi ke kiri, karena itu akan benar-benar menjadi sebuah langkah. - Zaz
Meningkatkan ukuran paritisi ext4 online itu mudah. Bagian yang sulit akan menyusut (judul Anda adalah tentang "mengubah ukuran"). Bagi orang yang tertarik dengan manipulasi APAPUN pada partisi root (bergerak, menyusut, mengubah filesystem, perangkat) pada saat runtime harus berkonsultasi dengan jawaban saya: askubuntu.com/a/728141/21888 - vaab


Jawaban:


GUI (Ubuntu 14.04 dan yang lebih baru): GParted v0.17 dan kemudian menyediakan GUI yang bagus untuk ini. (Versi yang lebih lama akan menolak untuk mengubah ukuran partisi yang di-mount).

Command line (versi Ubuntu apa saja): Ada tiga langkah untuk ini.

Langkah 1. Partisi harus diubah ukurannya terlebih dahulu. Jika Anda menggunakan LVM, itu mudah, dan Anda mungkin tahu cara melakukannya. Jika Anda menggunakan partisi klasik, itu sedikit lebih rumit, dan mungkin membutuhkan reboot (meskipun Anda tidak perlu boot sistem lain atau live CD).

Ini adalah bagaimana saya melakukannya: Gunakan fdisk untuk terlebih dahulu menghapus partisi (idenya adalah bahwa data pada disk akan dipertahankan), kemudian secara hati-hati menciptakannya dengan ukuran yang lebih besar pada posisi yang sama.

Contoh:

$ sudo fdisk /dev/sda

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     9437183     4717568   83  Linux

Command (m for help): d
Selected partition 1

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    10485759     5241856   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Sekali lagi, sangat penting bahwa partisi baru dimulai pada blok yang sama dengan yang lama. Id juga harus cocok (83 untuk sistem Linux). Bersiaplah untuk kehilangan semua data Anda dengan sedikit kesalahan.

Untuk berada di sisi yang aman, Anda juga dapat mengembalikan bendera boot (yang menurut Wikipedia masih diperlukan pada beberapa komputer) dengan menekan a.

Lihat bagian komentar untuk apa yang harus dilakukan jika partisi swap Anda menghalangi.

Sekarang seharusnya sudah jelas mengapa orang merekomendasikan menggunakan live CD. ;-)

Langkah 2. Sebagai fdisk membantu mengingatkan Anda, Anda harus memuat kembali tabel partisi sebelum melanjutkan. Cara paling aman adalah dengan hanya reboot; tetapi Anda juga bisa menggunakannya partprobe atau kpartx  (informasi lebih lanjut).

Langkah 3. Setelah partisi diubah ukurannya dan tabel partisi dimuat ulang, itu adalah hal yang mudah untuk dijalankan resize2fs pada sistem file, dan Anda dapat melakukan ini bahkan ketika dipasang sebagai partisi root.

Contoh:

$ sudo resize2fs /dev/sda1

170
2018-04-06 14:23



Ini bekerja dengan sempurna untuk saya. Namun saya juga memastikan bahwa bendera boot yang disimpan adalah kondisi asli. - Augustus Kling
@ jbo5112: As fdisk berkata, partprobe atau kpartx dapat berfungsi sebagai ganti reboot; Lihat juga pertanyaan ini. Bahkan jika Anda reboot, solusinya masih lebih baik menggunakan live CD ketika datang ke downtime, di mana reboot sederhana bisa kurang dari 10 detik untuk mesin virtual. Ini juga lebih cepat dalam waktu operator, itulah sebabnya saya biasanya menggunakan pendekatan ini sendiri. :) - Søren Løvborg
@Raymond: Jika tekanan memori memungkinkan (lihat free -h), nonaktifkan swap (swapoff /dev/sda2), ubah tabel partisi (termasuk menghapus dan membuat ulang partisi swap) dan 1) reboot atau 2) muat ulang tabel partisi dan swapon lagi. (Jika memori terlalu ketat untuk menonaktifkan swap sementara, Anda masih dapat membuat dan mengaktifkan baru partisi swap (/dev/sda3), lalu tukar sda2; tetapi Anda harus memperbarui /etc/fstab dengan nama perangkat swap baru.) - Søren Løvborg
Jika Anda menggunakan vmware dan telah memperluas ukuran disk, Anda harus menjalankan sudo lshw -C disk untuk menelusuri ulang filesystem sehingga vm mengenali drive yang lebih besar. Kemudian ikuti instruksi di atas. - Guy
Bagaimana dengan menyusut? - Aaron Franke


Dimungkinkan untuk melakukan resize secara on-line dari filesystem ext4, bahkan jika itu adalah partisi root Anda. Menggunakan resize2fs perintah.

sudo resize2fs /dev/sda1

EDIT: Penyempitan online tidak diizinkan:

root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported

109
2018-03-02 10:50



Dari man resize2fs: The resize2fs program does not manipulate the size of partitions. If you wish to enlarge a filesystem, you must make sure you can expand the size of the underlying partition first. This can be done using fdisk(8) by deleting the partition and recreating it with a larger size or using lvextend(8),if you're using the logical volume manager lvm(8). Pertanyaan ini adalah tentang mengubah ukuran partisi, bukan berkas sistem. Perbedaannya halus tetapi sangat penting. - Eliah Kagan
Anda dapat menggunakan fdisk untuk menghapus partisi root dan menciptakannya kembali di blok awal yang sama. fdisk akan menulis perubahan, tetapi tidak akan berpengaruh sampai setelah reboot. setelah reboot, Anda dapat menggunakan program resize2fs untuk mengirim disk untuk mengisi partion. - James Becwar
Saya baru saja mengubah ukuran partisi root ext4 secara online. Karena itu saya bisa memastikan itu mungkin. Namun alih-alih meneruskan / dev / sda * sebagai parameter untuk mengubah ukuran 2f, Anda harus meneruskan nama volume logis. - CDR
Saya menemukan paragraf pertama dari resize2fs manpage paling menarik untuk pertanyaan awal: The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system located on device. If the filesystem is mounted, it can be used to expand the size of the mounted filesystem, assuming the kernel supports on-line resizing. (As of this writing, the Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 and ext4.). - mo'
Tolong jangan berselingkuh fdisk kapan growpart akan melakukan ini dengan sangat mudah untuk Anda. - STRML


Solusi yang lebih mudah - gunakan growpart <device> <partition>:

growpart /dev/xvda 1  # Grows the partition; note the space
resize2fs /dev/xvda1  # Grows the filesystem

Seperti biasa, buat cadangan tabel partisi Anda (sfdisk -d /dev/xvda > partition_bak.dmp) untuk berjaga-jaga.


22
2017-07-18 13:26



Bagaimana dengan menyusut? - Aaron Franke
Berharap menggunakan metode ini, tetapi mendapatkannya sfdisk: /dev/nvme0n1p5: does not contain a recognized partition table (menggunakan dual boot dengan windows) - monkut
Menyusut tidak mungkin dilakukan on-line. Saya sarankan untuk menggunakan gparted untuk itu. - STRML
Ini sempurna untuk mengubah ukuran partisi root dan filesystem dari AWS VM saya. Tepuk tangan. - MetaFight
growpart adalah bagian dari cloud-utils. Jika Anda belum menginstal, Anda dapat menginstal dengan apt-get install cloud-utils - klor


Anda juga bisa memanfaatkannya GParted - asalkan partisi yang Anda ubah ukurannya bukan yang Anda boot - dari yang saya sarankan live CD pilihannya agak mudah bagi para pemula.

GParted pada dasarnya melakukan semua langkah - hanya berdasarkan pada GUI yang digawangi.


8
2017-09-30 11:34



Saya mem-boot sistem saya dengan Ubuntu 12.04 Live CD dan saya mengubah ukuran partisi ext4 dengan GParted. Bekerja dengan baik untuk saya. Bagaimanapun, sebelum operasi ini saya mendukung semua data penting saya. - StandDuPp
Saya pikir, gparted membutuhkan partisi unmount. tetapi saya bisa salah. - Nick
Pertanyaannya jelas tentang partisi yang mereka boot, dan booting CD langsung memerlukan restart komputer. -1 - wjandrea


Iya nih, Anda dapat mengecilkan / memindahkan / menumbuhkan partisi root online tanpa reboot (atau livecd, atau usbkey): konsultasikan jawaban ini. Ini ditulis dengan sangat baik dan mudah diikuti, meskipun cukup panjang dan sedikit berisiko. Jadi jika Anda hanya ingin menumbuhkan partisi ext4 Anda, Anda dapat tetap menggunakan cara kerja konvensional resize2fssolusi.

Solusi umum yang saya lepaskan akan bekerja pada semua jenis solusi khusus atau VPS, misalnya.

TLDR; solusi ini berarti pivot_root untuk tmpfs jadi kamu bisa umount amankan partisi root Anda hidup dan main-main dengannya. Setelah selesai, Anda akan pivot_root kembali ke partisi root Anda yang baru.

Ini memungkinkan hampir semua manipulasi pada sistem file root (memindahkannya, mengubah filesystem, mengubah perangkat fisiknya ...).

Tidak diperlukan reboot dalam proses, dan ini memungkinkan untuk melewati batasan dari resize2fs  tidak bisa menyusut  ext4 partisi.

Saya pribadi menggunakan ini, dan itu bekerja sangat baik pada sistem debian juga, jadi itu harus bekerja pada Ubuntu. Saya sangat terkejut tidak melihat solusi mendalam ini sedikit lebih terkait dengan banyak pertanyaan di situs web stackexchange yang berhubungan dengan masalah yang sama.

catatan: Tentu saja jika Anda ingin menumbuhkan partisi Anda, yang sederhana resize2fs akan cukup seperti yang dinyatakan di banyak tempat dan di jawaban lain di sini.


8
2018-02-01 02:08



Saya pikir untuk kebanyakan orang, setelah Anda menghentikan semua program dan layanan yang mengakses partisi root, Anda mungkin juga telah mereboot mesin. Untuk menyusut / bergerak, itu mungkin masih lebih cepat menggunakan live CD, tetapi untuk berkembang (sejauh ini tugas yang paling umum, dan apa yang ditanyakan OP), ada cara yang tidak melibatkan penghentian sementara sebagian besar sistem . - Søren Løvborg
@ SørenLøvborg: Anda dapat memulai kembali layanan inti yang membutuhkan produksi berkelanjutan saat melakukan prosedur lengkap. Ada banyak konfigurasi di mana Anda tidak dapat menggunakan LiveCD (contoh VPS, server khusus ...) atau keadaan di mana Anda ingin menghindari boot ulang karena alasan tertentu. Judul pertanyaan asli menyebutkan "mengubah ukuran", yang menarik orang yang mencari partisi menyusut secara online. ** Tidak ada solusi lain yang memungkinkan penyusutan ext4 secara online. ** Solusi ini berisiko, rumit, tetapi yang paling kuat dari semua dan mengisi kekurangan dari yang lain. - vaab


Baru saja selesai mengubah ukuran partisi root ext4 pada sistem hidup sementara root di-mount.

[root@habib i686]# resize2fs /dev/vg_habib/lv_root
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks.
The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long.

[root@habib i686]# 

5
2017-12-04 22:40





Saya berhasil melakukannya tanpa ini umount, pivot_root, atau penghapusan sementara dari partisi utama, menggunakan parted 3.2 pada kernel Ubuntu 16.04, 4.4.0. Untuk berhati-hati, saya melakukan segalanya dari konsol virtual dengan jaringan yang dinonaktifkan, dan mengambil snapshot terlebih dahulu untuk berjaga-jaga, tetapi snapshot itu tidak diperlukan, jadi saya bisa saja melakukannya dengan baik melalui SSH dan tanpa mengubah runlevel.

Tentukan ukuran partisi: parted /dev/sda1 print | egrep "Disk.*GB"

Opsional beralih ke mode multi-pengguna tanpa jaringan (harus dilakukan dari konsol, bukan SSH):

runlevel     # remember the original runlevel
init 2

Opsional, ambil snapshot VM untuk berhati-hati.

Ubah ukuran partisi:

parted
p
resizepart NUMBER SIZE
# answer "Yes" when asked about resizing a live partition.
q

Ubah ukuran filesystem: resize2fs /dev/sda1

Jika ada yang salah, Anda dapat memulihkan snapshot Anda di sini. Jika semua berjalan baik, kembali ke runlevel normal (diperoleh di atas) - biasanya 5: init 5. Mungkin lebih baik melakukan reboot penuh pada titik ini untuk memastikan semuanya kembali dengan benar (saya punya masalah tanggal / ntp sesudahnya).


1
2017-07-14 00:09





Seperti yang dinyatakan sebelumnya:

  • memperluas hidup dari sistem root adalah mungkin. (tidak ada kesulitan, karena bagian boot tidak akan dipindahkan)

  • mengecilkan partisi root langsung perlu dilakukan dari perangkat boot eksternal (boot dari sistem live cd / usb-stick), seolah-olah ada kesalahan apa pun, ketidaksesuaian ..apa pun sistem hang Anda, perlu di-boot ulang dan pada akhirnya tidak akan bisa boot dengan benar.

Setiap jenis "tapi saya melakukannya dan itu berhasil" adalah keberuntungan murni.


0
2018-01-10 21:58





Ikuti langkah ini.

  1. buka terminal sebagai superuser su
  2. menjalankan parted
  3. mengetik p untuk melihat partisi yang tersedia
  4. identifikasikan nomor partisi root Anda (mis: 'sda 3' berarti nomor 3) dan hapus partisi yang berdekatan dengan menggunakan rm PARTITION NUMBERuntuk menciptakan ruang kosong.
  5. sekarang tingkatkan ukuran root dengan mengetik resizepart ROOT NUMBER dan reboot sistem jika diperlukan
  6. keluar parted dengan mengetik exit dan dalam tipe terminal partprobe dan tekan enter (ini dapat dilakukan bahkan setelah reboot)
  7. akhirnya lari resize2fs /dev/sda PARTITION NUMBER dan nikmati partisi root yang luas.

0
2017-09-13 20:22