TrungTamSoHoa.comTrung Tâm Số Hoá
Điện toán đám mây

Ảo hoá là gì? Máy ảo, hypervisor và vì sao ảo hoá là nền móng của đám mây

Ảo hoá là kỹ thuật chia một máy vật lý thành nhiều máy ảo độc lập. Lịch sử từ máy tính lớn, tiêu chí Popek–Goldberg, hypervisor loại 1 và 2, và giới hạn của nó.

Macro shot of a single motherboard under soft studio light, translucent glass blocks stacked above it like layered rooms, purple and silver palette, clean dark background

Ảo hoá là kỹ thuật dùng một lớp phần mềm, gọi là hypervisor, để chia tài nguyên của một máy tính vật lý thành nhiều máy ảo, mỗi máy chạy hệ điều hành riêng và tưởng như mình đang sở hữu cả một máy thật. Nhờ đó một máy chủ có thể chạy hàng chục hệ thống tách biệt, thay vì mỗi hệ thống chiếm một máy và chỉ dùng một phần nhỏ công suất.

Ảo hoá là nền móng kỹ thuật của điện toán đám mây. Khả năng tạo máy trong vài phút, tính tiền theo giờ, di chuyển máy giữa các máy chủ vật lý khi bảo trì, chia sẻ một trung tâm dữ liệu cho hàng nghìn khách hàng đều dựa trên việc phần cứng đã được trừu tượng hoá thành tài nguyên phần mềm.

Bài này giải thích ảo hoá hoạt động thế nào ở mức cơ chế, đi qua lịch sử từ máy tính lớn thập niên 1960 đến hỗ trợ trong bộ vi xử lý hiện đại, phân biệt các loại hypervisor và các dạng ảo hoá khác, rồi nêu những giới hạn mà người lập kế hoạch hạ tầng cần biết.

Cơ chế: hypervisor làm gì giữa phần cứng và hệ điều hành

Một hệ điều hành bình thường giả định nó toàn quyền với phần cứng: nó trực tiếp quản lý bộ nhớ, ngắt, thiết bị vào ra, và chạy ở mức đặc quyền cao nhất của bộ vi xử lý. Muốn chạy nhiều hệ điều hành trên cùng một máy, phải có một lớp nằm dưới chúng, giữ quyền thật và cho mỗi hệ điều hành khách một bản phần cứng "giả" đủ thuyết phục. Lớp đó là hypervisor, còn gọi là trình giám sát máy ảo.

Hypervisor làm ba việc chính. Thứ nhất, chia sẻ CPU: lập lịch cho các nhân xử lý ảo chạy luân phiên trên nhân thật, giống cách hệ điều hành lập lịch cho các tiến trình. Thứ hai, ảo hoá bộ nhớ: mỗi máy ảo thấy một vùng nhớ liên tục bắt đầu từ địa chỉ không, hypervisor ánh xạ nó sang bộ nhớ vật lý thật và ngăn máy ảo này đọc vùng nhớ của máy ảo khác. Thứ ba, ảo hoá thiết bị: mô phỏng card mạng, ổ đĩa, hoặc cho máy ảo truy cập gần trực tiếp vào thiết bị thật thông qua các cơ chế chuyển tiếp.

Mấu chốt kỹ thuật là xử lý các lệnh đặc quyền. Khi hệ điều hành khách cố thực hiện một lệnh chỉ được phép ở mức cao nhất, ví dụ đổi bảng trang bộ nhớ, bộ vi xử lý phải "bẫy" lệnh đó lại và chuyển quyền cho hypervisor xử lý thay. Kiến trúc nào bẫy được mọi lệnh nhạy cảm thì ảo hoá được hiệu quả; kiến trúc nào để lọt thì phải dùng mẹo phần mềm, như câu chuyện lịch sử ở mục sau.

Dòng thời gian: từ máy tính lớn đến bộ vi xử lý hiện đại

Ảo hoá cũ hơn đám mây gần nửa thế kỷ. Các mốc dưới đây là những cột mốc được ghi nhận rộng rãi trong tài liệu lịch sử máy tính.

  • Thập niên 1960: IBM phát triển các hệ thống CP-40 và CP-67, cho phép nhiều người dùng mỗi người có một máy ảo riêng trên cùng một máy tính lớn. Động lực là chia sẻ cỗ máy đắt tiền cho nhiều người dùng và nhiều hệ điều hành.
  • 1972: hệ điều hành VM/370 đưa ảo hoá thành sản phẩm thương mại trên dòng máy tính lớn, và dòng sản phẩm này còn kế thừa đến nay.
  • 1974: Gerald Popek và Robert Goldberg công bố bài báo nêu các điều kiện hình thức để một kiến trúc máy tính có thể ảo hoá hiệu quả, trở thành nền lý thuyết của lĩnh vực.
  • Cuối thập niên 1990: kiến trúc x86 phổ biến trên máy chủ lại không thoả các điều kiện đó, vì một số lệnh nhạy cảm không gây bẫy. Các sản phẩm thương mại đầu tiên vượt qua bằng kỹ thuật dịch nhị phân, tức sửa mã của hệ điều hành khách ngay khi chạy.
  • 2003: dự án Xen tại Đại học Cambridge phổ biến kỹ thuật ảo hoá song song (paravirtualization), sửa hệ điều hành khách để nó chủ động gọi hypervisor thay vì bị bẫy.
  • Khoảng 2005–2006: các nhà sản xuất bộ vi xử lý x86 đưa hỗ trợ ảo hoá vào phần cứng, sau đó là hỗ trợ ảo hoá bộ nhớ, giúp hypervisor đơn giản và nhanh hơn. Đây là tiền đề kỹ thuật để các dịch vụ máy ảo trên đám mây công cộng ra đời và mở rộng nhanh trong cùng giai đoạn.

