가상화 개요
1) 가상화 배경
- 1960년대에 가상화 개념이 처음 등장하였지만 하드웨어의 성장으로 2000년대에 이르러서야 주목받음
2) 가상화 종류
- 서버 가상화
- 가장 일반적인 가상화 기술
- 서버를 가상의 머신으로 만들어 사용
- CPU나 메모리 등을 논리적으로 나누어 사용하여 리소스 활용률을 높이는 기술
- 소프트웨어가 필요
- 네트워크 가상화
- 네트워크 방화벽과 보안 장비들을 모두 가상머신으로 구현 가능
- 하나의 통합된 여러 개의 물리적 환경의 장치들을 가상으로 쪼개어 사용 가능
- 네트워크를 더욱 유연하고 빠르게 제공가능
- NFV(Network Function Virtualization), SDN(Software Defined Network)가 있음
- 스토리지 가상화
- 디스크 RAID처럼 여러 개의 물리적인 드라이브를 하나의 논리적 드라이브처럼 사용하는 기술
- 디스크를 효율적으로 사용 가능
- 확장 가능
- 컨테이너 가상화
- 호스트 운영체제에서 논리적 구역을 만들어 서로 독립적인 애플리케이션(컨테이너)을 실행하는 기술
- 서버 가상화보다 리소스를 효율적으로 사용 가능
- 빠른 배포 가능
서버 가상화
1) 서버 가상화 개요
- 가상 머신을 생성할 때 사용하는 가장 일반적인 가상화
- CPU나 메모리와 같은 시스템 자원을 나누어주는 파티셔닝 기실이 필요
- 소프트웨어, 하드웨어 파티셔닝이 있으며 현재는 소프트웨어 파티셔닝을 주로 사용
- 소프트웨어 파티셔닝은 소프트웨어를 사용하여 가상 머신에게 시스템 자원을 할당하게 되는데 이 역할을 하는 소프트웨어를 하이퍼바이저라 함
2) 하이퍼바이저
- 호스트가 소프트웨어 파티셔닝을 할 수 있게 만들어주는 소프트웨어
- 가상 머신의 리소스 관리 및 리소스간 접근 방지 기능을 함
- VMware, Xen, VirtualBox, KVM이 있음
리눅스 컨테이너
1) 리눅스 컨테이너 개요
- 컨테이너 가상화 기술을 사용
- 애플리케이션이나 이에 필요한 라이브러리 및 설정파일 등이 포함
- 가상 머신과 다르게 가상화 계층이 없고 커널이 별도로 존재하지 않아 가볍고 실행 속도가 빠름
- 도커가 개발된 이후로 활발히 사용
2) 사용하는 기술
- cgroup(Control group)
- namespace
3) cgroup
- 프로세스 또는 쓰레드를 그룹화 하여 관리하는 기능과 시스템 리소스의 사용을 제한
- 서로 다른 컨테이너에 영향을 주지않도록 막아주는 역할을 함
4) namespace
- 다수의 오브젝트를 격리하는데 사용
- 다른 namespace에서 동일한 PID 사용 가능
'Study > CS' 카테고리의 다른 글
[DB] 트랜잭션 (0) | 2022.10.04 |
---|---|
[Network] HTTP 통신은 Stateless가 맞을까? (2) | 2022.08.21 |
[자료구조] 해쉬 테이블(Hash table) (0) | 2022.07.28 |
[CS] 객체 지향 (0) | 2022.07.02 |
[문자열] 문자(아스키코드-asciicode, 유니코드-unicode)와 인코딩(utf-8, base64) (0) | 2022.05.25 |