답변:
AWS는 EC2 API에서이 기능을 활성화했습니다. 새로운 Boto 기반 AWS에서 --virtualization-type
옵션으로 사용할 수 있습니다 aws ec2 register-image
.
예! 불행히도 그렇게하는 직접적인 방법은 없습니다. 또한 일부 PV 인스턴스에는 커널 및 부트 로더 수정이 필요할 수 있습니다.
ec2-create-image
HVM 인스턴스에서 실행하십시오 .그래도 문제가 해결되지 않으면 5 단계 전에 해당 볼륨을 실행중인 인스턴스에 연결하고 chroot를 설정 한 다음 배포 용 커널 및 부트 로더를 설치해야합니다. 로그 및 모든 클라우드 초기화 캐시를 지우고 싶을 수도 있습니다.
aws ec2 register-image
PV 이미지의 스냅 샷에서 --virtualization-type 플래그를 사용하여 인스턴스를 HVM으로 변환 할 수 있습니다 . 자세한 내용 aws ec2 register-image help
을 참조하십시오.
aws ec2 register-image
. 그런 다음 해당 이미지에서 새 HVM 인스턴스를 시작했습니다. 그러나 시스템은 부팅되지 않습니다.
필자의 경우 사용하여 만든 인스턴스가 aws ec2 register-image
부팅되지 않았으므로 수동으로 변환을 수행해야했습니다 . 내 솔루션은 AWS EC2 포럼 의이 게시물 을 기반으로 합니다 .
모든 볼륨이 동일한 가용 영역에 있는지 확인하십시오.
마이그레이션 할 모든 PV 시스템에 SSH를 연결하고 모든 업데이트를 적용한 다음 로그 아웃하십시오.
AWS 콘솔로 이동하여 PV 시스템이 생성 된 것과 동일한 기본 AMI (제 경우에는 Amazon 64 비트 Linux AMI)를 선택하여 새 HVM 인스턴스를 시작하십시오.
이 새 인스턴스에 SSH를 설치하고 모든 업데이트를 적용한 다음 로그 아웃하십시오.
AWS Console로 이동하여 PV 인스턴스를 중지하십시오. 루트 장치의 스냅 샷을 생성 SOURCE VOLUME
하고이 스냅 샷에서 새 볼륨 ( )을 생성하십시오.
HVM 인스턴스를 중지하십시오. 새 인스턴스에서 루트 디바이스의 스냅 샷을 작성 TARGET VOLUME
하고이 스냅 샷에서 새 볼륨 ( )을 작성하십시오.
AWS 콘솔 사용 :
SOURCE VOLUME
새 인스턴스에 연결 하십시오 /dev/xvdf
.TARGET VOLUME
새 인스턴스에 연결 하십시오 /dev/xvdg
.새 인스턴스에 대한 SSH 및 루트 액세스 권한을 얻습니다.
sudo su
소스 및 대상 드라이브를 마운트하십시오.
mkdir -p /mnt/source && mount /dev/xvdf /mnt/source
mkdir -p /mnt/target && mount /dev/xvdg1 /mnt/target
필자의 경우 장치는
/dev/xvdf
(소스) 및/dev/xvdg1
(대상)이었습니다. 파티션 수와 연결 위치에 따라 구성이 변경 될 수 있습니다 (준비의 6 단계 참조).ls -al /dev/xvd*
드라이브를 보는 데 사용 하십시오.
백업 /lib/modules/*
(PV ami의 커널이 새로운 HVM 시스템과 다른 경우.이 모듈은 일부 AWS 서비스에서 사용됩니다.)
/boot
대상 볼륨을 제외한 모든 것을 삭제 하십시오.
cd /mnt/target && ls | grep -v boot | xargs rm -Rf
/boot
소스 볼륨에서 삭제 하십시오.
rm -Rf /mnt/source/boot
모든 속성을 유지하면서 소스 볼륨의 데이터를 대상 볼륨에 복사하십시오.
rsync -aAXHPv /mnt/source/ /mnt/target
편집 /mnt/target/etc/fstab
에 대한 /
가를 참조 그래서 파티션, TARGET VOLUME
단계 (8)에서 최종 위치에 장착 할 때. 레이블을 사용하거나 단순히 다음과 같은 것을 사용하십시오.
/dev/xvda1 / ext4 defaults,barrier=0 1 1
그런 다음 /lib/modules/
3 단계에서 백업 한 것을 복원 하십시오 (PV ami의 커널이 새 HVM 시스템과 다른 경우).
AWS 콘솔을 사용하여 시스템을 중지하고 모든 볼륨을 분리하십시오. TARGET VOLUME
새 인스턴스를로 첨부하십시오 /dev/xvda
.
원래 루트 장치가 마운트 된 위치를 확인하십시오. 대부분의 경우이어야합니다
/dev/xvda
.
HVM 인스턴스를 시작하십시오. 이제 PV 시스템의 정확한 복제본이되어야합니다. 모든 것이 정상으로 보이면 이제 PV 인스턴스와을 삭제할 수 있습니다 SOURCE VOLUME
.
rm -f /boot
와 cp -a /mnt/source/boot /mnt/target
?
TLDR :
ec2-register -a x86_64 -d '3.15.7-200.fc20.x86_64' -n 'Fedora_20_HVM_AMI' --sriov simple --virtualization-type hvm -s snap-b44feb18 --root-device-name /dev/sda1
세부 단계 :
단계를 단순화하고 ec2 레지스터 이미지에 대한 자세한 내용을 제공하기 위해 Jeff Strunk의 응답 에 따라 추가로 응답 합니다.
PV 이미지를 사용하여 인스턴스를 만듭니다. 원하는 사항을 변경하십시오.
위 인스턴스에서 이미지를 만듭니다.
EC2 콘솔의 EC2> Elastic Block Store> 스냅 샷에서 위의 AMI가 사용하는 스냅 샷 ID를 찾으십시오.
또는 ec2 api 도구가 설정된 경우 :
ec2-describe-images ami-id_of_above_created_ami
ami의 스냅 샷 ID를 찾으십시오.
.. 추가 단계에 대한 가정 : ec2 키와 API 도구가 설정되어 사용할 준비가되었습니다.
위 스냅 샷을 사용하여 새 HVM AMI를 등록하십시오. 예 :
ec2-register -a x86_64 -d '3.15.7-200.fc20.x86_64'-n 'Fedora_20_HVM_AMI'--sriov simple --virtualization-type hvm -s snap-b44feb18 --root-device-name / dev / sda1
어디
자세한 내용은:
여기에있는 모든 제안을 시도했지만 아무도 효과가 없었지만 https://www.opswat.com/blog/aws-2015-why-you-need-switch- 에서 주제에 대한 훌륭한 블로그 항목을 발견했습니다. pv-hvm .
절차의 요소 (세부 사항)는 다음과 같습니다.
설치 grub
마이그레이션 할 PV 인스턴스 (소스 인스턴스)에.
소스 인스턴스 (소스 볼륨, SV)에서 루트 볼륨의 예방 스냅 샷을 만듭니다.
볼륨을 마이그레이션 할 임시 HVM 인스턴스를 만듭니다.
대상 볼륨 (DV)을 생성하고이 볼륨과 SV를 임시 인스턴스에 연결하십시오.
DV는 최소한 SV만큼 커야합니다.
SV는 /dev/{sd,xvd}f
, DV는을 부착하십시오 /dev/{sd,xvd}g
.
DV 파티션 :
parted /dev/xvdg --script 'mklabel msdos mkpart primary 1M -1s print quit'
partprobe /dev/xvdg
udevadm settle
SV의 FS를 최소 크기로 조정하고 dd
이미지를 DV로 사용하십시오.
소스 볼륨의 FS를 정리하십시오. e2fsck -f /dev/xvdf
동일하게 최소화하십시오. resize2fs -M /dev/xvdf
resize2fs (예 :)의 출력을 관찰하고 Resizing the file system on /dev/xvdf to 269020 (4k) blocks
다음 단계를 위해 적어 둡니다 .
SV를 DV로 복제 : dd if=/dev/xvdf of=/dev/xvdg1 bs=<block size from previous step, here 4k> count=<use block count from last step, here 269020>
새 파티션에서 FS를 펼치십시오. resize2fs /dev/xvdg1
grub
DV의 부팅 블록에 설치
DV에서 장치 파일을 임시로 작성하십시오. mount /dev/xvdg1 /mnt; cp -a /dev/xvdg /dev/xvdg1 /mnt/dev/
GRUB 파일을 설치하십시오.
rm -f /mnt/boot/grub/*stage*
cp /mnt/usr/*/grub/*/*stage* /mnt/boot/grub/
rm -f /mnt/boot/grub/device.map
cat << ARNIE | chroot /mnt grub --batch
device (hd0) /dev/xvdg
root (hd0,0)
setup (hd0)
ARNIE
대상 볼륨을 약간 변경 한 후 볼륨을 스냅하고 AMI를 만듭니다.
임시 장치 파일을 정리하십시오. rm -f /mnt/dev/xvdg /mnt/dev/xvdg1
에서 /mnt/boot/grub/grub.conf
변화 root (hd0)
에 root (hd0,0)
, 추가 (또는 교체 console=*
) console=ttyS0
커널 라인에, 필요하면 교체 root=*
와 root=LABEL=/
커널 라인
에서 /mnt/etc/fstab
루트 FS의 라인이 표시 참조, 예를 들어 있는지, 확인
LABEL=/ / ext4 defaults,noatime 1 1
새 루트 FS에 레이블을 지정하십시오. e2label /dev/xvdg1 /
임시 인스턴스에서 DV를 마운트 해제하고 임시 인스턴스에서 SV 및 DV를 분리하십시오.
DV를 스냅하고 그 스냅에서 AMI 이미지를 만듭니다.
해당 HMI에서 HVM 인스턴스를 시작하십시오. 이것이 마이그레이션 된 인스턴스입니다.