Ali*_*cia 55 linux ext4 hard-drive lvm
今天我在我的机器上用 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
Run Code Online (Sandbox Code Playgroud)
/dev/mapper/system-srv 是 EXT4 卷。
它真的不受支持还是我遗漏了什么?
Mic*_*ton 84
正如消息所说,您只能在线增长ext4 文件系统。如果你想缩小它,你需要先卸载它。
根据 ext4 文件系统维护者Ted Ts'o 的说法:
抱歉,不支持在线收缩。
uru*_*sha 29
如果是没有控制台的远程服务器,您可以在重新启动时使用 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
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
现在运行update-initramfs -u -k kernel-name以更新kernel-name在引导加载程序 (grub) 中设置为默认值的内核的 initramfs 。如果启动失败 - 您可以使用另一个未修改的健康内核/initramfs 启动。或者你可以用它all来更新所有内核,但是你没有办法回来。
检查你没有任何工具在您的系统可以自动增长文件系统(例如云初始化-注释resizefs中/etc/cloud/cloud.cfg)。
重启。检查文件系统大小。删除 initramfs 脚本并update-intiramfs -u -k kernel-name再次运行。
现在,您可以缩小与底层设备parted resizepart/ mdadm --grow --size=/ lvresize -L。设备的大小应该大于脚本中文件系统的大小。不出错的最简单方法:如果计划的设备大小 - 6G。将脚本中的 fs 大小设置为 5G。调整 fs 大小后 - 将设备大小调整为 6G,然后使用resize2fs /dev/sda1. 现在您的 fs 非常适合您的设备。
对于 dracut (Fedora,CentOS) 使用相同的逻辑 (/usr/lib/dracut/modules.d)。
这对于加密或移动 rootfs 非常有用,因为新分区没有可用空间。
vaa*_*aab 22
是的,您可以在不重新启动的情况下缩小/移动/增长根分区(也不是 livecd,也不是 usbkey):请参阅此答案。它写得很好,很容易理解,虽然很长而且有点冒险。
resize2fs 不能缩小在线ext4分区。这个限制,当应用于根分区时,可能会让你认为你无法避免重新启动主机以允许缩小root分区,这可能是你想要避免的。链接过程将允许您在不重新启动的情况下卸载根分区。所以从这个角度它不是严格意义上讲在线调整的问候安装分区的状态,但它仍然是关于主机的网络在线状态或可达性的联机调整大小。
当然,如果您只想扩大您的 ext4 分区,您应该坚持使用常规的工作resize2fs解决方案。
例如,我链接的通用解决方案适用于任何类型的专用或 VPS 解决方案。
TLDR;这种解决方案意味着要pivot_root对tmpfs这样你就可以umount放心地根分区的生活和摆弄它。完成后,您将pivot_root回到新的根分区。
这几乎允许对根文件系统进行任何操作(移动它、更改文件系统、更改它的物理设备......)。
我个人使用过它,它在 debian 系统上也运行良好,但该指南最初是在 2007 年为 redhat 编写的,我链接的答案已针对 CentOS7 更新。它极有可能在您的 OpenSUSE 上运行,尽管可能需要进行一些调整。