1. Nova 소스 코드
- https://github.com/openstack/nova.git
GitHub - openstack/nova: OpenStack Compute (Nova). Mirror of code maintained at opendev.org.
OpenStack Compute (Nova). Mirror of code maintained at opendev.org. - openstack/nova
github.com
- 소스 코드 구조
nova/
├─ api/ REST API 처리
├─ compute/ 인스턴스 생성·삭제·상태 관리
├─ conductor/ DB 접근과 복잡한 작업 조정
├─ scheduler/ 인스턴스를 실행할 컴퓨트 노드 선택
├─ virt/ 하이퍼바이저 드라이버
│ ├─ libvirt/ KVM/QEMU·Xen 계열 제어
│ ├─ ironic/ 베어메탈 연동
│ └─ ...
├─ network/ 네트워크 관련 Nova 내부 처리
├─ objects/ DB 데이터 객체
├─ db/ 데이터베이스 처리
├─ rpc.py 메시지 큐 기반 RPC 처리
├─ context.py 사용자·프로젝트 요청 문맥
├─ exception.py Nova 예외 정의
└─ tests/ 테스트 코드
2. Nova 주요 프로세스

- 사용자 요청
> 사용자는 다양한 방법으로 OpenStack에 VM 생성을 요청할 수 있음
> Horizon(Web UI)
> OpenStack CLI
openstack server create \
--flavor m1.small \
--image Rocky9 \
--network private \
test-vm
> REST API
> Python SDK
- nova-api
> 사용자의 REST API 요청을 처리하는 Nova의 진입점
> REST API 제공
> Keystone 인증 확인
> 권한(Policy) 검사
> 요청 파라미터 검증
> API Microversion 확인
> 내부 Nova 서비스 호출
- Keystone
> OpenStack에서는 모든 서비스가 Keystone을 통해 인증 수행
> nova-api는 사용자의 Token이 정상인지 확인하기 위해 Keystone을 조회
- nova-conductor
> Nova 내부 작업을 조율하는 중간 관리자 ( Nova 내부의 작업 관리자 역할 )
> Database 접근
> Instance 정보 저장
> Build Request 생성
> Scheduler 호출
> 여러 Nova 서비스 간 작업 조율
- Database
> Database에는 OpenStack의 상태 정보가 저장
> Instance 정보
> Flavor
> VM 상태
> Metadata
> Project
> Host 정보
- Placement
> 현재 OpenStack에 얼마나 많은 자원이 남아있는지 관리하는 서비스
> Instance 정보
> Flavor
> VM 상태
> Metadata
- nova-scheduler
> 가장 적절한 Compute Node를 선택하는 서비스 (빈 서버를 찾는 역할)
> Scheduler는 VM을 어느 서버에서 실행할지 결정
> 다양한 선택 기준을 가짐
1) CPU 여유량
2) Memory
3) Disk
4) Availability Zone
5) Host Aggregate
6) NUMA
7) PCI Device
8) GPU
9) Affinity
- Cinder
> nova-compute는 Cinder에 Volume 연결을 요청
'OpenStack' 카테고리의 다른 글
| [OpenStack] Network 서비스 ( Neutron) (0) | 2026.07.11 |
|---|---|
| [OpenStack] Storage ( Swift ) (0) | 2026.07.11 |
| [OpenStack] Compute 서비스 ( Nova ) (0) | 2026.07.11 |
| [OpenStack] OpenStack 이란? (0) | 2026.07.11 |