Trả lời nhanh: KVM là một mô đun trong nhân Linux, biến chính nhân đó thành lớp ảo hóa chạy trên phần cứng. Nó không phải một sản phẩm hoàn chỉnh mà là nền móng bên dưới rất nhiều nền tảng, từ Proxmox tới các hệ thống đám mây quy mô lớn. Nhờ nằm trong nhân, nó thừa hưởng toàn bộ trình điều khiển và cơ chế quản lý tài nguyên của Linux.
Cái tên này xuất hiện khắp nơi khi bạn đọc về ảo hóa mã nguồn mở, nhưng ít tài liệu nói rõ nó là gì và nó khác các sản phẩm bên trên như thế nào. Bài này làm rõ vị trí của nó trong bức tranh, đủ để bạn đọc mọi tài liệu khác một cách tự tin.
Nó là gì về mặt kỹ thuật
Đây là một mô đun được nạp vào nhân Linux. Khi nạp, nó cho phép nhân sử dụng các chỉ lệnh ảo hóa có sẵn trong CPU để tạo và điều khiển các máy ảo.
Điểm tinh tế và cũng gây tranh cãi về mặt phân loại: sau khi nạp mô đun này, chính nhân Linux trở thành lớp ảo hóa chạy trên phần cứng. Nó không phải một lớp phần mềm chạy bên trên hệ điều hành, mà là chính hệ điều hành được nâng cấp thêm khả năng ảo hóa.
Vì vậy dù bạn cài nó vào một bản Linux thông thường, kết quả vẫn được xếp vào nhóm lớp ảo hóa chạy trên máy trần, chứ không phải nhóm chạy như ứng dụng.
Hệ quả rất lớn: nó thừa hưởng ngay mọi trình điều khiển phần cứng của Linux, mọi cơ chế lập lịch CPU, quản lý bộ nhớ, mạng và lưu trữ. Không cần viết lại từ đầu như các lớp ảo hóa độc lập phải làm.
Nó cần gì để thành một hệ thống dùng được
Bản thân mô đun này chỉ lo phần cách ly và điều phối CPU cùng bộ nhớ. Nó không tạo được máy ảo, không giả lập thiết bị, không có giao diện quản lý. Cần ít nhất hai lớp nữa.
Lớp giả lập thiết bị. Máy ảo cần thấy ổ cứng, card mạng, bàn phím, màn hình. Phần này do một phần mềm riêng đảm nhiệm, chạy ở tầng người dùng và phối hợp chặt với mô đun trong nhân.
Lớp quản lý. Nơi bạn tạo máy ảo, gán tài nguyên, đặt lịch sao lưu, quản lý cụm. Đây là chỗ các nền tảng khác nhau, và cũng là chỗ tạo ra khác biệt về trải nghiệm giữa chúng.
Nói cách khác, khi ai đó nói hệ thống của họ chạy trên nền tảng này, họ đang nói về phần móng. Phần bạn thực sự nhìn thấy và làm việc hằng ngày là các lớp bên trên.
Nó nằm ở đâu trong các sản phẩm
- Proxmox VE. Dùng mô đun này cho máy ảo và dùng LXC cho container, gói lại trong một giao diện web thống nhất kèm quản lý cụm và sao lưu.
- Các nền tảng quản lý ảo hóa doanh nghiệp mã nguồn mở khác. Cùng nền móng, khác ở lớp quản lý và ở mô hình triển khai.
- Nền tảng đám mây mã nguồn mở quy mô lớn. Cũng dùng nền móng này ở tầng tính toán, bên trên là cả một hệ thống điều phối tài nguyên phức tạp.
- Nhiều dịch vụ đám mây thương mại. Một số nhà cung cấp lớn chạy trên nền móng này với các sửa đổi riêng.
Điều này giải thích vì sao kỹ năng của bạn chuyển đổi được khá tốt giữa các nền tảng khác nhau: khái niệm bên dưới giống nhau, chỉ khác giao diện và công cụ quản lý.
Vì sao nó nhanh
Ba lý do, và cả ba đều đến từ việc nó nằm trong nhân.
Chỉ lệnh ảo hóa của CPU. Phần lớn mã của máy ảo chạy trực tiếp trên CPU thật ở một chế độ riêng. Lớp ảo hóa chỉ can thiệp khi máy khách làm việc đặc quyền.
Dịch địa chỉ bộ nhớ trong phần cứng. CPU hiện đại có cơ chế dịch hai tầng địa chỉ ngay trong phần cứng, loại bỏ phần lớn chi phí quản lý bộ nhớ ảo mà trước đây phần mềm phải gánh.
Trình điều khiển bán ảo hóa. Thay vì giả lập một card mạng đời cũ, hệ thống cung cấp thiết bị thiết kế riêng cho môi trường ảo. Máy khách cài trình điều khiển tương ứng và hai bên nói chuyện trực tiếp. Đây là điểm quyết định hiệu năng đĩa và mạng, và là việc bắt buộc phải làm trên mọi máy ảo.
Những điều cần biết khi vận hành
Bốn điểm thực dụng.
- Phải bật ảo hóa phần cứng trong BIOS. Không bật thì hoặc không chạy được, hoặc chạy ở chế độ dịch phần mềm chậm hơn nhiều lần.
- Kiểu CPU trình cho máy ảo có ý nghĩa. Trình đúng loại CPU vật lý cho hiệu năng cao, nhưng làm máy ảo khó chuyển sang máy chủ có CPU khác. Trình một loại CPU chung thì linh hoạt hơn nhưng mất vài chỉ lệnh mới.
- Cơ chế gộp trang bộ nhớ giống nhau giúp tiết kiệm RAM khi chạy nhiều máy ảo giống nhau, nhưng tốn CPU và có vài lo ngại về bảo mật. Cân nhắc theo tình huống.
- Trang bộ nhớ lớn cải thiện hiệu năng cho máy ảo nhiều RAM, đáng bật với cơ sở dữ liệu lớn.
Nó nằm ở đâu trong các sản phẩm bạn nghe tên
| Thành phần | Vai trò |
|---|---|
| Phần trong nhân hệ điều hành | Lớp thực hiện ảo hóa, cho phép mã của máy ảo chạy trực tiếp trên bộ xử lý |
| Phần giả lập thiết bị | Tạo ra ổ đĩa, card mạng, màn hình ảo cho máy ảo dùng |
| Thư viện quản lý | Lớp trung gian để các công cụ điều khiển máy ảo theo cùng một cách |
| Giao diện quản trị | Phần bạn nhìn thấy và thao tác hằng ngày |
Nhiều nền ảo hóa mã nguồn mở khác nhau về giao diện và tính năng quản lý, nhưng bên dưới đều dùng chung lớp thực hiện ảo hóa này. Đó là lý do máy ảo tạo trên nền này thường chuyển sang nền khác được mà không phải dựng lại từ đầu.
Mã chạy thẳng trên bộ xử lý thật
Mã của máy ảo không bị dịch lại từng lệnh mà chạy thẳng trên bộ xử lý thật, nhờ tính năng ảo hóa được tích hợp sẵn trong chip. Lớp ảo hóa chỉ can thiệp khi máy ảo làm những việc cần kiểm soát, ví dụ truy cập thiết bị. Vì thế phần tính toán gần như không mất mát, và chỗ chậm còn lại nằm ở vào ra ổ đĩa với mạng. Đó cũng là lý do việc chọn đúng trình điều khiển cho ổ đĩa và card mạng quan trọng hơn nhiều so với mọi tinh chỉnh khác.
Sáu việc kiểm khi vận hành
# 1. Kiem tinh nang ao hoa da bat trong phan thiet lap bo mach chuagrep -E "vmx|svm" /proc/cpuinfo | head -n 1# Khong co ket qua nghia la tinh nang dang tat, may ao se rat cham # 2. Kiem mo dun da nap chualsmod | grep kvm # 3. Luon cai bo trinh dieu khien danh cho may ao BEN TRONG may ao# Day la viec anh huong toi hieu nang nhieu nhat va hay bi quen # 4. Voi o dia may ao, chon loai giao tiep danh rieng cho ao hoa# thay vi loai gia lap phan cung cu # 5. Dung cap thua nhan xu ly.# May ao can du so nhan ranh CUNG LUC moi chay duoc,# cap 8 nhan cho viec can 2 lam no phai cho lau hon. # 6. Bo nho: theo doi muc dung thuc te trong mot tuan roi dieu chinh,# dung doan tu dau.Câu hỏi thường gặp
Cần cài gì thêm để dùng nó
Về kỹ thuật thì chỉ cần nạp mô đun và có phần mềm giả lập thiết bị. Nhưng trong thực tế không ai dùng trần như vậy, mà cài một nền tảng hoàn chỉnh như Proxmox để có giao diện quản lý, cụm và sao lưu.
Nó có chạy được trên Windows không
Không, đây là mô đun của nhân Linux. Windows có công nghệ ảo hóa riêng của Microsoft. Nếu muốn chạy nền tảng dựa trên mô đun này thì máy chủ phải chạy Linux.
Máy ảo Windows chạy trên nền tảng này có ổn không
Rất ổn và rất phổ biến. Chỉ cần nhớ hai việc: cài bộ trình điều khiển bán ảo hóa cho đĩa và mạng, và tính đúng giấy phép Windows Server theo lõi vật lý của máy chủ.
Nó khác gì công nghệ ảo hóa của Xen
Xen là một lớp ảo hóa độc lập, tự nó nắm phần cứng và chạy một máy khách đặc quyền để quản lý. Mô đun này thì tích hợp thẳng vào nhân Linux nên thừa hưởng mọi trình điều khiển sẵn có. Cả hai đều trưởng thành, nhưng hệ sinh thái quanh mô đun trong nhân lớn hơn nhiều hiện nay.
Có thể dùng phần mềm này mà không có mô đun ảo hóa không
Được, và nó vẫn chạy đúng, chỉ là chậm hơn nhiều lần. Chế độ đó hữu ích khi bạn cần giả lập một kiến trúc CPU khác, hoặc khi chạy trên máy không hỗ trợ ảo hóa phần cứng. Với máy ảo chạy thật thì luôn dùng kết hợp cả hai.
Định dạng đĩa ảo nào nên dùng
Định dạng riêng của phần mềm này hỗ trợ ảnh chụp, cấp phát mỏng và nén, phù hợp khi kho lưu trữ là hệ thống file thông thường. Nếu kho là ZFS hoặc lưu trữ ở mức khối, dùng định dạng thô rồi để tầng lưu trữ lo ảnh chụp thường cho hiệu năng tốt hơn.
Máy ảo chạy chậm thì kiểm gì đầu tiên
Kiểm xem đĩa và card mạng có đang dùng thiết bị bán ảo hóa không. Đây là nguyên nhân của phần lớn trường hợp. Sau đó mới tới các yếu tố khác như tốc độ kho lưu trữ và mức cấp phát quá tay cho CPU.
