2017년 2월 8일, Azure Managed Disk라는 기능이 새롭게 런칭하였습니다.
이전에 없던 새로운 개념인가? 를 물어보신다면, 그렇지는 않습니다. 이번 포스팅은 많은 사람들이 궁금해 하는 'Managed Disk가 무엇인가?' 에 대해서 저의 언어로 손쉽게 풀어보도록 하겠습니다.
Managed Disk가 뭔가요?
Managed Disk란 말 그대로 관리형 저장장치 입니다.
Azure에서는 기존에 Blob이라는 저장소 공간(Storage Space)를 설정하고 그 위에 VM Disk , Log File, Queue, Table 등을 저장하여 활용하였습니다. Managed Disk는 이 Blob에 가상 디스크를 저장하지 않고, 가상 디스크 자체를 하나의 Azure Resource로 인식하여 개별적인 Resource로써 단독 운영될 수 있다는 점이 특징입니다. 즉, 기존에 VM을 만들기 위해서 생성하던 저장소 계정을 만들지 않아도 VM을 생성할 수 있습니다.
Managed Disk와 기존 VM Disk로 쓰였던 .vhd 는 서로 변환이 가능하며, 사용자가 원하는 시점에 PowerShell 또는 CLI 2.0을 이용하여 변환하실 수 있습니다. Azure Portal에서 변환하는 방법은 아직 찾지 못하였습니다.
그렇다면 Managed Disk가 기존 가상 디스크 사용과 차이점은 뭔가요?
Blob은 Standard와 Premium으로 나누어 지며, Standard는 용량을 설정한 후 사용한 만큼만 과금을 지불하는 반면 Premium은 할당 받은 용량 만큼 과금을 지불하였습니다.
여기서 문제가 발생합니다. 바로 VM Disk가 Blob에 종속된다는 것 입니다. 아래의 링크를 참고하시면 Blob의 한계가 있다는 것을 아실 수 있습니다.
https://docs.microsoft.com/ko-kr/azure/azure-subscription-service-limits#storage-limits
기존 VM Disk는 .vhd 파일을 직접 수정하였습니다만, Managed Disk는 직접 수정이 불가능합니다. 따라서 Managed Disk를 생성할 때 옵션 값으로는 아래와 같이 세 가지가 존재합니다.
Managed Disk를 생성할 시 Snapshot, Storage blob, None(empty disk)로 생성할 수 있습니다. 즉, Disk를 생성할 시 원본이 될 수 있는 Disk를 지정하여 복제할 수 있다는 의미입니다. Snapshot은 Managed Disk로 만들 수 있으며, 아래 설명 드리겠습니다.
Export 기능
Managed Disk는 앞서 설명 드린 것과 같이 Blob이라는 저장소에 저장되지 않아 .vhd파일을 직접 수정 및 조작할 수 없습니다. 이를 위해 Azure에서는 Export를 지원합니다.
내보내기를 실행하면 다음과 같이 URL을 얻을 수 있으며, Secure URL이 생성됩니다. 해당 URL의 만료 시간은 기본적으로 3600초(1시간)로 설정되어 있으며, 수정이 가능합니다. 이렇게 Secure URL을 생성하였다 하더라도, Managed Disk에 접근할 수 있는 권한이 없는 사용자는 URL로 접근할 수 없으며, 해당 권한은 Azure Role-Based Access Control(RBAC)을 설정해야지만 접근이 가능합니다.
한 가지 아쉬운 점은 Export를 하려면 Managed Disk가 사용중인 상태가 아니어야 합니다. 즉, VM에서 unattached 상태여야지만 Managed Disk만 Export할 수 있으며, Export를 실행한 후 Secure URL이 만료될 때 까지는 Disk를 수정 또는 접근 등의 작업을 할 수 없습니다.
물론 강제로 공유를 중지할 수도 있습니다.
Disk Size/Type 변경
Managed Disk도 기존 VM Disk와 같이 용량을 변경할 수 있습니다.
하지만 변경 시 VM과 연결이 되어있다면, 해당 VM을 종료 한 후에 수정이 가능합니다. 얼마전에 AWS에서 나온 On-time resizing 기능과 비교한다면 약간 아쉬운 기능입니다.
https://aws.amazon.com/ko/blogs/aws/amazon-ebs-update-new-elastic-volumes-change-everything/
Image와 Snapshot
Managed Disk를 사용하면 Managed Disk를 Snapshot으로 찍어 보관하실 수 있습니다. Snapshot 생성은 VM이 켜져 있든 꺼져 있든 Managed Disk가 연결이 되어 있든 안 되어 있든 상관 없이 생성이 가능합니다.
Image 생성은 Blob에 존재하는 .vhd 파일로 생성이 가능하며, 아직까지는 Managed Disk 또는 Snapshot을 이용하여 제작하는 방법은 없는 것으로 확인됩니다.
기존 Availability set과의 호환성
기존 Blob을 사용하는 VM의 Availability set과 Managed Disk를 사용하는 VM의 Availability set은 서로 호환이 되지 않습니다. Managed Disk를 사용하는 VM은 기존 VM이 사용하는 Availability set을 사용할 수 없으니 참고 바랍니다. 이런 것을 보면 두 부류의 VM이 전혀 다르게 동작하는 것 같아 보이네요.
AWS의 EBS와 굉장히 비슷해 보이는데요?
네 맞습니다. 제가 생각하기엔 AWS의 EBS가 더 많은 기능을 보유하고 있다고 생각합니다만, Azure도 계속해서 변화 하고 있으니 언젠가 EBS보다 더 좋아질 것이라고 생각합니다. 많은 피드백을 주면 그만큼 좋아지는 것이 Azure 입니다.
Virtual Machine Scale Set(VMSS)에 날개를 달다.
VMSS에 새로운 옵션이 생겼습니다. 아래 캡쳐 화면과 같이 배포 그룹을 하나로 지정 할 것인가? 에 대한 옵션입니다.
위 옵션을 False로 두게 되면 Step 2에서 VM을 설정할 시 Managed Disk만 사용이 가능하도록 수정됩니다. 위 내용의 설명을 잘 읽어보면 배포 그룹을 하나로 만들지 않고, VMSS에서 여러 개의 배포 그룹을 관리할 수 있다는 것으로 이해되며, 그 그룹은 10개 까지 가능한 것으로 보입니다. 따라서, 하나의 VMSS에서 배포 가능한 VM은 1,000대가 되며, 10대를 배포할 시 기존 Single placement group 을 관리하던 때보다 빨리 VM을 배포할 수 있다는 의미가 될 것입니다.
(테스트를 해보고 싶었습니다만… 제가 돈을 더 벌면 실제 테스트 하는 걸로...ㅋ)
AWS와 비교해 보자면, Auto Scaling Group은 기본 100개의 Instance를 제공하며, 배포 그룹도 하나에 종속됩니다. (기본 값이며, AWS Support를 이용하여 증설하실 수 있습니다.)
앞으로 추가 될 기능들…
현재 Managed Disk는 암호화(Encryption)을 지원하지 않습니다만, 향후 지원될 계획을 가지고 있으며, 꾸준히 노력할 것이라고 하네요.
Snapshot으로 Image를 만드는 것도 Azure Portal에서는 안되는 것으로 확인되며, 혹시 변경사항이 있으면 수정하도록 하겠습니다. 많은 제보 바랍니다.
이정도가 제가 분석한 내용입니다.
혹시 추가로 수정해야 할 내용이 있거나, 궁금하신 기능들이 있으시면 댓글 또는 Korea Azure User Group에 이야기 해 주세요.
긴 글 읽어주셔서 감사합니다 :)