Linux

是否可以使用 LVM 線上縮小 EXT4 卷?

  • March 8, 2021

今天我在我的機器上用 OpenSUSE 12.3(核心 3.7)嘗試了這個:

# resize2fs /dev/mapper/system-srv 2G
resize2fs 1.42.6 (21-Sep-2012)
Filesystem at /dev/mapper/system-srv is mounted on /srv; on-line resizing required
resize2fs: On-line shrinking not supported

/dev/mapper/system-srv是一個 EXT4 卷。

它真的不受支持還是我錯過了什麼?

正如消息所說,您只能線上增長ext4 文件系統。如果你想縮小它,你需要先解除安裝它。

根據 ext4 文件系統維護者Ted Ts’o 的說法:

抱歉,不支持線上縮容。

如果情況是沒有控制台的遠端伺服器,您可以在重新啟動時使用 initramfs 縮小文件系統。您需要將 resize2fs 添加到 initramfs 並在掛載 root 之前執行它。

Debian/Ubuntu 範例:

/etc/initramfs-tools/hooks/resizefs(執行檔):

#!/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(執行檔)

#!/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

現在執行update-initramfs -u -k kernel-name以更新核心的 initramfs,該核心kernel-name在引導載入程序 (grub) 中設置為預設值。如果啟動失敗 - 您可以使用另一個未修改的健康核心/initramfs 啟動。或者您可以使用all更新所有核心,但是您無法返回。

檢查您的系統中是否沒有任何自動增長文件系統的工具(例如 cloud-init - comment resizefsin /etc/cloud/cloud.cfg)。

重啟。檢查文件系統大小。刪除 initramfs 腳本並update-intiramfs -u -k kernel-name再次執行。

parted resizepart現在您可以使用/ mdadm --grow --size=/縮小底層設備lvresize -L。設備的大小應該大於腳本中文件系統的大小。不犯錯誤的最簡單方法:如果計劃的設備大小 - 6G。將腳本中的 fs 大小設置為 5G。fs 調整大小後 - 將設備大小調整為 6G,然後將 fs 增長到最大線上resize2fs /dev/sda1。現在您的 fs 非常適合您的設備。

對於 dracut (Fedora,CentOS) 使用相同的邏輯 (/usr/lib/dracut/modules.d)。

這對於加密或移動 rootfs 非常有用,因為新分區沒有可用空間。

引用自:https://serverfault.com/questions/528075