Proxmox VE는 강력한 가상화 플랫폼으로, 컨테이너와 가상 머신(VM)을 손쉽게 배포할 수 있습니다. 때로는 가상 머신 안에서 또 다른 가상 머신이나 컨테이너를 실행하고 싶을 때가 있는데, 이럴 때 필요한 것이 바로 중첩 가상화입니다. 조금 더 쉽게 설명하자면 VM으로 윈도우 OS를 설치했는데 윈도우 OS에서 Hyper-v를 실행하려면 중첩가상화를 활성해야합니다. 이번 글에서는 Proxmox에서 중첩 가상화를 활성화하는 방법을 단계별로 안내합니다.

◎ 중첩 가상화란?
중첩 가상화란, 물리적 호스트(Proxmox 서버)에서 실행 중인 가상 머신(게스트) 안에서 다시 하이퍼바이저를 실행해 또 다른 가상 머신을 만들 수 있도록 해주는 기능입니다. 예를 들어, Proxmox 호스트에서 가상 머신을 만들고, 그 안에 또 다른 가상 머신을 실행할 수 있습니다.

◎ Proxmox에서 중첩 가상화 활성화
1. 호스트에서 중첩 가상화 활성화 확인
 - 먼저, Proxmox 호스트에서 중첩 가상화가 활성화되어 있는지 확인합니다.
   > Intel CPU인 경우:

# cat /sys/module/kvm_intel/parameters/nested

 

  > AMD CPU인 경우:

# cat /sys/module/kvm_amd/parameters/nested

**출력이 "Y" 또는 "1"**이면 중첩 가상화가 활성화된 상태입니다.
**"N" 또는 "0"**이면 비활성화 상태입니다.

2. 중첩 가상화 활성화
 - 활성화되어 있지 않다면 아래 명령어로 활성화합니다.
  > Intel CPU:

# echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf

 

  > AMD CPU:

# echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf

 

 - 적용을 위해 시스템을 재부팅하거나 커널 모듈을 다시 로드합니다.

  > Intel CPU:

# modprobe -r kvm_intel
# modprobe kvm_intel

 

  > AMD CPU:

# modprobe -r kvm_amd
# modprobe kvm_amd


3. 게스트 VM에서 가상화(VT-X/SVM) 활성화
 - Proxmox 호스트에서 중첩 가상화가 활성화되었다면, 이제 게스트 VM에서 가상화 기능을 활성화해야 합니다.
 - 명령줄에서 활성화
  > VM을 종료합니다.
  > VM의 CPU 타입을 "host"로 변경합니다.

# qm set <VMID> --cpu host
# qm set 105 --cpu host

(VMID는 해당 가상 머신의 ID로 변경).

 - 웹 UI에서 활성화


  > Proxmox 웹 UI에 접속합니다.
  > VM → 하드웨어 → 프로세서로 이동합니다.
  > CPU 유형을 "host"로 변경합니다.
  > VM을 시작합니다.

 

4. AMD 프로세서에서 중첩 가상화 활성화 추가 안내
 - Proxmox 호스트에서 VM 구성 파일에 args 추가
  > VM을 종료합니다.
  > Proxmox 호스트에서 VM 구성 파일을 엽니다.

# vi  /etc/pve/qemu-server/.conf


   * 윈도우 VM의 경우 첫번째 줄에 추가합니다.

args: -cpu 'host,+svm,-hypervisor'

 

   * 리눅스 VM의 경우 첫번째 줄에 추가합니다.

args: -cpu 'host,+svm'


파일을 저장하고 VM을 다시 시작합니다


5. 게스트 VM에서 가상화 지원 확인
 - 게스트 VM에 접속한 뒤, 아래 명령어로 가상화 지원 여부를 확인합니다.

  > 윈도우OS

   * 작업 관리자(태스크 매니저) 사용
    ** Ctrl + Shift + Esc 키를 눌러 작업 관리자를 엽니다.
    **  성능 탭으로 이동 후 CPU 항목을 클릭합니다.
    **  오른쪽 하단에 "가상화: 사용" 또는 **"가상화: 활성화됨"**으로 표시되면 가상화가 활성화된 상태입니다.

   * 명령 프롬프트 또는 PowerShell
    **  명령 프롬프트에서 systeminfo 명령을 실행합니다.

> systeminfo
..(생략)..
Hyper-V 요구 사항:       하이퍼바이저가 검색되었습니다.

    **  결과에서 "펌웨어에 가상화 사용: 예" 또는 **"하이퍼바이저가 검색되었습니다."**가 표시되면 가상화가 활성화된 것입니다.

   * PowerShell에서 아래 명령을 실행할 수 있습니다:

