Ảo hóa hoàn toàn (full virtualization) là phương pháp ảo hóa phổ biến nhất. Nó sử dụng một tổ hợp phần mềm được gọi là tổ hợp điều phối máy ảo hay trình điều phối ảo hóa để tạo một lớp trừu tượng hóa giữa các máy ảo và phần cứng vật lý bên dưới. Trong môi trường như vậy, bất cứ phần mềm nào (bao gồm cả hệ điều hành) nếu có khả năng thực thi trên phần cứng vật lý thì cũng có thể chạy trên máy ảo, chúng hoàn toàn không nhận biết được là đang chạy trên môi trường ảo hóa hay không. Ảo hóa hoàn toàn không đòi hỏi phải có sự chỉnh sửa đối với hệ điều hành và các ứng dụng. Trong khi đó các kỹ thuật ảo hóa khác đòi hỏi phải chỉnh sửa hệ điều hành hoặc phần cứng phải có sự thay đổi.
Một ví dụ quan trọng của ảo hoàn toàn là chương trình điều khiển của hệ điều hành CP/CMS của IBM. Đó là minh chứng đầu tiên với hệ thống nghiên cứu CP-40 của IBM vào năm 1967; sau đó nó được phân phối theo dạng mã nguồn mở CP/CMS vào năm 1967-1972, và được tái triển khai trong họ máy ảo của IBM từ năm 1972 đến nay. Mỗi người dùng CP/CMS được cung cấp một máy tính riêng – một máy tính mô phỏng. Mỗi máy ảo như vậy có thể thực hiện đầy đủ các chức năng như một máy tính vật lý và người dùng không thể phân biệt được là đang dùng máy tính thực hay máy tính ảo. Sự mô phỏng được thực hiện toàn diện và dựa trên nguyên tắc hoạt động của phần cứng đó. Nó bao gồm các yếu tố như là tập lệnh, bộ nhớ chính, ngắt, ngoại lệ, và việc
truy cập thiết bị. Kết quả là từ một máy tính đơn có thể trở thành nhiều máy tính.
Tuy vậy chỉ có thể triển khai ảo hóa hoàn toàn khi có sự kết hợp hợp lý giữa 2 yếu tố phần cứng và phần mềm. Không phải tất cả các kiến trúc đều hỗ trợ ảo hóa hoàn toàn. Thí dụ, hầu hết các hệ thống IBM dòng 360 đều không thể thực hiện được ảo hóa hoàn toàn.
Việc thực hiện ảo hóa hoàn toàn đối với nền tảng x86 cũng không dễ dàng và suôn sẻ trước khi có sự xuất hiện của công nghệ Intel-VT và AMD-V vào giữa các năm 2005-2006. Mặc dù trước đó có nhiều phần mềm tạo máy ảo dành cho nền tảng x86 thậm chí đã tuyên bố tiến sát tới ảo hóa hoàn toàn. Ví dụ như Adeos, Mac-on-Linux, Paralles Desktop for Mac, Paralles Workstation, VMware Workstation, VMware Server (tên gọi trước đây là GSX Server), VirtualBox, Win4BSD và Win4Lin Pro. Trong đó VMware sử dụng một kỹ thuật được gọi là dịch nhị phân để tự động thay đổi phần mềm x86 “trong lúc đang chạy” (on-the-fly) để thay thế các chỉ lệnh – “khoan máy ảo” bằng một chuỗi chỉ lệnh an toàn khác.
Một trong những thách thức của kỹ thuật ảo hóa hoàn toàn là khả năng chặn và mô phỏng các hành động có đặc quyền, chẳng hạn như các chỉ lệnh vào/ra. Mỗi hành động đó chỉ được phép thực hiện bên trong máy ảo mà không được phép làm ảnh hưởng tới trạng thái của bất kỳ máy ảo khác, của chương trình điều khiển và phần cứng. Một số chỉ lệnh có thể được thực thi trực tiếp trên phần cứng khi đó ảnh hưởng của chúng hoàn toàn nằm trong các yếu tố được quản lý bởi các chương trình điều khiển chẳng hạn như vị trí ô nhớ và các thanh ghi số học. Nhưng những chỉ lệnh mà “khoan máy ảo” sẽ không thể được thực hiện trực tiếp, cần phải bẫy và mô phỏng những chỉ lệnh này. Những chỉ lệnh như vậy sẽ truy cập hoặc ảnh hướng tới trạng thái thông tin bên ngoài máy ảo.
Tách biệt hoàn toàn phền mềm và phần cứng. Kết quả là có thể tổ chức tốt hơn việc di trú của các ứng dụng và luồng công việc giữa các hệ thống vật lý khác nhau.
Khả năng chia sẻ một máy tính giữa nhiều người sử dụng;
Phân tách những người sử dụng với nhau và với chương trình điều khiển do đó phương pháp này rất an toàn;
Mô phỏng các phần cứng mới để đạt được độ tin cậy, cải thiện năng suất và bảo mật.
Nhƣợc điểm của ảo hóa hoàn toàn:
Ảo hóa hoàn toàn chịu tổn thất về hiệu suất làm việc. Trình điều phối máy ảo cần phải cung cấp cho các máy ảo một “ảnh chụp” của toàn bộ hệ thống, bao gồm BIOS ảo, không gian nhớ ảo, và các thiết bị ảo. Trình điều phối ảo hóa cũng cần phải tạo và duy trì các cấu trúc dữ liệu cho các thành phần ảo chẳng hạn như bảng phân trang bộ nhớ bóng. Các cấu trúc dữ liệu này lại phải được cập nhật tương ứng khi có sự truy cập từ các máy ảo.
Ảo hóa hoàn toàn bằng phép dịch nhị phân của VMware:
H nh 3.1: Ảo hóa hoàn toàn của VMware
VMware có thể ảo hóa bất cứ hệ điều hành x86 nào bằng cách sử dụng kết hợp kỹ thuật thực thi trực tiếp (Direct Execution) và phép dịch nhị phân (Binaray Translation). Cách tiếp cận này được biểu diễn như Hình 3.1, trong đó trình điều phối ảo hóa VMM sẽ dịch mã hạt nhân để thay thế các chỉ lệnh
không thể ảo hóa thành một chuỗi các chỉ lệnh mới cho kết quả mong đợi trên phần cứng ảo. Còn đối với mã lệnh ở mức người dùng sẽ được truy cập trực tiếp tới bộ xử lý để đạt hiệu suất ảo hóa cao.
Việc kết hợp kỹ thuật dịch nhị phân và thực thi trực tiếp làm cho các hệ điều hành kí sinh được tách biệt hoàn toàn khỏi phần cứng nằm bên dưới. Chúng cũng không hề nhận ra rằng đã bị ảo hóa và không đòi hỏi phải chỉnh sửa gì.
Làm thế nào để tr nh điều phối truy cập đƣợc vào vòng 0:
Vòng 0 là chế độ hạt nhân - chế độ có mức đặc quyền cao nhất do vậy cần phải cài đặt một thành phần ở giữa vào nhân.
VMware Workstation được cài đặt như một ứng dụng bình thường trên hệ điều hành chủ. Khi chạy, phần ứng dụng (VMApp) sử dụng một trình điều khiển (VMDriver) nạp vào hệ điều hành chủ để thiết lập thành phần trình điều phối có đặc quyền chạy trực tiếp trên phần cứng. Kết quả là, bộ xử lý sẽ thực thi theo sự điều khiển của hệ điều hành chủ hoặc trình điều phối máy ảo. VMDriver tạo điều kiện cho việc chuyển giao quyền điều khiển giữa hai thành phần trên. Sự thay đổi giữa VMM và hệ điều hành chủ liên quan đến việc lưu và khôi phục lại tất cả người dùng và trạng thái hệ thống trên CPU và vì thế nặng nhọc hơn so với việc chuyển đổi giữa các tiến trình thông thường.
Việc nạp một trình điều khiển vào nhân của hệ điều hành tạo điều kiện chuyển giao quyền điều khiển giữa trình giám sát máy ảo và hệ điều hành kí
sinh tiến tới gần khái niệm cận ảo hóa. Cận ảo hóa sử dụng các hệ điều kí sinh đã bị chỉnh sửa. VMware Workstation không yêu cầu hệ điều hành chủ phải chỉnh sửa gì nhưng nó nạp một trình điều khiển vào nhân của hệ điều hành này.
Ảo hóa hoàn toàn là giải pháp duy nhất không đòi hỏi phải có sự trợ giúp của hệ điều hành, sự trợ giúp của phần cứng để ảo hóa các chỉ lệnh đặc quyền và nhạy cảm. Trình điều phối ảo hóa dịch tất cả các chỉ lệnh của hệ điều hành trong khi chạy và lưu trữ các kết quả để sử dụng về sau, còn những chỉ lệnh thuộc mức người dùng thì chạy với tốc độ tối đa mà không phải chỉnh sửa gì.