* VM 캡슐화

- vSphere는 캡슐화를 사용해 VM의 정보를 파일로 생성하며, 이 파일들을 스토리지의 별도 디렉토리에 저장한다.

- 스토리지는 VMFS, NFS, vSAN, vSphere Virtual Volumes 등의 Datastore 들이다. (스토리지 부분에서 자세히 설명)

- VM을 몇개의 파일 또는 개체로 캡슐화하면, VM을 보다 쉽게 관리할 수 있으며 마이그레이션도 쉽게 할 수 있다.

- 예를들어 VM1을 다른 스토리지로 마이그레이션 하려면 다른 Datastore에 복사하면 되는것이다.

- 아래와 같이 ICM-Datastore에 WIN10-0X 들은 모두 VM의 디렉토리이다. 이 안에 파일들이 있다.

 

 

 

* 가상 머신 파일 정보

VM_name.vmx
(ex : vm01.vmx)
- VM의 구성요소 정보 (CPU 개수, 메모리 용량, 랜카드 수, 디스크 등
VM_name.vswp
(ex : vm01.vswp)
- 메모리 Swap 데이터 파일
- 가상머신을 켜면 이 swap 파일이 생성된다. 가상머신을 끄면 해당 파일은 없어진다.
- SWAP 메모리 정보이며, SWAP 사이즈를 정하면 그 사이즈만큼의 파일이 생성된다.
- VM을 켜면 아래와 같이 노란색 표시한 부분 파일이 생성된다.
vmx-VM_name.vswp
(ex : vmx-vm01.vswp)
- 메모리 Swap 구성파일.
- 자주 사용되는 파일은 아니다.
VM_name.nvram - VM의 바이오스 설정이 저장된 파일.
vmware.log
vmware-1.log
vmware-2.log
...
- VM의 현재 로그 파일(.log) 과 로그 아카이브시 사용되는 파일 집합(-#.log)
- vmware.log는 현재 로그 파일이며, vmware-1.log, vmware-2.log... 들은 아카이브된 파일이다.
- vmware.log 외에 한번에 최대 6개의 아카이브 로그 파일이 유지 관리된다.
- 로그가 쌓일 때, vmware.log는 vmware-1.log로 변경되고, vmware-1.log은 vmware-2.log 로 변경되는 식이다.
VM_name.vmdk - 디스크 descriptor 파일. 메뉴얼에는 Virtual disk characteristics 으로 표기됨.
- 하나 이상의 가상 디스크 파일. 첫 번째 가상 디스크에는 VM_name.vmdk 및 VM_name-flat.vmdk 파일이 있다.
- VM에 디스크 파일이 1개보다 더 많은 경우, 파일 네이밍은 VM_name_#.vmdk 및 VM_name_#-flat.vmdk 가 된다. (#은 1부터 시작)
- 가상머신에 저장된 모든 데이터들이 여기 저장된다. 어떤 파일이든 증가하면 사이즈가 올라간다.
- 10kb 파일을 저장하면 실제로 그만큼 용량이 늘어난다.
VM_name-flat.vmdk - 디스크의 데이터 파일
- 리눅스에서 보면 링크가 걸린 파일이 있는데 이것과 같은 맥락으로 사실은 실제로 용량에 저장되는게 vmdk파일이 아니고 flat.vmdk 파일이다.
- vmdk파일은 flat.vmdk와 하드링크로 연결되어 있다. (하드링크 : 아이노드가 같고 이름이 다른 파일)
- 결국은 vmdk와 flat.vmdk 서로 동일한 것이며, 관리자가 볼때는 vmdk로 보이고, 내부적으로 동작할때는 flat.vmdk로 동작한다.
VM_name.vmtx - VM 템플릿 구성 파일
- VM을 템플릿으로 변환하면, 이 구성파일이 vmx파일을 대체하게 됨.
- VM 템플릿은 VM의 원본 사본이다. (A VM template is an original copy of the VM.)
VM_name-*.vmss - 서스펜드 상태 파일
VM_name.스냅샷번호.vmsn
(ex : S1vm.snapshot1.vmsn)
- 스냅샷 생성 시점의 가상 메모리 상태
- 이 파일은 메모리 선택에 관계없이 스냅샷 생성할때마다 만들어짐.
- 메모리가 없는 .vmsn파일은 메모리가 있는 파일보다 훨씬 작다.
VM_name. vmsd - 가상 시스템 스냅샷 정보의 데이터베이스이며 스냅샷 관리자 관련 정보의 기본 소스 데이터

- 이름에 vmx가 붙으면 구성에 관련된 것이다. vmx파일은 메모장으로 열리며, 직접 수정도 가능하다.

- 로그 파일을 제외한 각 파일의 이름은 VM의 이름인 <VM_name>으로 시작한다.

- 위 리스트는 전체 리스트가 아니며, 추가 정보는 다음 참고할 것.

https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-55238059-912E-411F-A0E9-A7A536972A91.html

 

 

 

교재 참조 페이지 : 3-25, 3-26

'VMWare > Virtualization & Virtual Machine' 카테고리의 다른 글

VM (Virtual Machine) 기본개념  (0) 2023.03.27
가상화 기본 개념  (0) 2023.03.23

* VM (Virtual Machine) 이란?

 

- VM은 물리적 장치와 그 부품들의 소프트웨어적 형태이다.

- 가상화 소프트웨어는 물리적 장치와 그 요소들을 VM의 파일로 변환한다.

- VM은 specification/configuration files의 모음을 포함한다.

- 모든 VM은 물리적 하드웨어와 동일한 function을 제공한다.

- VM은 호환용이성(portable), 보안성, 관리편의성 기능을 가진다.

 

 

 

* VM의 요소

- Guest 운영체제

- VMware Tools (VM에 적용하는 드라이버 모음과 추가기능)

- 가상 자원 (CPU, 메모리, 어댑터, 디스크, 컨트롤러, 시리얼 포트 등등)

- 어플리케이션

 

 

 

* 가상머신과 물리장치 비교

 

[물리장치]

- 이동, 복사 어려움
- 특정 하드웨어 구성요소 세트에 묶임
- 수명주기가 짧은 경우가 많음
- 하드웨어 업그레이드를 위해 사람이 필요

 

[가상머신]

- 이동, 복사 쉬움
- VM들은 파일에 캡슐화되어 물리적 하드웨어와는 독립적이다.
- 동일한 물리적 하드웨어에서 VM끼리 독립적이다.
- 물리적 하드웨어 변경의 영향이 적다.

 

 

 

* 가상머신의 장점

 

1. 호환성

- 가상머신은 물리적 하드웨어와 독립적이므로 아래 부분을 고려할 필요 없음.

- 물리적 장치는 하드웨어 변경에 따른 드라이버 호환성 영향이 미미하며, 문제 대비에 대한 다양한 상황 테스트 등이 필요하다.

- 예를들어 어플리케이션이 하드웨어 드라이버와 직접 인터페이스 하는 경우, 하드웨어/드라이버 또는 둘다 변경하는 경우 상당한 영향이 발생할 수 있음.

 

2. 자원 효율성

- 물리적서버에서 사용량이 남으면 남은 자원은 놀 수 밖에 없으나 가상머신은 자원만큼 생성하여 사용 가능

- 부품 수가 부족하다 하더라도 가상으로 생성할 수 있음. 예를들어 물리서버에 LAN port가 하나라도, VM에서는 여러개 만들 수 있음.

 

3. 독립성 및 사용의 자유로움

- VM끼리 독립적이므로 특정 VM의 장애가 다른 VM에 영향을 주지 않는다.

- 만약 VM끼리 접근하려면 액세스 권한을 별도로 부여받아야 함.

 

4. 빠른 속도

- 물리적으로 서버를 설치하는 것과 다르게, 하이퍼바이저 내에서 빠르고 일관되게 VM을 배포할 수 있음.

- 서버 이동의 경우 물리적인 서버를 옮기는것보다 VM을 옮기는것이 훨씬 수월하고 빠름.

 

 

 

* VM 가상 하드웨어들

- 각 VM에 설치되는 Guest OS는 일반적인 하드웨어를 바라본다. (가상 하드웨어라는 것을 알지 못함)

- 시스템 관리자가 적용할 수 있는 몇가지 variation을 제외하고는 모든 VM은 Uniform 하드웨어라는 것을 가진다.

- Uniform 하드웨어를 사용하면, VMware 가상화 플랫폼 사이에서 VM들을 Portable 하게 만든다.

- VM은 가상 하드웨어를 사용한다. 가상 CPU(vCPU)와 가상 메모리는 최소한의 필수 가상 하드웨어이다.

- 사용자는 CPU 설정, VM 메모리 설정, 가상 디스크 및 NIC 등을 추가할 수 있다.

- 또한 CD/DVD 와 SCSI 장치같은 가상 하드웨어도 추가하고 구성할 수 있다.

- 모든 장치를 추가하고 구성할 수 있는 것은 아니다.

- 예를 들어 비디오 장치는 추가할 수 없지만 사용 가능한 비디오 장치 및 비디오 카드는 구성할 수 있다.

 

# CPU

- CPU 및 메모리 자원을 추가/변경/구성하여 VM 성능 향상

- OS, Application에 따라 VM의 CPU 및 메모리 자원 자유롭게 조정

- 멀티코어 vCPU 기능으로 VM의 가상 소켓당 코어 수 제어

 (소켓 제한이 있는 OS나 Application에서 호스트의 CPU코어를 더 많이 사용할 수 있음)

- VM은 물리 서버의 논리 CPU 수 (CPU의 코어수, 하이퍼스레딩 활성화된다면 그 두배) 보다 많은 가상 CPU를 가질 수 없음.

 

Memory

- 대부분의 메모리 매개 변수는 VM을 생성하는 동안 또는 Guest OS 설치 후 설정할 수 있다.

- 일부 작업은 설정을 변경하기 전에 VM의 전원을 꺼야할 수 있음.

- VM의 메모리 리소스 설정에 따라 VM에 할당되는 호스트의 메모리 양이 결정된다.

- VM은 구성된 가상 하드웨어 메모리 크기보다 많은 메모리 리소스를 활용할 수 없다.

 

# USB Device

- 여러 USB 디바이스(보안동글, 스토리지USB)들을 디바이스가 물리적으로 연결된 서버에 올라간 VM에 할당할 수 있음.

- USB 디바이스는 한 번에 하나의 VM에서만 사용할 수 있다. 해당 VM에서 USB를 제거하면 다른 VM이 사용가능.

- VM은 데이터센터 (VMware의 데이터센터 개념을 말하는 것으로 보임) 내의 다른 물리적 서버에 연결된 USB에 연결할 수 없다.

 

# DirectPath I/O 장치

- 한 VM에 최대 16개의 PCI vSphere DirectPath I/O 장치를 추가할 수 있다.

- 이 장치는 VM이 실행되는 호스트에서 PCI 패스스루용으로 예약되어야 함.

- 스냅샷은 vSphere DirectPath I/O 패스스루 디바이스에서 지원되지 않는다.

 

# SATA Controller

- 가상 디스크 및 CD/DVD 장치에 대한 액세스를 제공

- SATA 가상 컨트롤러는 가상 머신에 AHCI SATA 컨트롤러로 나타남.

 

# VMCI (The Virtual Machine Communication Interface)

- VMCI는 가상 머신과 하이퍼바이저 간에 고속 통신 채널을 제공하는 인프라이다.

- VMCI 디바이스는 추가하거나 제거할 수 없다.

- VMCI SDK를 사용하면 VMCI 인프라를 사용하는 애플리케이션을 쉽게 개발할 수 있다.

- VMCI가 없으면 VM은 네트워크 계층을 사용하여 호스트와 통신하며, 네트워크 계층을 사용하면 통신에 오버헤드가 추가된다.

- VMCI를 사용하면 통신 오버헤드가 최소화되고 통신이 필요한 작업을 최적화할 수 있다.

- VMCI는 128K 크기의 대기열 쌍으로 거의 10Gbit/s까지 올라갈 수 있습니다.

  ( VMCI can go up to nearly 10 Gbit/s with 128 K sized queue pairs.)

- VMCI는 다음 유형의 통신을 사용할 수 있다.

       - 데이터그램 (Datagrams) : connectionless이며, UDP queue pair와 유사 

       - 연결 지향 (Connection oriented) : TCP와 유사

- VMCI는 TCP/UDP 애플리케이션에 사용되는 API와 유사한 소켓 API를 제공한다. IP 주소는 VMCI ID 번호로 대체됨.

- 예를 들어, netperf를 포팅하여 TCP/UDP 대신 VMCI 소켓을 사용할 수 있다.

- VMCI는 기본적으로 비활성화 되어있음.

- VMCI 관련 참고 링크 : https://www.vmware.com/pdf/ws65_s2_vmci_sockets.pdf

 

 

 

* 가상머신 작동 매커니즘

- 물리적 서버에서 실행되는 여러 VM들은 해당 서버의 CPU, 메모리, 네트워크, 스토리지 리소스를 공유한다.

- VM은 CPU에 대한 액세스를 공유하며, 하이퍼바이저에 의해 실행되도록 예약된다.

- VM에는 물리적 네트워크 카드와 디스크 컨트롤러에 대한 엑세스를 사용하고 공유할 수 있는 고유한 메모리 영역이 할당된다.

- 하이퍼바이저는 기존 운영체제가 메모리를 할당하고 애플리케이션을 스케줄링하는 것처럼 VM을 스케줄링한다.

 

 

 

* 가상 하드웨어 버전

- 가상 하드웨어 버전 또는 VM 호환성 수준에 따라 VM이 지원하는 운영 체제 기능이 결정된다.

- 이러한 가상 하드웨어 버전은 Virtual Machine에 적용되는 것임. 이 버전에 따라 사용할 수 있는기능이 있고 없기도 함.

- VMware 제품에서 지원하지 않는 최신 버전은 사용하지 말 것.

  (Do not use a later version that is not supported by the VMware product)

- VMware 제품의 각 릴리스에는 해당 VM 하드웨어 버전이 포함된다.

- 위 표에는 각 ESXi 버전이 지원하는 최신 하드웨어 버전이 나와 있다.

- 각 VM Compatibility 수준은 최소 5개의 Major 또는 Minor vSphere Release를 지원한다.

  (Each VM compatibility level supports at least five major or minor vSphere releases.)

 

 

 

 

교재 참조 페이지 : 3-27, 3-28, 3-29

'VMWare > Virtualization & Virtual Machine' 카테고리의 다른 글

VM의 파일 정보  (0) 2023.03.27
가상화 기본 개념  (0) 2023.03.23

* 가상화란?

- 물리적 장치를 소프트웨어 기반의 표현으로 생성하는 절차

- 가상화를 사용해 여러 워크로드를 단일 컴퓨터에서 가상머신으로 통합하고 실행할 수 있음.

 

 

 

* 가상화의 기본 개념

- 기존 아키텍쳐는 운영체제가 설치된 하드웨어와 직접 상호작용한다.

- 가상화는 하이퍼바이저(또는 가상화 계층)라는 얇은 소프트웨어 계층을 통해 설치된 하드웨어와 상호작용한다.

- 하이퍼바이저는 가상머신을 만들고, 거기에 물리적 하드웨어 자원을 동적으로 제공한다.

- 하이퍼바이저를 통해 VM은 기본 물리적 하드웨어로부터 어느정도 독립적으로 운영 가능하다.

- 가상화는 자원의 효과적인 사용으로 비용감소 / 업무 효율성과 민첩성 증가의 이점을 가진다.

 

 

 

* VMware 가상화 종류 4가지

(ESXi 위에 NSX,VSAN,Horizon 이 올라가게 됨)

- Server 가상화 : vSphere ESXi

- Network 가상화 : NSX-T

- Storage 가상화 : VSAN

- Desktop 가상화 : Horizon

 

 

 

* CPU 가상화

 

# 물리적 환경

- 해당 물리적 장비에 올라간 OS가 해당 장비 안에 모든 CPU에 대한 소유권을 가짐

 

# 가상화 환경

- CPU 가상화는 성능에 초점을 맞추며, 또한 사용 가능한 CPU에서 직접 실행된다.

- 가상화 계층은 VM이 물리적 시스템에서 직접 실행되는것처럼 작동해야 할 때만 instruction을 실행함.

- CPU 가상화는 에뮬레이션이 아니다. 에뮬레이션은 이식성을 제공하나 성능에는 부정적인 영향을 미칠 수 있음.

  (이식성 Portablity) : 에뮬레이션은 프로그램을 만든 시스템이 아닌 다른 시스템에도 실행할 수 있는 것)

- 지원되는 게스트 운영 체제는 x64 프로세서용으로 설계되었기 때문에 CPU 가상화는 에뮬레이션이 아님.

- 하이퍼바이저를 사용하면, Guest OS는 실제 물리적 X86 CPU에 native하게 실행될 수 있음.

 

 

 

* Memory 가상화

 

# 물리적 환경

- 해당 물리적 장비에 올라간 OS가 해당 장비 안에 모든 Memory에 대한 소유권을 가짐

 

# 가상화 환경

- Memory 가상화는 성능에 초점을 맞추며, 또한 사용 가능한 Memory에서 직접 실행된다.

 

# 하이퍼바이저의 가상 메모리 사용

- 가상 메모리는 대부분의 범용 운영 체제에서 사용되는 수십 년 된 기술이다.

- 응용 프로그램이 시작되면 운영 체제에서 제공하는 인터페이스를 사용해 실행 중에 가상 메모리 페이지를 할당/해제한다.

- 운영 체제는 가상 메모리를 사용하여 물리적으로 액세스할 수 있는 것보다 더 많은 메모리를 응용 프로그램에 제공한다.

- 거의 모든 최신 프로세서는 가상 메모리를 지원하는 하드웨어를 가진다.

- 운영체제의 가상 메모리는 애플리케이션을 위한 균일한 가상 주소 공간을 생성한다.

- 운영 체제와 하드웨어를 통해 가상 메모리는 가상 주소 공간과 물리적 주소 공간 간의 주소 변환을 처리할 수 있다.

- 이 기술은 현대 컴퓨터 시스템에서 대규모 주소 공간, 프로세스 보호, 파일 매핑 및 스와핑을 지원하도록 실행 환경을 조정한다.

- 가상화 환경에서 VMware 가상화 계층은 시작되는 VM에 대해 주소 지정 가능한 연속 메모리 공간을 생성한다.

- 할당된 메모리 공간은 VM 생성 시 설정되며 가상 주소 공간과 동일한 속성을 갖는다.

- 이 구성을 통해 하이퍼바이저는 여러 가상머신들을 동시에 실행할 수 있으며 각 VM의 메모리를 다른 VM이 액세스하지 못하도록 보호할 수 있다.

 

 

 

* 저장소 가상화 / 네트워크 가상화

- 내용이 길고 복잡하여 이후에 따로 설명

 

 

 

* GPU 가상화

 

# 개념

- VM은 고성능 계산 작업을 위해 물리적 호스트의 GPU를 사용할 수 있다.

- GPU는 복잡한 그래픽 작업에 사용된다. GPU에서 이러한 작업은 CPU에 과부하를 주지 않고 고성능으로 수행된다.

- 1개의 VM에 최대 4개의 vGPU를 구성할 수 있다.

- VMWARE는 NVIDIA, AMD GPU 지원, 자세한 것은 호환성 매트릭스 확인 필요

 

# 가상 GPU 사용 사례

가상 GPU는 다음과 같은 사용 사례에 대해 VM에 추가할 수 있습니다:

 -  2D 및 3D 그래픽 작업

- VMware Horizon 가상 데스크톱

- 그래픽 집약적 애플리케이션 (건축가, 엔지니어등이 사용하는 애플리케이션 같은..)

- 대규모 병렬 작업 애플리케이션 (과학 계산 등)

 

# 참고 :  vSphere 7 Bitfusion

- 하드웨어를 가속화하기 위한 feature이다.

- Bitfusion은 서로 연결된 서버 사이에서 특정 물리적 리소스를 분리하는 소프트웨어 플랫폼을 제공한다.

- 예를 들어, 이 플랫폼은 GPU를 서버별로 가진 리소스가 아니라, 네트워크를 통해 GPU에 엑세스 할 수 있는 리소스 풀로 만들어 공유할 수 있다.

- 즉 Bitfusion은 vSphere가 CPU를 공유하는 방식과 유사한 방식으로 GPU를 공유하여 효율적으로 사용할 수 있게 함. (GPU 공유를 위한 목적임)

- GPU 리소스를 풀로 생성하여 여러 워크로드에 대한 탄력적인 인프라를 제공

- 또한 플랫폼을 확장하여 FPGA 및 ASIC과 같은 다른 가속기를 지원할 수 있음.

- 관련 문서 : https://docs.vmware.com/kr/VMware-vSphere-Bitfusion/index.html

 

# Bitfusion 사용 사례

- 복잡한 애니메이션 및 3D 그래픽 렌더링과 같은 엔터테인먼트 및 시각화

- 자율 주행 차량 및 스마트 시티 프로젝트와 같은 교통 및 정부 분야

- 제조 및 배송 (예: 공장 워크플로우 및 공급망 물류 최적화)

- 감염병 및 역학(예: 백신 연구 및 바이러스 확산 방식 모델링)

- 강의실 안팎의 연구를 위한 GPU 리소스 할당과 같은 고등 교육 분야

- 재고 관리, 구매자 행동 분석, 사기 탐지 지원 등 소매업

- 일상적이거나 위험한 작업 수행을 위한 모델 생성 등 로보틱스

- 리스크 분석 등 금융 서비스

 

 

 

* 기타 가상 디바이스

CD/DVD 드라이브 CD, DVD 또는 ISO 이미지 연결
USB 3.0 및 3.1 호스트 연결 및 클라이언트 연결 기기에서 지원
플로피 드라이브 플로피 드라이브 또는 플로피 이미지에 VM을 연결하는 데 사용
일반 SCSI 디바이스 VM을 추가 SCSI 어댑터에 연결할 수 있음.

 

 

교재 참조 페이지 : 2-22~27 / 3-27, 3-28

'VMWare > Virtualization & Virtual Machine' 카테고리의 다른 글

VM의 파일 정보  (0) 2023.03.27
VM (Virtual Machine) 기본개념  (0) 2023.03.27

+ Recent posts