일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- T-검정
- dict
- DataFrame
- 유사도
- 교차검증
- 밀도기반
- 다중공선성
- DBSCAN
- 병렬 쿼리 시스템
- merge
- list
- Python
- 딕셔너리
- distribution
- SPLIT
- 분산분석
- cross validation
- pig
- k-means
- Sawzall
- hive
- join
- pca
- SQL on 하둡
- 가설검정
- 하둡
- 결정계수
- 분포
- p-value
- 데이터프레임
- Today
- Total
one of a kind scene
4-3 데이터 처리 기술_클라우드 인프라 기술 part3_CPU 가상화 본문
CPU 가상화
CPU 가상화에서는 '하이퍼바이저(Hypervisor)'를 떠올리자
1. 하이퍼바이저(Hypervisor)의 개념 및 특징
• 물리적 서버 위에 존재하는 가상화 레이어(층)을 통해 운영체제를 수행하는데 필요한 하드웨어 환경을 가상으로 만들어 준다.
• 하이퍼바이저(Hypervisor)는 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하도록 하기위한 논리적인 플랫폼(platform)을 의미
• 엄격하게 구분할 경우에는 차이가 있지만 일반적으로 가상머신(Virtual Machine)을 '하이퍼바이저'라고 할 수 있으며, 하이퍼바이저는 VMM(Virtual Machine Monitor)라고도 함
• 하이퍼바이저는 서버 가상화 기술의 핵심으로 x86 계열 서버 가상화에서는 소프트웨어 기반으로 하이퍼바이저를 구성
• 하이퍼바이저를 통해 사용자는 추가 하드웨어 구입 없이 새로운 운영체제의 설치, 애플리케이션의 테스팅 및 업그레이드를 동일한 물리적 서버에서 동시에 수행 가능
2. (참고)하이퍼바이저의 기능
• 하드웨어 환경 에뮬레이션(Emulates a complete hardware evnironment)
• 실행환경 격리(Isolate execution in each VM)
• 시스템 자원 할당(Allocates platform resources-processing, memory, I/O, storage)
• 소프트웨어 스택 보존(Encapsulates software stacks including the OS and state information)
3. 하이퍼바이저 관련 기술의 분류
① 플랫폼별 분류
x86 계열 | 유닉스 계열 | 메인 프레임 계열 |
VMware, Xen MS Virtual Server |
IBM의 POWER Hypervisor | z/VM과 하드웨어 펌웨어로 분류되는 PR/SM 등 |
② 하이퍼바이저의 위치와 기능에 따른 분류
• 하이퍼바이저가 물리적인 하드웨어 또는 호스트 운영체제와의 관계에서 어디에 위치하는지에 따라 베어메탈(Bare-metal) 하이퍼바이저와 호스트 기반(Hosted) 하이퍼바이저로 나뉨
종류 | 개념 | 사례 |
베어메탈 가상화 (Bare-metal Virtualization) |
• 베어메탈 하이퍼바이저를 사용하는 서버 가상화 • 베어메탈 하이퍼바이저는 하드웨어와 호스트 운영체제 사이에 위치 |
• 완전 가상화(Full Virtualization) : VMware ESX, MS VirtualPC/ Server |
• 반 가상화(Para Virtualization) : Denali, Xen |
||
호스트 기반 가상화 (Hosted Virtualization) |
• 호스트기반 하이퍼바이저를 사용하는 서버 가상화 • 호스트기반 하이퍼바이저는 호스트 운영체제와 게스트 운영체제 사이에 위치 사이에 위치 |
• Vmware Wrokstation |
컨테이너 기반 가상화 (Container-based Virtualization) |
• 책에 별도 설명없었음 ㅠㅠ | • OpenVz, Linux-Vserver, FreeBSD Jails |
③ privileged 명령어 처리 방법에 따른 분류
• privileged 명령어는 하드웨어에 대한 제어를 하는 명령어
• x86 아키텍처에서 가상화 기술의 핵심은 가상머신이 요청하는 privileged 명령어를 1)어떻게,
2)어떤 계층에서 처리하느냐 이다.
• 완전가상화, 반가상화로 나누는 방식은 privileged 명령어를 어떻게에서 처리하느냐를 기준으로 나눔
• privileged 명령을 하이퍼바이저가 모두 다루냐? 일부만 다루냐? 에 따라 나뉨
• 완전가상화 : privileged 명령어를 하이퍼바이저가 모두 다룸
• 반가상화 : privileged 명령어를 게스트 운영체제에서 hypercall로 하이퍼바이저에게 전달한것만 다룬다
• x86 계열 운영체제는 자신의 모든 하드웨어에 대한 제어 소유권을 갖고 있다는 가정 아래 하드웨어에 직접명령을 수행하는 방식으로 디자인 됨
• 가상화는 사용자 어플리케이션인 Ring3레벨로 수행됨
• 가상머신 내에서도 운영체제가 필요하고 이 운영체제는 Ring 0의 권한이 필요. 따라서, 가상머신의 운영체제가 응용 애플리케이션 권한(Ring 3)으로 수행될 경우 x86 아키텍처에서는 복잡한 문제 발생
• 그래서, Ring 3에서 수행된 가상머신 운영체제에서 Ring 0 수준의 명령을 호출하면 가상화를 지원하는 계층에서 이를 Ring 0 수준의 명령어로 다시 변환해 실행해야함. 이를 위해 가상화 지원 계층은 반드시 Ring 0 레벨(Intel VT-x, AMD-V에서는 Ring -1)로 수행되어야함.
4. 가상화 방식의 분류(6가지)
① 완전 가상화 : 'trap' 이라는 용어 기억!
• 완전 가상화란 하이퍼바이저보다 우선순위가 낮은 가상머신에서는 실행되지 않는 privileged 명령어에 대해서 하이퍼바이저가 trap을 발생시켜 실행하는 방식
• 즉, 하이퍼바이저가 모든 명령어를 핸들링 하다보니 부담이 커 성능에 영향이 있음
• VMware ESX server, MS Virtual Server 등의 제품이 완전 가상화 기반 솔루션
• 초기 Xen에서는 완전 가상화를 지원하지 않았지만, 최근 Intel VT-X, AMD-V 환경에서 완전가상화를 지원
완전 가상화의 장점과 단점 | |
장점 | • CPU뿐만 아니라 메모리, 네트워크 장치 등 모든 자원을 하이퍼바이저가 직접 제어·관리 • 따라서, 어던 운영체제라도 수정하지 않고 설치 가능 • MS 윈도우 같은 Guest OS가 하이퍼바이저 상에서 변경되지 않은 상태로 실행될 수 있음 |
단점 | • 하이퍼바이저가 자원을 직접제어하기 때문에 성능에 영향을 미쳐, 반가상화에 비해 속도가 느림 • 자원들이 하이퍼바이저에 너무 밀접하게 연관돼있어 운영 중인 게스트 운영체제에 할당된 CPU나 메모리 등의 자원에 대한 동적변경 작업이 단일 서버 내에서는 어려움 • 자원에 대한 동적 변경을 하기 위해서는 VMware의 VMotion과 같은 솔루션의 도움을 받아야 함 |
② 하드웨어 지원 완전 가상화 : Ring -1 계층 얘기 나오면 하드웨어 지원 완전 가상화
• 최근 완전 가상화 방식에서 Intel Vt-x, AMD-V CPU의 하드웨어에서 제공하는 가상화 기능을 이용
• 가상머신에서 메모리와 CPU 등의 하드웨어에 명령을 내릴 수 있는 반가상화 수준의 성능을 발휘하도록 개선하고 있음
• CPU에 Ring -1 계층이 추가되었으며, 하이퍼바이저는 Ring -1에서 수행됨
• 가상머신의 운영체제(Guest OS)는 Ring 0에서 수행되어(보통 Ring 3에서 수행됨) privilieged 명령어에 대해 추가로 변환 과정이 필요 없음
(참고 사항)
• 하이퍼바이저를 거쳐 바로 하드웨어로 명령이 전달돼 빠른 성능 보장
• 인텔에서 제시하는 하드웨어 지원 가상화 사용시 주의점 : "하드웨어 지원 가상화를 사용하는 경우 CPU 사용률이 높아짐. 특히 I/O나 메모리를 많이 사용하는 경우 CPU 사용률이 높아짐. 따라서, 서버 통합을 목적으로 하는 경우 비효율적일 수 있음
• 인텔에서는 반가상화와 하드웨어 지원 완전 가상화를 모두 사용하는 하이브리드 가상화를 제시
• Xen을 이용한 하이브리드 가상화의 경우, 반가상화용으로 수정된 운영체제에 하드웨어 지원 완전 가상화 모듈을 탑재해 명령어의 종류에 따라 반가상화 또는 완전 가상화를 선택.사용 하도록 함
③ 반가상화 : 'hypercall' 용어 기억!
• privileged명령어를 게스트 운영체제에서 hypercall로 하이퍼바이저에 전달하고, 하이퍼바이저는 hypercall에 대해서 privileged 레벨에 상관없이 하드웨어로 명령을 수행
• hypercall은 게스트 운영체제에서 요청하면 하이퍼바이저에서 바로 하드웨어 명령을 실행하는 call
• 반가상화가 적용된 게스트 운영체제는 CPU나 메모리와 같은 자원에 대한 직접적인 제어권을 가짐으로써 자원의 변화와 같은 동적 가상화 환경에 유연하게 적응 가능
• 따라서, 반가상화 기반에서는 CPU 메모리 자원의 동적 변경이 서비스 중단 없이 이루어 질 수 있으며, 완전 가상화에 비해 성능이 뛰어남
• 반가상화는 privileged 명령어를 직접 호출(hypercall)하므로 속도는 빠르나, 커널을 변경해야하고(=게스트 운영체제를 수정해야한다는 얘기), 완전 가상화는 dynamic binary traslation(Xen은 emulation)모듈과 통신을 통해 처리하므로 속도는 느리나 커널 변경이 없다
(참고 사항)
• VMware와 같은 상용 솔루션은 완전 가상화와 반가상화의 장단점을 보완해 아키텍처, 기능, 성능 등에서 뚜렬한 차이가 없음
• VMI(Virtual Machine Interface)라는 표준 인터페이스를 제시하고, 이 인테페이스를 준수하는 모든 게스트 운영체제를 지원하는 체계로 반가상화를 지원하고 있음
• VMI는 아직 정식 표준으로 채택되지 않았지만 리눅스 진영에서도 도입하려는 움직임이 나타나고 있음
④ Monolithic vs Microkernel
• 하드웨어에 대한 드라이버가 어느 계층에 있느냐에 따라 Monolithic 방식과 Microkernel 방식으로 구분ㄷ할 수 있음
Monolithic 방식 | Microkernel 방식 |
• 가상머신이 I/O를 위해 하드웨어에 접근할 때 사용하는 드라이버를 하이퍼바이저 계층에서 모두 갖고있는 방식 • 반가상화 그림을 보면 VMware의 경우 하이퍼바이저가 드라이버를 갖고있으며 모든 I/O 요청은 하이퍼바이저가 수행 • 성능은 조금 향상될 수 있지만 하이퍼바이저에게 모든 드라이버를 가지고 있어야하기 때문에 하드웨어가 추가되거나 드라이버가 업데이트 되는 경우 하이퍼바이저가 수정되어야하고 더 많은 코드를 가지고있기 때문에 장애가 발생할 가능성도 높다 |
• 가상머신 I/O를 위해 하드웨어에 접근할 때 사용하는 드라이버를 각 가상머신에서 드라이버를 갖는 방식 • Xen에서 하이퍼바이저는 드라이버가 없으며 호스트 운영체제가 드라이버를 가지고 있고, 각 게스트 운영체제는 가상드라이버를 가지고있어 I/O 요청을 위해서는 호스트 운영체제를 거쳐야 함 • 게스트와 호스트 운영체제는 서로 격리되어 있기때문에 하이퍼바이저(또는 VMBus)를 이용해 요청을 주고 받음 • 속도는 조금 느리지만 하이퍼바이저 계층이 간단하여 드라이버 업데이트나 하드웨어 추가에 따른 하이퍼바이저 변경이 필요 없음 따라서, 장애 발생 확률이 훨씬 낮다 |
<하이퍼바이저 기반 가상화 기술 비교>
구분 | 완전 가상화 (CPU 기술 이용 안함) |
완전 가상화 (CPU 기술 이용) |
반가상화 |
사용기술 | 바이너리 변환, Direct Execution |
Privileged Instruction은 Ring -1로 처리됨 |
수정된 OS 사용 |
게스트OS 반응/호환성 |
게스트 OS 변경 필요 없음, 호환성이 뛰어남 |
게스트 OS 변경 필요 없음, 호환성이 뛰어남 (단, CPU가 지원해야함) |
hypercall을 가능하도록 게스트 OS 변경함, 호환성이 안좋음 |
성능 | 좋음 | Fair (점점 Binary Translation 방식의 성능에 근접) |
특정 경우에 더 좋음 |
게스트 OS가 하이퍼바이저에 독립적인가? |
독립적 | 독립적 | Xen Para Virtualization은 Xen 하이퍼바이저에서만 동작, VMI 규칙을 따르는 VMI-Linux는 하이퍼바이저에 독립적 |
제품 | VMware, Microsoft, Parllels |
VMware, Microsoft, Xen, Parllels |
VMware, Xen |
⑤ 호스트 기반 가상화 : 하이퍼바이저가 호스트 운영체제 위에 탑재, 옛날 하드웨어 및 운영체제 테스트 환경에서 많이 사용되었고 요즘은 잘 안씀
• 호스트 기반 가상화는 완전한 운영체제가 설치되고, 가상화를 담당하는 하이퍼바이저가 호스트 운영체제 위에 탑재하는 방식
• 다른 가상화 환경에 비해 성능은 물론 자원 관리 능력 측면에서도 제약 사항이 많은 편
• 가장 큰 단점은 단일 운영체제의 취약성이다. 예를 들어 호스트 운영체제 레벨에서 보안 이슈가 발생할 경우 전체 게스트 운영체제의 신뢰성에도 문제가 발생할 수 있음
• 주로 테스트 환경에서 많이 사용되었으며 최근에는 많이 사용하지 않음
• 호스트 기반가상화의 대표적 사례로는 VMware, Workstation, Microsoft Virtual PC등이 있음
• 기존 레거시 애플리케이션 중 아주 오래된 하드웨어와 그 하드웨어를 지원하는 특정 운영체제에서만 수행되어야 하는 애플리케이션을 가상화 기반에서 운영하는 경우에 사용할 수 있음
⑥ 컨테이너 기반 가상화 : 운영체제만을 가상화한 방식
• 컨테이너 기반 가상화는 호스트 운영체제 위에 가상의 운영체제를 구성하기 위한 운영 환경 계층을 추가하여 운영체제만을 가상화한 방식
• 컨테이너 기반 가상화 방식에서 가상화를 지원하는 계층을 하이퍼바이저라 하지 않고, 가상 운영환경(Virtual server environment)라고 부름
• 컨테이너 기반 가상화에는 오픈소스 진영의 OpenVZ와 OpenVZ를 상용화한 Virtuozzo, Solaris Containers, Linux-VServer등 여러 솔루션이 있음
장점 | 단점 |
• 운영체제만을 가상화 대상으로 하므로 전체 하드웨어를 대상으로 하는 하이퍼바이저 기반 가상화 방식에 비해 훨씬 적게 가상화함 • 가상화 수준이 낮기 때문에 다른 방식에 비해서 빠른 성능을 보임 • 한 대의 서버에서 더 많은 컨테이너를 실행할 수 있음 |
• 자원 간 격리 수준이 낮아 하나의 가상 운영 체제에서 실행되는 애플리케이션의 자원 사용에 따라 다른 가상 운영체제가 영향을 받음 • 호스트 운영체제의 보안 취약성에 의해 모든 가상 운영체제에 문제가 발생할 수 있음 • 호스트 운영체제를 공유하기 때문에 호스트 운영체제의 문제가 전체 가상 운영체제에도 영향을 미침 |
<하이퍼바이저 기반 가상화와 컨테이너 기반 가상화 비교>
구분 | 하이퍼바이저 기반(Full, Para) | 컨테이너 기반 |
하드웨어 독립성 | 가상머신 내에서 완전 독립 | 호스트 OS 사용 |
OS 독립성 | 호스트 OS와 완전 독립 (리눅스와 윈도우 머신 동시 사용 가능) |
호스트 OS와 게스트OS 동일 |
격리 수준 | 높은 격리 수준 | 낮은 격리 수준 |
관리 | 가상머신 별로 별도 관리 | 공통 SW 중앙 집중식 관리 |
성능 | 높은 오버헤드 발생 성능 향상을 위해 HW 가상화 기술 병행 |
오버헤드 거의 없음, HW 자원의 대부분을 활용 |
응용분야 | 이기종 통합(윈도두와 리눅스 혼합 환경) | 단일 OS 환경 자원 통합 대규모 호스팅 업체 |
대표제품 | VMware ESX, MS Virtual Server, Xen(Para Virtualization) |
Virtuozzo(상용, OpenVZ-공개) Sun Solaris Container |
(참고) 가상화 vs 반가상화
https://sarc.io/index.php/cloud/858-full-virtualization-paravirtualization
'ADP > 이론' 카테고리의 다른 글
4-3 데이터 처리 기술_클라우드 인프라 기술 part5_I/O 가상화 (0) | 2020.01.27 |
---|---|
4-3 데이터 처리 기술_클라우드 인프라 기술 part4_메모리 가상화 (0) | 2020.01.27 |
4-3 데이터 처리 기술_클라우드 인프라 기술 part2_서버 가상화 (0) | 2020.01.23 |
4-3 데이터 처리 기술_클라우드 인프라 기술 part1_클라우드 컴퓨팅 (0) | 2020.01.22 |
4-2 데이터 처리 기술_분산 컴퓨팅 기술 part3_SQL on 하둡(임팔라) (0) | 2019.12.23 |