SlideShare a Scribd company logo
1 of 16
KVM & OpenStack
Jeremy Jeon
INDEX
• Hypervisor
• KVM
• QEMU
• Virtualization & Emulation
• libvirt
• How does Nova use KVM
• Next
Hypervisor
• 가상화의 핵심 소프트웨어
• 한대의 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼
• VMM(Virtual Machine Monitor)라고도 부름
Hypervisor
Linux
H/W
Window
Host OS
H/W
Hypervisor
Linux Window
Host OS
Process
Type 1 (Native or Bare metal)
• 하드웨어 바로 위에서 하이퍼바이저가 동작
• 그 위로 다양한 게스트 OS가 위치
• Xen 이나 VMware의 서버용 하이퍼 바이저 제품군
Type 2 (Hosted)
• 하드웨어 바로 위에 호스트 운영체제가 존재
• 호스트 운영체제 위에 하이퍼바이저가 동작
• 그 위로 다양한 게스트 OS가 위치
• KVM, VirtualBox, VMware의 데스크톱 제품군
Hypervisor 위치에 따른 분류
Hypervisor
Unmodi
fied OS
H/W with Virtualization Extension
Unmodi
fied OS
H/W
Hypervisor
Modified
OS
Modified
OS
전가상화 (Full-Virtualization)
• 하드웨어에서 가상화를 지원해줘야 함 (vmx, svm)
• 하드웨어를 완전히 가상화하기 때문에 게스트 OS를 수정할 필요가
없음
• 가상 머신 에뮬레이션 필요 (QEMU)
• 물리적인 가상화 기술을 이용(Inter-VT, AMD-V)
반가상화(Para-Virtualization)
• 하드웨어 가상화를 이용하지 않는 방식
• 게스트 OS는 하이퍼바이저를 통해서만 하드웨어를 제어 가능
• 게스트 OS의 커널을 일부 수정해서 게스트의 커널 함수를 호출하면
호스트의 컨널로 전달
• 커널을 수정해야 하기 때문에 오픈소스 OS에 한정
가상화 방식에 따른 Hypervisor 분류
KVM (Kernel based Virtual Machine)
• 전가상화를 지원하는 리눅스 커널 기반의 가상화 도구
• Linux kernel 2.6.20 버전부터 Linux mainline 에 포함 (2007.02.05)
• 리눅스 자체를 호스트 OS로 이용하고 하이퍼바이저를 서브 모듈로 취급
• 리눅스를 하이퍼바이저로 쓸 수 있도록 만들어 줌
KVM (Continue)
• KVM 은 가상머신을 인스턴스화 하기 위해 일부 수정된 QEMU(Emulator)를 사용
• 가상머신 인스턴스가 실행되게 되면 이 가상머신은 일반적인 프로세스 처럼 동작
• 따라서 kill, top, taskset 등과 같은 일반적인 리눅스 명령들을 사용할 수 있음
virsh에서 확인한 인스턴스 목록
ps명령으로 확인한 인스턴스 프로세스 목록
QEMU
• PC 환경을 위한 프로세스 에뮬레이터
• 각종 디바이스 에뮬레이션
• KVM과 Xen이 전가상화를 위해 QEMU를 이용한 에뮬레이션을 구현
Emulation & Virtualization
• Emulation
특정 시스템에 의존적인 소프트웨어 또는 플랫폼을 실행시키기 위한 가상의 환경을 만들어 주는 것
에뮬레이션할 디바이스 드라이버를 모두 S/W 적으로 구현해주어야 함
ex) QEMU, Android Emulator, iOS Emulator …
• Virtualization
컴퓨팅 자원을 효율적으로 사용하기 위한게 목적
컴퓨팅 자원을 풀로 사용하고 이를 바탕으로 여러개의 독립적인 가상머신을 만들어 사용
ex) Hypervisor
참고: https://powermore.dell.com/technology/emulation-virtualization-whats-difference/
Virtualization Extension (x86)
Host Linux Kernel
KVM
Host Userspace
QEMU
Linux
Applications
Virtual Machine
QEMU
Windows
Applications
Virtual Machine
Linux
Applicatons
QEMU-KVM Architecture
수정되지 않은 OS
머신 에뮬레이팅
QEMU가 가상화된 CPU와 메모리를
사용할 수 있도록 인터페이스 제공
KVM이 CPU와 메모리를 가상화할 수
있도록 허용
libvirt
• 가상화 플랫폼(하이퍼바이저)을 관리하는 오픈소스 라이브러리
• 다양한 하이퍼바이저 환경을 통합적으로 관리하기 위해 탄생
• KVM/QEMU, Xen, VMware, Hyper-V, VirtualBox 등 다양항 하이퍼바이저 지원
libvirt (Continue)
Node
Linux Host
Hypervisor Hypervisor
Guest OS Guest OS
libvirt
Management
Application
• libvirt는 다양한 하이퍼바이저를 통합할 수
있는 API 를 제공
• 기본적으로 virsh이라는 쉘 환경의 도구를
지원
• libvirt API 를 이용한 oVirt, kimchi 등 다양한
GUI 기반의 툴들이 만들어 짐
libvirt (Continue)
목록 (카테고리) 설명
libvirt-domain-snapshot 도메인(인스턴스)의 스냅샷들을 관리하는 API
libvirt-domain 도메인(인스턴스)들을 관리하는 API
libvirt-event 도메인(인스턴스)의 이벤트들을 관리하는 API (모니터링)
libvirt-host 호스트 및 하이퍼바이저를 관리하는 API
libvirt-interface 인터페이스들을 관리하는 API
libvirt-network 네트워크를 관리하는 API
libvirt-nodedev 노드들의 디바이스를 관리하는 API
libvirt-nwfilter 네트워크 필터들을 관리하는 API
libvirt-secret 보안과 관련된 관리를 하는 API
libvirt-storage 스토리지와 관련된 관리를 하는 API
libvirt-stream 스트림 (데이터 전송)과 관련된 API
virterror 에러 핸들링 인터페이스
How does Nova use KVM
nova-api
nova-compute
libvirt + KVM
nova-scheduler
nova-conductor
DB
AMQP
REST API
1
2
3
4
Next
• libvirt 를 통해 인스턴스에 대한 자원의 상세설정을 해줄 수 있을 것 같은데...
노드상의 자원들에 대한 Bandwidth 설정 등등…
감사합니다.

