Nguyên lý hoạt động chung của QEMU-KVM

Nguyên lý hoạt động chung của QEMU-KVM

Sự hiểu biết hiện tại của tôi:

1) KVM

KVM (Máy ảo dựa trên hạt nhân) là một trình ảo hóa (VMM - Trình quản lý máy ảo) chạy dưới dạng mô-đun trên hệ điều hành Linux. Cần có bộ ảo hóa để chạy một số phần mềm trong môi trường (ảo) không tồn tại, đồng thời ẩn khỏi phần mềm này phần cứng vật lý thực mà phần mềm này chạy trên đó. Trình ảo hóa hoạt động như một “miếng đệm” giữa phần cứng vật lý (máy chủ) và hệ điều hành ảo (khách).

Vì KVM là một mô-đun tiêu chuẩn của nhân Linux nên nó nhận được tất cả các tính năng cần thiết từ nhân (quản lý bộ nhớ, bộ lập lịch, v.v.). Và theo đó, cuối cùng, tất cả những lợi ích này đều thuộc về khách (vì khách làm việc trên một trình ảo hóa chạy trên/trong nhân hệ điều hành Linux).

KVM rất nhanh, nhưng bản thân nó không đủ để chạy một hệ điều hành ảo, bởi vì... Điều này yêu cầu mô phỏng I/O. Đối với I/O (CPU, đĩa, mạng, video, PCI, USB, cổng nối tiếp, v.v.) KVM sử dụng QEMU.

2) QEMU

QEMU (Trình mô phỏng nhanh) là trình giả lập cho nhiều thiết bị khác nhau, cho phép bạn chạy các hệ điều hành được thiết kế cho kiến ​​trúc này trên kiến ​​trúc khác (ví dụ: ARM -> x86). Ngoài bộ xử lý, QEMU còn mô phỏng nhiều thiết bị ngoại vi khác nhau: card mạng, HDD, card màn hình, PCI, USB, v.v.

Nó hoạt động như thế này:

Hướng dẫn/mã nhị phân (ví dụ: ARM) được chuyển đổi thành mã trung gian độc lập với nền tảng bằng cách sử dụng bộ chuyển đổi TCG (Trình tạo mã nhỏ) và sau đó mã nhị phân độc lập với nền tảng này được chuyển đổi thành hướng dẫn/mã đích (ví dụ: x86).

ARM -> mã trung gian -> x86

Về cơ bản, bạn có thể chạy máy ảo trên QEMU trên bất kỳ máy chủ nào, ngay cả với các mẫu bộ xử lý cũ không hỗ trợ Intel VT-x (Công nghệ ảo hóa Intel) / AMD SVM (Máy ảo bảo mật AMD). Tuy nhiên, trong trường hợp này, nó sẽ hoạt động rất chậm, do thực tế là mã nhị phân đang thực thi cần được biên dịch lại nhanh chóng hai lần, sử dụng TCG (TCG là trình biên dịch Just-in-Time).

Những thứ kia. Bản thân QEMU rất tuyệt vời nhưng nó hoạt động rất chậm.

3) Vòng bảo vệ

Nguyên lý hoạt động chung của QEMU-KVM

Mã chương trình nhị phân trên bộ xử lý hoạt động có lý do nhưng nằm ở các cấp độ khác nhau (vòng / vòng bảo vệ) với các cấp độ truy cập dữ liệu khác nhau, từ đặc quyền nhất (Vòng 0), đến hạn chế nhất, được quy định và “với các đai ốc được thắt chặt”. ” (Vòng 3 ).

Hệ điều hành (nhân hệ điều hành) chạy trên Ring 0 (chế độ nhân) và có thể làm bất cứ điều gì nó muốn với bất kỳ dữ liệu và thiết bị nào. Các ứng dụng của người dùng hoạt động ở cấp độ Ring 3 (chế độ người dùng) và không được phép làm bất cứ điều gì họ muốn mà thay vào đó phải yêu cầu quyền truy cập mỗi lần để thực hiện một thao tác cụ thể (do đó, các ứng dụng của người dùng chỉ có quyền truy cập vào dữ liệu của chính họ và không thể “có được” vào” hộp cát của người khác). Vòng 1 và 2 dành cho người lái xe sử dụng.

Trước khi phát minh ra Intel VT-x / AMD SVM, các trình ảo hóa chạy trên Vòng 0 và khách chạy trên Vòng 1. Vì Vòng 1 không có đủ quyền để hệ điều hành hoạt động bình thường, với mỗi lệnh gọi đặc quyền từ hệ thống khách, nhà ảo hóa đã phải sửa đổi lệnh gọi này một cách nhanh chóng và thực hiện nó trên Ring 0 (giống như QEMU). Những thứ kia. khách nhị phân KHÔNG được thực thi trực tiếp trên bộ xử lý và mỗi lần đều trải qua một số sửa đổi trung gian một cách nhanh chóng.

Chi phí rất lớn và đây là một vấn đề lớn, sau đó các nhà sản xuất bộ xử lý, độc lập với nhau, đã phát hành một bộ hướng dẫn mở rộng (Intel VT-x / AMD SVM) cho phép thực thi mã hệ điều hành khách TRỰC TIẾP trên bộ xử lý chủ (bỏ qua mọi bước trung gian tốn kém, như trường hợp trước).

Với sự ra đời của Intel VT-x / AMD SVM, một cấp Ring mới đặc biệt -1 (trừ một) đã được tạo ra. Và bây giờ trình ảo hóa chạy trên đó, còn khách chạy trên Ring 0 và có quyền truy cập đặc quyền vào CPU.

Những thứ kia. sau cùng:

  • máy chủ chạy trên Ring 0
  • khách làm việc trên Ring 0
  • trình ảo hóa chạy trên Ring -1

4) QEMU-KVM

KVM cấp cho khách quyền truy cập vào Ring 0 và sử dụng QEMU để mô phỏng I/O (bộ xử lý, ổ đĩa, mạng, video, PCI, USB, cổng nối tiếp, v.v. mà khách “nhìn thấy” và làm việc cùng).

Do đó QEMU-KVM (hoặc KVM-QEMU) :)

TÍN
Hình ảnh thu hút sự chú ý
Hình ảnh Vòng bảo vệ

PS Văn bản của bài viết này ban đầu được xuất bản trên kênh Telegram @RU_Voip như một câu trả lời cho câu hỏi của một trong những người tham gia kênh.

Viết vào phần bình luận mà tôi không hiểu chính xác chủ đề hoặc nếu có điều gì cần bổ sung.

Cảm ơn bạn!

Nguồn: www.habr.com

Thêm một lời nhận xét