Trong thế giới của những người say mê “home lab”, bạn chắc chắn sẽ thường xuyên bắt gặp những thuật ngữ kỹ thuật nghe rất “ngầu”. Chẳng hạn, có các cụm máy chủ có tính sẵn sàng cao (High-Availability Clusters) có thể gia tăng khả năng chịu lỗi cho môi trường tự lưu trữ và thử nghiệm của bạn, đổi lại là hóa đơn tiền điện tăng vọt do chạy quá nhiều thiết bị. Rồi bạn còn có VLAN và tường lửa cục bộ, những thứ bổ sung thêm một lớp bảo mật cho ngăn xếp mạng và toàn bộ thiết bị trong mạng LAN của bạn.
Khi nói đến những thuật ngữ nghe có vẻ phức tạp, có một tính năng gọi là ảo hóa lồng nhau (nested virtualization) hiếm khi được thảo luận ngay cả bởi những “home labber” kỳ cựu. Mặc dù yêu cầu một cấu hình phần cứng mạnh mẽ để mang lại kết quả tốt nhất, nhưng ảo hóa lồng nhau rất đáng để kích hoạt đối với những người làm DevOps và cả những thiết lập home lab thông thường. Cá nhân tôi sử dụng nó cho mọi thứ, từ tạo các dự án dễ lỗi, kiểm thử hypervisor cho đến xây dựng môi trường phát triển dựa trên máy chủ cho nhu cầu lập trình của mình.
Ảo hóa lồng nhau là gì?
Giống như “Inception” nhưng dành cho máy ảo
Kể từ khi tôi chắc chắn rằng hầu hết các bạn đọc bài viết này đều đã biết về ảo hóa, tôi sẽ giữ phần này khá ngắn gọn. Đối với những người chưa quen, ảo hóa là tính năng cho phép bạn phân chia sức mạnh tính toán của máy chủ thành nhiều phiên bản ảo, mà chúng ta thường gọi là máy ảo (VMs). Về mặt kỹ thuật, bạn có thể triển khai bất kỳ bản phân phối hoặc hệ điều hành nào bên trong một máy ảo, nhưng một số bản phân phối có thể gây ra vấn đề. Tôi không chỉ nói đến hiệu suất thấp trong các tác vụ nặng của Windows 11 hay vấn đề tương thích trong một Hackintosh ảo hóa. Việc cố gắng chạy hypervisor, các dịch vụ dựa trên WSL hoặc các nền tảng máy chủ đầy đủ bên trong một máy ảo sẽ gây ra lỗi vì chúng không thể phát hiện các tiện ích mở rộng ảo hóa mà bạn thường sử dụng trong thiết lập bare-metal.
Mô tả Docker Desktop đang chạy bên trong một máy ảo Debian trên máy chủ Proxmox, minh họa khái niệm ảo hóa lồng nhau.
Đó là lúc ảo hóa lồng nhau phát huy tác dụng. Bằng cách cung cấp các tiện ích ảo hóa cần thiết cho các máy ảo, tính năng này cho phép các máy ảo của bạn hoạt động như máy chủ (host) cho các hypervisor. Hãy hình dung nó như bộ phim “Inception”, ngoại trừ việc bạn có một thiết lập đa tầng, nơi các máy ảo chạy các máy ảo của riêng chúng. Và đó là lúc mọi thứ bắt đầu trở nên thú vị…
Một tính năng không thể thiếu cho những tín đồ DevOps
Biến việc kiểm thử Hypervisor trở nên dễ dàng
Nếu bạn quan tâm đến lĩnh vực DevOps và quản trị hệ thống như tôi, việc làm quen với nhiều hypervisor và hệ thống ảo hóa là một ý tưởng hay. Nếu không có ảo hóa lồng nhau, bạn sẽ cần nhiều hệ thống riêng biệt cho các cấu hình bare-metal hoặc phải đối mặt với những rắc rối khi quản lý một loạt các phân vùng cho mỗi hypervisor Type-1.
Hơn nữa, tính năng tiện lợi này có sẵn trên hầu hết các nền tảng ảo hóa, dù là Proxmox được cộng đồng yêu thích hay XCP-ng, một nền tảng ít được đánh giá đúng mức. Bạn thậm chí có thể sử dụng nó với các hypervisor Type-2 như VirtualBox và VMware Workstation Pro (mặc dù có một số hạn chế về hiệu suất) để chạy các nền tảng ảo hóa đầy đủ trên máy tính hàng ngày của bạn. Nếu bạn đang thắc mắc, vâng, tôi đã từng thực hiện dự án này (và nó hoạt động đáng ngạc nhiên).
Giải pháp ưa thích để “nghịch” ESXi
Khi Broadcom đưa phiên bản miễn phí của ESXi trở lại, tôi đã rất háo hức muốn dùng thử. Thật không may, một thiết lập bare-metal thực tế là không thể trừ khi tôi sử dụng ZimaBoard 2 của mình – và đó là vì hypervisor từ chối hoạt động trên mọi dàn máy trong home lab của tôi, bao gồm cả hệ thống Xeon kép được thiết kế cho các tác vụ máy chủ.
Nhưng với ảo hóa lồng nhau, việc chạy ESXi trở nên dễ dàng. Trên Proxmox, tôi chỉ phải thực hiện một vài sửa đổi đối với các driver, nhưng hypervisor cấp công nghiệp của Broadcom không gây ra bất kỳ rắc rối nào khi tôi đã kích hoạt ảo hóa lồng nhau. Vì tôi không muốn chi hàng trăm đô la cho một NIC hỗ trợ ESXi, việc ảo hóa nó trên Proxmox là phương pháp ưa thích của tôi để tìm hiểu về hypervisor cao cấp này.
Thỏa sức thử nghiệm “điên rồ” mà không làm hỏng máy chủ PVE chính
Dự án home lab của tôi ban đầu bắt đầu khi tôi muốn một máy chủ thử nghiệm cho các dự án máy tính của mình. Nhưng giờ đây, khi tôi có nhiều máy ảo, Docker/Podman container và LXC đang chạy trong lab Proxmox của mình, tôi lại cảm thấy lo lắng mỗi khi cần sửa đổi một hoặc hai tệp cấu hình.
Giao diện quản lý Authentik, minh họa việc thử nghiệm các gói SSO mới trong môi trường ảo hóa lồng nhau mà không ảnh hưởng máy chủ chính.
Triển khai một môi trường Proxmox bên trong máy chủ PVE của tôi là giải pháp hoàn hảo cho những lo lắng về thử nghiệm của tôi. Dù là thử nghiệm cài đặt mạng, sửa đổi ổ đĩa LVM hay tìm hiểu một gói SSO mới có khả năng khóa tôi khỏi máy chủ, tôi đều có thể làm việc trên các dự án “điên rồ” mà không lo lắng về việc mất đi thiết lập Proxmox yêu quý của mình.
Lý tưởng cho môi trường phát triển dựa trên máy ảo
Đặc biệt khi cần VM và Container trong trung tâm phát triển của tôi
Không giống như các tác vụ chơi game, các dự án lập trình của tôi không đòi hỏi nhiều sức mạnh tính toán. Vì tôi không muốn đối phó với tình trạng “dependency hell” trên máy tính hàng ngày của mình, tôi có một vài môi trường phát triển bên trong các máy ảo. Giờ đây tôi đã trở thành người dùng MacBook, việc chuyển các dự án lập trình sang máy chủ PVE giúp chiếc laptop cao cấp của tôi không bị lộn xộn.
Bên cạnh VS Code, một vài IDE và các module PowerShell, container là một phần thiết yếu trong các tác vụ lập trình của tôi. Thật không may, Windows 11 yêu cầu ảo hóa để chạy WSL2 cũng như Docker/Podman container, điều này không thể thực hiện được bên trong một máy ảo. Trừ khi tôi bật ảo hóa lồng nhau, tất nhiên!
Lưu ý quan trọng: Chuẩn bị hệ thống mạnh mẽ
Bất chấp mọi lợi ích, tôi phải thừa nhận rằng ảo hóa lồng nhau có một số nhược điểm. Về mặt hiệu suất, các máy ảo lồng nhau rõ ràng là kém hơn so với các thiết lập bare-metal. Bạn cũng sẽ cần cấu hình phần cứng mạnh mẽ để chạy các nền tảng ảo hóa bên trong các máy ảo, đặc biệt nếu bạn định sử dụng một nền tảng nặng nề như Harvester. Nhưng nếu tất cả những gì bạn muốn làm là làm quen với các hypervisor khác nhau, bạn sẽ có những trải nghiệm tuyệt vời với ảo hóa lồng nhau.
Bo mạch chủ máy chủ X99 với hai CPU Intel Xeon, thể hiện yêu cầu phần cứng mạnh mẽ cho ảo hóa lồng nhau.
Kết luận
Ảo hóa lồng nhau (nested virtualization) là một tính năng mạnh mẽ và linh hoạt, mang lại giá trị vượt trội cho những người đam mê home lab và các chuyên gia DevOps. Từ việc đơn giản hóa quá trình kiểm thử các hypervisor phức tạp như ESXi, cho phép bạn thực hiện những thử nghiệm táo bạo mà không lo ảnh hưởng đến hệ thống chính, đến việc tạo ra các môi trường phát triển cô lập và hiệu quả, nested virtualization thực sự là chìa khóa để nâng tầm khả năng của bạn trong thế giới ảo hóa. Mặc dù yêu cầu một hệ thống với cấu hình phần cứng đủ mạnh, những lợi ích mà nó mang lại cho việc học hỏi, thử nghiệm và phát triển là vô cùng đáng giá.
Bạn đã từng trải nghiệm ảo hóa lồng nhau chưa? Hãy chia sẻ những dự án hoặc mẹo nhỏ của bạn trong phần bình luận bên dưới nhé!