클라우드 컴퓨팅
: 클라우드 컴퓨팅은 동적으로 확장할 수 있는 가상화 자원들을 인터넷으로 서비스 하는 기술
3가지 유형
- IaaS(Infrastructure as a Service) : 네트워크 장비, 서버와 스토리지 등과 같은 IT 인프라 자원을 빌려주는 클라우드 서비스
- SaaS(Software as a Service) : 서비스로서의 소프트웨어를 의미하며, 소프트웨어를 웹에서 사용할 수 있게 해주는 서비스
- Paas(Platform as a Service) : 서비스로서의 플랫폼을 의미하며, 애플리케이션이나 소프트웨어 개발 및 구현 시 필요한 플랫폼을 제공하는 서비스
: VMware, Xen, KVM 등과 같은 서버 가상화 기술은 데이터 센터나 기업들에게 인프라스트럭처를 위한 클라우드 서비스의 가능성을 보여주며, IaaS에 주로 활용됨
: 아마존은 S3와 EC2 환경을 제공함으로써 플랫폼을 위한 클라우드 서비스를 최초 실현, 특히 AWS와 EMR은 하둡을 온디맨드로 이용할 수 있는 클라우드 서비스
: 구글은 AppEngine, Apps, Gears, Gadgets 등을 제공함으로써 웹 기반의 다양한 소프트웨어들이 클라우드 서비스로서 어떻게 구체화될 수 있는지를 보여주었다.
인프라 기술은 클라우드 컴퓨팅의 근간이 되는 기술이며, 인프라 기술들 중에서도 가장 기반이 되는 기술은 서버 가상화
서버 가상화 : 물리적인 서버와 운영체제 사이에 적절한 계층을 추가해 서버를 사용하는 사용자에게 물리적인 자원은 숨기고 논리적인 자원만을 보여주는 기술
클라우드 컴퓨팅 환경에서 많이 사용되는 서버는 x86계열
서버 가상화 기술의 효과
- 가상머신 사이의 데이터 보호
- 예측하지 못한 장애로부터 보호
- 공유 자원에 대한 강제 사용의 거부
- 서버 통합 : 가장 일반적인 효과, 동일한 데이터 센터의 물리적 자원(공간, 전원 등)을 이용하면서 더 많은 서버를 운영
- 테스팅
- 정확하고 안전한 서버 사이징
- 시스템 관리 : 하드웨어 장애, 로드 밸런싱, 업그레이드
CPU 가상화
하이퍼바이저(Hypervisor)의 개념
: 물리적 서버 위에 존재하는 가상화 레이어를 통해 운영체제를 수행하는데 필요한 하드웨어 환경을 가상으로 만들어줌
: 하이퍼바이저(Hypervisor)는 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하도록 하기 위한 논리적인 플랫폼
: 가상머신(Virtual Machine)이라고도 불림
: 하이퍼바이저는 서버 가상화 기술의 핵심
하이퍼바이저의 기능
: 하드웨어 환경 에뮬레이션
: 실행환경 격리
: 시스템 자원 할당
: 소프트웨어 스택 보존
플랫폼 별 분류
x86 계열 : VMware, MS Virtual Server, Xen
하이퍼바이저의 위치와 기능에 따른 분류
- 베어메탈 하이퍼바이저 : 하드웨어와 호스트 운영체제 사이에 위치
베어메탈 하이퍼바이저는 반가상화(Para Virtualizaiton)과 완전가상화(Full Virtualization)으로 구분
- 호스트 기반 하이퍼바이저 : 호스트 운영체제와 게스트 운영체제 사이에 위치
Privileged 명령어 처리 방법에 따른 분류
: 새로운 가상화 방법이 계속 나오기 때문에 서버 가상화 기술을 정확하게 분류하기는 힘들다
: x86 계열 운영체제는 자신의 모든 하드웨어에 대한 제어 소유권을 갖고 있다는 가정 아래 하드웨어 직접명령을 수행하는 방식으로 디자인돼 있다
: x86 아키텍처는 하드웨어에 대한 접근 권한을 관리하기 위해 4개의 레벨로 구성돼 있다. 일반적으로 사용자 애플리케이션 Ring 3레벨로 수행되며, 운영체제의 경우 메모리나 하드웨어에 직접 접근해야 하기 때문에 Ring 0레벨에서 수행된다
가상화 방식의 분류
- 완전 가상화
: 완전 가상화란 하이퍼바이저보다 우선순위가 낮은 가상머신에서는 실행되지 않는 Privileged 명령어에 대해서 Trap을 발생시켜 하이퍼바이저에서 실행하는 방식
: VMware ESX Server, MS Virtual Server
장점 : CPU뿐만 아니라 메모리, 네트워크 장치 등 모든 자원을 하이퍼바이저가 직접 제어, 관리하기 때문에 어떤 운영 체제라도 수정하지 않고 설치 가능
단점 : 하이퍼바이저가 자원을 직접 제어하기 때문에 성능에 영향을 미침, 자원들이 하이퍼바이저에 너무 밀접하게 연관돼있어 운영 중인 게스트 운영체제에 할당된 CPU나 메모리 등의 자원에 대한 동적 변경 작업이 단일 서버 내에서는 어려움, Para Virtualization에 비해 속도가 느림
- 하드웨어 지원 완전 가상화
: 최근에는 완전 가상화 방식에서 Intel VT-x, AMD-V CPU의 하드웨어에서 제공하는 가상화 기능 이용
: 인텔에서는 반가상화와 하드웨어 지원 완전 가상화를 모두 사용하는 하이브리드 가상화를 제시
- 반가상화
: Privileged 명령어를 게스트 운영체제에서 Hypercall로 하이퍼바이저에 전달하고, 하이퍼바이저는 Hypercall에 대해서 Privileged 레벨에 상관없이 하드웨어로 명령을 수행시킨다
: CPU와 메모리 자원의 동적 변경이 서비스의 중단 없이 이루어질 수 있으며, 완전 가상화에 비해 성능이 뛰어나다
: 반가상화는 Privileged 명령어를 직접 호출(Hypercall)하므로 속도는 빠르나 커널을 변경해야함
완전 가상화는 통신을 통해 처리하므로 속도는 느리나 커널 변경이 없다
: VMI는 표준 인터페이스를 제시하고, 이 인터페이스를 준수하는 모든 게스트 운영체제를 지원하는 체계로 반가상화를 지원하고 있다
: 수정된 OS 사용, hypercall을 가능하도록 게스트 OS 변경함, 호환성이 안좋음, 속도는 빠르나 커널 변경해야함
Monolithic vs Microkernel
: 하드웨어에 대한 드라이버가 어느 계층에 있느냐
- Monolithic : 사용하는 드라이버를 하이퍼바이저 계층에서 모두 갖고 있는 방식
- Microckernel : 각 가상머신에서 드라이버를 갖는 방식
호스트 기반 가상화
: 호스트 기반 가상화는 완전한 운영체제가 설치되고, 가상화를 담당하는 하이퍼바이저가 호스트 운영체제 위에 탑재되는 방식
: 제약 사항이 많음, 가장 큰 단점은 단일 운영체제의 취약성
: VMware, Workstation, Microsoft Virtual PC
: 주로 테스트 환경에서 많이 사용
컨테이너 기반 가상화
: 컨테이너 기반 가상화는 호스트 운영체제 위에 가상의 운영체제를 구성하기 위한 운영 환경 계층을 추가하여 운영체제만을 가상화한 방식
: 컨테이너 기반 가상화 방식에서 가상화를 지원하는 계층을 하이퍼바이저라고 하지 않으며, 가상 운영환경이라고 부름
장점 : 운영체제만을 가상화 대상으로 하므로 전체 하드웨어를 대상으로 하는 하이퍼바이저 기반 가상화 방식에 비해 훨씬 적게 가상화함, 가상화 수준이 낮기 때문에 다른 방식에 비해 빠른 성능을 보임, 한 대의 서버에서 더 많은 컨테이너를 실행할 수 있음
단점 : 자원 간 격리 수준이 낮아 하나의 가상 운영체제에서 실행되는 애플리케이션의 자원 사용에 따라 다른 가상 운영체제가 영향을 받음, 호스트 운영체제를 공유하기 때문에 호스트 운영체제의 문제가 전체 가상 운영체제에도 영향을 미침
하이퍼바이저 기반 가상화와 컨테이너 기반 가상화 비교
하이퍼바이저 기반(Full, Para)
- 하드웨어 독립성 : 가상머신 내에서 완전 독립
- OS 독립성 : 호스트 OS와 완전 독립
- 격리 수준 : 높은 격리 수준
- 성능 : 높은 오버헤드 발생, 성능 향상을 위해 HW 가상화 기술 병행
- 관리 : 가상머신 별로 별도 관리
- 응용분야 : 이기종 통합
- 대표제품 : VMware ESX, MS Virtual Server, Xen(Para Virtualization)
컨테이너 기반
- 하드웨어 독립성 : 호스트 OS 사용
- OS 독립성 : 호스트와 게스트 동일
- 격리 수준 : 낮은 격리 수준
- 성능 : 오버헤드 거의 없음, HW 자원의 대부분을 활용
- 관리 : 공통 SW 중앙 집중식 관리
- 응용분야 : 단일 OS 환경 자원 통합 대규모 호스팅 업체
- 대표제품 : Virtuozzo, Sun Solaris Container
메모리 가상화 : VMware 기법
: Vmware란 한 대의 컴퓨터로 마치 여러 대의 컴퓨터를 사용하는 것과 같이 가상의 공간을 만들어주는 프로그램
: 운영체제는 메모리를 관리하기 위해 물리주소와 가상주소를 사용
- 물리주소 : 0부터 시작해서 실제 물리적인 메모리 크기까지 나타냄
- 가상주소 : 하나의 프로세스가 가리킬 수 있는 최대 크기를 의미
: 프로그램에서의 주소는 물리적인 메모리의 주소 값이 아닌 가상주소의 값, 가상주소 값의 위치(VPN)를 실제 물리적인 주소 값 위치(MPN)로 매핑하는 과정이 필요하며 Page Table을 이용
: 매핑 연산을 하드웨어적으로 도와주는 것을 TLB라고 한다
: VMware 하이퍼바이저의 핵심 모듈은 VMkernel이다
: VMkernel은 Service Console, 디바이스 드라이버들의 메모리 영역을 제외한 나머지 전체 메모리 영역을 모두 관리하면서 가상머신에 메모리를 할당
가상머신 메모리 할당의 문제 해결을 위한 방법
- Memory Ballooning : 예약된 메모리보다 더 많은 메모리를 사용하는 가상머신의 메모리 영역을 빈값으로 강제로 채워 가상머신 운영체제가 자체적으로 Swapping하도록 한다
- Transparent Page Sharing : 동일한 내용을 담고 있는 페이지는 물리적인 메모리 영역에 하나만 존재시키고 모든 가상머신이 공유하도록 한다
- Memory Overcommitment
I/O 가상화
: 하나의 물리적인 장비에 여러 개의 가상머신이 실행되고 있는 상황에서 가장 문제가 되는 것은 I/O에서의 병목 현상
: CPU 자원의 파티셔닝만으로는 가상화 기술을 제대로 활용할 수 없으며, I/O 자원의 공유 및 파티셔닝이 필요하다
가상 이더넷
: 가상 이더넷은 대표적인 I/O 가상화 기술의 하나로, 가상화 기능 중에서 물리적으로 존재하지 않는 자원을 만들어내는 에뮬레이션 기능을 이용
: 사용자들은 별도의 물리적 어댑터와 케이블을 사용하지 않고도 네트워크 이중화, 네트워크의 안정적 단절 등의 효과를 얻을 수 있음
공유 이더넷 어댑터
: 공유 이더넷 어댑터는 여러 개의 가상머신이 물리적인 네트워크 카드를 공유할 수 있게 하며, 공유된 물리적 카드를 통해서 외부 네트워크와 통신이 가능하다
: 하나의 자원을 여러 가상머신이 공유하기 때문에 발생하는 병목현상은 피할 수 없다
가상 디스크 어댑터
: 가상화된 환경에서 가상 디스크를 이용해 가상머신이 디스크 자원을 획득하는 방법(내장디스크, 외장디스크)
'ADP > 필기 - 2과목' 카테고리의 다른 글
분산 컴퓨팅 기술 (0) | 2023.08.14 |
---|---|
분산 데이터 저장 기술 (0) | 2023.08.14 |
대용량의 비정형 데이터 처리방법 (0) | 2023.08.13 |
데이터 통합 및 연계 기법 (0) | 2023.08.13 |
EAI(Enterprise Application Integration) (0) | 2023.08.13 |