Nói chung, với một máy ảo, hệ điều hành khách và ứng dụng chạy trong một môi trường mà đối với chúng là phần cứng gốc và hoạt động đối với chúng như phần cứng gốc nhưng điều đó cũng bảo
Trang 1TRƯỜNG ĐẠI HỌC XÂY DỰNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
~~~~~~*~~~~~~
BÀI TẬP THẢO LUẬN MÔN NGUYÊN LÍ HỆ ĐIỀU HÀNH
Đề tài: Tìm hiểu về Máy ảo – Virtual Machine
Giảng viên hướng dẫn: Cô Vương Thị Dung
Nhóm sinh viên thảo luận:
Trang 2MỤC LỤC 2
Lời Nói Đầu 3
1 Tổng quan 4
2 Lịch sử 5
3 Lợi ích và tính năng 6
3.1 Lợi ích và nhược điểm 6
3.2 Tính năng 7
4 Xây dựng khối 7
4.1 Bẫy và mô phỏng 8
4.2 Bản dịch nhị phân 8
4.3 Hỗ trợ phần cứng 9
5 Các loại máy ảo và cách triển khai của chúng 10
5.1 Vòng đời máy ảo 10
5.2 Siêu giám sát kiểu 0 – Type 0 Hypervisor 10
5.3 Siêu giám sát kiểu 1- Type 1 Hypervisor 11
5.4 Siêu giám sát loại 2 – Type 2 Hypervisor 11
5.5 Paravirtualization 11
5.6 Ảo hóa môi trường lập trình 12
5.7 Thi đua - Emulation 13
5.8 Lưu trữ ứng dụng 13
6 Ảo hóa và các thành phần hệ thống 13
6.1 Lập lịch CPU 13
6.2 Quản lý bộ nhớ 14
6.3 I/O 14
6.4 Quản lý lưu trữ 15
6.5 Di chuyển trực tiếp 16
7 Ví dụ về máy ảo 17
7.1 VMware 17
7.2 Máy ảo Java 18
Kết Luận 20
Trang 3Lời Nói Đầu
Thuật ngữ ảo hóa – Virtualization có nhiều nghĩa, và các khía cạnh của ảo hóa bao trùm tất cả các khía cạnh của máy tính Máy ảo – Virtual Machine là một ví dụ của xu hướng này Nói chung, với một máy ảo, hệ điều hành khách và ứng dụng chạy trong một môi trường mà đối với chúng là phần cứng gốc và hoạt động đối với chúng như phần cứng gốc nhưng điều đó cũng bảo vệ, quản lý và hạn chế chúng
Đề tài máy ảo hôm nay đi sâu vào việc sử dụng, tính năng và triển khai của ảo máy móc Máy ảo có thể được triển khai theo một số cách và điều này chương mô tả các tùy chọn này Một tùy chọn là thêm hỗ trợ máy ảo vào hạt nhân Bởi vì phương pháp thực hiện đó
là phù hợp nhất với cuốn sách này, chúng tôi khám phá nó một cách đầy đủ nhất Ngoài
ra, các tính năng phần cứng được cung cấp bởi CPU và thậm chí bởi các thiết bị I/ O có thể hỗ trợ triển khai máy ảo, vì vậy chúng ta sẽ thảo luận về cách các tính năng đó được
sử dụng bởi các mô-đun hạt nhân thích hợp
Trang 41 Tổng quan
Ý tưởng cơ bản đằng sau một máy ảo là trừu tượng hóa phần cứng của một máy tính (CPU, bộ nhớ, ổ đĩa, thẻ giao diện mạng, và v.v.) vào một số môi trường thực thi khác nhau, do đó tạo ảo tưởng rằng mỗi môi trường riêng biệt đang chạy riêng máy tính Trongtrường hợp ảo hóa, có một lớp tạo ra một hệ thống ảo trên đó hoạt động hệ thống hoặc ứng dụng có thể chạy
Việc triển khai máy ảo liên quan đến một số thành phần Tại cơ sở là máy chủ lưu trữ,
hệ thống phần cứng cơ bản chạy các máy ảo Trình quản lý máy ảo – Virtual Machine Manager (VMM) (còn được gọi là siêu giám sát) tạo và chạy các máy ảo bằng cách cung cấp một giao diện giống hệt với máy chủ (ngoại trừ trường hợp paravirtualization, sẽ nói
ở phần sau) Mỗi quy trình của khách được cung cấp một bản sao ảo của máy chủ lưu trữ (Hình 16.1) Thông thường, khách quy trình trên thực tế là một hệ điều hành Do đó, một máy vật lý duy nhất có thể chạy nhiều hệ điều hành đồng thời, mỗi hệ điều hành trong máy ảo của riêng nó
Việc triển khai VMMs rất khác nhau, tuy nhiên bao gồm:
Các giải pháp dựa trên phần cứng cung caaos hỗ trợ cho việc tạo máy ảo và quản lý thông qua phần sụn Các VMM này thường tìm thấy trong máy chủ lớn
và máy chủ cỡ vừa – siêu giám sát loại 0
Phần mềm giống HĐH được xây dựng để cung cấp ảo hóa, bao gồm VMware ESX, Joyent SmartOS và Citrix XenServer - siêu giám sát loại 1
Trang 5a) Máy không ảo b) Máy ảo
Hệ điều hành có mục đích chung cung cấp các chức năng tiêu chuẩn như cũng như các chức năng VMM, bao gồm Microsoft Windows Server với HyperV và RedHat Linux với tính năng KVM Bởi vì các hệ thống như vậy có bộ tính năng tương tự như siêu giám sát loại 1, chúng còn được gọi là loại 1
Các ứng dụng chạy trên hệ điều hành tiêu chuẩn nhưng cung cấp VMM các tính năng của hệ điều hành khách Các ứng dụng này, bao gồm VMware Workstation và Fusion, Parallels Desktop và Oracle Virtual- Hộp, là loại 2 siêu giám sát
Paravirtualization, một kỹ thuật trong đó hệ điều hành khách được sửa đổi để hợp tác với VMM nhằm tối ưu hóa hiệu suất
Ảo hóa môi trường lập trình – Programming environment virtual, trong đó các VMM không thay đổi phần cứng thực nhưng thay vào đó tạo ra một hệ thống
ảo được tối ưu hóa
Trình giả lập – Emulators cho phép các ứng dụng được viết cho một môi trường phần cứng để chạy trên một môi trường phần cứng rất khác, chẳng hạn như một loại khác của CPU
Ngăn chặn ứng dụng – Application containment, không phải là ảo hóa mà là cung cấp các tính năng giống như ảo hóa bằng cách tách các ứng dụng khỏi hệ điều hành
Trang 62 Lịch sử
Máy ảo xuất hiện thương mại lần đầu tiên trên máy tính lớn của IBM vào năm 1972
Ảo hóa được cung cấp bởi hệ điều hành IBM VM Hệ thống này có phát triển và vẫn có sẵn Ngoài ra, nhiều khái niệm ban đầu của nó là được tìm thấy trong các hệ thống khác, làm cho nó đáng để khám phá IBM VM370 chia một máy tính lớn thành nhiều máy ảo, mỗi máy chạy hệ điều hành riêng Một khó khăn lớn với cách tiếp cận VM hệ thống đĩa liên quan Giả sử rằng máy vật lý có ba ổ đĩa nhưng muốn hỗ trợ bảy máy ảo Rõ ràng, nókhông thể phân bổ một ổ đĩa cho mỗi máy ảo Giải pháp là cung cấp đĩa ảo - gọi là đĩa nhỏ trong hệ điều hành máy ảo của IBM Các đĩa mini giống hệt nhau vào đĩa cứng của
hệ thống ở mọi khía cạnh ngoại trừ kích thước Hệ thống được triển khai mỗi đĩa nhỏ bằng cách phân bổ nhiều bản nhạc trên các đĩa vật lý như đĩa nhỏ cần thiết
Sau khi các máy ảo được tạo, người dùng có thể chạy bất kỳ hệ điều hành hoặc gói phần mềm có sẵn trên cỗ máy Đối với hệ thống IBM VM, một người dùng thường chạy CMS - một người dùng duy nhất hệ điều hành tương tác
Trong nhiều năm sau khi IBM giới thiệu công nghệ này, ảo hóa vẫn ở trong miền của
nó Hầu hết các hệ thống không thể hỗ trợ ảo hóa Tuy nhiên, một định nghĩa chính thức
về ảo hóa đã giúp thiết lập hệ thống yêu cầu và mục tiêu cho chức năng
Các yêu cầu ảo hóa nói rằng:
1) VMM cung cấp môi trường cho các chương trình về cơ bản giống hệt nhau vớimáy ban đầu
2) Các chương trình chạy trong môi trường đó chỉ hiển thị những phần nhỏ mancegiảm
3) VMM hoàn toàn kiểm soát tài nguyên hệ thống Những yêu cầu về độ trung thực, hiệu suất và an toàn này vẫn hướng dẫn virtualiza- tion nỗ lực ngày hôm nay
Vào cuối những năm 1990, CPU Intel 80x86 đã trở nên phổ biến, nhanh chóng và phong phú trong các tính năng Theo đó, các nhà phát triển đã đưa ra nhiều nỗ lực để
Trang 7triển khai ảo hóa trên nền tảng đó Cả Xen và VMware đều tạo ra các công nghệ, vẫn được sử dụng cho đến ngày nay, để cho phép các hệ điều hành khách chạy trên 80x86 Từthời gian đó, ảo hóa đã mở rộng để bao gồm tất cả các CPU thông thường, nhiều các công
cụ thương mại và mã nguồn mở, và nhiều hệ điều hành Ví dụ, dự án VirtualBox mã nguồn mở (http://www.virtualbox.org) cung cấp một chương trình hơn là chạy trên CPU Intel x86 và AMD64 và trên Windows, Linux, Hệ điều hành máy chủ Mac OS X và Solaris Hệ điều hành khách có thể có bao gồm nhiều phiên bản Windows, Linux, Solaris
và BSD, kể cả MS-DOS và IBM OS / 2
3 Lợi ích và tính năng
3.1 Lợi ích và nhược điểm
Một lợi thế quan trọng của ảo hóa là hệ thống máy chủ lưu trữ là được bảo vệ khỏicác máy ảo, giống như các máy ảo được bảo vệ từ nhau Vi rút bên trong hệ điều hànhkhách có thể làm hỏng hệ điều hành nhưng không có khả năng ảnh hưởng đến máy chủ lưu trữ hoặc các khách khác Tại vì mỗi máy ảo gần như bị cô lập hoàn toàn với tất cả các máy ảo khác máy móc, hầu như không có vấn đề về bảo vệ
Một nhược điểm tiềm ẩn của việc độc lập là nó có thể ngăn cản việc chia sẻ tài nguyên Có hai cách tiếp cận để cung cấp chia sẻ đã được thực thi Thứ nhất, có thể chia sẻ một ổ đĩa hệ thống tệp và do đó để chia sẻ tệp Thứ hai, có thể xác định một mạng lưới các máy ảo, mỗi máy có thể gửi thông tin qua mạng truyền thông ảo
Trang 8Hơn nữa, hệ điều hành chạy trên và kiểm soát toàn bộ máy, nghĩa là hệ thống phải được dừng và không sử dụng trong khi thay đổi được thực hiện và thử nghiệm Giai đoạn này thường được gọi là phát triển hệ thống thời gian.
Một lợi thế khác của máy ảo dành cho các nhà phát triển là nhiều hệ điều hành có thể chạy đồng thời trên máy trạm của nhà phát triển Đây máy trạm ảo hóa cho phép chuyển và kiểm tra nhanh các chương trình trong môi trường khác nhau Ngoài ra, nhiều phiên bản của một chương trình có thể chạy, mỗi trong một hệ điều hành biệt lập của riêng nó, trong một hệ thống
Ảo hóa có thể cải thiện không chỉ việc sử dụng tài nguyên mà còn cả tài nguyên ban quản lý Đồng thời, ảo hóa đã đặt nền tảng cho nhiều tiến bộ khác trong máy tính thực hiện, quản lý và giám sát cơ sở
4 Xây dựng khối
Mặc dù khái niệm máy ảo rất hữu ích nhưng nó rất khó thực hiện Cần phải làm nhiều việc để cung cấp một bản sao chính xác của phần bên dưới cỗ máy Đây đặc biệt là một thách thức đối với các hệ thống chế độ kép, nơi máy bên dưới chỉ có chế
Trang 9độ hạt nhân trên máy thực (chẳng hạn như hệ thống cuộc gọi, ngắt hoặc cố gắng thực hiện một lệnh đặc quyền) cũng phải chuyển từ chế độ người dùng ảo sang chế độ hạt nhân ảo trong ảo cỗ máy.
Cách chuyển giao:
Khi hạt nhân trong máy khách cố gắng thực thi một lệnh đặc quyền,
là một lỗi (do hệ thống đang ở chế độ người dùng) và gây ra một cái bẫy đối với VMM trong máy thực VMM giành quyền kiểm soát và thực thi (hoặc "mô phỏng") hành động đã được thực hiện bởi hạt nhân khách trên một phần của khách Sau đó nó trả lại quyền điều khiển cho máy ảo Đây được gọi là bẫy và mô phỏng và được thể hiện trong Hình 16.2
16.2 Triển khai ảo hóa bẫy và mô phỏng
4.2 Bản dịch nhị phân
Một số CPU không có sự phân biệt rõ ràng giữa đặc quyền và không đặc quyền hướng dẫn Thật không may cho những người triển khai ảo hóa, CPU Intel x86 dòng là một trong số họ Không có suy nghĩ nào được đưa ra để chạy ảo hóa trên x86 khi nó được thiết kế Gần đây nhất là 1998, / Judi 1998 dường như gần đây không sử dụng phương pháp bẫy và mô phỏng để thực hiện ảo hóa trên x86 được coi là không thể vì những hướng dẫn đặc biệt này
Trang 10Vấn đề không thể vượt qua trước đây này đã được giải quyết với việc triển khai kỹ thuật dịch nhị phân Bản dịch nhị phân khá đơn giản về khái niệm nhưng phức tạp trong cách thực hiện Các bước cơ bản như sau:
1) Nếu VCPU khách đang ở chế độ người dùng, khách có thể chạy các hướng dẫn của nó nguyên bản trên một CPU vật lý
2) Nếu VCPU của khách đang ở chế độ hạt nhân, thì khách tin rằng nó đang đang chạy ở chế độ hạt nhân VMM kiểm tra mọi hướng dẫn của khách thực thi ở chế độ hạt nhân ảo bằng cách đọc một số hướngdẫn tiếp theo khách sẽ thực hiện, dựa trên bộ đếm chương trình của khách Các hướng dẫn khác với các hướng dẫn đặc biệt được chạy nguyên bản Đặc biệt hướng dẫn được dịch thành một bộ hướng dẫn mới thực hiện nhiệm vụ tương đương
16.3 Thực hiện ảo hóa bản dịch nhị phân
4.3 Hỗ trợ phần cứng
Nếu không có một số mức hỗ trợ phần cứng, ảo hóa sẽ không thể thực hiện được Hệ thống càng hỗ trợ nhiều phần cứng thì tính năng càng phong phú và ổn định các máy ảo có thể được và chúng có thể hoạt động tốt hơn Bây giờ dịch nhị phân sẽ không còn cần thiết
Trang 11Hệ thống càng hỗ trợ nhiều phần cứng thì tính năng càng phong phú và ổn định các máy ảo có thể được và chúng có thể hoạt động tốt hơn.
5 Các loại máy ảo và cách triển khai của chúng
5.1 Vòng đời máy ảo
Khi máy ảo được tạo ra người ta cấp phát cho nó các thông số bao gồm: số lượng CPU, số lượng chi tiết bộ nhớ, mạng và dữ liệu mà máy ảo sẽ xem xét khi tạo thành
Khi không còn cần thiết, máy ảo bị xóa Khi điều này xảy ra, VMM đầu tiên giải phóng mọi dung lượng ổ đĩa đã sử dụng và sau đó loại bỏ cấu hình được liên kết với máy ảo, về cơ bản quên máy ảo
Máy ảo dễ dàng được tạo ra => dễ dàng lan rộng => khi có quá nhiều máy
ảo trên một hệ thống sử dụng chúng, lịch sử và trạng thái trở nên khó hiểu và khó theo dõi
5.2 Siêu giám sát kiểu 0 – Type 0 Hypervisor
Tên gọi: phân vùng và miền
Là tính năng phần cứng VMM được mã hóa trong phần sụn và được tải vào lúc khởi động Nó tải các hình ảnh khách để chạy trong mỗi vách ngăn
Trong phân vùng điều khiển, hệ điều hành khách cung cấp các dịch vụ (nhưmạng) thông qua daemon đến các khách khác và các đường dẫn siêu giám sát I/O yêu cầu một cách thích hợp
Ảo hóa kiểu 0 rất gần với việc thực thi phần cứng thô, nên nó được xem xéttách biệt với các phương pháp khác được thảo luận ở đây Một hypervisor loại 0
có thể chạy nhiều hệ điều hành khách (mỗi hệ điều hành phân vùng phần cứng) Tất cả những khách đó, bởi vì họ đang chạy trên nguyên phần cứng, lần lượt có
Trang 12thể là VMM Về cơ bản, các hệ điều hành khách trong một hypervisor loại 0 là các hệ điều hành gốc với một tập hợp con phần cứng cung cấp cho họ Do đó, mỗi
hệ điều hành có thể có hệ điều hành khách riêng (Hình 16.5) Các loại giám sát viên khác thường không thể cung cấp điều này chức năng ảo hóa trong phạm vi
ảo hóa
5.3 Siêu giám sát kiểu 1- Type 1 Hypervisor
Thường được tìm thấy trong các trung tâm dữ liệu của công ty và ở cảm giác trở thành “hệ điều hành trung tâm dữ liệu”
Mục dích: HĐH chạy nguyên bản trên phần cứng, nhưng thay vì cung cấp lệnh gọi hệ thống và các giao diện khác để chạy chương trình, chúng tạo, chạy và quản lý hệ điều hành khách Ngoài việc chạy trên phần cứng tiêu chuẩn, chúng cóthể chạy trên siêu giám sát loại 0, nhưng không chạy trên siêu giám sát loại 1 khác
Các bộ giám sát loại 1 chạy ở chế độ hạt nhân, tận dụng khả năng bảo vệ phần cứng Khi CPU chủ cho phép, chúng sử dụng nhiều chế độ để cung cấp cho
hệ điều hành khách quyền kiểm soát riêng và cải thiện hiệu suất
Bằng cách sử dụng siêu giám sát loại 1, người quản lý trung tâm dữ liệu có thể kiểm soát và quản lý hệ điều hành và ứng dụng theo những cách mới và tinh
vi Một lợi ích quan trọng là khả năng hợp nhất nhiều hệ điều hành hơn và ứng dụng vào ít hệ thống hơn
5.4 Siêu giám sát loại 2 – Type 2 Hypervisor
Trang 13Có rất ít sự tham gia của hệ điều hành vào các trình quản lý máy ảo cấp ứngdụng này.
Loại VMM này chỉ đơn giản là một quy trình khác được chạy và quản lý bởi máy chủ lưu trữ và thậm chí máy chủ lưu trữ không biết quá trình ảo hóa đangdiễn ra trong VMM
Những hạn chế của người giám sát loại 2 cũng mang lại một số lợi ích Chúng chạy trên nhiều hệ điều hành có mục đích chung khác nhau và việc chạy chúng không yêu cầu thay đổi hệ điều hành chủ Ví dụ, một sinh viên có thể sử dụng một siêu giám sát loại 2 để kiểm tra một hệ điều hành không phải là bản địa
mà không cần thay thế hệ điều hành gốc
5.5 Paravirtualization
Paravirtualization có cách sử lý khác với các loại ảo hóa khác Thay vì cố gắng đánh lừa hệ điều hành của khách tin rằng hệ điều hành của khách có một hệ thống riêng, ảo hóa cung cấp cho khách một hệ thống tương tự nhưng không giống với hệ thống ưa thích của khách Khách phải được sửa đổi để chạy trên phần cứng ảo được paravirtualized Lợi ích của công việc bổ sung này là sử dụng tài nguyên hiệu quả hơn và một lớp ảo hóa nhỏ hơn
Đối với mỗi thiết bị được sử dụng bởi mỗi khách, có một bộ đệm tròn được chia sẻ bởi khách và VMM thông qua bộ nhớ dùng chung Dữ liệu đọc và ghi được đặt trong bộ đệm này
Trang 14Để quản lý bộ nhớ, Xen không triển khai các bảng trang lồng nhau Thay vào đó, mỗi khách có bộ bảng trang riêng, được đặt ở chế độ chỉ đọc Xen yêu cầukhách sử dụng một cơ chế cụ thể, một siêu cuộc gọi từ khách đến hypervisor VMM, khi cần thay đổi bảng trang.
Xen cho phép ảo hóa CPU x86 mà không cần sử dụng dịch nhị phân, thay vào đó yêu cầu sửa đổi trong hệ điều hành khách như mô tả ở trên Theo thời gian, Xen đã tận dụng các tính năng phần cứng hỗ trợ ảo hóa Do đó, nó không còn yêu cầu khách đã sửa đổi và về cơ bản không cần phương pháp
paravirtualization Tuy nhiên, Paravirtualization vẫn được sử dụng trong các giải pháp khác, chẳng hạn như siêu giám sát loại 0
5.6 Ảo hóa môi trường lập trình
Một loại ảo hóa khác, dựa trên một mô hình thực thi khác, là ảo hóa các môi trường lập trình Ở đây, một ngôn ngữ lập trình được thiết kế để chạy trong một môi trường ảo hóa được xây dựng tùy chỉnh Nếu chúng ta định nghĩa ảo hóa
là chỉ bao gồm phần cứng trùng lặp, thì đây không thực sự là ảo hóa Nhưng chúng ta không cần giới hạn bản thân trong định nghĩa đó Thay vào đó, chúng ta
có thể xác định một môi trường ảo, dựa trên các API, cung cấp một tập hợp các tính năng mà chúng ta muốn có sẵn cho một ngôn ngữ cụ thể và các chương trình được viết bằng ngôn ngữ đó