• Thứ Sáu, 21/07/2006 07:56 (GMT+7)

    Hiện thực ảo hoá

    Lĩnh vực ảo hoá hiện đang nóng! Nhiều nền tảng ảo hoá mới xuất hiện, có cả giải pháp phần mềm và phần cứng, ảo hoá từ chip xử lý đến cả hạ tầng CNTT. Công đồng CNTT nói chung đang háo hức với công nghệ này vì những lợi ích mà nó đem lại.

    Lĩnh vực ảo hoá hiện đang nóng! Nhiều nền tảng ảo hoá mới xuất hiện, có cả giải pháp phần mềm và phần cứng, ảo hoá từ chip xử lý đến cả hạ tầng CNTT. Cộng đồng CNTT nói chung đang háo hức với công nghệ này vì những lợi ích mà nó đem lại.

    Kỹ thuật "ảo hoá” đã không còn xa lạ với thực tế đời thường kể từ khi VMware giới thiệu sản phẩm VMware Workstation đầu tiên vào năm 1999. Sản phẩm này ban đầu được thiết kế để hỗ trợ việc phát triển và kiểm tra phần mềm và đã trở nên phổ biến nhờ khả năng tạo những máy tính "ảo" chạy đồng thời nhiều hệ điều hành (HĐH) khác nhau trên cùng một máy tính "thực" (khác với chế độ "khởi động kép" - máy tính được cài nhiều HĐH và có thể chọn lúc khởi động nhưng mỗi lúc chỉ làm việc được với 1 HĐH).

    VMware, được EMC (hãng chuyên về lĩnh vực lưu trữ) mua lại vào tháng 12 năm 2003, đã mở rộng tầm hoạt động từ máy tính để bàn (desktop) đến máy chủ (server) và hiện hãng vẫn giữ vai trò thống lĩnh thị trường ảo hoá nhưng không "độc tôn" mà phải cạnh tranh với sản phẩm nguồn mở Xen, Virtualization Engine 2.0 của IBM, Virtual Server của Microsoft, Virtuozzo của SWSoft và Virtual Iron của Iron Software. Và "ảo hoá” cũng không còn bó hẹp trong 1 lĩnh vực mà mở rộng cho toàn bộ hạ tầng CNTT, từ phần cứng như chip xử lý cho đến hệ thống máy chủ và cả hệ thống mạng.

    Máy ảo

    VMware là hãng dẫn đầu thị trường "ảo hoá” hiện nay nhưng không phải là hãng tiên phong, vai trò này thuộc về IBM với hệ thống máy ảo VM/370 nổi tiếng được công bố vào năm 1972 và "ảo hoá” vẫn đang hiện diện trong các hệ thống máy chủ hiện nay của IBM.

    Về nguyên lý, máy ảo IBM là "bản sao" của phần cứng bên dưới. Một thành phần có chức năng giám sát máy ảo (VMM - Virtual Machine Monitor) chạy trực tiếp trên phần cứng "thực" cho phép tạo ra nhiều máy ảo và mỗi máy ảo làm việc với HĐH riêng. Ý tưởng xuất phát của máy ảo là nhằm tạo môi trường làm việc cho nhiều người dùng chia sẻ tài nguyên của hệ thống máy tính lớn (mainframe).

    Nguyên lý làm việc của máy ảo PC cũng giống như máy ảo thời mainframe: là một môi trường phần mềm bao gồm HĐH và các ứng dụng hoàn toàn chạy "bên trong" nó. Máy ảo cho phép bạn chạy một HĐH nào đó trong một HĐH khác trên cùng hệ thống PC chẳng hạn như chạy Linux trong máy ảo trên PC chạy Windows 2000. Trong máy ảo, bạn có thể làm được hầu hết mọi thứ như với PC thật. Đặc biệt, máy ảo này có thể được "đóng gói" trong 1 file và có thể chuyển từ PC này sang PC khác mà không phải bận tâm về việc tương thích phần cứng. Các máy ảo là những thực thể cách ly với hệ thống "chủ” (chứa các máy ảo) chạy trên máy thực.

    Một vấn đề đặt ra là yêu cầu máy ảo mô phỏng chính xác máy thực. Máy thực có các tài nguyên phần cứng như bộ nhớ, thanh ghi... và các tập lệnh của BXL tác động trực tiếp đến tài nguyên phần cứng này (như thay đổi thanh ghi, cờ... ) thuộc nhóm lệnh "nhạy cảm" (vì có ảnh hưởng đến tất cả tiến trình đang làm việc, bao gồm VMM). HĐH chạy trực tiếp trên máy thực được phép thực thi các lệnh "nhạy cảm" này.

    Ở hệ thống mainframe, VMM chạy trên phần cứng máy thực ở chế độ ưu tiên, còn máy ảo làm việc ở chế độ giới hạn. Khi máy ảo yêu cầu các lệnh thông thường, VMM sẽ chuyển tiếp chúng đến BXL để thực thi trực tiếp, còn các lệnh đặc biệt "nhạy cảm" sẽ bị chặn lại. VMM sẽ thực thi lệnh với BXL trên máy thực hoặc mô phỏng kết quả rồi trả về cho máy ảo. Đây là cơ chế nhằm cách ly máy ảo với máy thực để đảm bảo an toàn hệ thống.

    Các BXL của hệ thống mainframe được thiết kế hỗ trợ cơ chế "ảo hoá” và cho phép "bẫy" các lệnh "nhạy cảm" để chuyển cho VMM xử lý, nhưng các BXL dành cho PC (x86) lại không có khả năng này.

                       VMware cho phép chạy đồng thời nhiều hệ điều hành khác nhau trên PC.

    Ảo như thực

    Về lý thuyết, theo Intel, nhân HĐH làm việc ở lớp 0 (Ring 0, có chức năng cao nhất), cấp truy cập sâu nhất. BXL x86 truyền thống không thể chạy HĐH ảo ở lớp 0 vì cần phải chạy phần mềm quản lý các máy ảo (được gọi là hypervisor).

    Kiến trúc x86 còn có 3 lớp nữa với chức năng giảm dần. Để đảm bảo tính ổn định, các HĐH hiện nay giới hạn ứng dụng làm việc ở lớp chức năng thấp nhất - Ring 3 (đây là lý do Windows XP có độ ổn định cao hơn so với DOS - HĐH cho phép các ứng dụng làm việc ở lớp 0). Vì vậy giải pháp hiển nhiên là HĐH của máy ảo được phân bổ ở 2 lớp còn lại.

    Vấn đề là có một số mã lệnh x86 chỉ làm việc ở lớp 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.

    Để chạy HĐH nguyên bản ở ngoài lớp 0, hypervisor phải bẫy các lệnh bị cấm và mô phỏng chúng. Đây là giải pháp của VMware và môi trường mô phỏng DOS của Windows XP. Vấn đề là việc mô phỏng sử dụng nhiều nguồn lực tính toán và làm giảm hiệu suất hoạt động của hệ thống.

    Để giải quyết vấn đề này, Intel (hãng thống lĩnh thị trường BXL máy tính) đã đưa ra kiến trúc VT (tên mã trước đây là Vanderpool và Silverdale) và AMD cũng có kiến trúc Pacifica tương đương, bổ sung lớp ưu tiên bên dưới Ring 0. VT và Pacifica đưa thêm các mã lệnh mới chỉ làm việc ở lớp mới này ("Ring -1") dành cho hypervisor. Với cách này, HĐH chạy trên máy ảo không cần phải điều chỉnh và ảnh hưởng hiệu suất của việc mô phỏng cũng giảm. Tuy vậy, vấn đề hiệu suất chưa được giải quyết triệt để: mỗi HĐH đều cho rằng nó toàn quyền truy cập tài nguyên hệ thống như bộ nhớ và đường truyền dữ liệu (bus I/O), trong khi đó hypervisor phải phân bổ việc truy cập các tài nguyên thực để đảm bảo các chương trình và dữ liệu không bị lẫn lộn giữa các HĐH. Hiện việc ảo hoá các tài nguyên hệ thống và thiết bị I/O đã được tính đến và có khả năng các phiên bản VT và Pacifica trong tương lai sẽ cho phép các HĐH "ảo" làm việc trực tiếp với phần cứng.

    Ảo mọi thứ

    Ảo hóa đem đến cho người dùng sự tiện lợi chạy nhiều HĐH đồng thời trên cùng PC, nhưng khả năng của ảo hoá còn hơn thế và hiện nó đã bước sang sân chơi lớn hơn: máy chủ và hệ thống mạng. Đây là sân chơi mà ảo hoá có thể phát huy hết sức mạnh của mình.

    Ảo hoá server không phải là vấn đề mới (như đã giới thiệu ở trên, ảo hoá vốn có nguồn gốc từ mainframe), nhưng nó thật sự được chú trọng trong vòng 2 năm trở lại đây. Ý nghĩa quan trọng của việc ảo hoá server đó là cho phép khai thác triệt để nguồn lực của server (server thường có thời gian "rỗi" chứ không vận hành liên tục với 100% hiệu suất), tổ chức linh hoạt hệ thống server (đặc biệt là các trung tâm dữ liệu), tiết kiệm thời gian và chi phí đầu tư cũng như hoạt động.

    Hiện có nhiều công ty lớn tham gia vào lĩnh vực ảo hoá server và đưa ra nhiều giải pháp mới, trong đó 2 cách phổ biến nhất là ảo hoá cứng và ảo hoá mềm.

    Cách thứ nhất (còn gọi là "phân thân" server) tạo nhiều máy ảo trên 1 server vật lý. Mỗi máy ảo chạy HĐH riêng và được cấp phát riêng số xung nhịp CPU, dung lượng lưu trữ và băng thông mạng. Các tài nguyên của server có thể được cấp phát động một cách linh hoạt tùy theo nhu cầu của từng máy ảo. Giải pháp này cho phép hợp nhất các hệ thống server cồng kềnh. Microsoft hiện cũng đã cung cấp "giấy phép ảo" cho giải pháp ảo hoá cứng: Windows Server 2003 R2 bản 1 server đơn cho phép cài thêm trên 4 máy ảo ngoài máy "thực".

    Cách ảo hoá thứ hai (còn gọi là "phân thân" HĐH) sử dụng bản sao của một HĐH để tạo các server ảo ngay trên HĐH đó. Như vậy, nếu HĐH "chủ” là Linux thì cách ảo hoá này sẽ cho phép tạo thêm nhiều bản Linux làm việc trên cùng máy. Cách này có ưu điểm là chỉ cần 1 giấy phép HĐH nhưng có điểm hạn chế là bạn không thể chạy nhiều HĐH khác nhau trên cùng 1 máy.

    Tuy nhiên, có một vấn đề được đặc biệt quan tâm đối với ảo hoá server đó là tình trạng "đặt tất cả trứng trong 1 giỏ”. Có mạo hiểm không khi đặt tất cả server quan trọng trong 1 server vật lý duy nhất?

    Giải pháp ảo hóa toàn hệ thống mạng cho phép "đặt trứng vào nhiều giỏ”: tập hợp nguồn lực của tất cả CPU, bộ nhớ, bộ lưu trữ và ứng dụng trong toàn mạng để chia sẻ công việc. Giải pháp này có thể cung cấp server ảo với nguồn lực được tập hợp từ nhiều server vật lý đặt ở nhiều nơi khác nhau và chạy những HĐH khác nhau, bộ nhớ và bộ lưu trữ cũng được tập hợp từ nhiều nguồn trên mạng. Việc cấp phát tài nguyên cực kỳ linh hoạt và mức độ tin cậy của server "ảo" cũng cực kỳ cao nhờ khả năng hoán chuyển công việc từ nhiều server. Đây chính là cơ sở của khái niệm mạng lưới (tham khảo bài "Mạng lưới: Khả năng vô hạn?", ID:A0501_99).

    Phương Uyên

    Từ khóa: Phương Uyên
    ID: A0607_127