[VM] 스냅샷과 이미지 는 백업으로 쓸것인가? 배포로 쓸것인가? DR로 쓸것인가?

VM
작성자
Roronoa
작성일
2017-11-15 09:11
조회
3146
현재 Azure에서 스냅샷과 이미지는 백업, 배포, DR로 사용될수 있으며 용도에 맞게 취향대로 사용할수 있으며 차이점을 먼저 알아보자. 실제적으로 가장 중요한 차이는 포털에서 되느냐 안되느냐 차이이다. 물론 파워쉘을 사용하면 되긴 하지만 .... 개인적으로는 이미지를 만드는것이 더 편하다고 생각된다. 원본디스크가 날아가버리는 문제만 없다면... 또한 이자료는  Managed disk로만 생성된것이므로 Unmanaged Disk는 다른 방법으로 해야한다. 

 

스냅샷과 이미지의 차이

스냅샷 

  • 스냅샷의 용도는 만든 시간에 대한 디스크 복사본

  • VM이 할당취소 되지 않아도 된다.

  • 원본의 유저 정보가 남는다.

  • Azure Backup을 사용하면 자동 백업 가능하다.

  • 파워쉘로만 가상머신으로 배포가 된다.

  • 현재는 스냅샷에서 VM을 배포할수는 있지만 이미지로는 변환이 안된다.


 

이미지 - 이미지의 용도는 OS 영역과 디스크를 한번에 떠서 복사하는 방법

  • 원본의 유저 정보가 남지 않는다. (꼭 이부분을 제거해야 쓸수 있다.)

  • 가동중인 가상머신은 쓸수 없으며 할당 취소 되야하며 운영중의 VM은 다시 쓸수 없다.

  • 포털에서 이미지로 배포 가능하다.


이미지로 VM을 생성하는 방법

  1. VM 할당 취소

  2. 리눅스에서 일반화 VM만들기 http://cloud.syncrofusion.com/?page_id=4&uid=148&mod=document (리눅스)                                                                                                             윈도우 에서 일반화 VM만들기 https://docs.microsoft.com/ko-kr/azure/virtual-machines/windows/capture-image-resource (윈도우)

  3. 포털에서 VM으로 들어간후 Capture 버튼을 누르면 이미지 생성 페이지로 간다.

  4. 주의: (자동으로 이미지 만들어진 후 일반화된  VM 는 삭제한다 라는 버튼을 누름.)

  5. 이미지가 만들어진다. 원본이미지는 삭제되고 이미지가 떠진다.

  6. 떠진 이미지는 Create VM이라는 버튼에 의해 포털에서 일반적 VM을 만드는거 처럼 다시 재배포 가능하다.


 

스냅샷에서 VM을 배포하는 파워쉘 사용법

#자신의 구독 아이디
$subscriptionId = 'yourSubscriptionId'

#스냅샷에서 VM으로 배포되어야할 리소스 그룹의 위치
$resourceGroupName ='yourResourceGroupName'

#스냅샷의 이름
$snapshotName = 'yourSnapshotName'

#새로 생성되어야할 OS VM의 이름
$osDiskName = 'yourOSDiskName'

#VM이 배포되어야 할 가상네트워크 이름 (미리 만들어져있어야한다)
$virtualNetworkName = 'yourVNETName'

#VM의 이름
$virtualMachineName = 'yourVMName'

#VM의 크기  https://docs.microsoft.com/ko-kr/azure/virtual-machines/windows/sizes-general  링크에서 원하는 VM의 이름을 찾아보자
$virtualMachineSize = 'Standard_DS3'

#매니지드 디스크가 있는 구독의 이름 세팅 및 스냅샷을 찾아서 타입과 스냅샷의 위치를 지정하여 복사해온다.
Select-AzureRmSubscription -SubscriptionId $SubscriptionId

$snapshot = Get-AzureRmSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName

$diskConfig = New-AzureRmDiskConfig -AccountType $storageType -Location $snapshot.Location -SourceResourceId $snapshot.Id -CreateOption Copy

$disk = New-AzureRmDisk -Disk $diskConfig -ResourceGroupName $resourceGroupName -DiskName $osDiskName

#새로운 VM을 초기화 시킨다.
$VirtualMachine = New-AzureRmVMConfig -VMName $virtualMachineName -VMSize $virtualMachineSize

#매니지드 디스크의 아이디에서 리눅스 버전으로 OS디스크를 세팅
$VirtualMachine = Set-AzureRmVMOSDisk -VM $VirtualMachine -ManagedDiskId $disk.Id -CreateOption Attach -Linux

#새로운 VM을 위한 IP 생성
$publicIp = New-AzureRmPublicIpAddress -Name ($VirtualMachineName.ToLower()+'_ip') -ResourceGroupName $resourceGroupName -Location $snapshot.Location -AllocationMethod Dynamic

#가상네트워크 세팅
$vnet = Get-AzureRmVirtualNetwork -Name $virtualNetworkName -ResourceGroupName $resourceGroupName

# 네트워크 인터페이스 생성과 서브넷 생성
$nic = New-AzureRmNetworkInterface -Name ($VirtualMachineName.ToLower()+'_nic') -ResourceGroupName $resourceGroupName -Location $snapshot.Location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $publicIp.Id

$VirtualMachine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $nic.Id

#매니지드 디스크로 VM생성
New-AzureRmVM -VM $VirtualMachine -ResourceGroupName $resourceGroupName -Location $snapshot.Location