Solusi 1:
Seperti pesannya, Anda hanya bisa tumbuh sistem file ext4 online. Jika Anda ingin mengecilkannya, Anda harus melepasnya terlebih dahulu.
Menurut pengelola sistem file ext4, Ted Ts'o:
Maaf, penyusutan online tidak didukung.
Solusi 2:
Jika kasusnya adalah server jarak jauh tanpa konsol, Anda dapat menyusutkan sistem file menggunakan initramfs saat me-reboot. Anda perlu menambahkan resize2fs ke initramfs dan menjalankannya sebelum memasang root.
Contoh Debian/Ubuntu:
/etc/initramfs-tools/hooks/resizefs (dapat dijalankan):
#!/bin/sh
set -e
PREREQS=""
prereqs() { echo "$PREREQS"; }
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/e2fsck
copy_exec /sbin/resize2fs
exit 0
/etc/initramfs-tools/scripts/local-premount/resizefs (dapat dijalankan)
#!/bin/sh
set -e
PREREQS=""
prereqs() { echo "$PREREQS"; }
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
# simple device example
/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 5G # see size info below
/sbin/e2fsck -yf /dev/sda1
# complex device example
# activate md-raid containing FS/PV
#/sbin/mdadm -A /dev/md0
# activate VG containing FS
#/sbin/lvm vgchange -ay vg0
# resize
#/sbin/e2fsck -yf /dev/vg0/root # or /dev/md0
#/sbin/resize2fs /dev/vg0/root 5G
#/sbin/e2fsck -yf /dev/vg0/root
Sekarang jalankan update-initramfs -u -k kernel-name
untuk memperbarui initramfs untuk kernel kernel-name
yang diatur sebagai default di bootloader (grub) Anda. Jika terjadi kegagalan boot - Anda dapat melakukan booting dengan kernel/initramf sehat lain yang tidak dimodifikasi. Atau Anda dapat menggunakan all
untuk memperbarui semua kernel, tetapi Anda tidak memiliki jalan kembali.
Periksa apakah Anda tidak memiliki alat apa pun di sistem Anda yang menumbuhkan sistem file secara otomatis (misalnya cloud-init - comment resizefs
di /etc/cloud/cloud.cfg
).
Menyalakan ulang. Periksa ukuran sistem file. Hapus skrip initramfs dan jalankan update-intiramfs -u -k kernel-name
lagi.
Sekarang Anda dapat mengecilkan perangkat yang mendasarinya dengan parted resizepart
/ mdadm --grow --size=
/ lvresize -L
. Ukuran perangkat harus lebih besar dari ukuran sistem file dari skrip. Cara termudah untuk tidak membuat kesalahan:jika direncanakan ukuran perangkat - 6G. atur ukuran fs dalam skrip ke 5G. setelah fs diubah ukurannya - ubah ukuran perangkat menjadi 6G, lalu kembangkan fs hingga maksimal secara online dengan resize2fs /dev/sda1
. Sekarang fs Anda sangat pas di perangkat Anda.
Untuk dracut (Fedora,CentOS) gunakan logika yang sama (/usr/lib/dracut/modules.d).
Ini sangat berguna untuk mengenkripsi atau memindahkan rootf, tanpa tersedia ruang kosong untuk partisi baru.
Solusi 3:
Ya, Anda dapat mengecilkan/memindahkan/memperbesar partisi root tanpa melakukan reboot (atau livecd, atau usbkey):lihat jawaban ini. Ini ditulis dengan sangat baik dan mudah diikuti, meskipun cukup panjang dan sedikit berisiko.
resize2fs
tidak dapat mengecilkan ext4
online partisi . Keterbatasan ini, ketika diterapkan pada partisi root dapat membuat Anda berpikir bahwa Anda tidak dapat menghindari me-reboot host untuk memungkinkan penyusutan root
partisi, yang mungkin merupakan sesuatu yang ingin Anda hindari. Proses yang ditautkan akan memungkinkan Anda untuk melakukan umount partisi root tanpa reboot. Jadi dalam hal ini tidak sepenuhnya berbicara online mengubah ukuran sehubungan dengan status pemasangan partisi, namun tetap merupakan pengubahan ukuran online sehubungan dengan status online jaringan atau jangkauan host.
Tentu saja, jika Anda hanya ingin mengembangkan partisi ext4 Anda, Anda harus tetap menggunakan resize2fs
yang berfungsi konvensional solusi.
Solusi umum yang saya tautkan akan berfungsi pada semua jenis solusi khusus atau VPS misalnya.
TLDR; solusi ini berarti pivot_root
ke tmpfs
sehingga Anda dapat umount
dengan aman partisi root Anda hidup dan mengutak-atiknya. Setelah selesai, Anda akan pivot_root
kembali ke partisi root baru Anda.
Hal ini memungkinkan hampir semua manipulasi pada sistem file root (pindahkan, ubah sistem file, ubah perangkat fisiknya...).
Saya pribadi telah menggunakan ini, dan ini juga bekerja dengan sangat baik pada sistem debian, tetapi panduan ini awalnya ditulis pada tahun 2007 untuk redhat, jawaban yang saya tautkan telah diperbarui untuk CentOS7. Kemungkinan besar ini akan bekerja pada OpenSUSE Anda, meskipun mungkin dengan beberapa adaptasi.