Amazon Elastic Cloud Compute(EC2)에서 Amazon Linux 반가상화(PV) Amazon 머신 이미지(AMI)를 사용하고 있습니다. Amazon Linux 하드웨어 가상 머신(HVM) AMI로 마이그레이션하려면 어떻게 해야 합니까?
향상된 보안, 새로운 기능 및 성능의 이점을 누리려면 HVM 인스턴스로 마이그레이션하는 것이 좋습니다. PV 및 HVM AMI에 대한 자세한 내용은 Linux AMI 가상화 유형을 참조하십시오.
보안의 경우 AWS 보안 공지 AWS-2018-013에서 설명한 대로 운영 체제 보호 기능으로는 CVE-2017-5754의 PV 인스턴스 프로세스 간 문제를 해결하기에 충분하지 않습니다. AWS 하이퍼바이저가 인스턴스 간 문제로부터 PV 인스턴스를 보호하지만, Amazon은 프로세스 격리(예: 신뢰할 수 없는 데이터 처리, 신뢰할 수 없는 코드 실행 또는 신뢰할 수 없는 사용자 호스팅)에 관심이 있는 PV 인스턴스 사용자에게 장기적인 보안 이점을 위해 HVM 인스턴스 유형으로 마이그레이션하도록 강력히 권장합니다.
PV 인스턴스에서 HVM 인스턴스로 데이터를 마이그레이션하려면 다음 절차 중 하나를 사용하십시오.
- PV 인스턴스에서 새 HVM 인스턴스로 데이터를 복사하고 애플리케이션을 이동합니다(강력히 권장).
- PV 인스턴스를 HVM 인스턴스로 변환합니다.
PV 인스턴스에서 새 HVM 인스턴스로 데이터 복사 및 애플리케이션 이동(강력히 권장)
1. HVM AMI에서 새 인스턴스를 시작합니다.
2. 다음 방법 중 하나를 사용하여 PV 인스턴스에서 새 HVM 인스턴스로 데이터를 복사합니다.
- rsync, scp 또는 drbd와 같은 Linux 유틸리티를 실행하여 인스턴스 간에 데이터를 안전하게 복사합니다.
- PV 인스턴스 데이터를 EBS 볼륨에 복사하고 볼륨을 분리합니다. 그런 다음, 새 HVM 인스턴스에 볼륨을 연결합니다.
3. HVM AMI에 애플리케이션을 설치하고 구성합니다.
PV 인스턴스를 HVM 인스턴스로 변환
PV 인스턴스에서 새 HVM 인스턴스로 데이터를 복사할 필요가 없는 경우 다음 단계를 수행하여 PV 인스턴스를 HVM 인스턴스로 변환할 수 있습니다.
참고: 다음 절차는 일반적인 안내 단계입니다. 구성에 필요한 경우 단계를 수정해야 합니다.
1. PV 인스턴스를 중지합니다.
참고: 테스트 PV 인스턴스에서 이 단계를 수행하는 것이 좋습니다. 테스트 인스턴스를 생성하려면 먼저, PV 인스턴스의 이미지를 생성합니다. 그런 다음, 이미지에서 새 PV 인스턴스를 시작합니다.
2. PV 인스턴스 루트 볼륨의 스냅샷을 생성합니다.
3. 새 EBS 볼륨으로 PV 인스턴스 루트 볼륨 스냅샷을 복원합니다. PV 인스턴스와 동일한 가용 영역에서 볼륨을 복원해야 합니다.
4. Amazon Linux HVM AMI에서 새 인스턴스를 시작합니다. PV 인스턴스와 동일한 가용 영역에서 인스턴스를 시작해야 합니다.
5. PV 인스턴스 루트 스냅샷에서 복원한 EBS 볼륨을 선택합니다. 그런 다음, 새 HVM 인스턴스에 /dev/xvdf로 볼륨을 연결합니다.
6. PV 인스턴스 루트 스냅샷에서 복원한 볼륨과 크기가 동일한 빈 EBS 볼륨을 새로 생성합니다. HVM 인스턴스에 /dev/xvdg로 새로운 빈 EBS 볼륨을 연결합니다.
참고: 이 단계가 끝나면 새 HVM 인스턴스에는 세 개의 볼륨이 있습니다.
7. SSH를 사용하여 새 HVM 인스턴스에 연결합니다.
참고: 다음 단계를 진행하려면 루트 사용자 권한이 있어야 합니다.
8. 다음 명령을 실행하여 볼륨을 표시합니다.
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 8G 0 disk xvdg 202:96 0 8G 0 disk
참고: xvda는 HVM 인스턴스의 루트 볼륨입니다. xvdf는 PV 인스턴스 루트 스냅샷에서 복원한 볼륨입니다. xvdg는 새로 만든 빈 볼륨입니다.
9. 다음 명령을 실행하여 xvdg(새 볼륨)에 새 파티션을 만듭니다.
# parted /dev/xvdg --script 'mklabel msdos mkpart primary 1M -1s print quit' # partprobe /dev/xvdg # udevadm settle
참고: 이러한 명령으로 xvdg1이 생성됩니다.
10. 다음 명령을 실행하여 xvdf(PV 루트 볼륨)의 크기를 확인하고 원래 파일 시스템의 크기를 최소화합니다. 프로세스 속도를 높이려면 다음 단계에서 디스크 여유 공간을 복사하지 마십시오.
# e2fsck -f /dev/xvdf ; resize2fs -M /dev/xvdf
11. 다음 명령을 실행하여 xvdf(PV 루트 볼륨)를 xvdg1(새 볼륨)에 복사합니다.
# dd if=/dev/xvdf of=/dev/xvdg1 bs=$(blockdev --getbsz /dev/xvdf) conv=sparse count=$(dumpe2fs /dev/xvdf | grep "Block count:" | cut -d : -f2 | tr -d "\\ ")
12. 다음 명령을 실행하여 xvdg1(새 볼륨)의 크기를 최대 크기로 조정합니다.
# e2fsck -f /dev/xvdg1 && resize2fs /dev/xvdg1
13. 다음 명령을 실행하여 HVM 인스턴스의 루트 볼륨으로 변환할 xvdg1(새 볼륨)을 준비합니다.
# mount /dev/xvdg1 /mnt/ && mount -o bind /dev/ /mnt/dev && mount -o bind /sys /mnt/sys && mount -o bind /proc /mnt/proc
14. 다음 명령을 실행하여 xvdg1(새 볼륨)을 HVM 인스턴스의 루트 볼륨으로 변환합니다.
# chroot /mnt/
15. 다음 명령을 실행하여 새 루트 볼륨에 grub을 다시 설치합니다.
# yum reinstall grub -y # rm -f /boot/grub/*stage* /boot/grub/device.map # grub-install /dev/xvdg
16. "grub-install" 명령은 다음 메시지를 반환합니다. 이는 예상된 메시지이므로 무시하고 다음 단계로 계속 진행합니다.
Probing devices to guess BIOS drives. This may take a long time. Unknown partition table signature /dev/xvdg does not have any corresponding BIOS drive.
17. 다음 명령을 실행하여 grub 구성을 업데이트합니다.
# cat <<EOF | grub --batch device (hd0) /dev/xvdg root (hd0,0) setup (hd0) EOF # sed -i 's/root\ (hd0)/root (hd0,0)/g' /etc/grub.conf # sed -i 's/root\ (hd0)/root (hd0,0)/g' /boot/grub/menu.lst # sed -i 's/console=hvc0/console=ttyS0/g' /etc/grub.conf # sed -i 's/console=hvc0/console=ttyS0/g' /boot/grub/menu.lst
18. 다음 명령을 실행하여 “chroot” 함수를 끝냅니다.
# exit
19. 다음 명령을 실행하여 인스턴스를 종료합니다.
# halt
20. 앞서 HVM 인스턴스에 연결한 세 개의 볼륨을 분리합니다.
21. 앞서 /dev/xvdg(새 볼륨)로 연결한 볼륨을 선택합니다. HVM 인스턴스에 /dev/xvda로 이 볼륨을 다시 연결합니다.
22. HVM 인스턴스를 시작합니다.
새 HVM 인스턴스는 소스 PV 인스턴스와 똑같은 복사본입니다. HVM 인스턴스가 예상대로 작동하는지 확인한 후 소스 PV 인스턴스를 종료할 수 있습니다. 또한 두 개의 임시 볼륨인 HVM 인스턴스의 원래 루트 볼륨과 PV 인스턴스 루트 스냅샷에서 복원한 볼륨을 제거할 수도 있습니다.