More Related Content

What's hot

Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubeletChanyeol yoon
 
150326 openstack, glance 김지은
150326 openstack, glance 김지은150326 openstack, glance 김지은
150326 openstack, glance 김지은jieun kim
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Dronix
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Keon Ahn
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 mWonchang Song
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안NAVER D2
 
[D2 COMMUNITY] Open Container Seoul Meetup - Docker security
[D2 COMMUNITY] Open Container Seoul Meetup - Docker security[D2 COMMUNITY] Open Container Seoul Meetup - Docker security
[D2 COMMUNITY] Open Container Seoul Meetup - Docker securityNAVER D2
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTHosang Jeon
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석Jennifer Noh
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS IntroductionRemotty
 
Mesos + Marathon + Docker
Mesos + Marathon + DockerMesos + Marathon + Docker
Mesos + Marathon + Dockerbighouse
 
Clonezilla se
Clonezilla seClonezilla se
Clonezilla se석 허
 
Rancher Simple User Guide
Rancher Simple User GuideRancher Simple User Guide
Rancher Simple User GuideSANG WON PARK
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS충섭 김
 
XECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloudXECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloudXpressEngine
 
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...OpenStack Korea Community
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 

What's hot (20)

Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubelet
 
150326 openstack, glance 김지은
150326 openstack, glance 김지은150326 openstack, glance 김지은
150326 openstack, glance 김지은
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기
 
Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리Puppet과 자동화된 시스템 관리
Puppet과 자동화된 시스템 관리
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 m
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
2.[d2 오픈세미나]네이버클라우드 시스템 아키텍처 및 활용 방안
 
