Nested Virtualization (Ảo hóa lồng nhau) cho phép bạn chạy một Hypervisor bên trong một Máy ảo (Virtual Machine). Windows 10 giới thiệu Nested Virtualization. Cho dù bạn có cần nó hay không, đây là một số thông tin có thể bạn quan tâm.
Container bên trong Container: Về Nested Virtualization trong Windows
Trước đây bạn có thể tạo container song song — bao nhiêu tùy bộ nhớ chính cho phép và dùng chúng cho mục đích khác nhau. Microsoft hiện đã phát hành tính năng nested virtualization với bản Insider Build mới nhất số 10565. Tính năng nested virtualization trong Windows cho phép bạn tạo container bên trong container. Mặc dù tính năng chưa hoàn hảo, đây là những gì bạn cần biết.
Ảo hóa sử dụng Hyper-V
Windows hỗ trợ Droka — cho phép tạo container đơn giản bạn có thể dùng song song hoặc tạo container Hyber V được coi tốt hơn container đơn giản. Mặc dù bạn có thể tạo Windows Containers song song, thường chúng cuối cùng dùng chung thư viện và tài nguyên. Trong trường hợp này, một hoặc nhiều container "Xấu" có thể gây tắc nghẽn bằng cách giữ tài nguyên và không giải phóng cho container khác dùng. Đó là nhược điểm duy nhất dẫn đến giới thiệu container Hyper V.
Container Hyper V tạo mọi thứ riêng biệt cho mỗi môi trường ảo. Nghĩa là, ngay cả OS cũng được tái tạo và cung cấp cho ứng dụng chạy trong buồng ảo đó. Điều này nghĩa là không có tài nguyên ảo chung và do đó không có xung đột.

Nested virtualizations trong Windows được làm cho có thể bằng Hyper V. Bạn có thể thử điều khác nhưng Microsoft nói hiện tại nested virtualization chỉ hoạt động với container Hyper V. Vì vậy bạn phải cẩn thận tạo một container và sau đó tạo container khác bên trong container đầu tiên. Nếu bạn thử dùng hypervisor khác hoặc thử tạo container Hyper V khác song song với cái bạn đã tạo, có thể không hoạt động. Nó đặt ra câu hỏi trong đầu tôi — container song song có không thể trong Windows không? Tôi sẽ nói về nó ở phần sau.
Nested Virtualization – Là gì và cách triển khai?
Như nói trước, bạn có thể tạo container Hyper V. Container này sẽ đảm bảo hypervisor khác không được phép thấy nó. Nghĩa là, chỉ container xuất hiện như CPU và CPU thực tế có thể không hiển thị cho hypervisor khác để bạn thậm chí không thể tạo container khác song song. Nghi ngờ ở đây là bạn có thể tạo hai hoặc nhiều container Hyper V song song hay bạn chỉ tạo container bên trong container đầu tiên bạn tạo.
Blog của Microsoft nói rằng một khi bạn tạo container Hyper V, nó sẽ không cho hypervisor khác cài đặt thêm container Hyper V vì chúng không thể thấy CPU thực. Bạn không thể tạo thêm container bên ngoài container bạn đã tạo? Sau đó, khi bạn chạy các virtualizer khác, chúng sẽ nghĩ container là CPU thực và tạo container ảo bên trong container đó.
Đó là nested virtualization – nơi bạn có container bên trong container – đó cũng, mỗi cái hoàn toàn độc lập với cái khác: không thư viện chung hoặc driver. Nghe hay trừ nghi ngờ container song song đó. Đây là hình ảnh tôi mượn từ Microsoft để minh họa hoạt động của nested virtualization

Đến việc triển khai nested virtualization, có nhiều yếu tố cần kiểm tra. Một số ví dụ:
- Dung lượng RAM (nhớ RAM là yếu tố giới hạn; bạn chỉ có thể tạo bao nhiêu container tùy RAM chứa được)
- Processor của bạn có được hỗ trợ không? (MS nói chỉ Intel VT-X được hỗ trợ lúc này)
- Dynamic memory phải tắt
- Theo dõi runtime memory và hơn thế nữa
Có nhiều vấn đề ở thời điểm này mà Microsoft có thể khắc phục ở các giai đoạn sau. Nhưng để thử nested virtualization, nó đã phát triển script PowerShell mà bạn có thể gọi từ GitHub.
Windows 11/10 có hỗ trợ nested virtualization không?
Có, Windows 11 và Windows 10 hỗ trợ nested virtualization. Để bạn biết, nó không phải chức năng dựa trên phần mềm mà là tính năng phần cứng. Đã nói đó, phần cứng máy tính của bạn phải hỗ trợ SLAT hoặc Second Level Address Translation. Nếu không, bạn không thể dùng nested virtualization trên máy tính của mình.
Làm thế nào để bật nested virtualization trong Windows 11/10?
Nếu bạn dùng Hyper-V để tạo máy ảo, bạn có thể không cần bật hoặc mở bất kỳ cài đặt bổ sung nào. Mặt khác, nếu bạn dùng Virtual Box hoặc VMware để tạo máy ảo, bạn có thể tìm cài đặt tương ứng. Bạn cần bật chúng trước khi chạy máy ảo để có thể tạo và sử dụng máy ảo khác bên trong OS ảo.
Để biết cách tạo Nested Virtualization Containers trong Windows 10, và hơn thế nữa, tham khảo bài blog MSDN này.
