Công nghệ ảo hóa phần cứng – phần 1
Giới thiệu Vào năm 1998, VMWare đã tìm ra cách để ảo hóa 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 đó 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 sử lý(processor), cho phép nhiều máy ảo ...
Giới thiệu
Vào năm 1998, VMWare đã tìm ra cách để ảo hóa 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 đó 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 sử 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 sử 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.
Ả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.
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).
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ế độ:
- User mode: Chỉ cho phép những lệnh cần thiết để tính toán và xử lý dữ liệu. Các ứng dụng chạy ở mode này và chỉ sử dụng phần cứng bằng cách thông qua kernel bằng lời gọi hệ thống(system call).
- Kernel mode: Cho phép chạy đầy đủ tập lệnh CPU, bao gồm cả các lệnh đặc quyền. Điều tất nhiên là mode này chỉ dành cho hệ điều hành chạy.
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).
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 0. Để 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.
Hiện tại có 3 công nghệ để xử lý các lệnh nhạy cảm và lệnh đặc quyền này để ảo hóa kiến trúc x86:
- Binary translation
- Paravirtualization
- Hardware assisted virtualization (first generation)
Chúng ta sẽ tìm hiểu các công nghệ này ở những phần sau.