[D2 COMMUNITY] Open Container Seoul Meetup - Docker security
[D2 COMMUNITY] Open Container Seoul Meetup - Docker security[D2 COMMUNITY] Open Container Seoul Meetup - Docker security
[D2 COMMUNITY] Open Container Seoul Meetup - Docker security
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS Introduction
 
Mesos + Marathon + Docker
Mesos + Marathon + DockerMesos + Marathon + Docker
Mesos + Marathon + Docker
 
Clonezilla se
Clonezilla seClonezilla se
Clonezilla se
 
Rancher Simple User Guide
Rancher Simple User GuideRancher Simple User Guide
Rancher Simple User Guide
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
 
XECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloudXECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloud
 
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 

Viewers also liked

클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning Ji-Woong Choi
 
MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月
MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月
MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月VirtualTech Japan Inc.
 
BrocadeのOpenStack連携ソリューション
BrocadeのOpenStack連携ソリューションBrocadeのOpenStack連携ソリューション
BrocadeのOpenStack連携ソリューションBrocade
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseHideki Saito
 
2012/09/27 #ssmjp おうちOpenStack
2012/09/27 #ssmjp おうちOpenStack2012/09/27 #ssmjp おうちOpenStack
2012/09/27 #ssmjp おうちOpenStackth0x0472
 
Optimizing VM images for OpenStack with KVM/QEMU
Optimizing VM images for OpenStack with KVM/QEMUOptimizing VM images for OpenStack with KVM/QEMU
Optimizing VM images for OpenStack with KVM/QEMUOpenStack Foundation
 
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)Takeshi HASEGAWA
 
Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)Novell
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-RegionJi-Woong Choi
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocationJi-Woong Choi
 
Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)Boden Russell
 
KVM and docker LXC Benchmarking with OpenStack
KVM and docker LXC Benchmarking with OpenStackKVM and docker LXC Benchmarking with OpenStack
KVM and docker LXC Benchmarking with OpenStackBoden Russell
 

Viewers also liked (15)

클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 
MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月
MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月
MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月
 
BrocadeのOpenStack連携ソリューション
BrocadeのOpenStack連携ソリューションBrocadeのOpenStack連携ソリューション
BrocadeのOpenStack連携ソリューション
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - Icehouse
 
OpenStack & SELinux
OpenStack & SELinuxOpenStack & SELinux
OpenStack & SELinux
 
2012/09/27 #ssmjp おうちOpenStack
2012/09/27 #ssmjp おうちOpenStack2012/09/27 #ssmjp おうちOpenStack
2012/09/27 #ssmjp おうちOpenStack
 
Optimizing VM images for OpenStack with KVM/QEMU
Optimizing VM images for OpenStack with KVM/QEMUOptimizing VM images for OpenStack with KVM/QEMU
Optimizing VM images for OpenStack with KVM/QEMU
 
OpenStack Report
OpenStack ReportOpenStack Report
OpenStack Report
 
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
 
Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)Virtualization with KVM (Kernel-based Virtual Machine)
Virtualization with KVM (Kernel-based Virtual Machine)
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocation
 
Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)
 
KVM and docker LXC Benchmarking with OpenStack
KVM and docker LXC Benchmarking with OpenStackKVM and docker LXC Benchmarking with OpenStack
KVM and docker LXC Benchmarking with OpenStack
 

Similar to KVM & OpenStack

Virtualization technology for security
Virtualization technology for securityVirtualization technology for security
Virtualization technology for securityhanbeom Park
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안Ji-Woong Choi
 
프로젝트용 PC 환경구성 이찬희
프로젝트용 PC 환경구성   이찬희프로젝트용 PC 환경구성   이찬희
프로젝트용 PC 환경구성 이찬희찬희 이
 
[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)용호 최
 
01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKEROpennaru, inc.
 
Windows Kubernetes Deep Dive
Windows Kubernetes Deep DiveWindows Kubernetes Deep Dive
Windows Kubernetes Deep DiveJung Hyun Nam
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져Chulgyu Shin
 
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석Amazon Web Services Korea
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Circulus
 
