반응형
: 시스템의 리소스를 논리적으로 나눠서 사용 or 여러개의 물리적인 시스템 리스소를 하나의 논리적인 리소스로 묶어서 사용하는 것
가상화의 탄생 배경
가상화의 탄생 배경에는 무어의 법칙이라는 개념이 항상 등장합니다. 무슨 관계가 있을까요? 초기 SW의 발전 속도는 HW의 발전속도에 훨씬 미치지 못하여 SW가 올라가있는 서버의 HW의 성능이 압도적으로 좋았습니다. 그래서 HW의 성능을 10~20% 밖에 사용하지 못하는 엄청난 비효율이 발생했습니다. 당시 HW의 가격이 지금보다 훨씬 비쌌기 때문에 유휴 자원에 대한 관리가 필요했었습니다. 그래서 한 개의 서버를 마치 여러 대의 서버처럼 운영하고자 했습니다.
💡 무어의 법칙이란 반도체 칩의 성능 즉, 메모리의 용량이나 CPU의 속도가 약 24개월마다 2배로 증가하고, 가격은 2배씩 낮아진다는 법칙입니다.
가상화 종류
1. 서버 가상화 : 물리적인 컴퓨터를 가상머신으로(논리적으로) 만들어 사용하는 기술
- 가상머신 : 물리적인 하드웨어 시스템에 구축되며 자체 CPU, Memory, Network, Interface & Storage 를 가지고 있어 컴퓨팅 환경을 제공하는 가상 환경
- Hypervisor (하이퍼바이저) : 가상머신(독립된 컴퓨터)의 리소스 관리 및 서로 독립적인 환경을 제공하기 위한 가상머신 간의 리소스 접근 방지 등을 제공하는 소프트웨어
- 종류
- KVM : Kernel-based Virtual Machine
- 종류
- Type 1 이 더 성능 상에서는 유리합니다.
- Host OS 가 없어서 Hypervisor 가 Kernel에 직접 제어를 할 수 있어 성능 상에서 유리함
- Type 1의 경우 각 가상머신 마다 유지 보수를 해줘야 합니다.
- ex) Guest OS의 패치 개별 적용
- Type 2는 범용적으로 사용하기에 좋다.
2. 네트워크 가상화
: 네트워크를 논리적으로 만들어 사용하는 기술
- 예시
- SDN (Software Define Network) : 네트워크를 소프트웨어 형태로 정의
- NFV(Network Function Virtualization) : 네트워크 장비를 가상화하여 묶거나 연결하여 가상 네트워크에 배치하는 기술
- EX) 로드밸런서, 침입 탐지 장치, 방화벽, WAN 가속기
3. 스토리지 가상화
: 저장 공간(Storage)를 가상화 하는 기술
- 예시
- RAID
- LVM (Logical Volume Management)
- SDS (Software Defined Storage)
- 구현하기 위한 도구 : Ceph, Glusterfs, …
- 스토리지 가상화의 이점
- 비용 절감: 가상 스토리지는 재난 복구를 위해 기존 엔터프라이즈 스토리지 아키텍처에 필요했던 전형적인 하드웨어 중복이 필요하지 않기 때문에 어플라이언스 및/또는 소프트웨어 라이선스를 더 적게 구매해도 됩니다. 이로 인해 기업은 사전 금융 투자 비용을 상당히 절약할 수 있습니다.
- 시간 절약: 가상 스토리지는 중단 시간(계획 또는 비계획)을 줄일 뿐 아니라 업그레이드에 소모되는 시간과 와해를 크게 줄입니다.
- 확장성: 가상 스토리지를 사용하면 장기적인 미래 스토리지 요구 사항을 예측하거나 그 모든 용량에 대한 비용을 미리 지불할 필요가 없습니다. 그 대신 IT 팀이 동적 프로비저닝을 활용하여 수요 변화에 온디맨드로 대응할 수 있습니다.
- 더 쉬운 관리: 가상 스토리지는 리소스 사용을 간소화 및 개선하여 애플리케이션 중단 없이 더 쉽게 스토리지를 추가/삭제할 수 있습니다. 또한 원활한 데이터 마이그레이션을 지원하고 스토리지 풀 전반에서 고급 기능 애플리케이션을 간소화합니다.
- 위험 감소: 디스크 드라이브, 스토리지 컨트롤러, 전원 공급이 실패하는 경우 각각이 이미 가상 어레이에 미러링되어 있으므로 와해의 위험이 크게 줄어듭니다. 이 가상의 중복은 성능 저하를 제한하고 스토리지 효율 및 유연성을 높입니다.
- 생산성 증가: 가상 스토리지는 100% 가용성을 제공할 뿐 아니라 애플리케이션 및 서비스 구축을 가속화하여 가치를 더 빠르게 실현하게 만들 잠재력이 있습니다.
- 효율 향상: 무엇보다도 빠르고 용량 활용이 우수한 스토리지의 사용이 가장 큰 이점입니다. 이를 통해 더 안정적으로 데이터에 액세스하고 처리할 수도 있습니다. 뿐만 아니라 가상 스토리지는 100% 활용을 보장하며 용량 소진의 가능성이 매우 낮습니다.
4. 컨테이너 가상화
: 컨테이너 단위로 애플리케이션을 배포하고 관리하도록 하는 가상화 기술 → 도구 : Docker, Kubernetes
Docker 가 컨테이너 가상화의 시초이냐? → 아니오, 이전부터 있었던 개념이고 도구도 있었습니다.
바로, Docker 컨테이너가 존재하기 전에 리눅스에서 LXC 와 UNIX의 Solaris Container)
- 리눅스(Linux) 컨테이너 (LXC) : 리눅스 운영체제에서 제공하는 컨테이너 도구
- 유닉스(Unix) 컨테이너 (Solaris container) : 유닉스 운영체제에서 제공하는 컨테이너 도구
이 전에 사용되었던 위 두 가지는 컨테이너 기술을 지원하는 것들에 비해 Docker는 굉장히 강력한 기능이 있습니다. 바로 Docker Hub 의 존재로 편의성 명령어 한 줄로 어플리케이션 배포 및 운영 환경을 구축 할 수 있게 되었습니다.
간략하게 Docker Container에 대해서
- Docker Container는 Linux Kernel의 Container기능을 본 따서 만들었습니다.
- 리눅스 컨테이터를 구성하는 핵심 기술
- Cgroups
- cgroups(control groups의 약자)는 프로세스들의 자원의 사용(CPU, 메모리, 디스크 입출력, 네트워크 등)을 제한하고 격리시키는 리눅스 커널 기능이다.
- 구글의 엔지니어들이 2006년에 이 기능에 대한 작업에 착수하였고 당시 이름은 "프로세스 컨테이너"(process container)였다. 2007년 말에 리눅스 커널 문맥에서 "컨테이너"라는 용어의 의미가 여러 개이므로 혼란을 방지하기 위해 이름이 "컨트롤 그룹"(control groups)으로 변경되었으며, 컨트롤 그룹 기능은 2008년 1월에 출시된 커널 버전 2.6.24에 리눅스 커널 메인라인으로 병합되었다. 그 뒤로 개발자들은 수많은 새로운 기능과 컨트롤러들을 추가해오고 있는데, 이를테면 kernfs 지원,방화벽,통합된 계층구조를 포함한다.
- : Control Groups 의 약어로 프로세스를 그룹화하여 관리하며 시스템의 리소스를 제한할 수 있는 기술
- Namespace
- 배경 : Host Machine과 Host Machine 에서 실행한 어플리케이션 환경이 완벽히 분리가 되어있다. → 어플리케이션 실행을 서로 간섭하지 않음. → 독립적인 실행 환경을 제공함 → 이때 사용하는 기술이 Namespace 이다.
- 종류
- PID Namespace : Namespace 에서 독립적인 PID (Process Identifier) 사용
- Network Namespace : Namespace 에서 독립적인 네트워크 기능을 사용
- Mount Namespace : Namespace 에서 독립적인 Mount Point 사용
- UID Namespace : Namespace 에서 독립적인 UID 사용
- UTS Namespace : Namespace 에서 독립적인 Hostname을 사용
- IPC Namespace : Namesapce 에서 독립적인 IPC (Inter Process Control) 사용
- : 다수의 오브젝트(Object)를 격리할 수 있는 기술, 오브젝트(Object) 별 독립적인 환경을 제공합니다.
참고 - Cgroups
- [가상화] 2. Virtualization(가상화)의 등장 배경과 발전
- 리눅스 컨테이터를 구성하는 핵심 기술
반응형