Amazon EC2 : 기존 PV AMI를 HVM으로 변환하는 방법
질문:
전체 시스템 설정을 다시 생성하지 않고 기존 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이 가상화됩니다.
@divyenduz의 답변은 작동하지만 최신 (2019 년경) AWS EC2에 대한 정리 및 설명이 필요합니다. 중요한 것은 최신 인스턴스 클래스가 장치 이름을 다르게 변환한다는 것입니다.
다음은 수정 된 단계입니다.
명확성을 위해 노드는 다음과 같습니다.
- HVM으로 업그레이드하려는 원래 PVM 노드는 "PVM01"입니다.
- PVM01의 루트 디스크를 마이그레이션 할 새 HVM 노드는 "HVM01"입니다.
진행하기 전에 : 원래 노드 PVM01 백업
노드 PVM01에 전제 조건 설치
PVM01에 GRUB 패키지 설치
apt-get install grub-pc grub-pc-bin grub-legacy-ec2 grub-gfxpayload-lists
노드 PVM01 중지
- / dev / sda1의 스냅 샷 생성
- 또는 전체 노드의 AMI 생성
- PVM01에서 원래 루트 볼륨의 스냅 샷을 생성하고이 스냅 샷에서 새 볼륨을 생성합니다.
- PVM01에서 / dev / sda1의 스냅 만들기
- 이 스냅에서 vol 만들기
- 그에 따라 각 리소스에 레이블 지정
- 태그 : 이름; 값 : pvm01 : / dev / sda1 : snapshot-for-conversion-to-hvm : 2019-07-01
- 기타
- create-instance : 새 Ubuntu HVM 인스턴스 "HVM01". 모든 인스턴스 클래스가 작동해야합니다. 그러나 장치 이름은 다를 수 있습니다. 아래 참고를 참조하십시오.
- Bionic Ubuntu 18.04 HVM AMI ID ami-0a313d6098716f372 및 인스턴스 클래스 C5.XLARGE를 사용했습니다.
PVM01 루트 파티션 (이전 단계의 새 볼륨)을 새 HVM01 / dev / sdf에 연결합니다.
- 참고 : C3와 같은 이전 인스턴스 클래스는 볼륨 이름을 / dev / xvdf로 변환합니다.
- 참고 : C5와 같은 최신 인스턴스 클래스는 볼륨 이름을 / dev / nvme1로 변환합니다.
- 최신 인스턴스 클래스에서 루트 볼륨은 / dev / nvme0-ZERO입니다.
- 최신 인스턴스 클래스에서 연결된 보조 볼륨은 / dev / nvme1-ONE입니다.
- 연결된 볼륨 장치 이름을 기록해 둡니다.
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 종료
- Stop HVM01
- Detach both volumes
- detach /dev/nvme0 PVM01 root
- NOTE: This would be /dev/sda1 on a C3 instance class
- detach /dev/${DEVNAME} (DEVNAME from above script)
- detach /dev/nvme0 PVM01 root
- attach PVM01 root Volume to HVM01 as /dev/sda1
- Once again, the /dev/sda1 name is in the console; this name will get translated to /dev/nvme0 or /dev/xvda1 depending on how modern the instance class is
- Start HVM01
- OPTIONAL: Create a new AMI image from the the now-running HVM01, it will be HVM virtualized.
참고URL : https://stackoverflow.com/questions/24330721/amazon-ec2-how-to-convert-an-existing-pv-ami-to-hvm
'programing tip' 카테고리의 다른 글
파이썬에서 목록을 dict 키로 사용할 수없는 이유는 무엇입니까? (0) | 2020.10.06 |
---|---|
webRTC 및 서버 기반 피어 연결을 사용하여 웹캠 및 오디오를 녹음하는 방법 (0) | 2020.10.06 |
URL Shortener는 어떻게 작동합니까? (0) | 2020.10.06 |
동적 모듈 세트로 AngularJS 앱 개발 (0) | 2020.10.06 |
React Native-StyleSheet와 일반 객체를 사용하면 어떤 이점이 있습니까? (0) | 2020.10.06 |