질문:
전체 시스템 설정을 다시 생성하지 않고 기존 AMI에서 새 AWS EC2 클래스 (r3, i2)를 사용하려면 어떻게해야합니까?
새로운 EC2 클래스는 HVM 기반 가상화 만 지원하지만 PVM AMI 이미지 만 있습니다.
전체 시스템 설정을 다시 생성하지 않고 기존 AMI에서 새 AWS EC2 클래스 (r3, i2)를 사용하려면 어떻게해야합니까?
새로운 EC2 클래스는 HVM 기반 가상화 만 지원하지만 PVM AMI 이미지 만 있습니다.
답변:
Ubuntu HVM Linux, 모든 버전, 새 시작
기존 AMI / PVM Linux를 사용하여 Ubuntu를 시작하고 여기에 grub 패키지를 설치합니다. apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
PVM Linux 중지
PVM Linux에서 루트 (/ dev / sda1) 파티션 분리
PVM Linux 루트 파티션을 실행중인 HVM Linux 어딘가에 연결합니다. 예 : / dev / sdf
HVM Linux에서 : mkdir -p /mnt/xvdf && mount /dev/xvdf /mnt/xvdf
rsync -avzXA /boot/ /mnt/xvdf/boot/
mount -o bind /dev /mnt/xvdf/dev && mount -o bind /dev/pts /mnt/xvdf/dev/pts && mount -o bind /proc /mnt/xvdf/proc && mount -o bind /sys /mnt/xvdf/sys
chroot /mnt/xvdf
grub-install --no-floppy --recheck --force /dev/xvdf
update-grub2
chroot 종료 : CTRL + D
HVM Linux 중지
/ dev / sda1 원래 루트 분리 및 / dev / sdf PVM 루트 분리
PVM 루트를 HVM Linux에 / dev / sda1로 연결합니다.
HVM Linux를 시작하십시오.
실행중인 HVM Linux에서 새 AMI 이미지를 생성하면 HVM이 가상화됩니다.
warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.. /usr/sbin/grub-bios-setup: error: will not proceed with blocklists.
그러면 모든 것이 좋아 보이지만 부팅되지 않거나 부팅되지 않는 이유에 대한 단서를 제공합니다.
xvd*
만이, 이러한 경우에 nvme*
이름 지정 규칙. 교체 xvd
올바른로하는 것은 nvme
작동하지 않습니다. :(
@divyenduz의 답변은 작동하지만 최신 (2019 년경) AWS EC2에 대한 정리 및 설명이 필요합니다. 중요한 것은 최신 인스턴스 클래스가 장치 이름을 다르게 변환한다는 것입니다.
수정 된 단계는 다음과 같습니다.
명확성을 위해 노드는 다음과 같습니다.
진행하기 전에 : 원래 노드 PVM01 백업
노드 PVM01에 전제 조건 설치
PVM01에 GRUB 패키지 설치
apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
PVM01 노드 중지
PVM01 루트 파티션 (이전 단계의 새 볼륨)을 새 HVM01 / dev / sdf에 연결합니다.
ssh PVM01 sudo fdisk -l
HVM01에서 :
# For xvdf, e.g. on C3.XLARGE
DEVNAME=xvdf1
# For nvme, e.g. on C5.XLARGE
DEVNAME=nvme1n1
mkdir -p /mnt/${DEVNAME} && mount /dev/${DEVNAME} /mnt/${DEVNAME}
rsync -avzXA /boot/ /mnt/${DEVNAME}/boot/
mount -o bind /dev /mnt/${DEVNAME}/dev && mount -o bind /dev/pts /mnt/${DEVNAME}/dev/pts && mount -o bind /proc /mnt/${DEVNAME}/proc && mount -o bind /sys /mnt/${DEVNAME}/sys
chroot /mnt/${DEVNAME}
grub-install --no-floppy --recheck --force /dev/${DEVNAME}
update-grub2
CTRL + D를 사용하여 chroot 종료
DEVNAME
변수 를 다시 만들어야합니다 chroot
.