Full virtualization vs paravirtualization vs hardware-assisted virtualization
Show
–> Tóm lại, ảo hóa là phương pháp để tạo ra phiên bản ảo hóa trên máy tính vật lý. Tại sao nên sử dụng công nghệ ảo hóa?Tiết kiệm chi phí và tối ưu hóa hạ tầng CNTT là điều mà các doanh nghiệp quan tâm, đặc biệt là các doanh nghiệp có nhiều chi nhánh trong cả nước hay trên toàn cầu. Ảo hóa giúp doanh nghiệp nâng cao năng lực bảo mật dữ liệu, tăng cường khả năng khôi phục hoạt động sau thảm họa, nâng cao tính linh hoạt và cắt giảm chi phí đầu tư cho CNTT như phải cập nhật liên tục các phần mềm, các tính năng mới… trên nhiều máy tính vật lý. Virtual Machine là gì?
Hypervisor/VMM là gì ?
–>Tóm lại, hypervisor là các phần mềm công nghệ để tạo máy ảo và giám sát, điều khiển máy ảo Có 2 loại hypervisor là Loại-1: NativeMột hypervisor ở dạng native (hay còn gọi “bare-metal”) chạy trực tiếp trên phần cứng. Nó nằm giữa phần cứng và một hoặc nhiều hệ điều hành khách (guest operating system). Nó được khởi động trước cả hệ điều hành và tương tác trực tiếp với kernel. Điều này mang lại hiệu suất cao nhất có thể vì không có hệ điều hành chính nào cạnh tranh tài nguyên máy tính với nó. Tuy nhiên, nó cũng đồng nghĩa với việc hệ thống chỉ có thể được sử dụng để chạy các máy ảo vì hypervisor luôn phải chạy ngầm bên dưới. Các hypervisor dạng native này có thể kể đến như VMware ESXi, Microsoft Hyper-V và Apple Boot Camp. Loại-2: HostedMột hypervisor dạng hosted được cài đặt trên một máy tính chủ (host computer), mà trong đó có một hệ điều hành đã được cài đặt. Nó chạy như một ứng dụng cũng như các phần mềm khác trên máy tính. Hầu hết các hypervisor dạng hosted có thể quản lý và chạy nhiều máy ảo cùng một lúc. Lợi thế của một hypervisor dạng hosted là nó có thể được bật lên hoặc thoát ra khi cần thiết, giải phóng tài nguyên cho máy chủ. Tuy nhiên, vì chạy bên trên một hệ điều hành, nó có thể đem lại hiệu suất tương tự như một hypervisor ở dạng native. Ví dụ về các hypervisor dạng hosted bao gồm VMware Workstation, Oracle VirtualBox và Parallels Desktop for Mac. RingTrong khoa học máy tính, Hierarchical Protection Domains (hay Protection Rings) là cơ chế nhằm bảo vệ dữ liệu và chức năng của một chương trình tránh khỏi nguy cơ lỗi hoặc bị truy cập trái phép bởi các chương trình khác. Một Protection Ring là một mức độ (mode/level/layer) truy cập tài nguyên hệ thống. Số lượng Ring tùy thuộc vào kiến trúc CPU và hệ điều hành chạy trên kiến trúc đó có khả năng hỗ trợ bao nhiêu Ring. Các Ring được sắp xếp có thứ bậc, từ mức có nhiều đặc quyền nhất (dành cho trusted-software, thường được đánh số 0) đến mức có ít đặc quyền nhất (dành cho untrusted-software, được đánh số cao nhất). Dưới đây là hình minh họa các Ring trong kiến trúc CPU x86 Các chương trình hoạt động tại Ring 0 có đặc quyền cao nhất, có thể tương tác trực tiếp với phần cứng như CPU, Memory… Để cho phép các ứng dụng nằm ở Ring có trọng số cao truy cập các tài nguyên được quản lý bởi các chương trình nằm ở Ring có trọng số thấp hơn, người ta xây dựng các cổng (gate) đặc biệt. Ví dụ như system call (lời gọi hàm hệ thống) giữa các Ring. Việc quy định chặt chẽ chương trình nào nằm tại Ring nào cộng với việc xây dựng các cổng phù hợp giữa các Ring sẽ đảm bảo tính ổn định của hệ thống, đồng thời ngăn chặn các chương trình nằm trong Ring cao sử dụng trái phép (do vô tình hoặc cố ý) các tài nguyên dành cho các chương trình khác nằm tại Ring thấp hơn Ví dụ, một spyware đang chạy với tư cách là ứng dụng cho người dùng thông thường (thuộc untrusted software) nằm tại Ring 3 có ý định bật webcam mà không được sự đồng ý của người dùng. Hành vi này sẽ bị hệ thống ngăn chặn vì muốn truy cập tới phần cứng là thiết bị webcam nó phải sử dụng một hàm trong phần mềm điều khiển thiết bị (device driver) của webcam (thuộc trusted software) nằm tại Ring 1. Hầu hết các hệ điều hành chỉ sử dụng 2 Ring ngay cả khi phần cứng mà hệ điều hành chạy trên đó hỗ trợ nhiều hơn 2 Ring. Ví dụ, Windows chỉ sử dụng 2 mức là Ring 0 (tương ứng với Kernel Mode) và Ring 3 (tương ứng với User Mode). –> Tóm lại, Phân loại VirtualizationTrong ảo hóa, người ta có thể ảo hóa:
Trong khuôn khổ bài viết, tôi sẽ chỉ tập trung đến CPU virtualizationCó 4 loại CPU virtualization :
Trong khuôn khổ bài viết, tôi sẽ tập trung vào Full VirtualizationTrong 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ì. Hiểu dân dã: Thằng Guest OS nó sẽ không bị sửa đổi hệ điều hành để tương thích với phần cứng, mà nó sẽ dịch nhị phân các yêu cầu, rồi đưa cho thằng VMM, xong thằng VMM làm trung gian đưa cho thằng Hardware xử lý. Nhìn vào ParavirtualizationTrong 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. Hiểu dân dã: Thằng Guest OS bây giờ đã bị sửa đổi 1 tí, để có thể nằm ở Nhưng đối với các App, nó vẫn thấy thằng Guest OS này không có gì thay đổi, vì App cần interface gì thì Guest OS nó vẫn cung cấp cho interface ý, vẫn là API ý. Hardware Assisted Virtualization – Cập nhật thêmCá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. Hiểu dân dã: Đây chính là sự kết hợp của bố Nguồn tham khảo :
Nhằm phục vụ cho các nhu cầu thao tác dữ liệu trên các tệp tin, ảnh, “tạo ổ đĩa ảo” (sau đó phát triển lên thành “tạo máy ảo” để chạy song song hoặc chạy thử các hệ điều hành) là sự lưạ chọn hàng đầu của người dùng. Tất cả những “ổ đĩa ảo”, “máy ảo” đó được gọi là ảo hóa (Virtualization). Hiểu đơn giản là bạn tạo ra thêm một phiên bản phụ (phiên bản ảo) của một số phần mềm, linh kiện trong máy tính hay thậm chí là ảo hóa toàn bộ chiếc máy tính. Công nghệ ảo hóa KVM là gì?KVM (viết tắt của Kernel Virtualization Machine) là công nghệ ảo hóa mới cho phép ảo hóa thực sự trên nền tảng phần cứng. Nghĩa là OS (hệ điều hành) chính mô phỏng phần cứng cho các OS khác để chạy trên đó. Nó hoạt động tương tự như một người quản lý siêu việt chia sẻ công bằng các tài nguyên như disk (ổ đĩa), network IO và CPU. Một số loại KVM được nhiều người sử dụng là CL1008M, CL1016M, CL1000M, CL5708M, CL5716M…. Ra đời với phiên bản đầu tiên vào năm 2007 bởi công ty Qumranet tại Isarel, KVM được tích hợp sẵn vào nhân của hệ điều hành Linux bắt đầu từ phiên bản 2.6.20. Năm 2008, RedHat đã mua lại Qumranet và bắt đầu phát triển, phổ biến KVM Hypervisor. KVM hoạt động như thế nào?KVM chuyển đổi một nhân Linux (Linux kernel) thành một bare metal hypervisor và thêm vào đó những đặc trưng riêng của các bộ xử lý Intel như Intel VT-X hay AMD như AMD-V. Khi đã trở thành một hypervisor, KVM hoàn toàn có thể setup các máy ảo với các hệ điều hành khác nhau và không phụ thuộc vào hệ điều hành của máy chủ vật lý. Trong kiến trúc của KVM, Virtual machine được thực hiện tương tự như là quy trình xử lý thông thường của Linux, được lập lịch hoạt động như các scheduler tiểu chuẩn của Linux. Trên thực tế, mỗi CPU ảo hoạt động như một tiến trình xử lý của Linux. Do đó, KVM được quyền thừa hưởng những ưu điểm từ các tính năng của nhân Linux. Ưu điểm gì của KVM thuyết phục người dùng?Linh hoạt: Tuy máy chủ gốc được cài đặt Linux, nhưng KVM hỗ trợ tạo máy chủ ảo có thể chạy cả Linux, Windows. Sử dụng kết hợp với QEMU, KVM có thể chạy Mac OS X. KVM cũng hỗ trợ cả x86 và x86-64 system. Tính độc quyền cao: Cấu hình từng gói VPS KVM sẽ chỉ một người sở hữu và toàn quyền sử dụng tài nguyên đó (CPU, RAM, diskspace…) mà không hề bị chia sẻ hay ảnh hưởng bởi các VPS khác trên cùng hệ thống. Độ bảo mật chắc chắn: Tích hợp các đặc điểm bảo mật của Linux như SELinux với các cơ chế bảo mật nhiều lớp, KVM bảo vệ các máy ảo tối đa và cách ly hoàn toàn. Tiết kiệm chi phí, độ mở rộng cao: Được phát triển trên nền tảng mã nguồn mở hoàn toàn miễn phí, được hỗ trợ từ cộng đồng và từ nhà sản xuất thiết bị, KVM ngày càng lớn mạnh và trở thành một lựa chọn hàng đầu cho doanh nghiệp với chi phí thấp, hiệu quả sử dụng cao. Hạn chế:Yêu cầu cao về server/máy chủ: Là công nghệ ảo hóa hoàn toàn phần cứng, VPS KVM yêu cầu cấu hình server vật lý khá cao. Thậm chí yêu cầu phải sử dụng các server của các thương hiệu lớn như IBM, Dell thì mới đảm bảo hoạt động tốt được. Why did you choose VEX instead of another IR (such as LLVM, REIL, BAP, etc)? We had two design goals in angr that influenced this choice:
Searching around the internet, the major choices were:
While angr uses VEX now, there's no fundamental reason that multiple IRs cannot be used. There are two parts of angr, outside of the
To support multiple IRs, we'll either want to abstract these things or translate their labels to VEX analogues. Cấu trúc file ELFChương trình thực thì trên hệ điều hành Linux nhúng chủ yếu là các file ELF (Executable and Linking Format). Mỗi file ELF gồm có phần header, các bảng chứa thông tin quản trị và các đoạn chưa dữ liệu và code của chương trình. 3 phần hcinhs của thông tin quản trị của file ELF là ELF header, section table và program table. ELF header trở đến section và program table, section table giữ thông tin về các section của file ELF trên đĩa và program table chứa thông tin về cách copy các section từ ổ đĩa vào bộ nhớ khi thực thi.Đa số các file ELF chứa đầy đủ 3 phần như hình bên, song chỉ có phần header là bắt buộc. Trong file excutable ELF, trường program table là bắt buộc, trong các file linkable thì trường section table là bắt buộc Một trong các hương đó là chuyển về mã trung gian chung Một trong các phương pháp tốt dựa trên Valgrind và angr là Vex Il trên cơ sở PyVex https://github.com/angr/pyvex Để giải quyết vấn đề đa kiến trúc, ngôn ngữ trung gian là cần thiết. Những điều khác biệt ở các kiến trúc chip khác nhau là: 1. Register names: tên và số lượng các thanh ghi của các kiến trúc chip khác nhau là khác nhau rất nhiều, tất nhiên có những nhóm phổ biến như thanh ghi chung, thành ghi stack, thanh ghi cờ điều kiện... 2. Memory access: có nhiều chế độ truy cập khách nhau như big/little-endian. 3. Memory segmentation 4. Instruction side-effects: nhiều lệnh có ảnh hưởng ngầm đến các lệnh khác. Để giải quyết bài toán khác biệt này, IR hướng tới giải pháp trừu tượng hoá và tường minh hoá các hành động và trạng thái để có thể giải quyết đa số các trường hợp. Các thành phần cơ bản của Vex:
t0 = GET:I32(16) 1 t1 = 0x8:I32 2 t3 = Sub32(t0,t1) 3 PUT(16) = t3 4 PUT(68) = 0x59FC8:I32 5 Vex có mấy loại biểu thức phổ biến: 1. hằng số như lệnh 2, đặt tên là "con" 2. đọc lấy giá trị lưu trong thanh ghi như lệnh 1, đặt tên là "get" 4. đọc giá trị từ thanh ghi tạm, ví dụ RdTmp(t10), đặt tên là "RdT" Trong 1 câu lệnh của vex có thể có thể gồm nhiều biểu thức, toán tử và toán hang. Việc trích chọn đặc trưng n-gram sẽ chọn 1 câu là 1 biểu thức đặc trưng có thứ tự ưu tiên, như vậy có 1 số biểu thức sẽ không xuất hiêện là "gram", ví dụ như: con, vì hằng số bao giờ cũng sẽ gắn vào thanh ghi nào đó nên lấy "gram" là gán thanh ghi. What is full para and hardware assisted virtualization?In Full virtualization, virtual machines permit the execution of the instructions with the running of unmodified OS in an entirely isolated way. In paravirtualization, a virtual machine does not implement full isolation of OS but rather provides a different API which is utilized when OS is subjected to alteration. 2.
What are the 3 types of virtualization?There are three main types of server virtualization: full-virtualization, para-virtualization, and OS-level virtualization.
What are the 4 general types of virtualization?It's time to get this straight.. Network virtualization. Network virtualization takes the available resources on a network and breaks the bandwidth into discrete channels. ... . Storage virtualization. ... . Desktop virtualization. ... . Application virtualization.. What is full paraParavirtualization is an enhancement of virtualization technology in which a guest OS is modified prior to installation inside a virtual machine (VM) in order to allow all guest OSes within the system to share resources and successfully collaborate, rather than attempt to emulate an entire hardware environment.
|