볼륨이 루트 (부팅 가능) 장치로 사용되는 경우 다른 솔루션은 작동하지 않습니다.
새로 생성 된 디스크에 부트 파티션이 없기 때문에 GRUB을 설치하고 인스턴스가 루트 볼륨으로 사용하기 전에 일부 플래그를 올바르게 설정해야합니다.
내 (오늘의 같은 작업 루트 볼륨을 축소하기위한) 솔루션입니다 :
배경 : 루트 볼륨을 줄이려는 인스턴스 A가 있습니다. 이 볼륨을 VA라고하겠습니다. 10GB라고 말하면 VA를 30GB에서 줄이려고합니다.
- 인스턴스 A와 동일한 OS를 사용하여 새로운 ec2 인스턴스 B를 생성합니다. 스토리지로는 VA와 동일한 유형이지만 크기는 10GB 인 볼륨을 선택합니다. (또는 대상 크기가 무엇이든). 이제이 새로운 볼륨을 VB라고하는 인스턴스 B가 루트 볼륨으로 사용됩니다.
- 새 인스턴스 (B)가 실행되면 중지하고 루트 볼륨 (VB)을 분리하십시오.
참고 : 다음 단계는 대부분 @bill 솔루션에서 가져옵니다.
크기를 조정하려는 인스턴스를 중지하십시오 (A).
볼륨 VA의 스냅 샷을 생성 한 다음 해당 스냅 샷에서 "범용 SSD"볼륨을 생성하십시오. 이 책을 VASNAP이라고합니다.
Amazon Linux를 사용하여 새 인스턴스를 스핀하고이 인스턴스를 C라고합니다.이 인스턴스를 사용하여 VASNAP의 내용을 VB로 복사합니다. 인스턴스 A를 사용하여 이러한 단계를 수행 할 수도 있지만 독립 시스템에서 수행하는 것을 선호합니다.
VB의 경우 인스턴스 C에 다음 볼륨을 연결하십시오. / dev / xvdf VASNAP의 경우 / dev / xvdg
인스턴스 C를 재부팅하십시오.
SSH를 통해 인스턴스 C에 로그온하십시오.
다음 새 디렉토리를 작성하십시오.
mkdir /source /target
- ext4 파일 시스템으로 VB의 기본 파티션을 포맷하십시오 :
mkfs.ext4 /dev/xvdf1
오류가 없으면 11 단계로 진행하십시오. 그렇지 않은 경우 다음이없는 경우 /dev/xvdf1
다음 i-vii를 수행하여 파티션을 작성해야합니다.
i) /dev/xvdf1
어떤 이유로 든 존재하지 않는 경우 이를 작성해야합니다. 먼저 입력하십시오 :
sudo fdisk /dev/xvdf
.
ii) 다음을 입력하여 디스크를 정리하십시오.
wipefs
iii) 다음을 입력하여 새 파티션을 만듭니다.
n
iv) p
1 차 파티션을 작성하려면 입력하십시오
v) 기본 설정을 계속하려면 enter를 계속 누르십시오.
vi) 명령을 다시 요청하면 w
변경 사항을 작성하고 종료하도록 입력하십시오 .
vii) 다음 /dev/xvdf1
을 수행 하여 파티션 이 있는지 확인하십시오 .
lsblk
다음과 같은 내용이 표시되어야합니다.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
└─xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
└─xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
└─xvdg1 202:97 0 250G 0 part
이제 11 단계로 진행하십시오.
- 이 디렉토리에 마운트하십시오.
mount -t ext4 /dev/xvdf1 /target
- 이것은 매우 중요합니다. 파일 시스템에서 Linux를 인식하고 부팅하려면 e2label이 필요합니다. 활성 인스턴스에서 "e2label / dev / xvda1"을 사용하여 필요한지 확인하십시오.이 경우 레이블은 "/"입니다.
e2label /dev/xvdf1 /
- / source에 VASNAP 마운트 :
mount -t ext4 /dev/xvdg1 /source
- 내용을 복사하십시오.
rsync -vaxSHAX /source/ /target
참고 : "/ target"뒤에 "/"가 없습니다. 또한 symlinks 및 attrs에 대해 몇 가지 오류가있을 수 있지만 크기 조정은 여전히 성공했습니다.
- Umount VB :
umount /target
AWS 콘솔로 돌아 가기 : 인스턴스 C에서 VB를 분리하고 A에서 VA를 분리하십시오.
새 크기의 볼륨 (VB)을 인스턴스에 "/ dev / xvda"로 연결하십시오.
부팅 인스턴스 A, 이제 루트 장치는 10GB입니다. :)
인스턴스 B와 C, VB를 제외한 모든 볼륨 (이제 인스턴스 A의 루트 볼륨)을 모두 삭제하십시오.