[VM] Managed 디스크로 만들어진 VM을 한국에서 미국으로 옴기기

VM
작성자
Roronoa
작성일
2017-04-18 16:15
조회
2227
# 배경상황

현재 Managed 디스크로 만들어진 VM은 한국에서 미국으로 리소스를 옴기는 기능이 포털에는 구현되어 있지 않다. (2017. 04)

그러나 다음과 같이 한다면 옴길수 있다. 윈도우는 쉬우니깐 리눅스로 해보겟다. CLI2.0이나 파워쉘 하나로만 한방에 짤수 있으나 귀찬어서 있는거 막 붙여서 햇음. (포털 + CLI2.0 + 파워쉘)

어짜피 포털에서 구현되면 쓸모없는 일이긴하다.. ㅋㅋ

결론

Managed Disk -> Blob -> Image -> VM 이순서로 된다.

조건

Managed disk 로 만들어진 우분투 16.04 LTS

 

# 순서
1. 우분투 16.04 LTS로 리눅스를 한국 지역에 만든다. (프리미엄 디스크로 만들면 나머진 쉬으므로 프리미엄 선택)

2.폴더 추가를 한다.(잘되는지 추후 확인을위해)

3 xshell로 원본 우분트 접속- 원본의 VM 프로비전을 해제한다. sudo waagent -deprovision+user -force

4. CLI 2.0로 접속해서 VM을 Deallocate 시킨다 az vm deallocate --resource-group 너의리소스그룹이름 --name 너의VM이름

5. VM을 일반화 한다. az vm generalize --resource-group 너의리소스그룹이름 --name 너의VM이름

6. 한국 지역이므로 미국 지역으로 복사 한다.

7. 포털에서 미국 지역에 리소스그룹을 생성 (Gerneral purpose, Premium, LRS으로 선택한다. Premium이되면 모두 되므로 세팅)

8. Container 생성 vhds

9. 파워쉘로 SAS를 만든다.(프리미엄디스크이면서 Managed disk이므로 SAS를 사용해야한다.)

$sas = Grant-AzureRmDiskAccess -ResourceGroupName '원본리소스이름' -DiskName '원본Managed디스크이름' -DurationInSecond 36000 -Access Read
$destContext = New-AzureStorageContext –StorageAccountName '복사되어질StorageAccount이름' -StorageAccountKey '액세스키'
Start-AzureStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer '복사되어질vhds컨테이너이름' -DestContext $destContext -DestBlob '새로생길VHD파일이름.vhd'

10. Managed 디스크에서 미국지역으로 Blob 으로 복사가 됬다. 확인은 포털에서 USED Size 에 용량 뜨면 됨

11. 자 리소스그룹에 이제 Blob이 생성되었으므로 이 Blob에서 이미지를 만들어라

$rgName = "리소스그룹이름"
$location = "옴겨진 지역"
$imageName = "생성되어야할이미지이름"
$osVhdUri = "옴겨진지역에새로생성한OS의Blob저장소의링크"

$imageConfig = New-AzureRmImageConfig -Location $location
$imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsType linux -OsState Generalized -BlobUri $osVhdUri
$image = New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig

12. 이미지에서 VM 바로 배포한다

13. NSG에서 포트 오픈한다.

14. Xshell로 접속해서 생성한 폴더가 있는 지 확인 끝

15. 할렐루야