개인적으로 가상화 공부를 위해 정리한 내용들입니다.
함께 공부하자는 취지로 내용을 공유합니다.
1. 가상화란?
가상화는 단일한 물리 하드웨어 시스템에서 여러 시뮬레이션 환경이나 전용 리소스를 생성할 수 있는 기술입니다. 하이퍼바이저라 불리는 소프트웨어가 하드웨어에 직접 연결되며 1개의 시스템을 가상 머신(VM)이라는 별도의 고유하고 안전한 환경으로 분할할 수 있습니다. 이러한 VM은 하이퍼바이저의 기능을 사용하여 머신의 리소스를 하드웨어에서 분리한 후 적절하게 배포합니다. 가상화는 기존 제품을 최대한 활용할 수 있도록 지원합니다.
하이퍼바이저가 설치된 물리 하드웨어를 호스트라고 하며 그 리소스를 사용하는 여러 VM을 게스트라고 합니다. 이러한 게스트는 CPU, 메모리, 스토리지 등의 컴퓨팅 리소스를 처리하는 리소스의 풀로, 쉽게 재배치할 수 있습니다. 운영자는 필요할 때 필요한 리소스가 게스트에 제공될 수 있도록 CPU, 메모리, 스토리지, 기타 리소스의 가상 인스턴스를 제어할 수 있습니다.
(1) 개요
가상화는 전통적으로 하드웨어에 종속된 리소스를 사용해 유용한 IT 서비스를 만들 수 있는 기술입니다. 가상화를 사용하면 물리적 머신의 기능을 여러 사용자 또는 환경에 배포해 물리적 머신을 최대한 활용할 수 있습니다.
구체적으로 설명하자면 각각 용도가 다른 3개의 물리 서버가 있다고 가정해 봅시다. 하나는 메일 서버이고, 다른 하나는 웹 서버이고, 나머지 하나는 내부 레거시 애플리케이션을 실행하는 서버입니다. 각 서버는 잠재적인 실행 용량의 일부에 불과한 30% 용량만 사용하고 있습니다. 그러나 내부 운영을 위해서는 레거시 애플리케이션이 계속 필요하므로 레거시 애플리케이션과 이를 호스팅하는 세 번째 서버를 유지해야 합니다.
전통적으로는 위의 이론을 따릅니다. 1개의 서버와 1개의 운영 체제, 1개의 태스크와 같이 개별 서버에서 개별 태스크를 실행하는 것이 더 쉽고 안정적인 경우가 많습니다. 1개의 서버로 여러 개의 태스크를 처리하기란 쉽지 않았습니다. 그러나 가상화를 사용하면 메일 서버를 2개의 고유한 서버로 분할해 독립적인 태스크를 처리하고 레거시 애플리케이션을 마이그레이션할 수 있습니다. 마찬가지로 하드웨어도 더 효율적으로 사용할 수 있습니다.
보안을 고려하여 첫 번째 서버를 다시 분할해 다른 태스크를 처리하면 사용률을 30%에서 60% 또는 90%까지도 높일 수 있습니다. 이렇게 하고 나면 이제 빈 서버를 재사용해 다른 태스크를 처리하거나 모든 서버를 사용 중지해 냉각 및 유지관리 비용을 줄일 수 있습니다.
(2) 가상화 특징 및 역사
가상화 기술은 1960년대부터 시작되었으나 널리 도입된 것은 2000년대 초입니다. 하이퍼바이저와 같은 가상화 지원 기술이 수십 년 전에 개발되어 일괄 처리를 수행하는 컴퓨터에 여러 명의 사용자가 동시에 액세스할 수 있게 되었습니다. 일괄 처리는 급여와 같은 루틴 태스크를 매우 빠르게 수천 번 실행하는 사업 부문에서 널리 사용되는 컴퓨팅 방식이었습니다
그러나 이후 몇십 년간 단일 머신에서 여러 사용자가 작업할 수 있게 하는 솔루션은 점차 인기를 얻은 데 비해, 가상화는 빛을 보지 못했습니다. 즉, 시간 공유 솔루션으로 인해 운영 체제 내에서 격리된 사용자들은 UNIX 등의 운영 체제로 옮겨가게 되었고 결국 Linux®가 주류로 떠올랐습니다. 그러는 동안 가상화는 대중적인 인기를 얻지 못하는 틈새 기술로 남아 있었습니다.
이제 시간을 뛰어넘어 1990년대로 가 보겠습니다. 대부분의 기업이 물리 서버와 단일 벤더 IT 스택을 사용하고 있었기 때문에 다른 벤더의 하드웨어에서 레거시 애플리케이션을 실행할 수 없었습니다. 다양한 벤더가 제공하는 저렴한 상용 서버, 운영 체제, 애플리케이션으로 IT 환경을 업데이트하면서 기업은 사용률이 낮은 물리 하드웨어에 종속되었으며 각 서버에서 벤더별 태스크를 1개만 실행할 수 있었습니다.
가상화는 이러한 문제를 해결할 수 있었습니다. 이 2가지 문제에 대해 적절한 해결책을 제시하는 가상화를 통해 기업은 서버를 파티셔닝하고 여러 유형 및 버전의 운영 체제에서 레거시 애플리케이션을 실행할 수 있게 되었습니다. 서버를 더 효율적으로 사용하거나 아예 사용하지 않아도 되었으므로 구매, 셋업, 냉각, 유지관리와 관련된 비용이 줄어들었습니다.
또한 가상화는 광범위하게 적용할 수 있어 벤더 종속을 줄이고 클라우드 컴퓨팅의 기반을 다지는 데 도움이 되었습니다. 오늘날 가상화는 전체 추적을 위해 전문적인 가상화 관리 소프트웨어가 필요한 기업들이 사용하고 있습니다.
(3) 가상화 기술 및 설정
하이퍼바이저라는 소프트웨어가 물리 리소스를 필요로 하는 가상 환경으로부터 물리 리소스를 분리합니다. 하이퍼바이저는 노트북 등의 운영 체제에 배포하거나 서버 등의 하드웨어에 직접 설치할 수 있으며 대부분의 기업들은 이러한 방식으로 가상화합니다. 하이퍼바이저가 물리 리소스를 분할하여 가상 환경에서 사용할 수 있도록 합니다.
리소스는 필요에 따라 물리 환경에서 여러 가상 환경으로 파티셔닝됩니다. 사용자가 가상 환경(일반적으로 게스트 머신 또는 가상 머신이라고 함)과 상호 작용하고 가상 환경 내에서 계산을 실행합니다. 가상 머신은 단일 데이터 파일처럼 작동합니다. 디지털 파일과 같이 한 컴퓨터에서 다른 컴퓨터로 이동할 수 있고 어느 쪽 컴퓨터에서든 열어 동일하게 작동할 수 있습니다.
가상 환경이 실행 중이고 사용자 또는 프로그램이 물리 환경에서 추가 리소스를 요구하는 명령을 내리면 하이퍼바이저가 그 요청을 물리 시스템에 전달하고 변경사항을 캐시합니다. 이 모든 작업은 네이티브 속도에 가깝게 이루어집니다(특히 요청이 커널 기반 가상 머신(KVM)상에서 오픈소스 하이버파이저를 통해 전송되는 경우).
(4) 가상화 유형
① 데이터 가상화
여러 곳에 분산되어 있는 데이터를 단일 소스로 통합할 수 있습니다. 데이터 가상화를 통해 기업은 데이터를 동적 공급 요소로 다루어 여러 소스에서 데이터를 동시에 가져오고 새로운 데이터 소스를 손쉽게 통합하며 사용자의 요구에 따라 데이터를 변환할 수 있는 처리 역량을 확보할 수 있습니다. 데이터 가상화 툴은 여러 데이터 소스를 대표하여 이와 같이 다양한 데이터 소스가 단일 소스로 처리되게 함으로써 필요한 데이터를 필요한 형식으로 적시에 애플리케이션 또는 사용자에게 제공합니다.
② 데스크탑 가상화
데스크탑 가상화는 단일 머신에서 여러 운영 체제를 배포할 수 있는 운영 체제 가상화와 혼동하기 쉬우며, 시뮬레이션된 데스크탑 환경이 중앙 관리자 또는 자동화된 관리 툴을 통해 수백 개의 물리 머신에 동시 배포되도록 지원합니다. 각 머신에서 물리적으로 설치, 구성, 업데이트되는 전통적인 데스크탑 가상화 환경과 달리 데스크탑 가상화는 관리자가 모든 가상 데스크탑에서 구성, 업데이트, 보안 점검을 대규모로 수행할 수 있습니다.
③ 서버 가상화
서버는 대량의 특정 태스크를 매우 효과적으로 처리해 노트북 및 데스크탑 등의 다른 컴퓨터가 다양한 태스크를 처리할 수 있도록 하는 컴퓨터입니다. 서버를 가상화하면 서버가 이러한 특정 기능을 더 많이 수행할 수 있으며 서버 파티셔닝을 통해 구성 요소로 여러 기능을 지원할 수 있습니다.
④ 운영 체제 가상화
운영 체제 가상화는 운영 체제의 중앙 태스크 관리자인 커널에서 이루어집니다. 이렇게 하면 Linux 환경과 Windows 환경을 함께 실행할 수 있습니다. 또한 기업은 가상 운영 체제를 컴퓨터에 푸시해 다음과 같은 이점을 얻을 수 있습니다.
- 컴퓨터에 고도의 OOTB(Out Of The Box) 기능이 필요하지 않으므로 하드웨어에 많은 비용이 소모되지 않습니다.
- 모든 가상 인스턴스를 모니터링하고 격리할 수 있으므로 보안이 강화됩니다.
- 소프트웨어 업데이트와 같은 IT 서비스에 소요되는 시간이 절약됩니다.
⑤ 네트워크 기능 가상화
네트워크 기능 가상화(Network Functions Virtualization, NFV)는 디렉터리 서비스, 파일 공유, IP 설정과 같은 네트워크의 주요 기능을 분리하여 이러한 기능을 환경에 배포합니다. 소프트웨어 기능이 속해 있는 물리 머신으로부터 기능을 분리하면 특정 기능을 새 네트워크에 함께 패키징하고 이를 환경에 할당할 수 있습니다. 네트워크를 가상화하면 스위치, 라우터, 서버, 케이블, 허브 등 여러 개의 독립적인 네트워크를 생성하는 데 필요하며 특히 통신 산업에서 일반적으로 사용되는 물리 구성 요소의 수가 감소합니다.
(5) 가상화 장점
리소스를 가상화하면 관리자가 물리 리소스를 풀링할 수 있으므로 하드웨어의 진정한 범용화가 실현됩니다. 유지관리 비용이 많이 들지만 중요한 애플레이션을 지원하는 레거시 인프라는 가상화를 통해 사용을 최적화할 수 있습니다.
관리자는 더 이상 각각의 애플리케이션이 새로운 하드웨어에서 인증될 때까지 기다릴 필요가 없으며 환경을 설정하고 VM만 마이그레이션하면 모든 것이 이전처럼 작동합니다. 회귀 테스트 중에 테스트베드를 생성하거나 쉽게 복사할 수 있으므로 전용 테스트 하드웨어 또는 개발 서버가 중복으로 필요하지 않습니다. 적절한 교육과 지식을 통해 이러한 환경을 더욱 최적화하여 집약된 기능을 얻을 수 있습니다.
출처 : https://www.redhat.com/ko/topics/virtualization/what-is-virtualization
(6) 가상화 소프트웨어
출처 : https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81%ED%99%94
2. 하이퍼바이저
(1) 개요
하이퍼바이저는 가상 머신(Virtual Machine, VM)을 생성하고 구동하는 소프트웨어입니다. 가상 머신 모니터(Virtual Machine Monitor, VMM)라고도 불리는 하이퍼바이저는 하이퍼바이저 운영 체제와 가상 머신의 리소스를 분리해 VM의 생성과 관리를 지원합니다.
하이퍼바이저로 사용되는 물리 하드웨어를 호스트라고 하며 리소스를 사용하는 여러 VM을 게스트라고 합니다.
하이퍼바이저는 CPU, 메모리, 스토리지 등의 리소스를 처리하는 풀로, 기존 게스트 간 또는 새로운 가상 머신에 쉽게 재배치할 수 있습니다.
모든 하이퍼바이저에서 VM을 실행하려면 메모리 관리 프로그램, 프로세스 스케줄러, I/O(입력/출력) 스택, 기기 드라이버, 보안 관리 프로그램, 네트워크 스택과 같은 운영 체제 수준의 구성 요소가 필요합니다.
하이퍼바이저는 할당되었던 리소스를 각 가상 머신에 제공하고, 물리 리소스에 대해 VM 리소스의 일정을 관리합니다. 물리적 하드웨어는 계속해서 실행 작업을 수행하므로 하이퍼바이저가 일정을 관리하는 동안 CPU가 VM에서 요청한 대로 CPU 명령을 계속 실행합니다.
서로 다른 여러 개의 운영 체제를 나란히 구동할 수 있으며, 하이퍼바이저를 사용해 동일한 가상화 하드웨어 리소스를 공유합니다. 바로 이러한 부분이 가상화의 핵심적인 이점입니다. 가상화가 없다면 하드웨어에서 운영 체제를 1개만 구동할 수 있습니다.
기존 벤더와 오픈소스에서 다양한 하이퍼바이저를 선택할 수 있습니다. VMware는 가상화 솔루션의 선도기업으로 ESXi 하이퍼바이저와 vSphere 가상화 플랫폼을 제공합니다.
커널 기반 가상 머신(KVM)은 오픈소스 옵션으로 Linux® 커널에 포함되어 있습니다. 기타 옵션으로는 오픈소스인 Xen과 Microsoft Hyper-V가 있습니다.
(2) 하이퍼바이저 유형
① 베어 메탈 하이퍼바이저
네이티브 또는 베어 메탈 하이퍼바이저는 호스트의 하드웨어에서 직접 구동되어 게스트 운영 체제를 관리합니다. 호스트 운영 체제 대신 VM 리소스는 하이퍼바이저에 의해 하드웨어에 직접 예약됩니다.
이러한 유형의 하이퍼바이저는 엔터프라이즈 데이터 센터와 서버 기반 환경에서 가장 일반적으로 사용됩니다.
KVM, Microsoft Hyper-V, VMware vSphere가 예입니다. KVM은 2007년에 Linux 커널로 통합되었으므로 현대적인 버전의 Linux를 사용하는 경우 이미 KVM 액세스 권한을 갖고 있습니다.
② 호스트 하이퍼바이저
호스트 하이퍼바이저는 기존의 운영 체제에서 소프트웨어 레이어 또는 애플리케이션으로서 구동됩니다.
호스트 운영 체제에서 게스트 운영 체제를 추상화하는 방식으로 작동합니다. VM 리소스는 호스트 운영 체제에 따라 예약된 후 하드웨어에 대해 실행됩니다.
호스트 하이퍼바이저는 개인 컴퓨터에서 여러 개의 운영 체제를 구동하려는 개인 사용자에게 이상적입니다.
VMware Workstation과 Oracle VirtualBox가 예입니다.
출처 : https://www.redhat.com/ko/topics/virtualization/what-is-a-hypervisor
3. 가상 머신(Virtual Machine, VM) 이란?
(1) 요약
가상 머신(Virtual Machine, VM)은 물리적 하드웨어 시스템(오프프레미스 또는 온프레미스에 위치)에 구축되어 자체 CPU, 메모리, 네트워크 인터페이스 및 스토리지를 갖추고 가상 컴퓨터 시스템으로 작동하는 가상 환경입니다. 하이퍼바이저라 불리는 소프트웨어는 하드웨어에서 가상 머신의 리소스를 분리하고 적절히 프로비저닝하여 VM에서 사용할 수 있도록 합니다.
커널 기반 가상 머신(KVM)과 같은 하이퍼바이저가 탑재된 물리적 머신을 호스트 머신, 호스트 컴퓨터, 호스트 운영 체제 또는 간단히 호스트라고 부릅니다. 리소스를 사용하는 여러 VM을 게스트 머신, 게스트 컴퓨터, 게스트 운영 체제 또는 간단히 게스트라고 부릅니다. 하이퍼바이저는 CPU, 메모리, 스토리지 등의 컴퓨팅 리소스를 처리하는 리소스의 풀로, 기존 게스트 간 또는 새로운 가상 머신에 쉽게 재배치할 수 있습니다.
VM은 시스템의 나머지 부분과 격리되며, 서버처럼 하나의 하드웨어에 여러 VM이 존재할 수 있습니다. 이는 수요에 따라 또는 더 효율적인 리소스 사용을 위해 호스트 서버 간에 이동할 수 있습니다.
VM을 사용하면 macOS 노트북에 Linux® 배포판을 설치한 경우처럼 단일 컴퓨터에서 다른 여러 운영 체제를 동시에 실행할 수 있습니다. 각 운영 체제는 호스트 하드웨어의 운영 체제 및 애플리케이션이 작동하는 것과 동일하게 실행되므로 VM 내에서 에뮬레이트된 최종 사용자 환경은 물리적 머신에서 실행되는 실시간 운영 체제 환경과 거의 동일합니다.
(2) 가상 머신 작동 방식
가상화 기술을 사용하면 시스템을 다수의 가상 환경과 공유할 수 있습니다. 하이퍼바이저는 하드웨어를 관리하며 물리적 리소스를 가상 환경과 분리합니다. 리소스는 필요에 따라 물리 환경에서 VM으로 파티셔닝됩니다.
VM이 실행 중이고 사용자 또는 프로그램이 물리 환경에서 추가 리소스를 요구하는 지시를 내리면 하이퍼바이저가 물리 시스템의 리소스에 대해 해당 요청을 예약합니다. 따라서 VM의 운영 체제 및 애플리케이션이 물리적 리소스의 공유 풀에 액세스할 수 있습니다.
(3) 가상머신 특징 및 장점
VM을 사용하는 주요 이유는 서버 통합 때문입니다. 대부분의 운영 체제와 애플리케이션 배포는 베어메탈에 배포되는 경우 소량의 가용 물리적 리소스만을 사용합니다. 서버를 가상화하면 각 물리 서버에 수많은 가상 서버를 배치하여 하드웨어 활용률을 개선할 수 있습니다.
이렇게 하면 하드 드라이브 또는 하드 디스크와 같은 물리적 리소스를 추가로 구매할 필요가 없어질 뿐만 아니라 데이터센터 내 전력, 공간 및 냉각의 필요성이 줄어듭니다. VM은 이전에는 추가 하드웨어를 통해서만 가능했던 장애 조치와 이중화를 지원하여 추가적인 재해 복구 옵션을 제공합니다.
VM은 시스템의 나머지 부분과 분리된 환경을 제공하므로 VM 내에서 어떤 대상이 실행되든 호스트 하드웨어에서 실행되는 다른 대상을 방해하지 않습니다.
VM이 격리되므로 새로운 애플리케이션을 테스트하거나 프로덕션 환경을 설정할 수 있다는 이점이 있습니다. 특정 프로세스를 지원하기 위해 단일 목적의 VM을 실행할 수도 있습니다.
(4) 가상 머신 관리
가상화 관리 소프트웨어는 가상화를 더욱 쉽게 관리할 수 있도록 설계되었습니다. 물론 수동으로 VM에 리소스를 할당하고, 서버에 공간을 확보하고, 테스트하고, 필요할 때마다 패치를 설치할 수는 있습니다. 하지만 단일 시스템을 수백 개로 분리하면 이러한 시스템을 실행하고, 업데이트하고, 보안을 유지하는 데 필요한 작업이 크게 늘어납니다.
모든 VM이 하나의 모니터링, 프로비저닝, 관리 툴에 연결된 경우 사용량이 최대인 기간이나 유지관리 기간에 시스템을 더 적합한 하드웨어로 자동 마이그레이션할 수 있습니다. 워크로드와 시간에 따라 몇 초만에 다시 작업을 진행할 수 있는 서버 팜을 상상해보세요. 특정 게스트 인스턴스의 리소스 사용량이 늘어나기 시작하면 모니터링 시스템은 해당 게스트를 수요가 적은 다른 서버로 이동시키거나, 중앙 풀에서 게스트에 더 많은 리소스를 할당합니다.
출처 : https://www.redhat.com/ko/topics/virtualization/what-is-a-virtual-machine
'IT 이야기 > 가상화 기술' 카테고리의 다른 글
도커(Docker) (0) | 2023.06.15 |
---|---|
가상화 기술(서버 가상화, 컨테이너 가상화) (2) | 2023.06.15 |
댓글