[CS] 가상화

img한 장 요약

가상화

물리적인 하드웨어(HW) 장치를 논리적인 객체로 추상화 하는 것

img

- 프로세서(CPU), 메모리(Memory), 스토리지(Storage), 네트워크(Network) 등의 컴퓨팅 자원을 쪼개거나 합쳐서 사용

- 자원을 효율적으로 사용 및 분산처리 가능

가상 머신(VM)

가상화를 통하여 구현되는 복제된 컴퓨팅 환경, 물리적 컴퓨터와 동일한 기능을 제공하는 소프트웨어 컴퓨터

- 가상 머신이 제공하는 환경과 자원에 제한을 받음

- 하나의 물리 자원(컴퓨터) 위에 하나의 환경(OS)만 있는 것을 효율화 ▶ 가상화층 생성 ▶ OS 새로 설치

img

시스템 가상 머신(하드웨어 가상 머신)

- 완전한 운영체제(OS) 제공

- 물리 컴퓨터 다중화(multiplex), 모든 하드웨어 자원 가상화

게스트 운영 체제 같은 물리 컴퓨터에서 실행되는 각각의 운영 체제를 가지는 여러 개의 가상머신 - 다른 장치가 충돌을 피하기 위해 각 장치에서 실행하기 위한 서버 통합(server consolidation)에서 사용 - 제품 품질의 고립 (QoS 고립)

- 하이퍼바이저(가상 머신 모니터 VMM) ▶ 하드웨어 또는 호스트웨어 체제 위에서 그대로 실행 가능

하이퍼바이저

- 가상화를 제공하는 소프트웨어 계층

- 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행시키기 위한 논리적 플랫폼

- VMWare, Red Hat(KVM), Paraellels, Oracle Virtualbox 등 다양한 하이퍼바이저 존재 ▶ OpenStack을 설치하기 위해서는 Red Hat의 KVM(Kernel-based Virtual Machine)이 표준

img

☁ TYPE 1 - 베어메탈 기반 가상화: 하이퍼바이저가 하드웨어를 직접 제어하여 게스트 OS를 올리는 방식

☁ TYPE 2 - 호스트 기반 가상화: 하이퍼바이저가 일반 프로그램과 같이 호스트 운영체제에서 구동

장점

✔ 같은 컴퓨터에서 운영 체제가 서로 독립적 ▶ 멀티부팅 어려움X, 관리 용이, 테스트 환경 적합

✔ 실제 컴퓨터가 제공하는 것과 다른 형태의 명령어 집합 구조(ISA) 제공

단점

✔ 독립적인 플랫폼 생성 시 OS 작업 반복 ▶ 확장성 감소

✔ 자원이 유동적으로 관리되지 않아 비효율적

프로세스 가상 머신

- 응용 프로그램 가상 머신 ex) 자바 가상 머신 (JVM)

- 운영 체제 안에서 일반 응용 프로그램을 돌리고 단일 프로세스를 지원

- 플랫폼 독립성 허용, 기초가 되는 하드웨어나 운영 체제의 상세한 부분을 가져오는 독립 프로그래밍 환경 제공

컨테이너

실행의 독립성을 확보하는 운영체계 수준의 격리 기술 ▶ 개별 소프트웨어의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 다른 환경의 간섭을 막음

img

- 애플리케이션과 실행에 필요한 라이브러리, 바이너리, 구성 파일 등을 패키지로 묶어서 배포 ▶ 운영 환경이 바뀌어도 실행에 필요한 파일이 같이 존재 ▶ 오류 최소화

- OS 레벨에서 프로세스 격리 ▶ 모듈화된 프로그램 패키지 수행

- 📢 운영체제가 포함되어 있지 않음 ▶ 가벼움

장점

✔ 가상머신보다 가벼움⬆, 리소스 효율성⬆, 이식성⬆, 회전 속도⬆ ▶ 하나의 물리 서버에 더 많은 응용 프로그램을 더 쉽게 구동

Docker

컨테이너의 대표적인 기술

img

- Docker 컨테이너는 여러 image(하나의 패키지로 묶인 바이너리)들의 레이어로 구성

- 개발한 애플리케이션 실행에 필요한 모든 것이 포함된 Docker 이미지 작성 ▶ Docker 설치 환경에서 모두 작동

Docker Image 애플리케이션 실행에 필요한 파일이 저장된 디렉토리

Base image: 컨테이너의 운영체제 포함 ▶ 호스트의 OS와 다를 수 있음 > 완전한 운영체제 X > 파일 시스템과 바이너리만 포함 > Base image 위에 다수의 이미지가 올라감

- 유니온 파일 시스템: 각각의 레이어 별로 하나의 복사본만 local에 보관 가능

img

ex) 컨테이너1: a, b, c 레이어 컨테이너2: a, b, d 레이어 ▶ local 또는 repository: a, b, c, d 각각 하나의 복사본만 저장

ex) 위 그림에서 Image2는 Image1과 같은 부모 이미지 공유 + 2개의 레이어를 부가적으로 가짐

Docker 기능

img

- Build: Docker 이미지 생성

- Ship: Docker 이미지 공유

- Run: Docker 컨테이너 작동