> Get-ComputerInfo -property "HyperV*"
HyperVisorPresent                                 : True
HyperVRequirementDataExecutionPreventionAvailable :
HyperVRequirementSecondLevelAddressTranslation    :
HyperVRequirementVirtualizationFirmwareEnabled    :
HyperVRequirementVMMonitorModeExtensions          :

    **  HyperVisorPresent: True 또는 HyperVRequirementVirtualizationFirmwareEnabled: True가 표시되면 가상화가 활성화된 것입니다.

 

  > 리눅스 OS

# egrep --color -i "svm|vmx" /proc/cpuinfo

"vmx"(Intel-VT) 또는 "svm"(AMD-V)가 출력되면 가상화가 활성화된 것입니다.

◎ 결론
이제 Proxmox 가상 머신 안에서 또 다른 가상 머신이나 컨테이너를 실행할 수 있습니다. KVM, Proxmox, VirtualBox, VMware 등 다양한 하이퍼바이저를 게스트 VM에 설치해 활용할 수 있습니다. 중첩 가상화를 활용하면 개발, 테스트, 교육 등 다양한 환경에서 유연하게 가상화 환경을 구성할 수 있습니다.


Proxmox VE를 설치 후 업데이트 관련 설정을 변경하지 않으면 OS는 업데이트가 가능하지만 Proxmox VE는 제공받지 못합니다. Proxmox VE의 공식 업데이트를 받으려면 반드시 Proxmox의 No-Subscription 저장소(Repository)를 활성화해야 합니다.

 

◎ 저장소(Repository) 활성화 방법

 - /etc/apt/sources.list.d/pve-enterprise.list 는 유료구독용 설정파일이기 때문에 무료로만 이용할 경우 삭제해도 됩니다.

 - /etc/apt/sources.list.d/ceph.list 는 분산스토리지관련 업데이트 설정입니다. 분산스토리지 기능은 무료인데 기능을 사용하면 업데이트 설정을 하지 않는 경우 업데이트가 불가합니다. 분산스토리지 기능을 사용하지 않는 경우 삭제해도 됩니다.
 - /etc/apt/sources.list.d/pve-no-subscription.list 파일을 설정하지 않는 경우 Proxmox 업데이트는 불가하고 OS 업데이트만 가능합니다.

# rm -f /etc/apt/sources.list.d/pve-enterprise.list
# rm -f /etc/apt/sources.list.d/ceph.list
# vi /etc/apt/sources.list.d/pve-no-subscription.list
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
# apt update && apt dist-upgrade -y

 

 - Debian OS 코드네임이 변경되면 Proxmox 업데이트 설정의 코드네임도 변경해야 합니다.

 - bookworm은 Debian 12의 코드네임입니다. 아래 명령어로 VERSION_CODENAME 항목에서 확인이 가능합니다.

#  cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

 

 - Proxmox VE 버전은 아래 명령어로 확인이 가능합니다.

#  pveversion -v
proxmox-ve: 8.3.0 (running kernel: 6.8.12-4-pve)
pve-manager: 8.3.0 (running version: 8.3.0/c1689ccb1065a83b)
proxmox-kernel-helper: 8.1.0
proxmox-kernel-6.8: 6.8.12-4
proxmox-kernel-6.8.12-4-pve-signed: 6.8.12-4
...(생략)

 

 - Proxmox VE 업데이트 후 비교 결과입니다.

 pveversion -v
proxmox-ve: 8.4.0 (running kernel: 6.8.12-4-pve)
pve-manager: 8.4.1 (running version: 8.4.1/2a5fa54a8503f96d)
proxmox-kernel-helper: 8.1.1
proxmox-kernel-6.8.12-11-pve-signed: 6.8.12-11
proxmox-kernel-6.8: 6.8.12-11
proxmox-kernel-6.8.12-4-pve-signed: 6.8.12-4
...(생략)

 

Proxmox에서 로그인 후 "No valid subscription" 팝업이 뜨는 이유는, Proxmox가 유료 구독(Subscription)을 요구하기 때문입니다. Proxmox는 기본적으로 무료로 사용할 수 있지만, 유료 구독이 없을 경우 경고 메시지 팝업이 표시됩니다. 이 메시지는 Proxmox가 공식적으로 제공하는 지원이나 업데이트 서비스를 받을 수 없다는 경고입니다.

