5/5 - (9468 bình chọn)

Vào năm 1998, VMWare đã tìm ra cách để ảo hóa phần cứng x86 flatform, từng được cho là không thể, và tạo ra 1 thị trường cho việc ảo hóa nền tảng x86. Giải pháp ảo hóa phần cứng đó là kết hợp của phương pháp dịch nhị phân (binary translation) và trực tiếp thực hiện trên vi xử lý (processor) cho phép nhiều máy ảo chạy trên cùng một máy tính vật lý với một chi phí phải chăng.

Các khoản tiết kiệm mà hàng chục ngàn công ty tạo ra từ việc triển khai công nghệ này tiếp tục thúc đẩy sự áp dụng nhanh chóng của điện toán ảo hóa từ máy tính để bàn đến trung tâm dữ liệu (data center).

Trong vài năm trở lại đây, năng lực xử lý của desktop và server đã được cải tiến đáng kể, ảo hóa đã chứng minh là sức mạnh công nghệ để đơn giản trong việc phát triển phần mềm và testing. Nâng cao tính linh hoạt của trung tâm dữ liệu (data center).

Trong bài viết này, chúng ta sẽ cố gắng làm rõ các kỹ thuật khác nhau để ảo hóa phần cứng x86, sức mạnh và điểm yếu của mỗi kỹ thuật.

I. Ảo hóa kiến trúc X86

Kiến trúc x86 đã được chứng minh là nền tảng thông trị trong điện toán doanh nghiệp, khởi đầu khiêm tốn của nó là trong các hệ thống máy tính để bàn tới nay, tạo ra lượng lớn ứng dụng doanh nghiệp trên toàn cầu.

Tuy nhiên, một số yếu tố từ kiến trúc ban đầu bị đe dọa để hạn chế tốc độ tăng trưởng của nền tảng x86, quan trọng nhất trong số đó là các không gian địa chỉ vật lý được giới hạn 32 bit. Vào năm 2003 Intel và AMD thêm phần mở rộng 64bit để giải quyết sự hạn chế và ngày nay x86_64 gia đình của bộ vi xử lý từ Intel và AMD đã phổ biến từ máy tính xách tay và máy tính để bàn đến các máy chủ cao cấp hỗ trợ hệ thống đa đối xứng quy mô lớn.

Đầu tiên, chúng ta xem qua kiến trúc x86 với thuật ngữ Ring.

II. RING

Để cung cấp một môi trường hoạt động an toàn, kiến trúc x86 cung cấp một cơ chế để cách ly ứng dụng người dùng từ hệ điều hành bằng cách sử dụng khái niệm về cấp đặc quyền (privilege levels).

Công nghệ ảo hóa phần cứng

Trong mô hình này, bộ vi xử lý (processor) cung cấp 4 cấp đặc quyền hay còn gọi là ring, bắt đầu từ Ring 0 đến Ring 3. Ring 0 có đặc quyền cao nhất, cho phép truy cập đầy đủ phần cứng. Ring 1,2,3 có đặc quyền thấp hơn Ring 0. Trong thực tế, hệ điều hành Linux, window … chạy ở ring 0, các ứng dụng của người sử dụng chạy ở ring 3.

Để hiểu Hypervisor (hay còn gọi là VMM – Virtual Machine Monitor) hoạt động như thế nào, đầu tiên chúng ta cần hiểu mô hình làm việc của OS. Hầu hết mô hình hoạt động của hệ điều hành làm việc với 2 chế độ:

Với ảo hóa x86, có một lớp ảo hóa (virtualization layer) nằm giữa phần cứng vật lý và hệ điều hành. Lớp ảo hóa này cho phép nhiều máy ảo chạy nhiều hệ điều hành khác nhau trên 1 máy tính vật lý. Tự động phân vùng và chia sẻ tài nguyên vật lý như CPU, storage, memory và các thiết bị vào ra (I/O).

Công nghệ ảo hóa phần cứng

Trong mô hình này, VMM chạy ở Ring 0, trực tiếp truy cập phần cứng. Các Guest OS bị di chuyển lên Ring 1, nơi mà không thể trực tiếp truy cập phần cứng.

Như các thiết kế ban đầu của các hệ điều hành là để chạy trên Ring 0, nay bị đẩy lên Ring 1. Vấn đề là trong hệ điều hành (HDH) có một số lệnh chỉ có thể chạy được ở Ring. Để làm việc ở các lớp cao hơn, HĐH phải được viết lại (hay biên dịch lại) để tránh các lệnh này. Giải pháp này phổ biến trong thế giới Linux (IBM dùng kỹ thuật tương tự để chạy Linux trên mainframe), nhưng nó yêu cầu phải có mã nguồn HĐH và phải có lập trình viên am hiểu HĐH.

III. Xử lý các lệnh nhạy cảm và lệnh đặc quyền trong ảo hóa kiến trúc x86

Trong quá trình ảo hóa kiến trúc x86, việc xử lý các lệnh nhạy cảm và lệnh đặc quyền là một thách thức quan trọng. Vì các hệ điều hành ban đầu được thiết kế để chạy trên Ring 0 với đặc quyền cao nhất, các lệnh nhạy cảm và lệnh đặc quyền có thể chỉ chạy được ở mức đặc quyền này. Tuy nhiên, khi chạy các máy ảo trên một hypervisor, việc chuyển đổi các lệnh này trở thành một vấn đề phức tạp.

