물리적 액세스 없이 머신의 루트 파티션 축소

물리적 액세스 없이 머신의 루트 파티션 축소

글쎄, 가능한 한 자세히 설명하려고 노력하겠습니다. 그래서 저는 Chameleon Cloud를 사용하여 노드를 베어 메탈(~원격 머신)에 유지하고 SSH를 통해 노드에 액세스합니다. 노드는 Ubuntu 20.04를 실행하고 있으며 제가 액세스할 수 있는 노드에는 SSD가 1개만 있습니다. 이는 제가 작업 중인 프로젝트에 SSD만 필요하기 때문에 중요합니다.

루트는 SSD의 sda1에 있고, sda1이 SSD 전체를 차지합니다.

기본적으로 sda1(루트 포함)을 축소하고 SSD에 다른 파티션을 생성한 다음 여기에 내 프로젝트를 위한 다른 파일 시스템을 마운트하고 싶습니다(이 파일 시스템은 btrfs, xfs 등 프로젝트 전체에서 변경됩니다). 따라서 원래 EXT4 파일 시스템은 sda1에 유지되며 다른 파일 시스템이 있는 추가 파티션이 필요합니다. 하지만 이것은 내가 물리적으로 접근할 수 있는 기계가 아니기 때문에USB 플래시 드라이브 또는 CD를 사용하여 다시 설치할 수 없음, 등.

나는 이것이 혼란스러울 수 있고 부정확하거나 불완전할 수 있다는 것을 알고 있습니다. 이것도 새로운 질문이 아닐 수도 있지만, 제 상황에서는 만족스러운 답변을 찾을 수 없었습니다. 내 프로젝트 리더는 이것이 해결 가능한 문제라고 생각합니다. 자세한 내용(명령 스크린샷 등)을 요청하고, 오류를 수정하고, 도와주세요. 무엇이든 환영합니다.

시간을 내어 도와주셔서 정말 감사드립니다.

답변1

LVM을 사용하도록 변환하기 위해 Amazon Lightsail vps에서 이 작업을 수행했습니다. 먼저, 부팅할 때마다 cloud-init 패키지가 자동으로 파티션을 늘리는 것을 비활성화해야 합니다. IIRC의 경우, 성장 파트 및 크기 조정을 참조하는 /etc/cloud/cloud.cfg의 행을 주석 처리하거나 삭제해야 합니다. 그런 다음 다음 두 스크립트를 추가할 수 있습니다.

#!/bin/sh

PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case "${1:-}" in
  prereqs)
    prereqs
    exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

# copy the binary as early as possible
copy_exec /sbin/resize2fs /sbin
copy_exec /sbin/e2fsck /sbin

/etc/initramfs-tools/hooks/resize-hook에 넣으세요.

#!/bin/sh

PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
        prereqs
        exit 0
        ;;
esac

e2fsck -fy /dev/sda1
resize2fs /dev/sda1 9g

9g를 fs를 축소하려는 크기로 변경하고 /etc/initramfs-tools/scripts/local-premount/resize에 넣습니다. 이 두 스크립트를 chmod +x하고 update-initramfs.

재부팅 후 파일 시스템이 축소( df)되었는지 확인하고 resizepart 명령을 사용하여 parted파티션을 축소합니다. 파티션을 파일 시스템보다 작게 축소한 다음 resize2fs나중에 확장하여 전체 새 파티션의 크기를 채우지 않도록 파티션에 추가 GB 정도를 남겨 두는 것이 좋습니다 .

또한 파일 시스템이 축소된 것을 확인한 후 위의 두 스크립트를 삭제하고 initramfs를 다시 빌드하십시오.

답변2

푸시의 대답올바르게 실행하면 작동하지만 작은 실수로 인해 시스템이 응답하지 않을 수 있습니다. 이런 일이 발생하면 이미 시스템에 있는 모든 것을 잃게 될 것이라고 생각합니다. 따라서 이 옵션을 선택하면스냅샷을 찍다첫 번째!


이미지라는 개념을 중심으로 구축된 카멜레온 클라우드를 읽어보세요. 일정 기간 동안 서버를 프로비저닝하고 여기에 이미지를 배포한 다음 임대 종료 시 서버의 스냅샷을 찍지 않도록 주의하세요. 그렇지 않으면 서버가 손실될 위험이 있습니다. 카멜레온에 대한 몇 가지 힌트가 있습니다최대이미지는 단일 파티션으로 추론됩니다.일부아마.

저라면 서버를 그 자리에서 편집하지 않을 것입니다. 대신 최신 스냅샷을 내 로컬 컴퓨터(액세스할 수 있는 Linux 또는 Mac)에 다운로드하고 편집하고 업로드한 다음 사용합니다.

문서에 따르면 이 이미지는QCOW2 이미지. 다운로드 후 원본 이미지로 변환 가능qemu-image convert. resize2fs/modify를 사용 fdisk하고 qemu-image를 사용하여 다시 패키지하고 다시 업로드합니다.

# Unpack
qemu-img convert -p -O raw base_image.qcow2 raw_image

# Repack
qemu-img convert -p -O qcow2 raw_image new_image.qcow_2

관련 정보