GNU/Linux >> Belajar Linux >  >> Linux

Apakah mungkin mengecilkan volume EXT4 secara online dengan LVM?

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.


Linux
  1. Membuat volume logis di Linux dengan LVM

  2. Lum – Bagaimana Memperpanjang Partisi Dengan Lvm Dan Volume Fisik Yang Terkandung Dan Volume Logika?

  3. Bagaimana Cara Mengecilkan Volume Fisik?

  1. Bagaimana Cara Membuat Partisi Lvm / Volume fisik> 2tb?

  2. Perluas dan kecilkan volume dengan Manajemen Disk

  3. RHEL / CentOS :Cara mengecilkan volume LVM

  1. CentOS / RHEL :Cara memigrasikan penyimpanan (LVM) dengan Perintah pvmove

  2. CentOS / RHEL :Cara menambahkan Volume Fisik (PV) ke grup Volume (VG) di LVM

  3. Cara Memindahkan Swap Dari Partisi Disk ke Volume LVM di Linux