oVirt installation guide_v4.3
oVirt installation guide_v4.3oVirt installation guide_v4.3
oVirt installation guide_v4.3CheolHee Han
 
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
PHPStorm - tool for php
PHPStorm - tool for phpPHPStorm - tool for php
PHPStorm - tool for phpSungbum Hong
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영Nalee Jang
 
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon Web Services Korea
 
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)Ubuntu Korea Community
 
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)Amazon Web Services Korea
 
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystemSungjin Kang
 

Similar to KVM & OpenStack (20)

Virtualization technology for security
Virtualization technology for securityVirtualization technology for security
Virtualization technology for security
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
 
가상화
가상화가상화
가상화
 
프로젝트용 PC 환경구성 이찬희
프로젝트용 PC 환경구성   이찬희프로젝트용 PC 환경구성   이찬희
프로젝트용 PC 환경구성 이찬희
 
[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)
 
01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER
 
Windows Kubernetes Deep Dive
Windows Kubernetes Deep DiveWindows Kubernetes Deep Dive
Windows Kubernetes Deep Dive
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
 
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
AWS Summit Seoul 2015 - AWS를 통한 게임 운영의 정석
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
oVirt installation guide_v4.3
oVirt installation guide_v4.3oVirt installation guide_v4.3
oVirt installation guide_v4.3
 
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 네이버 클라우드 플랫폼 init script 활용법 소개(정낙수 클라우드 솔루션 아키텍트)
 
PHPStorm - tool for php
PHPStorm - tool for phpPHPStorm - tool for php
PHPStorm - tool for php
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영
 
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
 
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
KT 안재석 박사 - 오픈 소스 기반 클라우드 컴퓨팅 솔루션 open stack 이야기 (2011Y05M28D)
 
Hyper-v
Hyper-vHyper-v
Hyper-v
 
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
 
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
 

