일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- IT인프라구조
- it인프라
- 리눅스사용자생성
- 인프라
- 리눅스재부팅
- 물리서버
- centos자동로그인
- 리눅스마스터
- 웹서버
- 리눅스도움말명령어
- 센토스
- IT인프라기초
- CentOS
- DB서버
- 리눅스명령어
- 운영체제
- 인프라구조
- 리눅스사용자파일
- 리눅스사용자관리
- 서버
- linuxmaster
- root막기
- linux
- 리눅스자동로그인
- 리눅스
- 병렬처리
- OS
- 리눅스vi
- it
- 센트
- Today
- Total
Thinking Out Loud
[IT Infra 기초] 가상화 (OS, 가상머신, 컨테이너, 도커) 본문
# 가상화
1. OS
2. 가상머신
3. 컨테이너
4. 도커
5. 클라우드 ··· (나중)
# 가상화
- 컴퓨터 시스템에서 물리 리소스를 추상화하는 것
(물리 리소스 : 서버, 네트워크, 저장소 등)
- Virtual, 가상 → '실제로 존재하는 것과 같다', '사실과 거의 같다'
1. OS
- 하드웨어를 의식하지 않고 애플리케이션을 실행할 수 있는 운영체제
- 가상화 기술 중 하나
OS 등장 이전 | OS 등장 이후 |
- 하드웨어를 의식한 프로그래밍 필요, 매우 복잡한 작업 - HW의 사양을 고려해서 프로그램 작성 필요 - 메모리 관리, 멀티 태스크, 파일시스템 등도 별도 구현 필요 - 하나의 프로그램에서 발생한 오류가 컴퓨터 전체를 정지시킬 가능성 有 |
- HW 추상화 → 컴퓨터에 연결된 기억 장치나 NW를 통한 데이터 교환이 HW를 의식하지 않고 이루어짐 - 메모리의 물리 주소, 하드디스크의 물리 주소를 고려하지 않고 프로그램 개발 가능 - 가상 메모리 사용 → 프로세스 및 OS 커널의 메모리 공간 분리 ⇒ 하나의 프로그램이 실패해도 시스템 전체에 영향 X |
2. 가상머신
- 컴퓨팅 환경을 SW로 구현한 것. 컴퓨터 시스템을 에뮬레이션하는 SW
# 가상머신 방식 : 호스트 OS형 vs 하이퍼바이저형
호스트 OS형 | 하이퍼바이저형 |
![]() |
![]() |
- 윈도우즈나 리눅스 등의 호스트 OS 상에 가상화 SW를 설치해서 이용하는 것 - VMware Server, MS Virtual Server 등 - SW를 에뮬레이터하는 것 (에뮬레이터 : 다른 프로그램·장치 모방·복제) - 성능면에서 제한 有 ⇒ 하이퍼바이저형 등장 |
- 하드웨어상에서 직접 가상화 SW를 실행하고 그 위에 가상 머신을 동작시키는 기술 - VMware vSphere, Hyper-V, Xen, KVM 등 - 호스트 OS를 거치지 않아 호스트형보다 성능 우수 - 서버 가상화의 대표 기술 |
# 하이퍼바이저형 가상화 구조 : 완전가상화 vs 준가상화
완전가상화 | 준가상화 |
![]() |
![]() |
- 장점 : 물리머신상에서 동작하는 OS나 드라이버를 그대로 게스트로 이용 가능 - 단점 : SW로 에뮬레이션 → 성능 저하 문제 ⇒ 준가상화 등장 |
- 실존하는 HW를 에뮬레이션 X - 가상환경용 가상 HW를 SW적으로 에뮬레이션 - 가상환경에서 동작시키는 게스트 OS마다 준가상화 전용 드라이버나 준가상화용으로 최적화된(개조된) OS 커널을 이용해야 했었음 → 이후 인텔, AMD 등의 프로세서 제조사가 가상 HW 지원 가능 (Intel VT-x / VT-d / VT-c, AMD V/Vi 등) → 하이퍼바이저도 지원 ⇒ 현재는 완전가상화가 자리잡음 |
3. 컨테이너
- 리소스가 격리된 프로세스
- 하나의 OS상에서 여러 개를 동시에 가동 가능
# 가상머신 vs 컨테이너
- 가상머신(VM)과의 차이점 : 각각 독립된 루트 파일 시스템, CPU/메모리, 프로세스 공간 등을 사용 가능
하이퍼바이저형 가상화 | 컨테이너 |
![]() |
![]() |
# 컨테이너의 역사
1) 1970년대 chroot 개발 (빌 조이(Bill Joy))
컴퓨터 비쌈 → 상용 환경과 개발 환경 별도로 준비 시 비용↑ → 하나의 컴퓨터로 상용, 개발 환경 함께 사용
→ 문제 : 잘못된 파일 변경 및 삭제 위험 ⇒ chroot 등장
# chroot ?
- 프로세스가 OS의 루트 디렉토리 아래에 있는 특정 계층에 접근 못하도록 하는 기능
- 현재도 다양한 분야에 적용
ex) 리눅스의 레스큐 모드(Rescue Mode), FTP에서 사용자 단위로 접근 범위 한정 기능,
포스트픽(Postfix)이나 바인드(BIND) 등으로 접근할 수 있는 디렉토리 한정 기능 등
2) 1990년대 FreeBSD jail 등장
- 특정 디렉토리 이하를 루트 디렉토리처럼 보이게 하는 chroot 개념 추가
→ 애플리케이션의 프로세스 격리 가능
3) 2000년대 솔라리스(Solaris) 컨테이너 - 컨테이너 기능 제공
(빌 조이가 소속되있던 선 마이크로시스템즈(Sun Microsystems))
→ 오라클 솔라리스 11에선 "오라클 솔라리스 존(Solaris Zone)"
4. 도커
- 2013년 파일시스템과 프로세스 분리 기능 추가
→ 파일시스템 이미지의 패키징과 버저닝이 가능해짐
→ 컨테이너 이미지 공유 가능한 '도커' 등장
도커의 기본 기능 |
![]() |
- 2008년 도커 회사 개명 전 '닷클라우드(dotCloud)' 설립
목적 : 언어에 의존하지 않는 PaaS 구축
# 닷클라우드의 PaaS
- 개발한 애플리케이션을 클라우드에 배포해서 실행하는 구조
→ 애플리케이션 관련 프레임워크, 라이브러리 등의 버전 불일치
→ 로컬에서 실행된 프로그램이 클라우드에서는 실행되지 않는 문제 발생
⇒ 클라우드 내부 구조로 개발했던, 애플리케이션 실행 환경을 자동 구축해주는 '도커 이미지'라는 기술을 클라우드
이외의 환경에서도 사용할 수 있게 오픈소스로 공개
- 도커 허브 : 도커 이미지를 공유할 수 있는 레지스트리
# 도커의 장점 (vs 가상머신)
- 컨테이너 → 호스트 OS와 OS 커널 공유 ⇒ 컨테이너 실행 · 정지 속도가 빠름
- 호스트 OS의 커널 공유 → VM만 사용하는 경우와 비교해 한 대의 호스트 머신상에서 훨씬 많은 컨테이너 실행 가능
⇒ 리소스를 한 곳에서 쉽게 관리 가능
- 라이브러리 · 프레임워크 등을 도커 이미지로 묶어서 공유 가능 → 특정 환경에서는 재현되지만, 자신의 개발 환경에서는 재현되지 않는 문제가 발생하기 어려움 ⇒ 효율적인 버그 수정 가능
5. 클라우드 ··· (나중)
참고 : 야마자키 야스시 외 3, 「그림으로 공부하는 IT 인프라 구조」, 제이펍
'IT Infra' 카테고리의 다른 글
[IT Infra 기초] 동기/비동기 (0) | 2021.10.19 |
---|---|
[IT Infra 기초] 직렬/병렬 (0) | 2021.10.18 |
[IT Infra 기초] 웹 데이터 흐름 (0) | 2021.10.12 |
[IT Infra 기초] OS 커널 (0) | 2021.10.12 |
[IT Infra 기초] 프로세스와 스레드 (0) | 2021.10.12 |