Bagaimana saya bisa meningkatkan ukuran partisi root dari suatu sistem saat runtime?
Saya memiliki partisi yang tidak dialokasikan setelah partisi root (yang juga ext4), bagaimana saya bisa menambahkan ruang yang tidak dialokasikan ke ruang yang dialokasikan ke partisi root tanpa harus mematikan server?
partitioning
ext4
BonboBingo
sumber
sumber
Jawaban:
GUI (Ubuntu 14.04 dan yang lebih baru) : GParted v0.17 dan yang lebih baru menyediakan GUI yang bagus untuk ini. (Versi yang lebih lama akan menolak untuk mengubah ukuran partisi yang dipasang).
Baris perintah (semua versi Ubuntu): Ada tiga langkah untuk ini.
Langkah 1. Partisi harus diubah ukurannya terlebih dahulu. Jika Anda menggunakan LVM, mudah, dan Anda mungkin tahu bagaimana melanjutkan. Jika Anda menggunakan partisi klasik, ini sedikit lebih rumit, dan mungkin memerlukan reboot (walaupun Anda tidak perlu mem-boot sistem lain atau live CD).
Beginilah cara saya melakukannya: Gunakan
fdisk
untuk menghapus dulu partisi (idenya adalah data pada disk akan disimpan), kemudian dengan hati-hati membuatnya kembali dengan ukuran yang lebih besar di posisi yang sama.Contoh:
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 kesalahan ketik sedikit pun.
Agar aman, Anda juga dapat mengembalikan bendera boot (yang menurut Wikipedia masih diperlukan di beberapa komputer) dengan menekan
a
.Lihat bagian komentar untuk apa yang harus dilakukan jika partisi swap Anda menghalangi.
Sekarang ini sudah jelas mengapa orang merekomendasikan untuk menggunakan live CD. ;-)
Langkah 2. Saat ini
fdisk
mengingatkan Anda, Anda harus memuat ulang tabel partisi sebelum melanjutkan. Cara paling aman adalah dengan hanya reboot; tetapi Anda juga dapat menggunakanpartprobe
ataukpartx
(informasi lebih lanjut) .Langkah 3. Setelah partisi diubah ukurannya dan tabel partisi dimuat ulang, ini adalah masalah sederhana untuk menjalankan
resize2fs
sistem file, dan Anda dapat melakukan ini bahkan ketika sudah dipasang sebagai partisi root.Contoh:
sumber
fdisk
dikatakan,partprobe
ataukpartx
mungkin berfungsi sebagai ganti reboot; lihat juga pertanyaan ini . Bahkan jika Anda reboot, solusinya masih lebih baik daripada 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. :)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 danswapon
lagi. (Jika memori terlalu ketat untuk menonaktifkan swap sementara, Anda masih dapat membuat dan mengaktifkan partisi swap baru (/dev/sda3
), lalu swapoffsda2
; tetapi kemudian Anda harus memperbarui/etc/fstab
dengan nama perangkat swap baru.)Dimungkinkan untuk melakukan resize on-line dari sistem file ext4, bahkan jika itu partisi root Anda. Gunakan
resize2fs
perintah.EDIT: Penyusutan online tidak diperbolehkan:
sumber
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 sistem file . Perbedaannya halus tetapi sangat penting.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.).
fdisk
kapangrowpart
akan melakukan ini dengan sangat mudah untuk Anda.Solusi yang lebih mudah - gunakan
growpart <device> <partition>
:Seperti biasa, buat cadangan tabel partisi Anda (
sfdisk -d /dev/xvda > partition_bak.dmp
) untuk berjaga-jaga.sumber
sfdisk: /dev/nvme0n1p5: does not contain a recognized partition table
(menggunakan dual boot dengan windows)gparted
untuk itu.apt-get install cloud-utils
/dev/nvme0n1
. p5 adalah partisi 5 pada disk ini. Bandingkan dengan irisan disk BSD tradisional, mereka menggunakan skema penomoran yang serupa.Ya, Anda dapat mengecilkan / memindahkan / menumbuhkan partisi root online tanpa harus menyalakan ulang (atau livecd, atau usbkey): lihat 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
resize2fs
solusi kerja konvensional .Solusi umum yang saya temukan akan bekerja pada semua jenis solusi khusus atau VPS misalnya.
TLDR; solusi ini menyiratkan untuk
pivot_root
ketmpfs
sehingga Anda dapatumount
dengan aman partisi root Anda hidup dan biola dengan itu. Setelah selesai, Anda akanpivot_root
kembali ke partisi root baru Anda.Ini memungkinkan hampir semua manipulasi pada sistem file root (pindahkan, ubah filesystem, ubah perangkat fisiknya ...).
Reboot tidak diperlukan dalam proses, dan ini memungkinkan untuk memotong pembatasan dari
resize2fs
tidak mampu mengecilkanext4
partisi.Saya pribadi menggunakan ini, dan ini bekerja dengan 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, sederhana
resize2fs
akan cukup seperti yang dinyatakan di berbagai tempat dan di jawaban lain di sini.sumber
Anda juga bisa menggunakan GParted - selama partisi yang Anda ubah ukurannya bukan yang Anda boot dari - kalau tidak saya sarankan opsi live CD agak lebih mudah bagi pemula.
GParted pada dasarnya melakukan semua langkah - hanya berdasarkan GUI yang digawangi
sumber
Baru saja selesai mengubah ukuran partisi root ext4 pada sistem live ketika root sedang di-mount.
sumber
Saya ingin membuat ekstensi pada jawaban @ Søren Løvborg: memperluas partisi dengan hadiah partisi swap.
Pertama-tama tata letak disk setelah memperpanjangnya:
Jadi sda1 perlu diperluas dengan ruang kosong di akhir disk, tetapi partisi swap ada di antara mereka. Ini adalah bagaimana Anda dapat melakukannya:
Pertama, kita perlu menonaktifkan swap. Periksa berapa banyak digunakan dan jika Anda dapat mematikannya.
swap tidak digunakan di sini sehingga kami dapat mematikannya
Sekarang kita akan mengubah tabel partisi:
(catatan: jika Anda memiliki partisi pertama dimulai di sektor 63 bukan 2048, Anda perlu menambahkan opsi
-c=dos
)Catatan: ukuran sda1 adalah jumlah total sektor dikurangi ukuran sektor dari partisi swap Anda: 14335999-2093058 = 12242941
Seperti yang disebutkan fdisk: kernel masih menggunakan tabel partisi lama sehingga kita perlu memuatnya kembali.
Sekarang kita perlu menjalankan resize2fs di sda1 (jangan lupakan ini!)
Sekarang, semuanya belum berakhir. Seperti yang mungkin Anda perhatikan, sda2 dipartisi sebagai tipe Linux (Ext4). Untuk beberapa alasan, tidak ada cara di fdisk untuk memilih jenisnya. Jadi kita harus menggantinya menggunakan
cfdisk
Pilih sda2 dan ubah jenisnya
82 Linux swap / Solaris
dan pastikan Anda menuliskannya (ketik ya untuk mengonfirmasi)Sekarang kita dapat mengaktifkan kembali swap
Dan akhirnya nyalakan:
Satu-satunya hal yang perlu kita lakukan adalah memperbarui fstab untuk memasang partisi swap secara otomatis saat boot
Dan ubah UUID dari partisi swap ke output di atas:
Sekarang semuanya baik-baik saja dan Anda dapat reboot tanpa masalah.
sumber
mkswap
&swapon
harus dijalankan di sda2. Saya memang membuat kesalahan di awal posting saya:swapoff
perlu dieksekusi pada sda5. Komentar selalu diterima, sulit untuk dicatat.cryptdisks_stop
, kemudian perbarui / etc / crypttab alih-alih/etc/fstab
dan restart cryptdisks dengancryptdisks_start
.Saya baru saja berhasil melakukannya tanpa
umount
,,pivot_root
atau penghapusan sementara partisi utama, menggunakan parted 3.2 pada Ubuntu 16.04, 4.4.0 kernel. Untuk berhati-hati saya melakukan segalanya dari konsol virtual dengan jaringan dinonaktifkan, dan mengambil snapshot sebelumnya untuk berjaga-jaga, tapi snapshot itu tidak diperlukan, jadi saya bisa saja melakukan ini melalui SSH dan tanpa mengubah runlevel.Tentukan ukuran partisi:
parted /dev/sda1 print | egrep "Disk.*GB"
Secara opsional beralih ke mode multi-pengguna tanpa jaringan (harus dilakukan dari konsol, bukan SSH):
Opsional mengambil snapshot VM untuk berhati-hati.
Ubah ukuran partisi:
Ubah ukuran sistem file:
resize2fs /dev/sda1
Jika terjadi kesalahan, Anda dapat memulihkan foto Anda di sini. Jika semua berjalan baik, kembali ke runlevel normal (yang diperoleh di atas) - biasanya 5:
init 5
. Mungkin lebih baik untuk melakukan reboot penuh pada saat ini untuk memastikan semuanya kembali dengan benar (saya mengalami masalah tanggal / ntp sesudahnya).sumber
Ikuti langkah ini.
su
parted
p
untuk melihat partisi yang tersediarm PARTITION NUMBER
untuk membuat ruang kosong.resizepart ROOT NUMBER
dan reboot sistem jika perluparted
dengan mengetikexit
dan dalam tipe terminalpartprobe
dan tekan enter (ini dapat dilakukan bahkan setelah reboot)resize2fs /dev/sda PARTITION NUMBER
dan nikmati partisi root yang luas.sumber
Seperti yang dinyatakan sebelumnya:
memperluas langsung dari sistem root dimungkinkan. (tidak ada kesulitan, karena bagian boot tidak dapat dipindahkan)
menyusutkan partisi root secara langsung perlu dilakukan dari perangkat boot eksternal (boot dari live system cd / usb-stick), seolah-olah ada kesalahan, ketidakcocokan .. apa pun .. sistem Anda hang, perlu reboot dan akhirnya tidak akan dapat boot dengan benar.
Semacam "tapi saya berhasil dan berhasil" adalah keberuntungan murni.
sumber