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


47

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

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

답변:


67

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

ext4 파일 시스템 관리자 인 Ted Ts'o 에 따르면 :

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


11
그것은 유감입니다 ...
Alicia

5
공감 비란 무엇입니까?
Michael Hampton

15
@MichaelHampton-메신저를 쏘는 모론? : D
tink

1
10 년 전이었습니다. 아직 구현되지 않았습니까?
duane

@duane 아니요. 없습니다. 또한 그럴 가능성도 없다.
Michael Hampton

16

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

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

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

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

TLDR; 이 솔루션을 의미 pivot_root하기 tmpfs때문에 당신이 할 수 umount안전하게 루트 파티션이 함께 살고 바이올린. 완료되면 pivot_root새 루트 파티션으로 돌아갑니다.

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

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


3
이것은 '온라인 성장'과 비교할 때 '온라인'이 아닙니다. 모든 서비스가 작동 중지되고 루트 파일 시스템에 액세스 할 수 없게됩니다. 이 의견에서 livecd 또는 initramfs / rdshell 접근법과 이것을 비교할 가치가 있습니다. 나는 사람들이 이것으로 혼란스러워하는 것을 싫어합니다.
Brian Chrisman 2016 년

1
@BrianChrisman 이것은 분명히 설명을할만한 가치가 있으며 내 게시물에서 편집 내용을 다루었기를 바랍니다. 의견을 보내 주셔서 감사합니다.
vaab

참조 된 솔루션에 대해 내가 좋아하는 것은 '거의 온라인'이라는 것입니다. 작은 스크립트와 도구를 dracut 명령으로 인코딩 하여이 특정 작업을 수행하고 kexec에서 결과 initramfs를 시작했습니다. 이것이 어떻게 든 프로세스를 통해 ssh 세션을 열어 둘 수 있다면 가장 좋습니다. sshd 및 필요한 파일을 사용하여 가짜 루트를 작성하고 다른 포트에서 다른 sshd를 시작한 다음 다른 포트로 ssh하고 시스템을 계속 lobotomize하기 전에 연결을 확인할 수 있다고 가정합니다.
Brian Chrisman

13

콘솔이없는 원격 서버 인 경우 재부팅하는 동안 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를 암호화하거나 이동하는 데 매우 유용합니다.


2
이것은 매력처럼 작동합니다. -u 옵션과 함께 update-initramfs를 실행해야합니다.
Diomidis Spinellis

시원한. 제 경우에는 또한 필요했습니다 update-grub.
Wojciech Kaczmarek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.