본문 바로가기

OSS on Azure/클라우드 운영 팁

가상 머신이 이상하다면? 간단히 OS 디스크만 교체하면 끝 ~ VM 백업과 복구 참 쉽습니다.

*글 최초 발행일자: 2018.04.30*

 

가상 머신(VM)에 장애나 보안 사고 등 복잡한 문제가 생기면? 기존 환경을 지우고 운영체제를 다시 설치하거나, 백업본을 불러와 복원을 합니다. 마이크로소프트 애저(Azure) 환경에서는 이게 매우 간단합니다. 애저에서 매니지드 가상 머신을 사용하는 경우 VM에 치명적인 문제가 발생했을 때 VM을 지울 필요 없이 간단하게 OS 디스크만 바꾸어 주면 됩니다. 이 기능의 정식 명칭은 'OS Disk Swap'인데요, 말 그대로 OS 디스크를 바꾸어 주는 기능입니다. 

 

이 기능을 이용하면 VM을 삭제하지 않고 이전에 백업 받아 둔 OS 디스크를 간단히 복원할 수 있고, 필요에 따라 새로운 OS 디스크 이미지를 쉽게 연결할 수 있습니다. 이 기능을 쓰려면 VM을 잠시 멈추고 매니지드 OS 디스크의 리소스 ID만 바꾸면 됩니다. 제약이 있는데, 당연한 말이지만 리눅스가 설치된 OS 디스크를 윈도우가 설치된 것으로 바꿀 수는 없습니다. 간단히 디스크 OS를 바꾸는 방법을 소개합니다. 

 

 

애저 CLI를 이용할 경우 다음과 같이 하면 됩니다. 참고로 애저 CLI 버전은 2.0.25 이상이어야 합니다. 

 

az vm update –g osrg -n vm2 --os-disk /subscriptions/<sub-id>/resourceGroups/osrg/providers/Microsoft.Compute/disks/osbackup

 

파워쉘을 이용할 때는 다음과 같이 합니다. 

 

$vm = Get-AzureRmVM -ResourceGroupName osrg -Name vm2 $disk = Get-AzureRmDisk -ResourceGroupName osrg -Name osbackup Set-AzureRmVMOSDisk -VM $vm -ManagedDiskId $disk.Id -Name $disk.Name  

Update-AzureRmVM -ResourceGroupName osrg -VM $vm

 

자바 SDK를 이용한 예는 다음과 같습니다. 

 

 

VirtualMachine virtualMachine = azure.virtualMachines().getById("<vm_id>");

virtualMachine .inner() .storageProfile() .osDisk() .withName("<disk-name>") .managedDisk() .withId("<disk_resource_id>"); virtualMachine.update() .apply();

 

 

다음은 GO SDK를 사용한 예입니다.

 

func UpdateVM(ctx context.Context, vmName string, diskId string, diskName string) (vm compute.VirtualMachine, err error) {

vm, err = GetVM(ctx, vmName) if err != nil { return } vm.VirtualMachineProperties.StorageProfile.OSDisk.Name = diskName vm.VirtualMachineProperties.StorageProfile.ManagedDisk.Id = diskId vmClient := getVMClient() future, err := vmClient.CreateOrUpdate(ctx, helpers.ResourceGroupName(), vmName, vm) if err != nil { return vm, fmt.Errorf("cannot update vm: %v", err) } err = future.WaitForCompletion(ctx, vmClient.Client) if err != nil { return vm, fmt.Errorf("cannot get the vm create or update future response: %v", err) } return future.Result(vmClient) }

 

*이 외에도 락플레이스의 최신 뉴스레터 소식(2021~) 을 받아보고 싶으시다면? *

락플레이스 뉴스레터 구독하기 click

 

 

*락플레이스 1:1 문의 바로가기*

 1:1 문의 바로가기 click

 

 락플레이스는 2005년에 출범하여 대한민국 리눅스의 역사와 성장을 함께 해온 오픈소스 전문 기업으로 국내 최다 엔지니어, 국내 최고 기술력, 국내외 유수기업 컨설팅의 풍부한 경험과 탄탄한 기술력으로 고객의 성공적인 오픈소스 플랫폼 구축과 응용 프로그램 전체 범위의 서비스를 제공하고 있습니다. 락플레이스는 레드햇코리아로부터 Elite Business Associate/Advanced Business Parter/채널 어워드 한국  파트너/FY15 champion 등을 수상 파트너며, Microsoft Microsoft Cloud Solution Partner(CSP)로서 함께하고 있습니다