반응형
SMALL
1. 가상화란?
- 우선, 회사에서는 하나의 물리 서버를 보다 효율적으로 사용하길 원합니다.
- 이런 필요에 의해서 '가상화 기술'이 발전하게 되었고 현재에 이르러
VM이나 컨테이너같은 기술들이 만들어지게 되었습니다. - 이러한 가상화 기술은, 물리적인 하드웨어를 논리적으로 구분하는 것
- 즉, 하나의 하드웨어에서 여러개의 시스템을 효율적으로 사용 할 수 있게 해주는 것입니다.
- 가상화는 크게 2가지 유형이 존재하는데
1. 가상머신(vm) - 하이퍼바이저를 이용하여 리소스 전체를 가상화하는 방법
2. 컨테이너(container) - OS수준에서 프로세스를 컨테이너 형태로 격리하는 방법
VM은 다시 한번 정의를 하자면 물리적 컴퓨터와 동일한 기능을 제공하는 소프트웨어 컴퓨터입니다.
그리고, 여기에서 '하이퍼바이저'라는 용어가 나오는데 우선 하이퍼바이저에 대해서 알아보도록 하자.
가상화 이전 | 가상화 이후 |
1. Application들이 OS단위에 올라가 있음. | 1. Application들이 os 위가 아닌 가상머신 위에 올라감 |
2. OS들은 CPU, 메모리, 디스크 같은 하드웨어 환경으로 구성 | 2. 여러가지 컴퓨터들을 띄울 수 있는 환경이 만들어짐 |
3. 하나의 컴퓨터에는 하나의 App만 운영할 수 있음. | 3. 하나의 컴퓨터에 여러가지 환경을 가진 App을 운영할 수 있음. |
2. 각 OS마다 '커널' 이 존재함.
- 커널이란 하드웨어를 제어하기 위한 명령어
- 여기서 주목할건 "OS마다 명령어를 해석하는 규칙이 다름"
ex) 인사 = hello, Hello, HELLO
ex) 덧셈 = add(맥), ADD(레드햇), Add(윈도우) - 나라마다 언어가 다르듯 어떠한 연산을 하려 할 때 위에 예시들처럼 같은 의미이지만 말하는 바(알고리즘)가 다르기 때문에 처리할 명령을 이해할 수 없다. 즉, OS는 같은 의미라는 것을 알지만 하드웨어는 모른다는 것이다.
- 그러면, 어떻게 이러한 명령어들을 이해해서 각각 OS를 구동하게 할 수 있을까?
--> OS의 커널을 수정해야한다 (= OS의 소스를 까서 수정을 해야한다는 뜻 = Guest OS를 수정해야한다는 뜻)
----> 윈도우는 오픈소스가 아니고 리눅스는 오픈소스이기 때문에 리눅스가 위 방법을 가장 먼저 도입했다고 함.
------> 요즘은 윈도우도 Xen에서 제공하는 툴로 전부 다 가능하다고 한다.
----> ★하이퍼바이저★
------> 하이퍼바이저가 각 OS마다 말하는 명령을 하드웨어가 이해할 수 있게 하나의 명령어로 번역해줌!
3. 하이퍼바이저 (hypervisor)
- VM과 하드웨어간의 IO명령을 처리하는 인터페이스!
즉, 아까 이야기한 물리적인 하드웨어를 논리적으로 가상화하는 것을 담당하는 기술이 '하이퍼바이저'이다. - 가상머신을 생성하고 구동하는 프로그램 (= 가상머신 모니터)이며,
이 역시도 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼이라 말할 수 있다. - host (=ESXI에 리소스를 제공하는 물리적 컴퓨터)에서
여러 가상의 GuestOS (=VM에서 실행 되는 운영체제)를 실행하기 위한 플랫폼 이라고 볼 수 있다. - 그래서 VM 위에 올라간 OS들의 명령을 하드웨어가 이해할 수 있게 하나의 명령어로 번역해주고, 반대로 각 OS들에게 하드웨어의 리소스들을 나눠주면서 조율해줌 (운용 역할도 담당)
- ★ 정말 쉽게 생각해서, VMware를 설치하고 CentOS를 올렸다면, CentOS에서 명령들을 하드웨어와 중재하는 역할을 한다라고 이해하면 된다!!
이러한 하이퍼 바이저는 크게 2가지 타입으로 분류됩니다.
Type1 (=하이퍼바이저 가상화) | Type2 (= 호스트 가상화) |
1. native / bare-metal이라 불리는 가상화 방식 (어떤 소프트웨어도 담기지 않은 하드웨어 = 빈깡통) |
1. 일반적으로 사용하는 가상화방식(호스트형 가상화) = 기존 운영체제를 사용하는 시스템에 손쉽게 가상머신 구축 가능! |
2. Host OS가 없음 (ex: vmware의 ESXi server ) | 2. Host OS위에 하이퍼바이저가 실행되고, 그 위에 Guest OS를 올리는 방식 (ex : Virtual Box, VMware Workstation) |
3. 하이퍼바이저가 os에 종속되지 않고 하드웨어에 직접 설치되는 구조 | 3. 기존 컴퓨터환경에서 하이퍼바이저를 활용해서 설치용이, 구성 편리, Type1보다 성능이 낮음. |
4. 하이퍼바이저가 다수의 VM을 관리하는 형태 | 4. 당연히 Host OS라는 하나의 Layer가 더 존재하기 때문에 성능면에서 Type1이 Type2보다 유리함. |
5. VM에 설치된 게스트OS들은 하드웨어 바로 위에 구동됨 | 5. 실제 IDC를 클라우드화 시키는데 사용되는 하이퍼바이저를 보면 모두 Type1 방식이다. |
6. Type2 보다 성능이 좋지만 여러 하드웨어 드라이버를 세팅해야함 | 6. 리눅스에서 윈도우를 구동하고, 윈도우에서 유닉스를 구동할 수도 있다. |
4. Type-1의 전가상화 / 반가상화
전가상화 | 반가상화 |
1. Full Virtualization = 하드웨어를 완전히 가상화하는 방식! |
1. Para-Virtualization = 전가상화와 달리 하드웨어를 완전히 가상화하지 않음! |
2. 전부 가상화하기 때문에 Guest OS가 Host 시스템과 완전히 분리되어 실행됨... 따라서, Guest OS는 자신이 가상머신의 OS인지 인지하지 못함! 각 Guest OS는 'DOM 0' 이라는 관리 머신을 거쳐 하이퍼바이저와 통신하므로 CPU와 RAM처럼 I/O가 잦은 자원을 컨트롤하기에는 번거로움( -> 반가상화 방식 출현의 배경) |
2. 'Hyper Call' 이라는 인터페이스로 직접 하이퍼바이저에게 요청을 날릴 수 있게 해줌. 즉, Guest OS가 하이퍼바이저에 직접 'Hyper Call'을 날려야하니 자신이 Guest OS라는 사실을 인지해야함. |
3. 하드웨어를 완전히 가상화 하기 때문에 게스트 운영체제의 별다른 수정없이 사용할 수 있다는 장점이 있다. | 3. 따라서, 반가상화 하이퍼바이제 올라가는 Guest OS는 커널을 수정하여, Guest용 OS를 따로 만들어야함. |
4. 단점으로는 하이퍼바이저가 모든 명령을 중재하게 되기 때문에 성능이 비교적 느림. 또한, 특정 인스트럭션의 경우 하이퍼바이저가 반드시 처리해줘야함. | 4. 전가상화에 비해 성능이 빠르다는 장점이 있다. |
5. 컨테이너란?
- 컨테이너는 해운업계 솔루션이였다.
- 화물을 어떻게 하면 효율적으로 옮길까 라고 생각해봤을 때, 표준화된 컨테이너 박스를 만들고 무엇을 넣어도 표준화된 운송선만 있다면 똑같이 세워서 효율적으로 운송할 수 있는 것이 '컨테이너'
--> 이러한 컨셉을 IT에 적용한것이 바로 '컨테이너'이다. - 소프트웨어 코드, 애플리케이션 코드가 작동하기 위해 필요한 컴포넌트와 함께 표준화된 방식으로 패키징해서 컨테이너 엔진만 있으면 돌아갈 수 있도록 하는 구조를 '컨테이너'라고 정의함. (컴퓨팅 환경 간 이식성 ↑)
6. 컨테이너와 VM의 차이
- "자원 공유의 수준"
- VM은 하드웨어 가상화로 자원을 공유하는 형태라면
컨테이너는 호스트OS와 커널공간 그리고 라이브러리, 바이너리 같은 것을 공유하는 형태이기 때문에, 상대적으로 가볍고 그 가벼움으로 인해서(=하이퍼바이저와 게스트OS가 필요없다!), 이미지 카피나 부팅 시간을 줄여서 Scale-in이나 out을 가볍게 VM 대비 상당히 빠른 시간 내에 진행할 수 있게 하는 특징을 가지고 있다. (=더 많은 응용프로그램을 더 쉽게 하나의 물리적 서버에서 구동시키는게 가능함!) - 이러한 특성으로 컨테이너는 자원을 굉장히 효율적으로 사용하고 컨테이너 관리 플랫폼과 함께 활용하여 Agile, Devops, 클라우드 네이티브 애플리케이션 아키텍처를 실현하는데 가장 편한 기술로써 각광받고 있다.
- 최근에는 둘을 상호 보완적으로 사용함.
- 하드웨어를 VM으로 가상화하고 그 위에 컨테이너 환경을 활용하여 더 효과적으로 사용
또는, 특성에 맞게 특정 업무는 VM, 컨테이너를 나눠서 사용.
참고 링크
https://blog.naver.com/alice_k106/220218878967
https://suyeon96.tistory.com/52
반응형
LIST
'기초 물방울 > 리눅스&VM' 카테고리의 다른 글
VM 구성요소와 프로비저닝 유형(씬/씩) 구분. (1) | 2022.09.21 |
---|---|
vSphere와 vCenter, ESXi , VMFS 개념 정리 (1) | 2022.09.20 |
우분투 사용자, 그룹 및 권한(+ 암호재설정, user1 is not in the sudoers file) (0) | 2022.08.25 |
리눅스 쉘과 CLI 기본 명령어 (0) | 2022.08.24 |
우분투 GCP 원격 접속환경 구축(+putty) (0) | 2022.08.24 |