Virtualization là gì
Động lực của virtualization: Là chia sẻ tài nguyên của một physical machine hiệu quả cho tất cả các user. Mỗi user sẽ có một environment độc lập. User này không thể nhìn thấy môi trường của user khác. User sẽ tưởng rằng nó đang hoàn toàn sở hữu physical machine. Nhưng thực ra nó chỉ thấy virtual machine mà nó được cấp.
Thử so với cách chia sẻ truyền thống, dùng share hosting, tất cả user trên cùng một machine nhưng không thể phân phối chi tiết đến mức bao nhiêu memory, bao nhiêu cpu, bao nhiêu disk… cho mỗi user được. Thêm nữa, sử dụng chroot và cấp phát mỗi host một user khác nhau cũng sẽ độc lập hóa môi trường các user nhưng hiệu năng không bằng và việc cấu hình lại phức tạp.
Virtualization là một lớp trừa tượng tất cả các tài nguyên của physical machine với user. Từ lớp trừu tượng, các tài nguyên cpu, memory, disk, network... có thể được cấp phát đến user. Lớp trừu tượng sẽ được map với physical resource.
Công nghệ ảo hóa không chỉ giới hạn trong compute mà còn vươn đến các lĩnh vực network và storage.
Sử dụng ý tưởng tương tự, toàn bộ chi tiết network, topology, các nối kết cable, vendor khác nhau bên dưới được che đi bởi một lớp ảo hóa. Toàn bộ hoạt động của network từ switching, routing đều được quản lý qua một network OS như NOX
Tương tự với storage, chúng ta cũng có các chi tiết storage bên dưới bị che đi bởi một lớp ảo hóa, toàn bộ hoạt động của storage được điều khiển qua HDFS, HBase…
Cơ chế hoạt động của cloud cũng dựa trên virtualization. Bằng việc ảo hóa các chi tiết bên dưới, cloud cung cấp cho chúng ta các service cần thiết như billing service, storage service, monitoring service…
Để phục vụ cho việc đi sâu vào cloud, đòi hỏi chúng ta phải hiểu về virtualization.
Kiến trúc ảo hóa
Virtualization có hai kiến trúc: Hosted architecture và hypervisor architecture.
Hosted architecture
Với kiến trúc hosted, lớp virtualization layer sẽ được cài đặt và chạy như một application trên OS. Ví dụ về các ảo hóa kiểu hosted như virtualbox, vmware server, vmware workstation...
Hypervisor architecture
Đây là kiến trúc thường sử dụng trong doanh nghiệp. Lớp virtualization được cài đặt và chạy ngay trên hardware của máy tính. Hypervisor architecture còn gọi là bare-metal architecture và hardware mà được cài đặt lớp ảo hóa trực tiếp còn gọi là bare hardware. Ví dụ về các ảo hóa kiểu hypervisor như vmware esxi.
Vì không phải deploy trên OS nên có thể thấy ngay là kiến trúc hypervisor thì hiệu năng, linh động, uyển chuyển hơn hẳn kiến trúc hosted.
Trong kiến trúc hypervisor, lớp ảo hóa là một software chịu trách nhiệm quản lý và host các VMM - Virtual Machine Monitor. Mỗi VMM sẽ implement một virtual machine (có đầy đủ các hardware như disk, memory, cpu…) và guest OS
Ảo hóa bao trùm ba thành phần chính của một physical machine: CPU virtualization, memory và device I/O.
CPU virtualization
Thách thức với x86 platform
Kiến trúc x86 định nghĩa ra 4 mức hoạt động, gọi là ring, từ ring 0, 1, 2 đến 3. Mỗi ring hiểu là một privileged level. OS luôn hoạt động ở ring 0 còn user level application hoạt động ở ring 3 nhưng trong kiến trúc ảo hóa, virtualization layer lại hoạt đông ở ring 0. Điều đáng ngại là một số chỉ thị của guest OS ( gọi là non-virtualizable instruction ) nếu không được thực hiện trong ring 0 thì sẽ không hoạt động được. Thách thức ở đây là bắt được các chỉ thị này và translate các chỉ thị này xuống hardware ngay trong khi hệ thống hoạt động. Để vượt qua thách thức này, vmware có đề xuất ba giải pháp: Full virtualization sử dụng binary translation, hardware assist virtualization và paravirtualization.
Giải pháp 1: Full, native virtualization với binary translation
Trong giải pháp này, các non virtualizable instruction từ guest OS được translate qua binary translation ở virtualization layer và cache lại kết quả dùng cho các lần sau. Còn user level application thì thực hiện direct execution xuyên qua virtualization layer. Bằng cách này, trở ngại các chỉ thị guest OS không hoạt động ở ring khác 0 bị vượt qua còn các user level application vẫn họat động ở native speed (tốc độ đáp ứng yêu cầu giống như khi không có ảo hóa). Guest OS hoàn toàn không nhận ra nó đang nằm trên một lớp ảo hóa vì các low-level request không có gì thay đổi. Do đó guestOS hoàn toàn không phải chỉnh sửa gì.
Giải pháp 2: Paravirtualization hay còn gọi là OS assisted virtualization
Trong paravirtualization, hypervisor sẽ cung cấp hypercall interface. Guest OS sẽ được chỉnh sửa kernel code để thay thế non-virtualizable instruction bằng các hypercall này. Do kernel code của guest OS phải chỉnh sửa nên giải pháp này không thể sử dụng được một số hệ điều hành mã nguồn đóng như windows. Thêm nữa, do guest OS sử dụng hypercall nên nó sẽ biết được nó đang nằm trên một virtualization layer.
Các giải pháp hỗ trợ ảo hóa của hardware vendor được công bố vào năm 2006 như VT-x của Intel hay AMD-v của AMD. Cả hai giải pháp này đều hướng đến việc xây dựng một CPU mode mới dành riêng cho virtualization layer gọi là root mode ( CPU mode -1). Bằng cách này, các OS request từ guest OS sẽ được tự động đi xuyên qua virtualization layer và cũng không cần kỹ thuật binary translation nữa do guest OS đã nằm ở ring 0. Trạng thái của guest OS sẽ được lưu trong Virtual machine control structure (VT-x) hoặc Virtual machine control block (AMD-v). Tuy rất hứa hẹn nhưng giải pháp này chưa tối ưu về code nên ứng dụng còn hạn chế. Hiện tại VMWare chỉ tận dụng hardware virtualization cho 64 bits guest OS.
So sánh các giải pháp
Xem bảng sau:
Memory virtualization
Làm cách nào chia sẻ physical memory và cấp phát động memory đến các virtual machine ? VMWare sử dụng cơ chế giống như virtual address trên OS. Trong các hệ điều hành ngày này, process sẽ truy cập đến physical address qua một virtual address. Virtual address này sẽ được map đến physical address qua một page table. CPU được thiết kế kèm một hardware unit gọi là MMU và một TLB để thực hiện công việc này.
MMU - Memory Management Unit, một mạch tích hợp nằm trong CPU hoặc có thể gắn ngoài đảm trách việc translate memory (virtual address sang physical address), memory protection, cache control
TLB - Translation Lookaside Buffer, một bộ nhớ cache để tăng hiệu quả translate memory.
Device I/O virtualization
Hypervisor sẽ áo hóa hardware để mô phỏng các thiết bị cho từng virtual machine.
Những virtual device như được trình bày trong hình vẽ sẽ translate các request xuống machine hardware. Lấy ví dụ networking, mỗi virtual machine sẽ có một số virtual NIC và virtual switch mà sẽ chia sẻ các physical NIC:
Tham khảo
https://communities.vmware.com/docs/DOC-8970
http://www.vmware.com/company/news/releases/64bit
https://www.vmware.com/files/pdf/VMware_paravirtualization.pdf
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003944
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1008170
http://www.slideshare.net/Cameroon45/vmware-and-cpu-virtualization-technology
Không có nhận xét nào:
Đăng nhận xét