Bối cảnh: Chọn sai hypervisor tốn công gấp đôi
Hồi mới bắt đầu setup homelab, mình cứ dùng VirtualBox vì “mọi người dùng nhiều” — rồi sau 3 tháng chạy 6–7 VM cùng lúc, máy gần như đứng hình. Sau khi chuyển sang KVM, hiệu năng tăng hẳn mà không cần nâng cấp phần cứng. Đó là bài học đắt giá đầu tiên về việc chọn đúng công cụ.
Hiện tại mình chạy homelab với Proxmox VE quản lý 12 VM và container — playground để test mọi thứ trước khi đưa lên production. Proxmox dùng KVM làm nền, nên mình có cơ hội hiểu rõ sự khác biệt giữa ba hypervisor này qua thực tế chứ không chỉ đọc docs.
Ba cái tên này hay bị so sánh như thể chúng cạnh tranh cùng một phân khúc. Thực ra không phải vậy. KVM, VirtualBox và VMware mỗi cái tối ưu cho bối cảnh khác nhau — nhầm lẫn thì không hỏng máy, nhưng sẽ khá bực bội khi mọi thứ chạy chậm hơn mức cần thiết.
Tổng quan nhanh: Ai là ai trong thế giới hypervisor?
KVM (Kernel-based Virtual Machine)
KVM được tích hợp thẳng vào Linux kernel từ version 2.6.20 (năm 2007). Nó biến Linux host thành hypervisor type-1 thực sự — VM chạy trực tiếp trên phần cứng qua kernel module, không qua lớp trung gian nào. Kết hợp với QEMU để xử lý device emulation.
- License: Open source (GPL)
- Platform: Linux only
- Type: Type-1 (bare-metal style)
- GUI: virt-manager, Cockpit, Proxmox VE, oVirt
VirtualBox
VirtualBox của Oracle là hypervisor type-2 — chạy như ứng dụng bình thường trên host OS. Ưu điểm lớn nhất là cross-platform (Windows/macOS/Linux) và dễ dùng ngay từ lần đầu mở lên.
- License: Free (GPLv2), Extension Pack riêng trả phí
- Platform: Windows, macOS, Linux, Solaris
- Type: Type-2
VMware — cần phân biệt hai sản phẩm khác nhau
- VMware Workstation Pro: Type-2, chạy trên Windows/Linux — ổn định hơn VirtualBox, đặc biệt với Windows guest. Từ tháng 5/2024, Workstation Pro miễn phí cho cá nhân sau khi Broadcom mua lại VMware và thay đổi chính sách licensing.
- VMware ESXi (vSphere): Type-1 bare-metal, cài thẳng lên server hardware — dành cho doanh nghiệp. Quan trọng: ESXi standalone free đã bị Broadcom khai tử đầu năm 2024. Muốn dùng giờ phải mua VMware vSphere Foundation — giá enterprise thực sự, không phù hợp homelab cá nhân.
Cài đặt nhanh từng loại
KVM trên Ubuntu/Debian
Trước tiên kiểm tra CPU có hỗ trợ virtualization chưa:
egrep -c '(vmx|svm)' /proc/cpuinfo
# Kết quả > 0 = OK
# Kết quả = 0 = cần vào BIOS bật Intel VT-x hoặc AMD-V
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients \
bridge-utils virt-manager
# Thêm user vào group để dùng không cần sudo
sudo usermod -aG libvirt,kvm $USER
newgrp libvirt
# Bật và kiểm tra service
sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd
VirtualBox
# Ubuntu 22.04 — cách đơn giản nhất
sudo apt install -y virtualbox
# Hoặc thêm repo chính thức để có bản mới nhất
wget -qO- https://www.virtualbox.org/download/oracle_vbox_2016.asc \
| sudo gpg --dearmor -o /usr/share/keyrings/oracle-virtualbox.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox.gpg] \
https://download.virtualbox.org/virtualbox/debian jammy contrib" \
| sudo tee /etc/apt/sources.list.d/virtualbox.list
sudo apt update && sudo apt install -y virtualbox-7.1
VMware Workstation Pro (Linux)
# Tải file .bundle từ trang Broadcom (miễn phí cho cá nhân), sau đó:
chmod +x VMware-Workstation-*.bundle
sudo ./VMware-Workstation-*.bundle
# Build kernel modules sau khi cài
sudo vmware-modconfig --console --install-all
Lưu ý quan trọng nếu dùng Windows host: Tắt Hyper-V trước khi cài VirtualBox hoặc VMware Workstation, vì chúng không chạy tốt cùng nhau (đặc biệt trước VirtualBox 6.1):
# PowerShell với quyền Administrator
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
Cấu hình chi tiết và so sánh thực tế
Hiệu năng: Con số không biết nói dối
Benchmark nói lên điều mà spec sheet không thể hiện đủ. Type-2 hypervisor phải đi qua lớp host OS — overhead mỗi VM tuy nhỏ, nhưng khi chạy 5–6 VM cùng lúc thì cộng lại đáng kể.
Mình test với sysbench trên cùng hardware (Intel i7-12700, 32GB RAM), mỗi VM được cấp 4 vCPU + 8GB RAM:
# Chạy trong mỗi VM
sysbench --test=cpu --cpu-max-prime=20000 run
# Kết quả thực tế (thời gian càng thấp càng tốt):
# KVM (virtio): 12.4 giây
# VMware Workstation: 15.8 giây (chậm hơn ~27%)
# VirtualBox: 18.2 giây (chậm hơn ~47%)
Với KVM, luôn đảm bảo VM dùng VirtIO drivers — đây là điểm mà nhiều người bỏ qua khi mới setup:
# Kiểm tra VM đang dùng driver nào
lspci | grep -i ethernet
# Phải thấy: "Red Hat, Inc. Virtio network device" ← đúng
# Nếu thấy "Intel Corporation 82540EM" → đang dùng emulated, hiệu năng kém hơn
# Kiểm tra disk interface
lsblk -o NAME,TYPE,TRAN
# Cột TRAN nên hiện "virtio" cho disk VM
Snapshot: CLI vs GUI
Cả ba đều hỗ trợ snapshot, nhưng trải nghiệm khác nhau nhiều:
# KVM — dùng virsh
virsh snapshot-create-as myvm snap-before-upgrade \
"Trước khi nâng cấp kernel" --disk-only --atomic
# Xem danh sách snapshot
virsh snapshot-list myvm
# Revert về snapshot cụ thể
virsh snapshot-revert myvm snap-before-upgrade
# Xóa snapshot cũ
virsh snapshot-delete myvm snap-before-upgrade
VirtualBox và VMware Workstation có GUI snapshot tree trực quan — thích hợp cho người mới hoặc khi cần demo. KVM cần CLI hoặc virt-manager, nhưng bù lại dễ script hóa hơn nhiều khi cần tự động hóa workflow.
Networking: KVM linh hoạt nhất cho lab
# Xem các virtual network đang có
virsh net-list --all
# Tạo isolated network cho lab (không ra ngoài internet)
cat > /tmp/labnet.xml << 'EOF'
labnet
EOF
virsh net-define /tmp/labnet.xml
virsh net-start labnet
virsh net-autostart labnet
Mình hay dùng cách này để tạo isolated lab network — các VM trong lab thoải mái ping nhau nhưng không ảnh hưởng gì đến mạng thật.
Guest Integration: Windows guest là nơi KVM thua rõ nhất
Windows guest trên KVM hoạt động ổn, nhưng không “out of the box” như hai kia. VirtualBox và VMware Workstation được polish kỹ hơn nhiều ở khoản này — đặc biệt nếu bạn cần làm việc trực tiếp trong GUI của VM:
- VirtualBox Guest Additions: Drag-and-drop files, shared clipboard, seamless mode, auto-resize màn hình theo cửa sổ
- VMware Tools: Tương tự nhưng ổn định hơn, ít bug hơn với Windows guest, time sync chính xác hơn
- KVM + SPICE: Hỗ trợ clipboard sharing và USB redirect qua SPICE protocol — cần cấu hình thêm nhưng kết quả tốt
Kiểm tra và Monitoring
Monitor tài nguyên VM với KVM
# Xem tất cả VM (kể cả đã tắt)
virsh list --all
# Monitor realtime — tương tự top nhưng cho VM
virt-top
# Stats chi tiết của từng VM
virsh domstats myvm --cpu-total --balloon --vcpu --interface --block
# Xem VM đang dùng bao nhiêu RAM thực sự
virsh dommemstat myvm
Kiểm tra network throughput giữa host và VM
# Cài iperf3 trên cả host và VM
sudo apt install -y iperf3
# Trên host: chạy server
iperf3 -s
# Trong VM: test throughput về host
iperf3 -c 192.168.122.1 -t 10
# Default gateway của libvirt network thường là 192.168.122.1
# Kết quả mong đợi với virtio NIC: > 8 Gbps (gần như line speed internal)
Kiểm tra VirtualBox Guest Additions
# Trong guest Linux
VBoxControl --version
lsmod | grep vboxguest
# Cài nếu chưa có
sudo apt install -y virtualbox-guest-utils virtualbox-guest-x11
sudo reboot
Tóm tắt: Dùng cái nào trong trường hợp nào?
Câu hỏi “cái nào tốt hơn” luôn thiếu vế sau: tốt hơn cho việc gì? Từ kinh nghiệm thực tế:
- KVM: Linux server hoặc homelab — cần hiệu năng tốt nhất và script hóa được. Proxmox VE là lựa chọn mình khuyên cho homelab vì có web UI đẹp, community lớn và hoàn toàn miễn phí.
- VirtualBox: Developer cần test nhanh trên Windows/macOS, hoặc cần cross-platform. Kết hợp với Vagrant (blog đã có bài riêng) thì cực kỳ mạnh cho môi trường dev.
- VMware Workstation Pro: Làm việc nhiều với Windows guest, cần VM stable cho công việc hàng ngày, hoặc test nested virtualization cho lab phức tạp. Giờ đã miễn phí cho cá nhân nên không còn lý do để bỏ qua.
- VMware ESXi: Production server doanh nghiệp với budget cho license — không còn phù hợp cho homelab cá nhân kể từ khi Broadcom khai tử bản free năm 2024.
Thực tế mình vẫn giữ VirtualBox trên laptop Windows để test nhanh và demo cho khách hàng. Homelab server thì chạy Proxmox/KVM full-time, không có lý do gì để thay đổi. Hai cái đó dùng song song — đúng tool cho đúng việc.

