본문 바로가기

AWS/파워쉘로 배우는 AWS

[쉬어가기] VM 리소스 정의

문서는 VM 기본에 대해 정의한 문서입니다. 굳이 읽으실 필요 없으신 엔지니어 분들은 넘어가셔도 상관 없습니다.

 

고의적이진 않았는데 [쉬어가기] 코너가 자주 나오네요. 무거우면서도 가벼운 주제인데요. VM 대해서 기초지식이 있어야 다음 스텝으로 넘어갔을 이해가 쉬울 같아 [쉬어가기] 코너로 정리해 봅니다.

 

우선, VM(Virtual Machine)이라는 단어를 살펴보면 그대로 가상 컴퓨터입니다. 논리적으로 만들어진 컴퓨터라는 의미인데요. 많은 수식어와 정의가 난무해도 결국엔 VM '컴퓨터'라는 녀석입니다.

 

컴퓨터에는 CPU Memory 있어야 하고, 리소스를 연결해주는 Bus 존재해야 합니다. 데이터를 보존하려면 장기 보관장치인 디스크가 필요하고, 입출력에 있어서 키보드, 마우스, 모니터 같은 중간 매개체가 존재해야 합니다. 컴퓨터 혼자서 계산처리를 하면 상관없지만, 다른 컴퓨터와 연결이 되려면 NIC라는 네트워크 인터페이스도 필요합니다. 그리고 모든 장치와 리소스들을 제어할 있는 제어장치도 필요하고요.

 

당연한 개념이죠? 여러분이 컴퓨터 교육을 받으셨다면 컴퓨터 이론에서 배웠을 법한 내용들 입니다. 물론 물리 머신에 대한 내용들입니다. 내용들을 가상화, 추상화 개념으로 전환한다면 어떻게 될까요?

일단, 추상화 개념이 실현되려면 물리적 장소가 필요합니다. VM이라는 추상화 개념을 물리적 장소에서 구현한다면 당연히 물리적 머신이 필요하겠죠? 그러면 다음과 같은 그림이 그려집니다.

 



 

물리 머신에서 가상 머신을 실행하는 처럼 보입니다. 그럼 물리 머신의 리소스 들을 가상 머신에 나누어 준다고 생각하면 어떻게 나눌 있을까요?

  1. CPU

간단하게 생각하면 CPU Core 개수로 나눌 있을 같습니다. 그러나 CPU Core수로 리소스를 나눈다면 비용적 측면에서 매우 손실이 것으로 예상되네요. 보통 CPU CDMA 사용하여 계산처리를 하니 가상 머신에도 CDMA 이용하여 리소스를 분할하는 것이 좋겠네요.

  1. Memory

메모리는 휘발성 저장장소이니 저장해야 주소 값을 기준으로 가상 머신에게 할당 주는 방법이 좋겠습니다. 해당 방법 말고 좋은 방법을 생각해 내셨다면, 당신은 혁명을 일으키실 있습니다.

  1. Disk

Disk 마찬가지로 저장장소이니 저장해야 주소 값을 기준으로 가상 머신에게 할당 주면 되겠네요. 단지, Disk 장기 저장장소이니 File 형태로 저장하면 보다 손쉽게 구성할 있을 것입니다.

  1. Network

Network는…. 나누기가 애매하네요. VM 가상 NIC 주고, 물리 머신에서 가상 NIC 물리 NIC Mapping Table 관리해서 패킷을 조절하는 방법이 제일 좋겠습니다. (해당 기능을 NIC에서 수행하도록 하는 기능이 SR-IOV라는 기술입니다. NIC 종속된 기술입니다.)

위와 같이 정의가 되었다면, VM 만들기 위해서 필요한 정보는 무엇일까요? CPU 할당량, Memory 할당량, Disk File, 가상 NIC 이렇게 4개만 있으면 VM 제작할 있을 같습니다. 나머지 Bus 기타 내용들은 프로그램에서 구현하면 되겠군요.

 

VM Disk File 관리한다면 Disk File OS 설치하고, 복제해서 사용하면 OS 설치할 필요가 없지 않을까요? 그래서 나오게 것이 바로 Templet(AWS에서는 AMI - Amazon Machine Image 라고 합니다.)이라고 합니다. OS의 설정을 여러 하는 것이 아니라 한번 설정한 Disk File 복제하여 새로운 가상 머신을 만들어내는 것이죠.

 

위의 내용들을 종합해 보면 가상 머신을 고객에게 서비스하려면 가지 편의기능을 제공해야 합니다. 그것 들이 바로 Templet(AMI) 사용 가능한 리소스(Instance Type), OS 기본보안인 Password (Key-pair), Network 보안인 Firewall(Security Group), OS 또는 별개의 저장장치(EBS), 가상 NIC(Network Interface), 그리고 가상 네트워킹(VPC, Subnet) 입니다.

 

사실 내용만 해도 하나의 주제로 떼어내서 열심히 설명해도 2~30개의 블로깅을 해야 합니다만, 여기서는 간단하게 VM에서 필요한 리소스를 정리함으로써 개념 공유 정도로만 이해하셨으면 좋겠습니다.