티스토리 뷰
어렴풋이는 알고 있었지만 정확하게 어떤 과정을 거쳐 VM이 띄워지게 되는지 모르고 있었다.
이번 기회에 정리하여 정확하게 이해한 것들로 머리에 넣어보자.
1. 사용자 요청
- 일단 첫 단계로 사용자가 FE를 통해서 혹은 OpenStack CLI를 통해 VM 생성을 요청하게 된다. (openstack server create 등)
- 이때 여러 옵션들을 입력하겠지만 지금은 여기에 집중하진 않겠다.
2. 스케줄링
- nova-scheduler가 어느 하이퍼바이저(compute node)에 이 VM을 띄울지 선택한다.
3. VM 생성
- 선택된 compute node의 nova-compute가 Libvirt 드라이버를 통해 가상머신 정의 xml을 구성하고 libvirt에 전달한다.
- 이 xml은 QEMU/KVM에서 VM 생성시에 사용된다.
4. 이미지/볼륨 준비
- Nova가 Glance에서 OS 이미지를 backend에 다운로드한다.
- Nova가 Cinder에 볼륨 생성을 요청하고 준비된 볼륨을 VM에 attach한다.
5. 네트워크 준비
- Nova가 Neutron에 네트워크 포트 생성을 요청하고 VM에 부착할 준비를 한다.
- Neutron L2 agent가 compute node의 tap 디바이스를 브리지에 연결한다.
6. Cloud-Init 세팅
- 유저 데이터, 메타 데이터를 VM에 전달한다. (ConfigDrive 또는 Nova API Metadata, Neutron Metadata Agent)
- 이는 cloud-init 실행 시 사용된다.
7. VM 부팅 시작
- QEMU/KVM에서 VM을 실행한다.
- BIOS/UEFI → 부트로더(GRUB) → 커널 로드
- initrd → 루트 파일시스템 마운트 → systemd 실행
8. Cloud-Init 실행
- 네트워크가 초기화된다. (DHCP 또는 static)
- hostname가 설정된다.
- SSH 키가 주입된다.
- 네트워크 인터페이스가 설정된다.
- /etc/chrony.conf 또는 systemd-timesyncd로 NTP가 설정된다.
- 추가 스크립트(user-data)가 실행된다. (패키지 설치, 서비스 시작 등)
9. 서비스 활성화
- VM이 정상적으로 네트워크에 붙고, 사용자 SSH 접속 가능해진다.
- FE나 CLI에서 "ACTIVE" 상태로 확인이 가능하다.
이제 “실제 가상머신”으로 동작한다.
'인프라' 카테고리의 다른 글
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- react
- redux
- RDS
- Hook
- 로깅
- EC2
- 인프라
- Docker
- SG
- 서버
- 모니터링
- github action
- html
- javascript
- springboot
- ALB
- Workflow
- Grafana Alert
- ci/cd
- ECS
- js
- Service
- VPC
- 리액트
- AWS
- LOKI
- subnet
- CSS
- ecr
- Grafana
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함