Hypervisor loại 1 và loại 2

Cách phân loại này bắt nguồn từ chính bài báo của Popek và Goldberg, dù ranh giới ngày nay đã mờ hơn.

Tiêu chíLoại 1 (bare-metal)Loại 2 (hosted)
Vị tríChạy trực tiếp trên phần cứng, không cần hệ điều hành chủChạy như một ứng dụng trên hệ điều hành có sẵn
Hiệu năngCao, chi phí phụ thấpThấp hơn vì phải đi qua hệ điều hành chủ
Dùng choMáy chủ trong trung tâm dữ liệu, đám mâyMáy tính cá nhân của lập trình viên, thử nghiệm, đào tạo
Bề mặt tấn côngNhỏ, chỉ có lớp hypervisorLớn hơn, bao gồm cả hệ điều hành chủ
Ví dụ về dạngHypervisor thương mại cho trung tâm dữ liệu, KVM tích hợp trong nhân LinuxPhần mềm máy ảo cài trên máy tính để bàn

KVM là ví dụ cho thấy ranh giới mờ: nó là một mô-đun của nhân Linux, biến chính nhân Linux thành hypervisor. Có tài liệu xếp nó vào loại 1 vì chạy ở mức nhân với hỗ trợ phần cứng, có tài liệu xếp loại 2 vì vẫn có một hệ điều hành đầy đủ bên dưới. Với người lập kế hoạch, câu hỏi hữu ích hơn là hiệu năng, hệ sinh thái quản lý và chi phí giấy phép, chứ không phải nhãn loại.

Các nhà cung cấp đám mây lớn ngày nay thường dùng hypervisor tự phát triển hoặc tuỳ biến sâu, kết hợp phần cứng chuyên dụng để chuyển việc xử lý mạng và lưu trữ ra khỏi CPU chính, nhằm giảm chi phí phụ của ảo hoá xuống rất thấp.

Không chỉ máy chủ: các dạng ảo hoá khác

Ảo hoá lưu trữ. Gộp nhiều ổ đĩa và nhiều máy thành một bể lưu trữ, rồi cắt ra các ổ ảo cho từng máy ảo. Người dùng không cần biết dữ liệu nằm trên ổ vật lý nào; hệ thống tự nhân bản để chịu lỗi. Đây là lý do ổ đĩa trên đám mây có thể gắn sang máy khác khi máy cũ hỏng.

Ảo hoá mạng. Tạo các mạng riêng, bộ định tuyến, tường lửa bằng phần mềm trên cùng một hạ tầng vật lý. Mỗi khách hàng đám mây có một mạng riêng ảo với dải địa chỉ của riêng mình dù dùng chung dây cáp và thiết bị chuyển mạch với hàng nghìn khách khác.

Ảo hoá máy tính để bàn. Máy tính của nhân viên chạy ở trung tâm dữ liệu, người dùng chỉ nhận hình ảnh màn hình qua mạng. Hợp với ngân hàng, tổng đài, nơi cần kiểm soát dữ liệu không rời trung tâm dữ liệu; đổi lại đòi hỏi mạng ổn định và có thể gây trễ với ứng dụng đồ hoạ nặng.

Ảo hoá ở mức hệ điều hành (container). Thay vì mô phỏng cả máy, nhân hệ điều hành chia thành nhiều không gian cách ly cho các nhóm tiến trình. Container nhẹ hơn máy ảo nhiều nhưng dùng chung nhân, nên mức cách ly yếu hơn. Đây là chủ đề riêng của một bài khác trong chuyên mục này.

Lợi ích kinh tế: vì sao ảo hoá thay đổi trung tâm dữ liệu

Trước ảo hoá, thông lệ phổ biến là "một ứng dụng, một máy chủ", để tránh xung đột phần mềm và để sự cố của ứng dụng này không kéo ứng dụng khác. Hệ quả là phần lớn máy chủ chạy ở mức dùng thấp, thường được mô tả chỉ khoảng một phần mười đến một phần năm công suất. Trung tâm dữ liệu đầy máy, tốn điện, tốn làm mát mà phần lớn công suất bỏ không.

