Ảo hóa
Nested virtualisation là gì?
Nested virtualisation lets a virtual machine itself run virtual machines, by exposing the processor virtualisation extensions to the guest. It is required for Proxmox VE, VM-based CI jobs and some Docker configurations. Many providers disable it, which is the usual reason those workloads fail elsewhere.
Tại sao Nested virtualisation quan trọng
Cần thiết cho Proxmox VE, các tác vụ CI dựa trên VM và một số cấu hình Docker. Nhiều nhà cung cấp vô hiệu hóa tính năng này, đó là lý do thường khiến các tác vụ đó thất bại ở nơi khác.
Nested virtualisation trong thực tế
Khi bạn chạy ảo hóa lồng nhau, bạn khởi động một hypervisor bên trong một máy khách KVM và chuyển các phần mở rộng ảo hóa của CPU máy chủ qua. Bạn sẽ kiểm tra /proc/cpuinfo trong máy khách để tìm cờ svm hoặc vmx. Nếu chúng vắng mặt, hypervisor bên trong của bạn sẽ chuyển sang mô phỏng bằng phần mềm, có thể cắt giảm hiệu suất đi một bậc độ lớn. Bạn cũng có thể cần bật loại CPU 'host' thay vì một mô hình chung để có được các cờ đó. Làm sai và khối lượng công việc Proxmox hoặc CI của bạn sẽ chạy chậm chạp.
Điều mọi người hiểu sai về Nested virtualisation
Mọi người cho rằng ảo hóa lồng nhau chỉ quan trọng để chạy các hệ điều hành đầy đủ như Windows trong một VM. Sửa lại: nó cũng phá vỡ mạng overlay mặc định của Docker và một số module kernel nhất định, vì những thứ đó phụ thuộc vào các tính năng ảo hóa bên trong máy khách. Vì vậy, một khối lượng công việc container có thể thất bại trên một nhà cung cấp vô hiệu hóa tính năng lồng nhau, ngay cả khi bạn không bao giờ có ý định chạy một VM.
Nested virtualisation — các câu hỏi thường gặp
Tôi có thể chạy Docker bên trong một VM lồng nhau không?
Có, và đây là lý do phổ biến nhất khiến mọi người cần ảo hóa lồng nhau. Mạng bridge mặc định của Docker sử dụng iptables và các module kernel có thể hoạt động khác đi mà không có các phần mở rộng ảo hóa CPU được hiển thị. Các gói KVM của chúng tôi bao gồm ảo hóa lồng nhau, vì vậy các container Docker của bạn chạy như mong đợi.
Làm thế nào để kiểm tra xem ảo hóa lồng nhau có được bật không?
Bên trong VM của bạn, chạy grep -E '(svm|vmx)' /proc/cpuinfo. Nếu bạn thấy các cờ, tính năng lồng nhau có sẵn. Nếu không, hypervisor không hiển thị chúng, điều đó thường có nghĩa là nhà cung cấp đã vô hiệu hóa nó.
Nơi Nested virtualisation xuất hiện
- Tôi có thể chạy ảo hóa lồng nhau trên VPS không? Có. Ảo hóa lồng nhau được bật trên mọi instance OnionVPS, vì vậy bạn có thể chạy guest KVM bên trong instance, cài Proxmox VE, hoặc chạy Docker-in-Docker v…
- VPS rẻ nhất mà vẫn dùng được là gì? Khoảng $4 mỗi tháng mua được 1 vCPU, 1 GB RAM và 20 GB NVMe trên ảo hóa KVM thực thụ. Điều đó thực sự đủ cho WireGuard VPN, trình phân giải DNS, Tor relay,…
- Ảo hóa KVM là gì? KVM (Kernel-based Virtual Machine) là ảo hóa phần cứng đầy đủ được tích hợp trong nhân Linux, sử dụng các phần mở rộng của bộ xử lý để chạy từng máy ảo với…
- KVM vs OpenVZ: vì sao loại ảo hoá lại quan trọng KVM là ảo hoá phần cứng đầy đủ: instance của bạn chạy kernel riêng và không thể thấy host. OpenVZ và LXC là công nghệ container dùng chung kernel của host,…
Thêm từ ảo hóa
- KVM
- KVM là ảo hóa phần cứng đầy đủ được tích hợp trong nhân Linux, cho mỗi máy khách nhân riêng và cô lập được bảo đảm bằng phần cứng khỏi các người thuê khác.
- OpenVZ
- OpenVZ là ảo hóa dựa trên container trong đó mọi phiên bản chia sẻ nhân máy chủ, vì vậy máy khách không thể nạp mô-đun nhân hoặc chạy hệ điều hành khác.
- LXC
- LXC là container hóa gốc Linux cô lập các tiến trình với namespace và cgroups trong khi chia sẻ nhân máy chủ.
- Hypervisor
- Hypervisor là lớp phần mềm tạo và chạy máy ảo, phân bổ CPU vật lý, bộ nhớ và IO giữa chúng.
- vCPU
- vCPU là bộ xử lý ảo được cung cấp cho máy khách, được hỗ trợ bởi thời gian lập lịch trên một lõi hoặc luồng vật lý.
- cloud-init
- cloud-init là cơ chế tiêu chuẩn để cấu hình máy ảo trong lần khởi động đầu tiên, sử dụng siêu dữ liệu do nền tảng cung cấp.