it-swarm-ko.com

LVM을 사용하여 EXT4 볼륨을 온라인으로 축소 할 수 있습니까?

오늘 나는 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 볼륨입니다.

실제로 지원되지 않습니까, 아니면 뭔가 빠졌습니까?

47
Alicia

메시지가 말했듯이 파일 시스템을 온라인으로 만 grow 할 수 있습니다. 축소하려면 먼저 마운트를 해제해야합니다.

ext4 파일 시스템 관리자에 따라 , Ted Ts'o :

온라인 축소는 지원되지 않습니다.

71
Michael Hampton

예, 재부팅하지 않고 루트 파티션을 축소/이동/확장 할 수 있습니다 (livecd 또는 usbkey도 아님) : 이 답변을 참조하십시오 =. 꽤 길고 약간 위험하지만 매우 잘 작성되어 따르기 쉽습니다.

resize2fs 온라인 ext4 파티션 을 축소 할 수 없습니다. 이 제한은 루트 파티션에 적용될 때 root 파티션 축소를 허용하기 위해 호스트를 재부팅하는 것을 피할 수 없다고 생각할 수 있습니다. 연결된 프로세스를 사용하면 재부팅하지 않고 루트 파티션을 마운트 해제 할 수 있습니다. 따라서이 관점에서 파티션의 마운트 된 상태와 관련하여 online 크기 조정을 엄격하게 말하지는 않지만 네트워크와 관련하여 온라인 크기 조정으로 남아 있습니다. 온라인 상태 또는 호스트의 접근성.

물론 ext4 파티션 만 늘리려면 기존의 작동하는 resize2fs 솔루션을 고수해야합니다.

내가 연결 한 일반 솔루션은 예를 들어 모든 유형의 전용 또는 VPS 솔루션에서 작동합니다.

TLDR; 이 솔루션은 pivot_root ~ tmpfs을 암시하므로 루트 파티션을 안전하게 umount 할 수 있습니다. 완료되면 새 루트 파티션으로 pivot_root 돌아 가게됩니다.

이것은 루트 파일 시스템에서 거의 모든 조작을 허용합니다 (이동, 파일 시스템 변경, 물리적 장치 변경 ...).

나는 이것을 개인적으로 사용했으며 데비안 시스템에서도 잘 작동하지만이 가이드는 처음에 redhat 용으로 2007 년에 작성되었으며 CentOS7 용 링크가 업데이트되었습니다. 아마도 약간의 적응이 있지만 OpenSUSE에서 작동 할 가능성이 큽니다.

18
vaab

콘솔이없는 원격 서버 인 경우 재부팅하는 동안 initramfs를 사용하여 파일 시스템을 축소 할 수 있습니다. 루트를 마운트하기 전에 reit2fs를 initramfs에 추가하고 실행해야합니다.

데비안/우분투 예제 :

/ 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

/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 5G
/sbin/e2fsck -yf /dev/sda1

이제 update-initramfs를 실행하고, 재부팅하고, 크기를 확인하고,이 스크립트와 update-intiramfs를 다시 제거하십시오.

Dracut (Fedora, CentOS)의 경우 동일한 논리 (/usr/lib/dracut/modules.d)를 사용하십시오.

이는 새로운 파티션에 사용 가능한 여유 공간이없는 rootfs를 암호화하거나 이동하는 데 매우 유용합니다.

14
urusha