KVM là gì?

Tổng Quan

Kernel-based Virtual Machine (KVM) là 1 công nghệ ảo hóa mã nguồn mở được tích hợp sẵn (built in) trong HĐH Linux®. Cụ thể, Kernel-based Virtual Machine (KVM) cho phép người dùng biến Linux thành 1 trình giám sát ảo hóa (hypervisor) cho phép 1 máy chủ (host machine) có thể thực thi nhiều môi trường ảo hóa biệt lập, được gọi là máy khách (guests) hoặc máy ảo (virtual machines - VMs).

Kernel-based Virtual Machine (KVM) là 1 phần của Linux. Nếu người dùng đang sử dụng Linux 2.6.20 hoặc ấn bản mới hơn thì người dùng đã có Kernel-based Virtual Machine (KVM). Kernel-based Virtual Machine (KVM) được công bố lần đầu tiên vào năm 2006 và được hợp nhất vào nhân (kernel) của các dòng phân phối chính của HĐH Linux chỉ 1 năm sau đó. Bởi vì Kernel-based Virtual Machine (KVM) là 1 phần của mã lệnh của HĐH Linux hiện có nên Kernel-based Virtual Machine (KVM) ngay lập tức được hưởng lợi từ mọi tính năng, bản sửa lỗi và cải tiến mới của HĐH Linux mà không cần kỹ thuật bổ sung (additional engineering) nào.

KVM hoạt động như thế nào?

KVM chuyển đổi Linux thành 1 trình giám sát ảo hóa (hypervisor) loại 1 là 1 trình giám sát ảo hóa hoạt động trực tiếp trên phần cứng, được khởi động trước cả HĐH và tương tác trực tiếp với nhân (kernel) của HĐH (bare-metal hypervisor). Tất cả các trình giám sát ảo hóa (hypervisor) cần 1 số thành phần công nghệ ở cấp độ của HĐH, chẳng hạn như trình quản trị bộ nhớ (memory manager), trình lập lịch tiến trình (process scheduler), các tầng công nghệ nhập xuất dữ liệu (input/output - I / O), các trình điều khiển thiết bị (device drivers), trình quản trị bảo mật (security manager), tầng công nghệ mạng (network stack) …, v.v và có thể còn nhiều hơn nữa để thực thi các máy ảo (VMs). Kernel-based Virtual Machine (KVM) có tất cả các thành phần cần thiết vì Kernel-based Virtual Machine (KVM) chính là 1 phần của nhân (kernel) của HĐH Linux. Mọi máy ảo đều được triển khai như 1 quy trình Linux thông thường, được lập lịch (scheduled)bởi trình lập lịch (scheduler)tiêu chuẩn của HĐH Linux với các phần cứng ảo chuyên dụng như card mạng, bộ điều hợp đồ họa (graphics adapter), (các) Bộ vi xử lý (CPU), bộ nhớ và các ổ đĩa.

Triển khai Kernel-based Virtual Machine (KVM)