◎ 이 문제를 해결하거나 팝업을 제거하는 방법은 2가지가 있습니다. 아래에서 그 방법들을 설명하겠습니다.
1. Proxmox 유료 구독 구매

 - 가장 간단한 방법은 Proxmox의 유료 구독을 구매하는 것입니다. 유료 구독을 구매하면 정식 지원 및 업데이트를 받을 수 있으며, "No valid subscription" 경고 메시지도 더 이상 표시되지 않습니다.

2. 구독 경고 메시지 제거

 - Proxmox의 구독 경고 메시지는 pve-manager라는 웹 관리 인터페이스에 로그인하면 나타납니다. Proxmox는 경고 메시지를 관리하는 데 pve-manager 패키지에서 subscription 관련 부분을 비활성화할 수 있습니다. 경고 메시지를 완전히 숨기려면 해당 경고를 표시하는 스크립트를 비활성화할 수 있습니다. 이 방법은 로그인하더라도 팝업없이 무료로 Proxmox를 사용할 수 있게 해줍니다.

 - 이 방법은 향후 업데이트 시 덮어쓰기가 될 수 있기 때문에 스크립트를 만들고 서비스로 등록해보도록 하겠습니다.
 - 아래는 Proxmox 웹 UI 관련 pve-manager.js 수정 스크립트입니다.

※ 저의 경우 브라우저에서 단순 로그아웃 후 로그인했더니 팝업이 떠서 적용이 안된줄 알았는데 스크립트는 문제가 없었습니다. 브라우저 캐쉬 삭제 및 완전히 닫았다가 재실행해 보시고 그래도 팝업이 뜨는경우 Proxmox를 완전히 종료 후 재시작해 보시기 바랍니다.  

# vi /usr/local/bin/remove-subscription-warning.sh
#!/bin/bash

# Proxmox subscription warning removal script - Improved version with duplicate prevention

JSFILE="/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js"

