Overview
오늘은 OpenStack Nova의 개념과 구조에 대해 학습하고 정리하려고 한다.
📅 관련 글
2022.05.11 - [Openstack] - Openstack이란?
Nova란?
Nova는 OpenStack의 Compute 서비스로, 가상 머신(Compute Instance)의 프로비저닝(provisioning) 및 관리 기능을 제공하는 핵심 프로젝트 중 하나다.
Nova의 역할
- 가상 머신(VM) 생성 및 관리
- 베어메탈 서버(Ironic) 프로비저닝 지원
- 컨테이너 실행 지원 (제한적)
- 다중 하이퍼바이저(KVM, Xen, ESXi, Hyper-V 등) 지원
- REST API를 통한 자동화 및 오케스트레이션 제공
1️⃣ Compute Instance (가상 서버)
가상 서버(VM)란?
하나의 물리 서버에서 여러 개의 가상 운영체제(OS)를 실행할 수 있도록 가상화된 환경을 제공하는 개념이다.
이를 통해 서로 다른 OS와 애플리케이션을 독립적으로 실행할 수 있다.
- 가상 머신(VM) = Compute Instance
- OpenStack Nova = Compute 서비스
2️⃣ Provisioning (프로비저닝)
프로비저닝이란?
사용자의 요구에 맞게 시스템 자원을 미리 할당하고 배포하는 과정을 의미한다.
즉, 서버, 네트워크, 스토리지 등을 사전에 설정하여 필요할 때 즉시 사용할 수 있도록 준비하는 것이다.
프로비저닝의 예시
- ✔ 서버 프로비저닝 → 가상 머신(VM) 또는 베어메탈 서버를 자동 생성
- ✔ 네트워크 프로비저닝 → IP, VLAN 설정 및 SDN 네트워크 자동 구성
- ✔ 스토리지 프로비저닝 → 블록 스토리지 자동 할당
3️⃣ Nova에서 지원하는 VM & 베어메탈 & 컨테이너
Nova는 가상 머신(VM) 뿐만 아니라 베어메탈 서버 및 컨테이너 실행도 지원한다.
1) 베어메탈 서버 (Ironic)
Ironic이란?
Ironic은 베어메탈 서버를 프로비저닝하는 OpenStack 프로젝트다.
즉, 하이퍼바이저 없이 물리 서버를 직접 관리하는 서비스이다.
베어메탈 서버란?
- 하드웨어 위에 OS를 직접 설치하는 방식
- 하이퍼바이저(KVM, Xen 등) 없이 네이티브 성능을 제공
- 클라우드 환경에서도 고성능 워크로드를 실행할 수 있음
베어메탈 서버 vs. 가상 머신(VM) 비교
구분 | 베어메탈 서버 | 가상 머신(VM) |
성능 | 최대 성능 (100% 자원 사용) | 가상화 오버헤드 발생 |
자원 공유 | 불가능 (독립적 사용) | 가능 (여러 개의 VM 실행) |
OS 설치 | 직접 설치 필요 | 이미지 기반 자동 배포 |
사용 사례 | 고성능 DB, AI/ML, HPC | 일반적인 애플리케이션 실행 |
2) 컨테이너 (Container)
Nova는 제한적으로 컨테이너 실행을 지원한다.
하지만 일반적으로 OpenStack에서는 Nova보다 Kubernetes 또는 OpenShift를 사용하여 컨테이너를 관리하는 것이 일반적이다.
컨테이너란?
- OS 커널을 공유하며 독립적인 환경에서 실행되는 가상화 기술
- VM보다 경량화되어 빠른 배포 및 실행 가능
- Docker, Kubernetes와 같은 오케스트레이션 시스템과 연동하여 관리 가능
VM vs. 컨테이너 비교
구분 | 가상 머신(VM) | 컨테이너(Container) |
실행 환경 | 하이퍼바이저 필요 | OS 커널 공유 |
성능 | 상대적으로 느림 | 빠름 |
크기 | 수 GB | 수 MB |
부팅 속도 | 수십 초~분 단위 | 수 초 이내 |
주요 기술 | KVM, Xen, VMware | Docker, Kubernetes |
4️⃣ Nova의 주요 서비스 (Daemon Process)
Nova는 여러 개의 데몬 프로세스(백그라운드 서비스) 로 구성된다.
데몬(daemon)이란?
운영체제에서 백그라운드에서 실행되며 특정 작업을 지속적으로 수행하는 프로세스를 의미한다.
예를 들어, Nova의 nova-api, nova-compute 같은 프로세스가 이에 해당한다.
예시: Nova의 데몬 프로세스
데몬 프로세스 | 역할 |
nova-api | API 요청을 받아 Nova 내부 서비스와 통신 |
nova-scheduler | 가상 머신(VM) 배치를 결정하는 스케줄러 |
nova-compute | 하이퍼바이저와 직접 상호작용하여 VM을 생성/제거 |
nova-conductor | DB와 통신하여 내부 요청을 처리 |
nova-novncproxy | 웹 기반 VNC 콘솔을 제공하여 VM 원격 접속 지원 |
5️⃣ Nova와 다른 OpenStack 서비스의 연관성
Nova는 단독으로 동작하지 않으며, 다른 OpenStack 서비스와 함께 동작해야 한다.
Nova가 필수적으로 사용하는 OpenStack 서비스
서비스 | 역할 |
Keystone | 인증 및 사용자 관리 (ID 관리) |
Glance | VM 이미지 저장소 (Compute 이미지) |
Neutron | 가상 네트워크 및 물리 네트워크 제공 |
6️⃣ Nova API
Nova는 모든 기능을 REST API를 통해 제공하며, 이를 통해 Nova의 기능을 자동화하거나 확장할 수 있다.
API 버전 관리
Nova API는 버전별로 관리되며, 아래와 같은 버전 형식을 따른다.
버전 형식
`{major}.{minor}.{patch}`
- 예시) 2.0.3
버전 구성
- Major Version → 아키텍처 변경 (역호환성 X)
- Minor Version → 새로운 기능 추가 (역호환성 O)
- Patch Version → 버그 수정 (기능 변화 없음)
7️⃣ Block Device Mapping (블록 디바이스 매핑)
🔹 블록 디바이스(Block Device)란?
- 데이터를 블록 단위로 읽고 쓰는 저장 장치
- 물리 디스크(HDD, SSD) 또는 가상 디스크(Virtual Disk) 포함
- 랜덤 액세스를 지원하여 빠른 입출력이 가능
예시: 블록 디바이스 유형
✔ vda → 기본 OS 디스크 (Root Disk)
✔ vdb → 추가 스토리지 디스크 (Data Disk)
블록 디바이스 매핑이란?
Nova에서 VM이 사용하는 스토리지를 정의하는 방식이다.
사용자는 루트 디스크, 데이터 디스크, 스냅샷 등을 연결하여 VM을 구성할 수 있다.
결론
Nova는 OpenStack에서 가상 머신(VM) 및 베어메탈 서버를 프로비저닝하는 핵심 서비스이다.
이를 통해 OpenStack 클라우드 환경에서 컴퓨팅 리소스를 효율적으로 관리할 수 있다.
Nova를 효과적으로 활용하려면?
- ✔ 하이퍼바이저(KVM, Xen, VMware)의 개념을 이해해야 함
- ✔ Ironic을 사용한 베어메탈 프로비저닝 개념을 익혀야 함
- ✔ Neutron(네트워크), Cinder(스토리지)와의 연계를 고려해야 함
Reference
'Openstack' 카테고리의 다른 글
Openstack Keystone이란? (identity) (0) | 2022.08.08 |
---|---|
Openstack Glance란? (image) (0) | 2022.08.08 |
Openstack 배치 서비스 Placement란? (0) | 2022.08.08 |
Openstack Neutron이란? (network) (0) | 2022.08.08 |
Openstack이란? (0) | 2022.05.11 |