Một giải pháp phổ biến để xử lý các lệnh nhạy cảm và lệnh đặc quyền trong ảo hóa kiến trúc x86 là viết lại (hoặc biên dịch lại) hệ điều hành. Trong trường hợp của Linux, có một công nghệ phổ biến được sử dụng để chạy Linux trên mainframe của IBM, được gọi là “paravirtualization” (ảo hóa tương hỗ). Đây là một phương pháp yêu cầu sửa đổi mã nguồn của hệ điều hành để tránh sử dụng các lệnh nhạy cảm và lệnh đặc quyền, và thay vào đó sử dụng các giao diện tương thích với hypervisor.

Ngoài ra, còn có hai công nghệ khác để xử lý các lệnh nhạy cảm và lệnh đặc quyền trong ảo hóa kiến trúc x86:

  1. Hardware-assisted Virtualization (ảo hóa hỗ trợ phần cứng): Các tính năng hỗ trợ phần cứng trên vi xử lý và chipset, như Intel VT-x và AMD-V, cung cấp khả năng xử lý các lệnh nhạy cảm và lệnh đặc quyền trực tiếp trên phần cứng. Điều này giúp giảm độ trễ và tăng hiệu suất của máy ảo.
  2. Binary Translation (dịch nhị phân): Kỹ thuật này sử dụng việc dịch các lệnh nhạy cảm và lệnh đặc quyền từ hệ điều hành và ứng dụng gốc sang các lệnh tương đương có thể chạy trên máy ảo. Quá trình dịch này diễn ra trong hypervisor và đảm bảo tính tương thích và bảo mật.

Các công nghệ trên đều giúp giải quyết vấn đề xử lý các lệnh nhạy cảm và lệnh đặc quyền trong ảo hóa kiến trúc x86, đồng thời tối ưu hóa hiệu suất và đảm bảo tính an toàn của hệ thống ảo hóa.

IV. Ứng dụng và triển khai của ảo hóa kiến trúc x86

Ảo hóa kiến trúc x86 đã tạo ra một sự thay đổi đáng kể trong cách chúng ta triển khai và sử dụng các ứng dụng và hệ thống. Dưới đây là một số ứng dụng và triển khai quan trọng của ảo hóa kiến trúc x86:

  1. Data Center Virtualization (ảo hóa trung tâm dữ liệu): Ảo hóa kiến trúc x86 đã cho phép triển khai và quản lý hàng trăm, thậm chí hàng nghìn máy chủ ảo trên một số máy chủ vật lý duy nhất. Điều này giúp tiết kiệm chi phí vận hành và quản lý, tối ưu hóa sử dụng tài nguyên và đơn giản hóa quy trình triển khai và mở rộng hệ thống.
  2. Development and Testing Environments (môi trường phát triển và kiểm thử): Ảo hóa kiến trúc x86 cung cấp một môi trường linh hoạt và cách ly cho việc phát triển và kiểm thử phần mềm. Nhờ vào khả năng tạo ra và quản lý nhiều máy ảo trên một máy tính vật lý, các nhà phát triển có thể dễ dàng tạo ra các môi trường phát triển và kiểm thử riêng biệt cho từng dự án mà không cần cài đặt các hệ điều hành và môi trường phát triển riêng biệt trên từng máy tính. Điều này giúp tăng tốc độ phát triển phần mềm, giảm thiểu xung đột và tiết kiệm tài nguyên máy tính.
  1. Desktop Virtualization (ảo hóa máy tính để bàn): Với ảo hóa kiến trúc x86, người dùng có thể truy cập và sử dụng các máy tính ảo trên các thiết bị di động hoặc máy tính cá nhân của họ. Điều này giúp tăng tính di động và linh hoạt, cho phép người dùng làm việc từ xa hoặc truy cập vào các ứng dụng và dữ liệu từ bất kỳ đâu, bất kể thiết bị mà họ đang sử dụng. Ngoài ra, ảo hóa máy tính để bàn cũng giúp đơn giản hóa quá trình quản lý và bảo mật của các hệ thống máy tính.
  2. Cloud Computing (điện toán đám mây): Ảo hóa kiến trúc x86 đóng vai trò quan trọng trong việc xây dựng các mô hình điện toán đám mây. Nhờ vào khả năng tạo ra và quản lý các máy ảo trên một hạ tầng vật lý, điện toán đám mây có thể cung cấp các dịch vụ linh hoạt, mở rộng và tiết kiệm chi phí cho doanh nghiệp và người dùng cuối. Bằng cách tận dụng ảo hóa kiến trúc x86, các nhà cung cấp điện toán đám mây có thể cung cấp tài nguyên và ứng dụng theo yêu cầu, giúp tối ưu hóa sử dụng tài nguyên và tăng cường khả năng mở rộng.
  3. Disaster Recovery (phục hồi sau thảm họa): Ảo hóa kiến trúc x86 cung cấp các giải pháp phục hồi sau thảm họa hiệu quả. Thay vì cần đầu tư vào nhiều hệ thống máy tính vật lý để đảm bảo tính sẵn sàng và dự phòng, các tổ chức có thể sử dụng ảo hóa để tạo ra các bản sao máy ảo và sao lưu dữ liệu trên các máy chủ khác nhau. Khi xảy ra sự cố, họ có thể nhanh chóng khôi phục máy ảo và dữ liệu từ các bản sao sao lưu, giảm thiểu thời gian gián đoạn và đảm bảo liên tục trong hoạt động kinh doanh.

Tóm lại, ảo hóa kiến trúc x86 đã tạo ra một sự cách mạng trong công nghệ thông tin và đã có những tác động sâu sắc trong triển khai hệ thống và ứng dụng. Với khả năng tăng cường hiệu suất, linh hoạt và tiết kiệm chi phí, ảo hóa kiến trúc x86 đã trở thành một công nghệ quan trọng trong việc xây dựng và quản lý các môi trường ảo trong doanh nghiệp.