if [ -f "$JSFILE" ]; then
    echo "Removing subscription warning..."
    
    # 백업 생성 (이미 백업이 있으면 건너뛰기)
    if [ ! -f "${JSFILE}.original" ]; then
        cp "$JSFILE" "${JSFILE}.original"
        echo "Original backup created: ${JSFILE}.original"
    fi
    
    # 타임스탬프 백업도 생성
    cp "$JSFILE" "${JSFILE}.backup.$(date +%Y%m%d_%H%M%S)"
    
    # 히스토리 확장 임시 비활성화
    set +H
    
    # 방법 1: 구독 상태 체크를 false로 변경
    if grep -q "data\.status\.toLowerCase() !== 'active'" "$JSFILE"; then
        echo "Applying method 1: subscription status check..."
        sed -i 's/data\.status\.toLowerCase() !== '\''active'\''/false/g' "$JSFILE"
    else
        echo "Method 1 already applied or not needed."
    fi
    
    # 방법 2: 구독 체크 조건을 false로 만들기
    if grep -q "res === null || res === undefined || !res || res\.data\.status\.toLowerCase() !== 'active'" "$JSFILE"; then
        echo "Applying method 2: subscription check condition..."
        sed -i 's/if (res === null || res === undefined || !res || res\.data\.status\.toLowerCase() !== '\''active'\'') {/if (false) {/g' "$JSFILE"
    else
        echo "Method 2 already applied or not needed."
    fi
    
    # 히스토리 확장 다시 활성화
    set -H
    
    # 방법 3: 팝업 메시지가 포함된 라인을 주석 처리
    if grep -q "^[^/]*No valid subscription" "$JSFILE"; then
        echo "Applying method 3: commenting out popup message..."
        sed -i '/No valid subscription/s/^/\/\/ /' "$JSFILE"
    else
        echo "Method 3 already applied or not needed."
    fi
    
    # 방법 4: Ext.Msg.show를 console.log로 대체하여 팝업 방지
    if grep -q "Ext\.Msg\.show" "$JSFILE"; then
        echo "Applying method 4: replacing Ext.Msg.show..."
        sed -i 's/Ext\.Msg\.show/console.log/g' "$JSFILE"
    else
        echo "Method 4 already applied or not needed."
    fi
    
    # 방법 5: checked_command 함수 우회
    if grep -q "function(orig_cmd) {" "$JSFILE" && ! grep -q "orig_cmd();" "$JSFILE"; then
        echo "Applying method 5: checked_command bypass..."
        sed -i '/function(orig_cmd) {/a\n\torig_cmd();\n\treturn;' "$JSFILE"
    else
        echo "Method 5 already applied or not needed."
    fi
    echo "Done! Please clear your browser cache."
    echo ""
    echo "To restore original file: cp ${JSFILE}.original $JSFILE && systemctl restart pveproxy.service"
systemctl restart pveproxy.service
else
    echo "JavaScript file not found: $JSFILE"
fi
# chmod +x /usr/local/bin/remove-subscription-warning.sh
# vi /etc/apt/apt.conf.d/99remove-subscription-warning
DPkg::Post-Invoke {"/usr/local/bin/remove-subscription-warning.sh";};
# systemctl restart pveproxy.service

 

◎ 개요

 - VMware Workstation Pro는 한 대의 컴퓨터에서 여러 운영 체제를 동시에 실행할 수 있는 데스크톱 가상화 소프트웨어로, 스냅샷, 클론, 고급 네트워크 시뮬레이션 등 다양한 기능을 제공합니다.

 - IT 전문가와 개발자들이 소프트웨어 테스트, 네트워크 실습, 다양한 OS 환경 구축 등 목적으로 1999년부터 널리 사용해왔습니다.
 - VMware는 2023년 11월 22일에 브로드컴(Broadcom)에 공식적으로 인수되었습니다. 
 - VMware Workstation Pro와 Fusion Pro가 개인 사용자에게 무료로 제공된다는 정책은 2024년 5월 13일에 공식 발표되었습니다.

 - 이 발표 이후, 개인 사용자는 별도의 라이선스 키 없이 Broadcom 지원 포털에 가입해 제품을 다운로드하고, 설치 시 "Personal Use"를 선택하면 무료로 사용할 수 있게 되었습니다.
 - 상업적 목적 사용자는 연간 구독료(약 $120)가 필요하며, 개인 사용자와 학생은 무료로 이용할 수 있습니다.
 - 기존 Workstation Player와 Fusion Player 제품은 단종되고, Pro 버전이 모든 기능을 포함하게 되었습니다.

 

다운로드 방법

 - Broadcom 등록 페이지를 엽니다.

※ 등록된 회원이신 경우 오른쪽 상단 모서리에 있는 "Login" 버튼을 클릭하세요.

 - 이메일 가입여부를 확인 과정을 완료하세요.

 - 다음 버튼을 클릭하세요. > 인증코드를 확인하세요. > "확인 및 계속" 버튼을 클릭하세요. > 필수 정보를 입력하세요.

 - 계정 생성 버튼을 클릭하세요. > "나중에 하겠습니다" 버튼을 클릭하세요.

 

 - 등록된 회원이신 경우 이메일주소와 패스워드를 입력하세요.

 

- 로그인 후 Close 버튼을 누르세요.

 

 - 구름모양 소프트웨어 메뉴를 열고 VMware Cloud Foundation을 선택합니다 .

 

 - 내 다운로드를 클릭합니다 .

 

 - HERE 글자를 클릭합니다.

 

 - 오른쪽 화면을 아래쪽으로 이동하여 VMware Workstation Pro를 클릭합니다 .

01

 - VMware Workstation Pro 17.0 for Windows를 클립합니다.

 

 - 사용 가능한 최신 버전을 클릭합니다.

 

 - 설치 프로그램을 다운로드하려면 "동의함" 옵션을 선택하세요.

 - 구름모양 다운로드 버튼을 클릭하세요 .

01

 

 - 저장 버튼을 클릭하세요 .

 

설치 방법

 - VMware Workstation Pro 전체 실행 파일을 두 번 클릭합니다.
 - Next 버튼을 클릭하세요 .

 

 - 동의함 옵션을 선택하세요.

 

 - Hyper-V가 설치되어 있지만 "Windows Hypervisor Platform"(WHP) Windows 기능이 설치되지 않은 경우 "호환 설치" 단계가 표시됩니다.
 - 이 마법사에서 알 수 있듯이 설치 프로그램은 Hyper-V가 활성화되어 있음을 감지했습니다. 하지만 VMware Workstation이 제대로 작동하려면 위에서 언급한 기능을 설치/활성화해야 합니다.
 - "Install Windows Hypervisor Platform (WHP) automatically" 상자를 선택하고 다음을 클릭합니다.

 

 - "Add VMware Workstation console tools into system PATH" 옵션을 선택합니다.

 

 - "Check for product updates on startup" 옵션을 선택하세요.
 - "Join the VMware Customer Experience Improvement Program" 옵션의 선택을 취소합니다.

 - Next 버튼을 클릭하세요 .

 


 - Desktop 옵션을 선택하세요 .
 - Start Menu Programs Folder 옵션을 선택하세요 .

 - Next 버튼을 클릭하세요.

 

 - Insatall 버튼을 클릭하세요

 

 - 설치가 완료될 때까지 기다리세요.

 

 - Finish 버튼을 클릭하세요.

 

 - 예 버튼을 클릭하여 컴퓨터를 다시 시작하세요.

 - license key 관련 팝업에서는 Use VMware Workstation 17 for Personal Use 옵션을 선택하세요.

 - 계속 버튼을 클릭하세요.
 - 마침 버튼을 클릭하세요.

 - 재부팅 후 VMware Workstation Pro 아이콘을 더블클릭하여 실행합니다.

◎ Proxmox란 무엇인가요?
 - Proxmox는 풍부하고 모든 기능을 갖춘 웹 인터페이스를 통해 가상화를 간편하게 관리할 수 있으며, 보기에도 좋고 사용하기에도 편리합니다. 
 - Proxmox VE는 엔터프라이즈 가상화를 위한 오픈소스 하이퍼바이저 플랫폼입니다. 가상 머신, 컨테이너, 소프트웨어 정의 스토리지, 네트워킹, 클러스터링 등 프로덕션 워크로드 실행에 필요한 다양한 기능을 기본으로 제공합니다. Linux 기반이므로 가상화, 컨테이너 및 기타 측면에서 순수한 Linux 환경을 경험할 수 있습니다. 다음과 같은 이점을 확인해 보세요.

◎ 오픈소스 소프트웨어
 - 공급업체에 대한 종속성 없음
 - 리눅스 커널
 - 빠르고 쉬운 설치
 - 직관적인 웹 기반 관리 인터페이스로 사용하기 쉽습니다.
 - 낮은 관리 비용 및 간단한 배포
 - 매우 활발한 커뮤니티
 
무료 Proxmox VE ISO 설치 프로그램을 다운로드 받으세요
 
◎ 설치 단계
 - ISO로 부팅하면 Proxmox VE 8.3 설치가 시작됩니다. "Proxmox VE 설치" 를 선택하세요 .

 
 - 먼저, EULA에 동의하세요.

 
 - 다음으로, 원하는 경우 디스크 파티션을 지정할 수 있습니다.

 
 - 다음으로는 위치와 시간대 구성 설정입니다.

 
 - root 계정 의 비밀번호를 설정하세요 . 또한, Proxmox에서는 이메일 주소를 입력하도록 요구합니다.(Email주소는 기본주소에서 invalid를 local로 변경하면 넘어갑니다.)

 
 - Proxmox 호스트 이름과 네트워크 구성을 구성합니다.
  > DHCP 환경에서는 자동으로 IP정보를 받아옵니다.
  > Hostname주소에서 pve는 원하는 이름으로 변경하시기 바랍니다.
  > Hostname주소는 기본주소에서 invalid를 local로 변경하면 넘어갑니다.

 
 - 마지막으로 "요약" 화면으로 이동합니다. 여기에서 구성을 검토하고 설정을 확인합니다. 그런 다음 "설치"를 클릭합니다 .

 
 - 설치 과정이 시작됩니다.

 
 - 설치가 완료되면 Proxmox 서버가 재부팅됩니다. 아래는 설치 후 재부팅되는 부팅 화면입니다.

 
 - 마지막으로, 설치 과정에서 설정한 root 계정과 비밀번호를 사용하여 Proxmox 웹 GUI에 로그인합니다.

 
 - Proxmox는 오픈 소스이며 무료로 다운로드할 수 있고 다양한 기능을 제공하는 멋진 하이퍼바이저입니다. 최신 Proxmox VE 릴리스를 설치해서 다양한 기능을 경험해보시기 바랍니다.

Hyper-V는 Microsoft의 가상화 플랫폼입니다. Windows Server 운영 체제에서 사용할 수 있었지만 Microsoft는 Windows 10와 Windows 11에 Hyper-V 기능을 추가했습니다. 

안타깝게도 Hyper-V 기능은 Windows 11 Professional 및 Enterprise 버전에서만 사용할 수 있습니다.

기본적으로 Windows 11 Home Edition에는 설치할 수 없습니다.

그러나 이 문서의 단계를 사용하여 Windows 11 Home Edition에서 Hyper-V를 사용하도록 설정하겠습니다.

 > 시스템이 가상화를 지원하는지 여부 확인

계속 진행하기 전에 시스템이 가상화를 지원하는지 확인해야 합니다.

Hyper-V가 올바르게 작동하려면 하드웨어 가상화가 필요합니다.

만약 지원하지 않다면 Virtualbox 및 VMWare와 같은 다른 가상화 플랫폼을 사용해야 합니다.

Windows 11 컴퓨터에 Hyper-V를 설치하기 위한 네 가지 기본 요구 사항이 있습니다.

   - VM 모니터 모드 확장 

  - 펌웨어에 가상화 사용

  - 두 번째 수준 주소 변환

  - 데이터 실행 방지 사용 가능

명령 프롬프트 ( 실행(WinKEY+R) –> cmd )를 열고 systeminfo 명령을 실행하여 Hyper-V 요구 사항 섹션을 확인할 수 있습니다.

 

 > Windows 11 Home에서 Hyper-V 활성화 Windows 11 Home에서 Hyper-V를 설치하고 활성화하려면 아래 단계를 따라서 진행하면 됩니다. 

  - 텍스트 편집기를 사용하여 install-hyper.bat 와 같이 파일을 만들고 다음을 해당 파일에 복사하고 저장하세요.

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum > hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
pause

 

  - 해당 파일을 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 선택합니다. 그러면 설치 스크립트가 실행됩니다. 설치를 완료하는 데 다소 시간이 걸릴 수 있습니다. 완료 전에 종료하지 말고 기다려주세요.

 

  - Y를 눌러 계속합니다. 완료되면 시스템이 다시 시작됩니다.

 

  - 다시 시작하면 Windows 업데이트 화면이 표시됩니다.

  - 다시 시작한 후 Windows 선택적 기능에 Hyper-V 옵션이 표시되는지 확인할 수 있습니다. 

  - 확인하려면 실행(WinKEY+R) – optionalfeatures를 실행하면 됩니다. Hyper-V 및 Hyper-V 관리 도구를 찾을 수 있습니다.

 

  - 시작 메뉴에서 Hyper-V를 검색하여 Windows 11 Home 컴퓨터에서 가상 머신 생성을 시작할 수 있습니다.

 > 시작 메뉴에서 hyper를 검색합니다. 

  - Hyper-V가 컴퓨터 내에 설치되었으며, 이제 Hyper-V를 이용하여 가상 머신을 만들 수 있었습니다.

 

 > Windows 11 Home에서 Hyper-V 비활성화
컴퓨터에서 이 기능을 원하지 않는 경우 언제든지 비활성화할 수 있습니다. 비활성화하는 방법에는 두 가지가 있습니다.
  - 첫번째 방법
   . 실행(WinKEY+R) –> optionalfeatures로 실행하면 선택적 기능 창이 열립니다.
   . Hyper-V 및 Hyper-V 관리 도구 선택을 취소합니다..
   . 컴퓨터 재시작
  - 두 번째 방법
   . 명령 줄을 사용하여 이 작업을 수행할 수도 있습니다.

 PS C:\> Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
 또는
 C:\> DISM /Online /Disable-Feature /All /FeatureName:Microsoft-Hyper-V

 

Hyper-V는 개인 사용자에게도 매우 유용합니다.

  - 새 소프트웨어 테스트 및 평가

    호스트 시스템을 손상시키지 않고 새 소프트웨어를 테스트하고 평가하는 데 사용할 수 있고,

  - 은행/증권 등 금융 사이트, 국가기관 민원업무 사이트 등

    은행 사이트나 정부 사이트 접속 시 강제설치 프로그램을 가상 머신 내 설치하여 접속할 수도 있습니다.

Hyper-V에서 고정 IP를 사용하는 방법을 알아보겠습니다.

◎ 1단계: 내부 가상 스위치 생성
관리자권한으로 PowerShell을 열고 아래 명령을 실행합니다. 
"SWITCHNAME"을 원하는 스위치 이름으로 변경합니다. 저는 "NAT-Switch"라고 했습니다.

 PS C:\> New-VMSwitch -Name SWITCHNAME -SwitchType Internal


◎ 2단계: 인터페이스 색인 번호 가져오기(ifIndex)
다음으로 1단계에서 생성한 가상 스위치의 인덱스 번호를 찾아야 합니다. 아래 명령을 실행합니다.
저의 경우 인덱스 번호는 118입니다.(MacAddress 는 가렸습니다.)

 PS C:\> Get-NetAdapter

 

◎ 3단계: NAT 게이트웨이 구성
10.10.10.0/24 네트워크에 VM을 구성하겠습니다.
이 네트워크의 첫 번째 주소를 게이트웨이로 사용하겠습니다.
게이트웨이는 네트워크 외부로 트래픽을 보낼 수 있도록 VM에서 사용됩니다.

 PS C:\> New-NetIPAddress -IPAddress 10.10.10.1 -PrefixLength 24 -InterfaceIndex 118


◎ 4단계: NAT 네트워크 구성
이제 NAT하려는 네트워크를 구성하면됩니다.
10.10.10.0/24 네트워크를 NAT하기 위해 아래 명령을 실행합니다.
NAT-NETWORK-NAME은 원하는 이름으로 지정합니다. 저는 "NAT-Switch-Outside"라고 했습니다.

 PS C:\> New-NetNat -Name NAT-NETWORK-NAME -InternalIPInterfaceAddressPrefix 10.10.10.0/24


◎ 5단계: 새 가상 스위치로 VM 구성
Hyper-v에서 VM에 대한 설정화면에서 네트워크 어댑터를 선택하고 새 가상 스위치를 사용하도록 변경합니다.


◎ 6단계: VM 네트워크 설정
이제 4단계에서 구성한 네트워크의 IP 주소로 VM을 구성합니다.

저의 경우에는 위에서 10.10.10.0/24 네트워크로 설정했습니다.
VM에 IP 10.10.10.10 을, 게이트웨이 10.10.10.1을 부여하겠습니다.

DNS는 KT DNS 168.126.63.1와 구글 DNS 8.8.8.8을 부여하겠습니다.


◎ 기타
> NAT 설정 보기
기존 NAT 설정을 보려면 아래 명령을 실행하면 됩니다.

 PS C:\> Get-NetNat


> Hyper-V 가상 스위치 보기
Hyper-V 가상 스위치를 보려면 아래 명령을 실행하면 됩니다.

 PS C:\> Get-VMSwitch

Proxmox VE(Virtual Environment,가상 환경)는 사용자가 가상 ​​머신(VM) 및 컨테이너를 효율적으로 관리할 수 있도록 하는 오픈 소스 서버 가상화 플랫폼입니다. LXC(Linux Containers)를 사용하여 KVM 기반 가상화와 컨테이너 기반 가상화를 결합하여 엔터프라이즈급 가상화를 위한 포괄적인 솔루션을 제공합니다. Proxmox VE는 가상화 리소스의 관리를 단순화하고 고가용성, 라이브 마이그레이션, 클러스터링 및 스토리지 관리와 같은 기능을 제공하는 웹 기반 그래픽 사용자 인터페이스(GUI)를 제공합니다.

 

다음은 Proxmox VE를 다른 두 가지 인기 있는 가상화 플랫폼인 VMware ESXi 및 Hyper-V와 비교한 표입니다.

Feature Proxmox VE VMware ESXi Hyper-V
Cost Open-source and free Commercial, with a free limited version Included with Windows Server, requires licensing
Virtualization Support KVM and LXC
(Linux Containers)
ESXi hypervisor Hyper-V hypervisor
Management Interface Web-based GUI Web-based GUI
(vSphere Client)
Windows-based GUI
(Hyper-V Manager)
High Availability Built-in HA clustering and automatic failover Requires additional vCenter Server and licensing Requires additional clustering software and configuration
Live Migration Built-in live migration support Requires additional vCenter Server and licensing Requires additional clustering software and configuration
Storage Management Integrated storage management with ZFS support Supports various storage options and third-party plugins Supports various storage options and third-party plugins
Scalability Supports large-scale deployments and clustering Supports large-scale deployments and clustering Supports large-scale deployments and clustering
Community Support Active and helpful community Extensive resources and community support Good community support
Ecosystem Integration Limited integration with third-party solutions Extensive ecosystem and integration options Good ecosystem and integration options
Compatibility Supports various operating systems and virtual appliances Broad compatibility with different hardware configurations Limited to Windows and specific Linux distributions

Proxmox VE, VMware ESXi 및 Hyper-V 중에서 선택하는 것은 환경의 특정 요구 사항, 예산 제약, 전문성 수준 및 통합 요구 사항을 비롯한 다양한 요인에 따라 달라집니다. 각 플랫폼에는 고유한 강점과 약점이 있으므로 특정 사용 사례와 선호도에 따라 선택하는 것이 좋습니다.

VMware 이미지를 배포하거나 타 가상환경으로 이미지를 변환하기 전 이미지 병합이 필요합니다. 분할된 vmdk 파일을 하나로 병합하려면 vmware-vdiskmanager 명령을 사용해야 합니다. 그러나 이 파일은 VMware Fusion 또는 VMware Workstation이 설치된 경우에만 사용할 수 있습니다. VMware Player에는 이 파일이 없습니다.

설치 디렉토리 경로는 다음과 같을 수 있습니다.
C:\Program Files (x86)\VMware\VMware Workstation
 ※ C:\Program Files (x86)\VMware\VMware Player 에는 없습니다. 

vmdk 파일을 병합하려면 vmdk 파일이 있는 디렉토리에서 CMD 를 엽니다.
다음 vmdk 파일이 있다고 가정합니다.

vmdkname.vmdk
vmdkname-s001.vmdk
vmdkname-s002.vmdk
vmdkname-s003.vmdk


CMD에서 다음 명령을 실행하여 단일 vmdk 파일로 병합할 수 있습니다.

 vmdk 파일이 있는 디렉토리> "C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -r d:\VMimage\vmdkname.vmdk -t 0 NewImage.vmdk

Creating disk 'NewImage.vmdk'
  Convert: 100% done.
Virtual disk conversion successful.

그러면 새 vmdk 파일이 생성됩니다.

완료되면 원본 vmdk 파일들을 다른 디렉터리로 이동하거나 삭제합니다. 마지막으로 NewImage.vmdk의 이름을 원래 이름대로 vmdkname.vmdk 로 바꿉니다.

 

[참고]

vmware-vdiskmanager 명령 WIKI

WSL2 게스트VM에서 SSH나 HTTPS같은 특정 서비스 포트를 오픈하더라도 로컬이나 외부에서 접속이 불가하기 때문에 게스트VM에서 오픈한 포트에 접속하기 위해서는 윈도우에서 포트포워딩(portproxy) 설정을 해줘야합니다. 아래는 포트번호를 입력받아 포트포워딩을 설정해주는 배치(batch)파일입니다. 패치파일은 관리자모드에서 실행하면됩니다.

[메뉴구성]
1. 현재 포트포워딩 설정보기
2. 포트포워딩 설정하기
3. 포트포워딩 삭제하기

[코드설명]
> 2번, 3번 메뉴의 경우 원하는 포트를 지정할 수 있는데, 한개만 입력해도 되고 콤마(,) 구분자로 다수의 포트 입력이 가능합니다.
> 재부팅 되더라도 입력한 설정은 유지되나 게스트VM IP가 변경된다면 다시 설정해줘야 됩니다.

[배치파일]

@echo off

SETLOCAL EnableExtensions

:menu
echo 1. portproxy show
echo 2. portproxy add
echo 3. portproxy del
set /p choice=choice 1 or 2 or 3:
if %choice%==1 goto subcode1
if %choice%==2 goto subcode2
if %choice%==3 goto subcode3
echo Invalid input. Please enter 1 or 2 or 3.
goto menu

:subcode1
netsh interface portproxy show v4tov4
goto end

:subcode2
cd /d C:\
set hostip=
for /f "tokens=2 delims= " %%a in ('bash.exe -c "ifconfig eth0 | grep 'inet '"') do set hostip=%%a
set found=no

echo %hostip% | findstr /r /c:"^[ ]*[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*[ ]*$" > nul && set found=yes

if "%found%"=="yes" (
    set hostip=%hostip:~0%
) else (
    echo The Script Exited, the ip address of WSL 2 cannot be found
    exit /b 1
)

set /p ports=Enter port number to use(multiple ports you want to forward separated by comma):
set "addr=127.0.0.1"
set "output="
for /f "tokens=1 delims= " %%a in ('netsh interface portproxy show v4tov4 ^| findstr "ipv4"') do set output=%%a

if not "%output%"=="" (

for %%i in (%ports%) do (
    netsh interface portproxy delete v4tov4 listenport=%%i listenaddress=%addr%
    netsh interface portproxy add v4tov4 listenport=%%i listenaddress=%addr% connectport=%%i connectaddress=%hostip%
)
echo "delete & add suceessfully"
netsh interface portproxy show v4tov4
) else (

for %%i in (%ports%) do (
    netsh interface portproxy add v4tov4 listenport=%%i listenaddress=%addr% connectport=%%i connectaddress=%hostip%
)
echo "add suceessfully"
netsh interface portproxy show v4tov4
)

exit /b 0
goto end

:subcode3

set /p ports=Enter port number to use:
for %%i in (%ports%) do (
    netsh interface portproxy delete v4tov4 listenport=%%i listenaddress=127.0.0.1
)
netsh interface portproxy show v4tov4
goto end

:end
echo done.

 

 

 

+ Recent posts