일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- convolution
- quantum_computing
- kubernetes
- 클라우드
- DRAM
- 쿠버네티스
- HA
- nvidia
- jhVM
- C++
- POD
- Qubit
- deep_learning
- Semiconductor
- CUDA
- flash_memory
- sycl
- 양자역학의공준
- 반도체
- cloud
- GPU
- SpMM
- Compression
- dnn
- 반도체기초
- 딥러닝
- stl
- CuDNN
- FPGA
- jhDNN
- Today
- Total
Computing
[클라우드] 가상화란? (Virtualization, Hypervisor) 본문
가상화 Virtualization 개념
(하드웨어) 가상화(virtualization)란 클라우드 컴퓨팅을 가능하게 하는 가장 기본이 되는 기술로, 컴퓨터 자원(resource, CPU, 메모리, 하드디스크, 네트워크 등)들의 가상화(추상화)된 버전을 제공하는 기술[1]이다. 가상화는 하드웨어의 효율적인 사용과 애플리케이션의 쉬운 배포를 목적으로 사용된다.
아마 virtual machine(VM)에 대해서는 많이 들어 보았을 것인데, 가상머신(VM)은 hardware virtualization을 통해 완전히 독립된(isolated) 컴퓨팅 환경을 사용자에게 제공하는 것이 목적이다. 하나의 실제 컴퓨터에서 여러 개의 가상머신들이 실행될 수 있으며, 각 가상머신은 독립된 컴퓨터처럼 자신의 OS, libs, bins 등의 실행 환경을 가진다. (즉 말 그대로 가상머신은 사용자가 진짜 자신만의 컴퓨터을 사용하는 것처럼 느껴지도록 한다.)
Fig 1.은 가상화를 잘 나타내는 그림으로, 공통된 물리 시스템(실제 하드웨어)을 여러 개의 VM이 공유하며 실행되는 모습을 나타낸 것이다. 가상화 기술은 여러 가상머신(VM)이 동일한 하드웨어를 공유하면서도 각각은 완전히 독립된 컴퓨터 시스템처럼 작동할 수 있게 해준다. 즉 가상머신 내에서 사용자는 진짜 자신의 컴퓨터를 가지고 있는 것처럼 자기가 원하는 환경 세팅을 하거나 원하는 소프트웨어를 설치할 수 있다. 다만 실제 하드웨어를 공유하고 있기에, 다른 VM이 어떤 하드웨어(예를 들면 CPU)를 많이 쓰고 있다면 나의 VM은 느려질 수 밖에는 없다.
하드웨어 공유는 time sharing 방식으로 진행된다. 결국 물리적인 하드웨어는 제한되어 있기에, VM이 하드웨어를 쓰지 않을 때 다른 VM이 쓰는 방식으로 VM들끼리의 concurrent execution(동시성 실행, Not parallel execution)을 지원한다. 이러한 하드웨어 공유를 위해서는 누군가가 VM들을 scheduling을 해줘야 하는데, 그 역할을 하는 것이 hypervisor이다.
가상화 기술은 하드웨어를 공유하기에 다음 2가지를 만족[1]시켜야 한다.
1. Performance isolation : VM들이 하드웨어를 공유하고 있기에, VM을 위한 최소한의 성능을 보장해야 한다.
2. System security : 마찬가지로 VM들이 하드웨어를 공유하고 있기에, 보안 이슈가 발생할 수 있다.
가상화 Virtualization 장점 및 필요성
앞선 언급했듯, 가상화는 하드웨어의 효율적인 사용과 애플리케이션의 쉬운 배포를 목적으로 사용된다.
가상화 기술을 통해, VM들끼리 하드웨어는 공유하지만 프로그램 실행 환경은 독립적으로 설정할 수 있다. 리눅스 프로그램과 윈도우 프로그램을 동시에 실행시켜야 하는 상황이라고 하자. 가상화 기술이 없으면 리눅스 시스템(컴퓨터) 따로, 윈도우 시스템 따로, 2개의 시스템을 구축하여야 한다. 하지만 가상화 기술을 통해 하나의 시스템만 구현하고, 그 위에 가상머신으로 윈도우 시스템과 리눅스 시스템을 실행시킬 수 있을 것이다.
마찬가지로 애플리케이션의 쉬운 배포도 가능하다. 만약 리눅스 프로그램이 있는데, 윈도우 시스템에서 이것을 실행시키고 싶다고 하자. 가상화 기술이 없었다면 윈도우용 프로그램을 새로 직접 만들어야 할 것이다. 하지만 가상화 기술을 통해 윈도우 시스템에 리눅스 가상머신을 실행시키고, 해당 리눅스 가상머신 위에서 리눅스 프로그램을 실행시키면 문제가 해결된다.
이러한 OS dependency뿐만 아니라 가상머신은 libs, bins 모두 독립된 환경을 가질 수 있다. 따라서 프로그램 배포할 때마다 컴퓨터에 프로그램을 위한 환경 세팅을 해줄 필요 없이, 프로그램을 위한 환경 세팅이 완료된 가상머신과 함께 프로그램을 배포하기만 하면 된다. 실제 컴퓨터에서는 가상머신에서 프로그램만을 실행시키면 된다.
Reference
[1] Anil Madhavapeddy, Cloud Computing Virtualization lecture notes, University of Cambridge
[2] https://www.redhat.com/ko/topics/virtualization/what-is-virtualization
[3] Majd F. Sakr and Mohammad Hammoud, Virtualization lecture notes , March 19, 2012
'Cloud > 개념' 카테고리의 다른 글
[가상화] PCI Pass-through와 VFIO (0) | 2022.10.21 |
---|---|
[가상화] IOMMU와 VT-d (PCI Pass-through) (0) | 2022.10.19 |
libvirt 개념 (0) | 2022.08.29 |