KVM & OpenStack

  • 2. INDEX • Hypervisor • KVM • QEMU • Virtualization & Emulation • libvirt • How does Nova use KVM • Next
  • 3. Hypervisor • 가상화의 핵심 소프트웨어 • 한대의 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼 • VMM(Virtual Machine Monitor)라고도 부름
  • 4. Hypervisor Linux H/W Window Host OS H/W Hypervisor Linux Window Host OS Process Type 1 (Native or Bare metal) • 하드웨어 바로 위에서 하이퍼바이저가 동작 • 그 위로 다양한 게스트 OS가 위치 • Xen 이나 VMware의 서버용 하이퍼 바이저 제품군 Type 2 (Hosted) • 하드웨어 바로 위에 호스트 운영체제가 존재 • 호스트 운영체제 위에 하이퍼바이저가 동작 • 그 위로 다양한 게스트 OS가 위치 • KVM, VirtualBox, VMware의 데스크톱 제품군 Hypervisor 위치에 따른 분류
  • 5. Hypervisor Unmodi fied OS H/W with Virtualization Extension Unmodi fied OS H/W Hypervisor Modified OS Modified OS 전가상화 (Full-Virtualization) • 하드웨어에서 가상화를 지원해줘야 함 (vmx, svm) • 하드웨어를 완전히 가상화하기 때문에 게스트 OS를 수정할 필요가 없음 • 가상 머신 에뮬레이션 필요 (QEMU) • 물리적인 가상화 기술을 이용(Inter-VT, AMD-V) 반가상화(Para-Virtualization) • 하드웨어 가상화를 이용하지 않는 방식 • 게스트 OS는 하이퍼바이저를 통해서만 하드웨어를 제어 가능 • 게스트 OS의 커널을 일부 수정해서 게스트의 커널 함수를 호출하면 호스트의 컨널로 전달 • 커널을 수정해야 하기 때문에 오픈소스 OS에 한정 가상화 방식에 따른 Hypervisor 분류
  • 6. KVM (Kernel based Virtual Machine) • 전가상화를 지원하는 리눅스 커널 기반의 가상화 도구 • Linux kernel 2.6.20 버전부터 Linux mainline 에 포함 (2007.02.05) • 리눅스 자체를 호스트 OS로 이용하고 하이퍼바이저를 서브 모듈로 취급 • 리눅스를 하이퍼바이저로 쓸 수 있도록 만들어 줌
  • 7. KVM (Continue) • KVM 은 가상머신을 인스턴스화 하기 위해 일부 수정된 QEMU(Emulator)를 사용 • 가상머신 인스턴스가 실행되게 되면 이 가상머신은 일반적인 프로세스 처럼 동작 • 따라서 kill, top, taskset 등과 같은 일반적인 리눅스 명령들을 사용할 수 있음 virsh에서 확인한 인스턴스 목록 ps명령으로 확인한 인스턴스 프로세스 목록
  • 8. QEMU • PC 환경을 위한 프로세스 에뮬레이터 • 각종 디바이스 에뮬레이션 • KVM과 Xen이 전가상화를 위해 QEMU를 이용한 에뮬레이션을 구현
  • 9. Emulation & Virtualization • Emulation 특정 시스템에 의존적인 소프트웨어 또는 플랫폼을 실행시키기 위한 가상의 환경을 만들어 주는 것 에뮬레이션할 디바이스 드라이버를 모두 S/W 적으로 구현해주어야 함 ex) QEMU, Android Emulator, iOS Emulator … • Virtualization 컴퓨팅 자원을 효율적으로 사용하기 위한게 목적 컴퓨팅 자원을 풀로 사용하고 이를 바탕으로 여러개의 독립적인 가상머신을 만들어 사용 ex) Hypervisor 참고: https://powermore.dell.com/technology/emulation-virtualization-whats-difference/
  • 10. Virtualization Extension (x86) Host Linux Kernel KVM Host Userspace QEMU Linux Applications Virtual Machine QEMU Windows Applications Virtual Machine Linux Applicatons QEMU-KVM Architecture 수정되지 않은 OS 머신 에뮬레이팅 QEMU가 가상화된 CPU와 메모리를 사용할 수 있도록 인터페이스 제공 KVM이 CPU와 메모리를 가상화할 수 있도록 허용
  • 11. libvirt • 가상화 플랫폼(하이퍼바이저)을 관리하는 오픈소스 라이브러리 • 다양한 하이퍼바이저 환경을 통합적으로 관리하기 위해 탄생 • KVM/QEMU, Xen, VMware, Hyper-V, VirtualBox 등 다양항 하이퍼바이저 지원
  • 12. libvirt (Continue) Node Linux Host Hypervisor Hypervisor Guest OS Guest OS libvirt Management Application • libvirt는 다양한 하이퍼바이저를 통합할 수 있는 API 를 제공 • 기본적으로 virsh이라는 쉘 환경의 도구를 지원 • libvirt API 를 이용한 oVirt, kimchi 등 다양한 GUI 기반의 툴들이 만들어 짐
  • 13. libvirt (Continue) 목록 (카테고리) 설명 libvirt-domain-snapshot 도메인(인스턴스)의 스냅샷들을 관리하는 API libvirt-domain 도메인(인스턴스)들을 관리하는 API libvirt-event 도메인(인스턴스)의 이벤트들을 관리하는 API (모니터링) libvirt-host 호스트 및 하이퍼바이저를 관리하는 API libvirt-interface 인터페이스들을 관리하는 API libvirt-network 네트워크를 관리하는 API libvirt-nodedev 노드들의 디바이스를 관리하는 API libvirt-nwfilter 네트워크 필터들을 관리하는 API libvirt-secret 보안과 관련된 관리를 하는 API libvirt-storage 스토리지와 관련된 관리를 하는 API libvirt-stream 스트림 (데이터 전송)과 관련된 API virterror 에러 핸들링 인터페이스
  • 14. How does Nova use KVM nova-api nova-compute libvirt + KVM nova-scheduler nova-conductor DB AMQP REST API 1 2 3 4
  • 15. Next • libvirt 를 통해 인스턴스에 대한 자원의 상세설정을 해줄 수 있을 것 같은데... 노드상의 자원들에 대한 Bandwidth 설정 등등…

