아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
데보션 favicon데보션

OpenStack 라이브 마이그레이션, 내부 동작 원리를 파헤치다!

by DD
2025-11-11
8개월 전
조회수 4

OpenStack의 라이브 마이그레이션은 3단계로 진행되며, 이번 글은 Live migration operation 단계에 집중함

libvirt 드라이버가 virDomain.migrateToURI3를 호출하여 실제 마이그레이션 수행, 파라미터 설정 중요

Nova는 환경 설정을 기반으로 마이그레이션 플래그를 결정, libvirt에 전달하여 VM 마이그레이션 제어

libvirt를 통한 마이그레이션 과정

OpenStack은 libvirt C API를 호출하여 VM 마이그레이션을 수행한다. 구체적으로 LibvirtDriver._live_migration_operation()에서 시작하여 Guest.migrate()를 거쳐 virDomain.migrateToURI3()를 호출한다. 따라서 OpenStack 레벨에서는 libvirt API 호출을 통해 마이그레이션 과정을 제어한다.

Nova의 마이그레이션 플래그 결정

Nova는 VIR_MIGRATE_LIVE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PERSIST_DEST 플래그를 설정하여 libvirt에 전달한다. 따라서 P2P 방식으로 마이그레이션을 수행하고, 소스 VM 정의를 제거하며, 대상 호스트에 VM 정의를 유지한다. 마이그레이션 플래그 설정은 시스템 동작에 큰 영향을 미친다.

네트워크 전송 방식과 성능 고려

라이브 마이그레이션 시 Hypervisor native transport 방식을 사용하면 성능을 향상시킬 수 있다. QEMU가 직접 소통하여 데이터 사본 수를 최소화하기 때문이다. 반면, libvirt tunnelled transport는 암호화를 지원하지만, 추가적인 데이터 복사본 발생으로 성능 저하를 야기할 수 있다. 따라서 전송 방식 선택 시 보안 vs 성능의 트레이드오프를 고려해야 한다.

[2편] OpenStack Live migration workflow (live migration operation)
고급
아키텍처
OpenStack
libvirt
KVM
C/C++
Backend
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

CodeQL 점진적 분석으로 C/C++, Go 코드 분석 속도 UP!

깃헙 로고

C/C++ 의존성 관리, 원격 include 기술 등장?

레딧 로고

C/C++ 의존성 관리, 이대로 괜찮은가?

랍스타즈 로고

C/C++ 빌드, 이제 Craft로 간편하게!

해커뉴스 로고

C/C++ asin() 함수, Estrin's Scheme 적용으로 최대 1.88배 성능 향상!

레딧 로고

C/C++ 코드, CPU 아키텍처에 맞춰 속도 2배 빠르게!

레딧 로고
데보션 favicon데보션
고급
아키텍처
OpenStack
libvirt
KVM
C/C++
Backend

관련 추천 글

CodeQL 점진적 분석으로 C/C++, Go 코드 분석 속도 UP!

깃헙 로고

C/C++ 의존성 관리, 원격 include 기술 등장?

레딧 로고

C/C++ 의존성 관리, 이대로 괜찮은가?

랍스타즈 로고