OpenStack

[OpenStack] Nova 구조 및 프로세스

오늘도개발 2026. 7. 11. 23:27

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