Tóm lại, người dùng phải sử dụng ấn bản HĐH Linux được phát hành sau năm 2007 và ấn bản HĐH Linux này cần được cài đặt trên phần cứng x86 có hỗ trợ các khả năng ảo hóa (virtualization capabilities). Nếu cả 2 điều kiện đó đều được thỏa mãn, thì tất cả những gì người dùng cần phải làm là tải về 2 modules hiện có (modulesnhân của máy chủ (host kernel) và modules dành riêng cho bộ vi xử lý (processor specific module), trình mô phỏng (emulator) và bất kỳ trình điều khiển nào sẽ trợ giúp cho người dùng thực thi các hệ thống bổ sung.

Việc triển khai Kernel-based Virtual Machine (KVM) trên các bản phân phối Linux được hỗ trợ chẳng hạn như Oracle Enterprise Linux có thể mở rộng các khả năng của Kernel-based Virtual Machine (KVM) khi cho phép người dùng hoán đổi tài nguyên giữa các máy khách (guests), chia sẻ thư viện dùng chung (common libraries), tối ưu hóa hiệu năng của hệ thống và còn hơn thế nữa.

Di chuyển sang cơ sở hạ tầng ảo hóa dựa trên Kernel-based Virtual Machine (KVM)

Việc xây dựng cơ sở hạ tầng ảo hóa trên nền tảng mà người dùng bị ràng buộc theo hợp đồng có thể hạn chế quyền truy cập của người dùng vào mã nguồn (source code). Điều đó có nghĩa là các phát triển CNTT của người dùng có thể chỉ là các phương cách giải quyết tạm thời (workarounds) hơn là đổi mới, sáng tạo và tiếp theo thì những ràng buộc theo hợp đồng cũng có thể ngăn cản người dùng đầu tư vào công nghệ hiện đại như điện toán đám mây, trừu tượng hóa môi trường mà các ứng dụng sẽ thực sự hoạt động (containers) và tự động hóa (automation). Di chuyển sang nền tảng ảo hóa dựa trên Kernel-based Virtual Machine (KVM) có nghĩa là người dùng có thể kiểm tra (inspect), sửa đổi (modify) và nâng cao chất lượng của mã nguồn thực thi trình giám sát ảo hóa (hypervisor) khi không có thỏa thuận sử dụng giấy phép (enterprise-license agreement) nào và cũng không có mã nguồn nào cần phải được bảo vệ vì mã nguồn đã thuộc quyền sử dụng của người dùng.

Các tính năng của Kernel-based Virtual Machine (KVM)

Kernel-based Virtual Machine (KVM) là 1 phần của Linux. Linux là 1 phần của Kernel-based Virtual Machine (KVM). Mọi thứ mà Linux có thì KVM cũng có. Tuy nhiên cũng có những tính năng cụ thể khiến cho Kernel-based Virtual Machine (KVM) trở thành trình giám sát ảo hóa (hypervisor) được ưa thích của các tổ chức đẳng cấp doanh nghiệp.

Bảo Mật: Kernel-based Virtual Machine (KVM) sử dụng sự kết hợp giữa HĐH Linux được tăng cường bảo mật (Security-Enhanced Linux - SELinux) và công nghệ ảo hóa bảo mật (secure virtualization - sVirt) để tăng cường bảo mật và cách ly các máy ảo (VMs). HĐH Linux được tăng cường bảo mật (Security-Enhanced Linux - SELinux) thiết lập ranh giới bảo mật xung quanh các máy ảo (VMs). Công nghệ ảo hóa bảo mật (secure virtualization - sVirt) mở rộng các khả năng của HĐH Linux được tăng cường bảo mật (Security-Enhanced Linux - SELinux), cho phép áp dụng biện pháp bảo mật Kiểm soát truy cập bắt buộc (Mandatory Access Control - MAC) đối vơi các máy ảo khách (guest VMs) và ngăn chặn các lỗi do thao tác thủ công của con người (manual labeling errors).

Lưu trữ: Kernel-based Virtual Machine (KVM) có thể sử dụng bất kỳ phương tiện lưu trữ nào được Linux hỗ trợ, bao gồm 1 số ổ đĩa cục bộ và các phương tiện lưu trữ được gắn vào mạng (NAS). Cơ chế cho phép truyền dữ liệu trên nhiều card NIC - Multipath I / O có thể được sử dụng để cải thiện khả năng lưu trữ và cung cấp khả năng dự phòng (redundancy). Kernel-based Virtual Machine (KVM) cũng hỗ trợ các hệ thống tệp tin được chia sẻ (shared file systems) để các VM images có thể được chia sẻ bởi nhiều máy chủ lưu trữ (hosts). Các disk images hỗ trợ cơ chế thin provisioning cho phép trích lập dự phòng và phân bổ tài nguyên lưu trữ linh hoạt theo yêu cầu thay vì phân bổ tất cả tài nguyên lưu trữ ngay từ đầu (thick provisioning).

Hỗ trợ phần cứng: Kernel-based Virtual Machine (KVM) có thể sử dụng nhiều nền tảng phần cứng được Linux chứng nhận là hỗ trợ. Vì các nhà cung cấp phần cứng thường xuyên đóng góp vào việc phát triển nhân (kernel) của HĐH Linux nên các tính năng mới nhất của phần cứng thường nhanh chóng được áp dụng trong nhân (kernel) của HĐH Linux.

Quản trị Bộ nhớ: Kernel-based Virtual Machine (KVM) kế thừa các tính năng quản trị bộ nhớ của Linux, bao gồm khả năng truy cập bộ nhớ không đồng nhất (non-uniform memory access - NUMA) và cho phép các máy khách KVM guests chia sẻ các khối lưu trữ giống hệt nhau (same-page merging). Bộ nhớ chính (memory) của 1 máy ảo (VM) có thể được hoán đổi (swapped), có thể hỗ trợ khối lượng lớn máy ảo (VM) để cho hiệu năng tốt hơn và được chia sẻ (shared) hoặc hỗ trợ bởi tệp tin disk file.

Di chuyển trực tiếp: Kernel-based Virtual Machine (KVM) hỗ trợ di chuyển trực tiếp là khả năng di chuyển 1 máy ảo (VM) đang hoạt đông qua lại giữa các máy chủ lưu trữ vật lý (physical hosts) mà không làm gián đoạn các dịch vụ. Máy ảo (VM) vẫn được cung cấp điện (powered on), các kết nối mạng vẫn được duy trì và các ứng dụng vẫn tiếp tục hoạt động trong khi các máy ảo đang được di chuyển (relocated). Kernel-based Virtual Machine (KVM) cũng lưu trạng thái hiện tại của máy ảo (VMs) để máy ảo (VM) đó có thể được lưu trữ và được phục hồi lại sau này.

Hiệu năng và khả năng điều chỉnh quy mô: Kernel-based Virtual Machine (KVM) được kế thừa hiệu năng của Linux cũng như khả năng điều chỉnh quy mô linh hoạt để phù hợp với nhu cầu của các khối lượng tải nếu số lượng máy khách (guest machines) và số lượng yêu cầu truy cập tăng lên. Kernel-based Virtual Machine (KVM) cho phép ảo hóa các khối lượng tải ứng dụng khắt khe nhất và là cơ sở cho nhiều thiết lập ảo hóa đẳng cấp doanh nghiệp, chẳng hạn như trung tâm dữ liệu và môi trường điện toán đám mây riêng (thông qua OpenStack®).

Lập lịch tiến trình và kiểm soát tài nguyên: Trong mô hình của Kernel-based Virtual Machine (KVM), máy ảo là 1 tiến trình (process) của Linux, được lập lịch (scheduled) và quản trị bởi nhân (kernel) của HĐH. Bộ lập lịch (scheduler) của Linux cho phép kiểm soát tới cấp độ chi tiết của các tài nguyên được phân bổ cho 1 tiến trình (process) của Linux và đảm bảo chất lượng dịch vụ cho 1 tiến trình cụ thể. Trong Kernel-based Virtual Machine (KVM), cơ chế này bao gồm

- Bộ lập lịch tiến trình hoàn chỉnh (completely fair scheduler) để quản trị việc phân bổ tài nguyên các Bộ vi xử lý để thực thi các tiến trình (process) và nhằm mục đích tối đa hóa việc sử dụng tổng thể của các Bộ vi xử lý đồng thời cũng tối đa hóa hiệu năng tương tác tổng thể,

- Control groups cho phép giới hạn các tài nguyên resource như là bộ vi xử lý và bộ nhớ chính (Memory) mà 1 tiến trình (process) có thể sử dung, Control groups cấp phát các kiểu tài nguyên như processor time, số tiến trình (processes) cho mỗi group, dung lượng bộ nhớ memory cho mỗi group hay kết hợp các tài nguyên đó cho 1 tiến trình (process) hoặc 1 tập hợp của các tiến trình (processes)

- Công nghệ phân chia các tài nguyên mạng (network name spaces) cho phép thực thi chương trình trên bất kì port nào mà không bị xung độ với các tiến trình (process) khác đang hoạt động trên server.

- Các mở rộng trong thời gian thực real-time extensions (RTLinux, RTAI (Real-Time Application Interface for Linux), Xenomai…)

Độ trễ truyền dữ liệu thấp hơn và cấp độ ưu tiên cao hơn: Nhân (kernel) của HĐH Linux có các tiện ích mở rộng trong thời gian thực (real-time extensions) cho phép các ứng dụng trong các máy ảo (VMs) hoạt động với độ trễ truyền dữ liệu thấp hơn với cấp độ ưu tiên tốt hơn (so với các ứng dụng trong các máy vật lý - bare metal). Nhân (kernel) của HĐH Linux cũng chia các tiến trình (processes) đòi hỏi phải có thời gian tính toán dài thành các thành phần nhỏ hơn, sau đó được lập lịch (scheduled) và xử lý tương ứng.

Quản trị Kernel-based Virtual Machine (KVM)

Có thể quản trị hoàn toàn thủ công 1 số máy ảo (VMs) được kích hoạt trên 1 máy trạm (workstation) duy nhất mà không cần công cụ quản trị. Các doanh nghiệp lớn sử dụng phần mềm quản trị ảo hóa để giao tiếp với môi trường ảo hóa và phần cứng vật lý căn bản để đơn giản hóa việc quản trị tài nguyên, tăng cường phân tích dữ liệu và hợp lý hóa hoạt động. Oracle đã tạo ra Oracle Enterprise Linux Virtualization cho chính xác mục đích này.

Kernel-based Virtual Machine (KVM) và Red Hat

Oracle tin tưởng vào Kernel-based Virtual Machine (KVM) như là 1 trình giám sát ảo hóa (hypervisor) quan trọng trong các sản phẩm ảo hóa của Oracle và Oracle đã liên tục cải thiện mã lệnh của nhân (kernel) của HĐH Oracle Enterprise Linux với những đóng góp cho cộng đồng Kernel-based Virtual Machine (KVM).

Kernel-based Virtual Machine (KVM) cũng là 1 phần của Oracle Enterprise Linux nên Kernel-based Virtual Machine (KVM) đã được đưa vào Oracle Enterprise Linux.

Nguồn: https://www.facebook.com/groups/3901242196555375 

Tags: Linux
Bài trước
article.vi