Nested Virtualization là gì?

Nested Virtualization là kỹ thuật cho phép chạy một hypervisor (như Proxmox hoặc VMware ESXi) bên trong một máy ảo thay vì trên phần cứng vật lý. Điều này cho phép bạn tạo lab môi trường để test, học tập, hoặc phát triển mà không cần nhiều server vật lý.

Use Cases phổ biến

  • Lab môi trường: Test các tính năng mới, upgrade scenarios
  • Học tập: Làm quen với VMware ESXi, Proxmox, Hyper-V
  • Development: Build CI/CD pipelines với container VMs
  • Certification: Chuẩn bị cho các kỳ thi như VCP, RHCSA
  • Demos: Tạo môi trường demo độc lập cho khách hàng

Kích hoạt Nested Virtualization trên Proxmox Host

# Kiểm tra xem nested đã enabled chưa
cat /sys/module/kvm_intel/parameters/nested
# Output: N = disabled, Y = enabled

# Kích hoạt nested virtualization (Intel)
echo "options kvm-intel nested=1" > /etc/modprobe.d/kvm-intel.conf

# Kích hoạt nested virtualization (AMD)
echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf

# Reload module
modprobe -r kvm_intel && modprobe kvm_intel

# Verify
cat /sys/module/kvm_intel/parameters/nested
# Output: Y

Tạo VM với Nested Support

# Qua Web UI:
# Create VM > Options > CPU: host Passthrough = Yes
# Hoặc CLI:
qm create 900 --name nested-lab --memory 8192 --cores 4 --cpu host

# Enable CPU mode host (passthrough)
qm set 900 --cpu host

# Verify trong VM
# Linux: cat /proc/cpuinfo | grep -E "vmx|svm"
# Windows: Task Manager > Performance > Virtualization = Enabled

Nested Proxmox trong Proxmox

# Tạo VM để cài Proxmox bên trong
qm create 100 --name nested-proxmox --memory 8192 --cores 4 --cpu host

# Disk
qm set 100 --scsi0 local-lvm:vm-100-disk-0,size=128G

# Network
qm set 100 --net0 virtio,bridge=vmbr0

# Install Proxmox từ ISO
qm set 100 --ide2 local:iso/proxmox-ve_8.2-1.iso,media=cdrom

# Boot và install như bình thường
# Lưu ý: Cần tối thiểu 2 CPU cores và 4GB RAM cho Proxmox guest

Nested VMware ESXi trong Proxmox

# Tạo VM cho ESXi
qm create 200 --name nested-esxi --memory 16384 --cores 8 --cpu host

# ESXi cần boot BIOS, không hỗ trợ UEFI hoàn toàn
qm set 200 --bios ovmf --scsi0 local-lvm:vm-200-disk-0,size=256G

# ESXi cần network E1000 (khuyến nghị)
qm set 200 --net0 e1000,bridge=vmbr0

# Mount ESXi ISO
qm set 200 --ide2 local:iso/VMware-VMvisor-8.0.iso,media=cdrom

# Cài đặt ESXi, yêu cầu:
# - Tối thiểu 4GB RAM
# - 8GB disk
# - 2+ CPU cores với VT-x/AMD-V

Nested Hyper-V trong Proxmox (Windows)

# Windows 10/11 có thể chạy WSL2 và Hyper-V
# Kích hoạt nested virtualization cho Windows VM
qm set 300 --cpu host

# Kiểm tra trong Windows
# Run: msinfo32 > Processor > Hyper-V - Virtualization Enabled = Yes

# Hoặc PowerShell:
systeminfo | findstr /C:"Hypervisor"

Performance và Best Practices

  • Tắt unaligned resources: Disable memory ballooning, KSM
  • Dedicated CPU cores: Đừng oversubscribe CPU quá nhiều
  • Use virtio drivers: Cho disk và network của parent VM
  • SR-IOV: Nếu có, dùng SR-IOV để cải thiện network performance
  • NVMe cho parent: Giảm I/O latency cho nested VMs

Kiểm tra Nested trên Various Hypervisors

# Proxmox (Intel)
cat /sys/module/kvm_intel/parameters/nested

# Proxmox (AMD)
cat /sys/module/kvm_amd/parameters/nested

# VMware ESXi
esxcfg-info -q | grep -i nested
# Hoặc: vmware -v

# Kiểm tra VT-x/AMD-V available
egrep -c '(vmx|svm)' /proc/cpuinfo
# Output > 0 = supported

Troubleshooting Nested Issues

IssueCauseSolution
Nested VM không bootVT-x disabled in BIOSEnable virtualization in BIOS
CPU error khi install ESXiESXi requires specific CPU featuresUse “host” CPU mode, check compatibility
Performance rất chậmOverallocated resourcesIncrease parent VM resources
“Virtualization not enabled”Nested not enabledEnable nested on host first

Nested Virtualization với Docker/Container

Docker Desktop sử dụng nested virtualization (WSL2/Hyper-V) để chạy Linux containers trên Windows. Trên Proxmox, bạn có thể:

# Tạo VM với nested support
qm create 400 --name docker-host --memory 8192 --cores 4 --cpu host

# Cài Ubuntu/Debian
# Cài Docker
apt update && apt install docker.io -y

# Verify nested
docker run --rm hello-world

# Hoặc dùng Docker inside LXC (nhanh hơn VM)
# Tạo LXC với nesting enabled
pct create 100 ubuntu-v2 --arch amd64 --cores 4 --memory 4096 \
    --rootfs local-lvm:32 \
    -- nesting=1 \
    --apt mirror

FAQ – Câu hỏi thường gặp

  • Nested virtualization có ảnh hưởng performance không? Có, overhead khoảng 5-15% so với bare metal. Đủ cho lab và testing.
  • Có thể chạy bao nhiêu nested VMs? Phụ thuộc vào tài nguyên host, thường 3-5 nested VMs với 4 cores each.
  • VMware có cần nested không? Nhiều tính năng VMware yêu cầu hardware virtualization, cần nested để test.
  • Làm sao verify nested đang hoạt động? Trong guest VM, check CPU flags: grep -E "vmx|svm" /proc/cpuinfo
  • Có thể nested Windows với Hyper-V không? Có, Windows 10/11 với WSL2 cần nested virtualization được kích hoạt.

Chào các bạn mình là Quốc Hùng , mình sinh ra thuộc cung song tử ,song tử luôn khẳng định chính mình ,luôn luôn phấn đấu vượt lên phía trước ,mình sinh ra và lớn lên tại vùng đất võ cổ truyền ,đam mê của mình là coder ,ngày đi học tối về viết blog ...