Editor's Notes

  1. 머신의 자원들을 가상화해서 여러개의 논리적 서버로 만들 수 있게 해주는 녀석이 하이퍼바이저
  2. Type 1 에서는 하이퍼바이저가 서버 가상화를 위한 일종의 운영체제로 동작 Type 2 에서는 하이퍼바이저가 서버 가성화를 위한 일종의 어플리케이션으로 동작
  3. 가상화 방식에 따른 분류 - 전가상화(Full Virtualization): 하드웨어를 완전히 가상화 하는 방식.      하드웨어에서 가장화를 지원해줘야 함 (CPU: vmx, svm)       하드웨어를 완전히 가상화하기 때문에 게스트 OS에 아무런 수정 없이 다양한 OS를 사용할 수 있음.      시스템 전체를 완전히 가상화하여 시스템의 BIOS 부터 CPU, Memory, I/O 등을 완전히 시뮬레이션하여 가상화하는 방법을 사용      물리적인 가상화 지원 기능, 즉 CPU의 VT(Virtualization Technology)를 이용 (Intel-VT, AMD-V) CPU의 가상화 기능을 직접 사용하기 때문에 상대적으로 오버헤드가 많이 발생해서 성능이 저하 또한 모든 디바이스 환경에 대한 에뮬레이팅을 해줘야 함 - 반가상화(Para Virtualization): 하드웨어를 완전하게 가상화 하지 않은 방식      게스트에 올라갈 OS 커널을 수정해서 커널 함수를 호출하면 그게 바로 호스트의 커널로 전달시키도록 만든 방식이라 오버헤드가 적다.       게스트 OS가 직접적으로 하드웨어를 제어할 수 없고 하이퍼바이저를 통해서만 제어가 가능      게스트 OS의 커널의 일부분을 수정해야한다는 단점      따라서 이용할 수 있는 게스트 OS는 오픈소스에 한정 Hypervisor에서 자원을 관리하기 때문에 상대적으로 오버헤드가 적다. 에뮬레이션 방식의 가장 큰 장점은 가상의 디바이스를 제공함으로써 게스트 도메인의 드라이버를 수정 없이 그대로 쓸 수 있다는 점 하지만 디바이스를 소프트웨어로 모두 구현해야하므로 구현이 복잡하고, 하드웨어를 소프트웨어로 동작시켜야 하므로 오버헤드가 커서 성능이 저하됨 예를 들어 모든 저 수준의 I/O 명령을 하이퍼바이저가 에뮬레이션 해주어야 하고 이 때 게스트와 하이퍼바이저 사이에 컨텍스트 스위치가 항상 발생 게스트 운영체제를 수정할 수 있다면, 좀 더 효율적으로 I/O 가상화를 구현할 수 있다. 게스트와 하이퍼바이저 사이에 I/O 디바이스에 대한 새로운 상위 수준 인터페이스를 정의해 게스트가 직접 하이퍼바이저에게 I/O를 요청 예를 들어 네트워크 디바이스의 경우 디바이스 에뮬레이션은 모든 저 수준 I/O 명령어를 있는 그대로 에뮬레이션 해야 한다. 그리고 패킷 하나를 네트워크 카드를 통해 전송하려면 많은 저 수준 I/O 명령어를 요구하는데 이는 에뮬레이션을 실행할 때의 오버헤드 뿐만 아니라, 게스트와 하이퍼바이저 사이에 많은 수의 컨텍스트 스위치를 일으키며 이때 발생하는 오버헤드도 상당하다. 따라서 반가상화를 통해 게스트와 하이퍼바이저 사이의 인터페이스를 정의할 때는 좀 더 상위 수준의 인터페이스로 정의한다. 이렇게 하면 사용자의 저 수준 I/O 명령을 send_packet과 같은 한 번의 요청으로 처리할 수 있다. 게스트와 하이퍼바이저의 컨텍스트 스위치는 단 한번으로 충분하고, 디바이스 에뮬레이션을 실행할 필요도 없으므로 더 높은 성능의 I/O 가상화를 구현할 수 있다.
  4. Type 2 형태의 하이퍼바이저 사실 반가상화도 지원을 해주고 있으나 오늘은 전가상화 기능만 이야기하겠다. 전가상화 모드로 사용할 때는 CPU가 가상화를 지원해줘야 함 (Intel: vmm, AMD: svm)
  5. KVM 은 가상머신을 인스턴스화 하기 위해 일부 수정된 QEMU 에뮬레이터를 사용하는데 이렇게 인스턴스화 되어 실행된 가상머신은 리눅스의 일반적인 프로세스 처럼 동작 실제로 ps 명렁어를 통해 인스턴스 프로세스를 확인할 수 있고 kill 명령을 통해 인스턴스를 중지 시킬수도 있다. 각 인스턴스 별로 uuid 값이 있는데 이 uuid 값을 grep으로 잡으면 해당 인스턴스 프로세스를 확인할 수 있다.
  6. Emulation의 뜻 모방 에뮬레이션은 특정 시스템에 의존적인 소프트웨어나 플랫폼을 다른 시스템에서도 동일하게 동작시키기 위한 기술 일반적으로는 게임기 에뮬레이터, 안드로이드 에뮬레이터, iOS 에뮬레이터 등등 에뮬레이터는 이 시스템에 필요한 디바이스 드라이버를 모두 SW 적으로 구현해주고 있다. 일종의 하드웨어와 소프트웨어를 연결해주는 브릿지인 샘 가상화는 컴퓨팅 자원을 효율적으로 사용하기 위한게 목적 컴퓨팅 자원을 가상화하여 일종의 풀로 사용하고 이를 바탕으로 여러개의 독립적인 가상머신을 만들어 사용
  7. libvirt 를 이용하면 다음 그림과 같이 다양한 하이퍼바이저를 통합해서 관리할 수 있다. libvirt 자체는 이를 통합하는 API 를 지원해주고 이를 이용하는 툴을 사용하거나 구현해야하는데 기본적으로 virsh 이라는 쉘 환경의 도구를 지원해주고 있고 추가적으로 ovirt나 kimchi 같은 윈도우 기반의 프로그램을 이용할 수 도 있다. 원격에 있는 하이퍼 바이저의 경우 libvirt와 함께 설치되는 libvirtd를 통해 이루어 짐
  8. libvirt 를 이용하면 다음 그림과 같이 다양한 하이퍼바이저를 통합해서 관리할 수 있다. libvirt 자체는 이를 통합하는 API 를 지원해주고 이를 이용하는 툴을 사용하거나 구현해야하는데 기본적으로 virsh 이라는 쉘 환경의 도구를 지원해주고 있고 추가적으로 ovirt나 kimchi 같은 윈도우 기반의 프로그램을 이용할 수 도 있다.
  9. 노바는 대시보드나 콘솔에서 호출하는 nova-api로부터 시작됨. nova-compute는 하이퍼바이저 라이브러리를 통해 하이퍼바이저에게 인스턴스를 생성하라는 명령어를 다시 전달 nova-api는 메시지큐(AMQP)를 인스턴스 생성 명령을 전달 nova-scheduler는 인스턴스 관련 명령을 대기하고 있다가 자체 스케쥴링을 통해 nova-compute에 인스턴스를 생성하라는 명령어를 전달 이때 nova-conductor를 통해 Database에 관련 내용을 저장하게 되고 nova-compute는 libvirt를 통해 하이퍼바이저에게 인스턴스를 생성하라는 명령어를 다시 전달 그 때 하이퍼바이저가 인스턴스를 생성 사용자는 nova-api를 통해 Database의 정보를 조회할 수 있다.
  10. QEMU의 QoS 설정 기능을 libvirt에서 인터페이스를 제공해주고 있는 것 같은데… 이 부분에 대한 추가적인 조사 KVM에서 QoS에 대한 제어를 할 수 있는지 확인 (CPU, Memory, Network, I/O)