Ảo hoá cho phép hợp nhất máy chủ: gộp nhiều ứng dụng lên ít máy hơn, mỗi ứng dụng vẫn tách biệt trong máy ảo riêng. Cùng với đó là những khả năng mà máy vật lý không có: chụp nhanh trạng thái trước khi nâng cấp để quay lui, di chuyển máy ảo đang chạy sang máy chủ khác để bảo trì phần cứng mà không ngừng dịch vụ, tạo bản sao từ mẫu trong vài phút thay vì cài đặt từ đầu.

Ví dụ giả định: một trường đại học có ba mươi máy chủ vật lý cũ, mỗi máy chạy một hệ thống như đào tạo, thư viện, nhân sự, tuyển sinh, phần lớn thời gian rảnh. Sau ảo hoá, toàn bộ chạy trên bốn đến sáu máy chủ mới cùng một hệ thống lưu trữ dùng chung, tiết kiệm điện, chỗ đặt và thời gian quản trị, đồng thời có thể tăng tài nguyên cho hệ thống tuyển sinh vào mùa cao điểm rồi trả lại sau đó. Đây chính là bước đầu tiên trên đường tới một đám mây riêng.

Giới hạn và rủi ro cần biết

Ảo hoá không miễn phí, và một số giới hạn của nó ảnh hưởng trực tiếp tới thiết kế hệ thống.

  • Hàng xóm ồn ào. Các máy ảo trên cùng một máy chủ tranh nhau bộ nhớ đệm của CPU, băng thông bộ nhớ, ổ đĩa và mạng. Một máy ảo chạy tác vụ nặng có thể làm máy ảo khác chậm đi dù mỗi máy đều có phần CPU riêng trên giấy.
  • Cấp phát vượt mức. Hypervisor cho phép cấp tổng CPU và bộ nhớ ảo lớn hơn tài nguyên thật, dựa trên giả định không phải máy nào cũng dùng hết cùng lúc. Khi giả định sai, mọi máy cùng chậm.
  • Cách ly không tuyệt đối. Các lỗ hổng ở mức phần cứng được công bố từ năm 2018, như nhóm lỗi thực thi suy đoán, cho thấy dữ liệu có thể rò qua ranh giới máy ảo trong một số điều kiện. Nhà cung cấp đã vá và thiết kế lại, nhưng đây là lý do một số khối lượng nhạy cảm chọn máy chủ dành riêng.
  • Chi phí giấy phép. Một số phần mềm thương mại tính phí theo nhân vật lý của máy chủ chứ không theo nhân ảo, khiến chạy trên cụm ảo hoá lớn đắt bất ngờ.
  • Điểm lỗi tập trung. Một máy chủ vật lý hỏng kéo theo mọi máy ảo trên nó, nên cụm ảo hoá cần cơ chế tự khởi động lại máy ảo trên máy chủ khác và lưu trữ dùng chung.

Câu hỏi thường gặp

Máy ảo chạy chậm hơn máy thật bao nhiêu?

Với hỗ trợ phần cứng hiện đại, chi phí phụ cho tác vụ tính toán thông thường thường nhỏ. Chênh lệch rõ hơn ở tác vụ vào ra nhiều như cơ sở dữ liệu ghi liên tục hoặc mạng độ trễ thấp, và phụ thuộc nhiều vào cách cấu hình ổ đĩa, mạng ảo và mức tranh chấp trên máy chủ.

Máy chủ dành riêng (dedicated host) trên đám mây khác máy ảo thường thế nào?

Máy ảo của bạn vẫn chạy qua hypervisor, nhưng máy chủ vật lý bên dưới chỉ phục vụ riêng bạn. Lựa chọn này giảm lo ngại về hàng xóm và giúp đáp ứng điều khoản giấy phép tính theo máy vật lý, đổi lại giá cao hơn và kém linh hoạt.

Ảo hoá lồng nhau là gì?

Là chạy một hypervisor bên trong một máy ảo, tức máy ảo trong máy ảo. Nó hữu ích cho đào tạo, thử nghiệm phần mềm ảo hoá hay chạy môi trường giả lập, nhưng hiệu năng giảm rõ và không phải nền tảng nào cũng cho phép.

Doanh nghiệp đang chạy cụm ảo hoá tại chỗ có nên chuyển hết lên đám mây?

Không nhất thiết. Cụm ảo hoá tại chỗ đã khấu hao, tải ổn định và đội ngũ quen vận hành có thể rẻ hơn. Thay đổi giá giấy phép hypervisor, hết vòng đời phần cứng hoặc nhu cầu co giãn lớn là những thời điểm hợp lý để đánh giá lại.

Ảo hoá có giúp tiết kiệm điện thật không?

Có, chủ yếu nhờ hợp nhất: ít máy chủ hơn nghĩa là ít điện cho máy và cho làm mát. Mức tiết kiệm phụ thuộc vào tỷ lệ hợp nhất đạt được và hiệu suất của máy chủ mới so với máy cũ bị thay.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.