1. Trang chủ
  2. » Giáo án - Bài giảng

Tiểu luận về XEN Nghệ thuật ảo hóa

31 569 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 448 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tiểu luận về XEN Nghệ thuật ảo hóa. So sánh với các công nghệ ảo hóa khác

Trang 1

MỤC LỤC

2.1.1 Quản lý bộ nhớ 6

2.1.2 CPU 7

2.1.3 Thiết bị I/O 9

3.1 TRUYỀN ĐIỀU KHIỂN: HYPERCALL VÀ SỰ KIỆN 12

3.3.1 Điều phối CPU 14

3.3.2 Time và timers 14

3.3.3 Phiên dịch địa chỉ ảo 15

3.3.4 Bộ nhớ vật lý 16

3.3.5 Mạng 17

3.3.6 Đĩa 17

3.4 XÂY DỰNG 1 DOMAIN MỚI 18

4.1 HIỆU SUẤT TƯƠNG ĐỐI 20

4.2 ĐIỂM CHUẨN HỆ ĐIỀU HÀNH 22

4.2.1 Hiệu suất mạng 23

4.3 MÁY ẢO CHẠY ĐỒNG THỜI 23

4.4 KHẢ NĂNG MỞ RỘNG 25

5.1 TƯƠNG LAI 28

5.2 KẾT LUẬN 28

Trang 2

TÓM TẮT

Nhiều hệ thống được thiết kế sử dụng ảo hóa để chia 1 máy tính mạnh thành nhiều máy nhỏ Một số thì yêu cầu phần cứng chuyên dụng, hoặc không thể hỗ trợ hệ điều hành tiện nghi Một số khác thì chấp nhận hi sinh tính bảo mật hoặc tốc độ Một số ít bị cô lập tài nguyên Hầu hết chỉ đáp ứng tạm thời, có nguy cơ từ chối dịch vụ

Bài báo này trình bày Xen, một phần mềm cho phép nhiều hệ điều hành chia sẻ phần cứng và quản lý tài nguyên một cách an toàn, nhưng không bị giảm hiệu suất hoặc chức năng Điều này có thể thực hiện bằng cách cung cấp một máy ảo

lý tưởng mà các hệ điều hành như Linux, BSD và Windows XP, có thể được

“định cư” dễ dàng

Mục tiêu thiết kế của chúng tôi là lưu trữ lên đến 100 máy ảo chạy đồng thời trên một máy chủ hiện đại Cách ảo hóa của Xen là cực kỳ hiệu quả: cho phép các hệ điều hành như Linux và Windows được host đồng thời với tổng hiệu suất tăng không đáng kể - chỉ khoảng vài phần trăm so với trường hợp không ảo hóa Có thể cạnh tranh được với các sản phẩm thương mại

Trang 3

PHẦN 1: GIỚI THIỆU

Máy tính hiện đại đủ mạnh để chứa nhiều máy ảo nhỏ, mỗi máy ảo chạy 1 hệ điều hành riêng biệt Trong bài báo này chúng tôi trình bày Xen, một phần mềm quản lý máy ảo hiệu quả cao: quản lý nguồn tài nguyên, hosting đồng thời nhiều máy, phân tán dịch vụ web, bảo mật và tính di động ứng dụng (mobility)

Việc phân vùng một máy tính để hỗ trợ việc hosting đồng thời nhiều hệ điều hành đặt ra một số thách thức Thứ nhất, các máy ảo phải được cô lập với nhau: việc thực thi của máy này không ảnh hưởng xấu đến máy khác Thứ hai, hỗ trợ các hệ điều hành khác nhau thích ứng với các ứng dụng phổ biến Thứ ba, performance tăng không đáng kể

Xen có thể host các hệ điều hành khác nhau, mặc dù có một số phải sửa đổi mã nguồn Xen cho phép người dùng khởi tạo nhanh chóng một hệ điều hành để thực hiện bất cứ điều gì họ mong muốn

Có nhiều cách xây dựng một hệ thống để host nhiều ứng dụng và máy chủ trên một máy tính chia sẻ Có lẽ là đơn giản nhất là triển khai một hoặc nhiều máy chạy hệ điều hành chuẩn như Linux hoặc Windows, và cho phép người dùng cài đặt chương trình và xử lý các tập tin Kinh nghiệm cho thấy quản trị hệ thống có thể trở thành một công việc tốn nhiều thời gian do sự tương tác phức tạp giữa các ứng dụng phân chung

Quan trọng hơn, hệ thống như vậy này không hỗ trợ đầy đủ việc cô lập performance: độ ưu tiên thực thi, nhu cầu bộ nhớ, lưu lượng mạng và truy cập ổ cứng của một tiến trình sẽ tác động đến performance của máy khác Điều này có thể chấp nhận được khi có trích lập dự phòng đầy đủ và một nhóm sử dụng khép kín (như trong trường hợp của tính toán lưới), nhưng vẫn không được nếu tài nguyên đăng ký vượt mức hoặc người sử dụng không hợp tác

Một cách để giải quyết vấn đề này là trang bị thêm phần cứng để tăng performance của hệ điều hành Khó khăn của hướng này là đảm bảo rằng tất cả các tài nguyên được tính toán vừa đủ, ví dụ, các tương tác phức tạp giữa các ứng dụng là do bộ đệm hoặc thuật toán thay thế trang (page replacement algortithms) Chúng tôi sử dụng cách tiếp cận tương để xây dựng Xen, ghép nhiều nguồn tài nguyên vật lý thành một khối và có thể cô lập performance giữa chúng Có một giá phải trả cho sự linh hoạt này - chạy một hệ điều hành đầy đủ thì nặng hơn chạy một chương trình, kể cả về mặt khởi động hoặc tiêu thụ tài nguyên

Trang 4

Mục tiêu là host lên đến 100 hệ điều hành, điều này sẽ rất đáng giá Nó rất linh hoạt, người sử dụng có thể linh động tạo ra môi trường thực thi chính xác cho các phần mềm Tránh được sự tương tác cấu hình giữa các dịch vụ và ứng dụng khác nhau.

Phần còn lại của bài báo này được cấu trúc như sau: tại mục 2, chúng tôi giải thích cách tiếp cận của chúng tôi đối với ảo hóa và đề ra phương cách Xen hoạt động Phần 3 mô tả các khía cạnh quan trọng trong thiết kế và thực thi của chúng tôi Phần 4 sử dụng các tiêu chuẩn để đánh giá hiệu suất của XenoLinux chạy trên Xen so với Linux độc lập, VMware Workstation và User-mode Linux (UML) Phần 5 đánh giá công việc liên quan, và cuối cùng Phần 6 thảo luận về công việc tương lai và kết luận

Trang 5

PHẦN 2: XEN – TIẾP CẬN VÀ TỔNG QUAN

Trong một VMM truyền thống, phần cứng ảo có chức năng giống với máy tính bình thường Mặc dù ảo hóa toàn diện (full virtualization) rất hữu dụng khi cho phép hệ điều hành được host, nó cũng có một số nhược điểm Điều này đặc biệt

Một số phần mềm cần phải được xử lý bởi VMM để ảo hóa đúng, nhưng thực hiện những việc này với đủ đặc quyền có thể gây ra một số lỗi Hiệu quả ảo hóa các MMU x86 cũng là khó khăn Những vấn đề này có thể được giải quyết, nhưng lại tăng độ phức tạp và giảm hiệu suất ESX Server của VMware tự động ghi nhận mã máy host để can thiệp khi VMM yêu cầu Việc này được áp dụng cho toàn bộ OS kernel vì tất cả các lỗi cần phải và xử lý ESX Server thực thi các phiên bản của cấu trúc hệ thống như bảng trang (page table) và duy trì tính nhất quán với các trang ảo (virtual page) bằng cách giữ các bản cập nhật - phương pháp này có chi phí như tạo ra một chương trình ứng dụng mới

Do tính phức tạp của x86, nên có những tranh luận khác chống lại ảo hóa toàn diện Đặc biệt, có những tình huống mà người ta mong muốn thấy được tài nguyên thực và ảo của các hệ điều hành được host: cung cấp cả thời gian thực và

ảo cho phép một hệ điều hành hỗ trợ tốt hơn các nhiệm vụ về xử lý thời gian, để

xử lý một cách chính xác thời gian chờ TCP và ước lượng RTT, trong khi địa chỉ máy tính thực cho phép một hệ điều hành cải thiện hiệu suất bằng cách sử dụng superpages hoặc trang màu (page coloring)

Chúng tôi tránh những hạn chế của ảo hóa toàn diện bằng cách trình bày một máy

ảo tương tự nhưng không giống với máy thật - một cách tiếp cận, có tên gọi ảo hóa song song (paravirtualization) Điều này hứa hẹn sẽ cải thiện hiệu suất, mà không cần thay đổi hệ điều hành Điều quan trọng cần lưu ý, chúng tôi không yêu cầu thay đổi giao diện ứng dụng (ABI), và do đó không thay đổi được yêu cầu cho các ứng dụng khách

Chúng tôi chắt lọc các cuộc thảo luận cho đến nay vào một tập hợp các nguyên tắc thiết kế:

1 Hỗ trợ cho các ứng dụng nhị phân nguyên bản, hoặc người sử dụng sẽ không chuyển đổi sang Xen Do đó chúng ta phải ảo hóa tất cả các đặc trưng kiến trúc theo yêu cầu tiêu chuẩn hiện hành của ABI

Trang 6

2 Hỗ trợ đầy đủ hệ điều hành đa ứng dụng, vì điều này cho phép cấu hình máy chủ phức tạp để được ảo hóa trong một trường hợp duy nhất hệ điều hành khách.

3 Ảo hóa song song là cần thiết để có được hiệu suất cao và sự cô lập tài nguyên mạnh mẽ trên kiến trúc máy tính như x86

4 Ngay cả trên kiến trúc máy tính cộng tác, việc che dấu hoàn toàn sự ảnh hưởng của ảo hóa tài nguyên từ hệ điều hành khách sẽ làm giảm tính chính xác và hiệu suất

Lưu ý rằng ảo hóa song song x86 của chúng tôi là hoàn toàn khác với các dự án Denali gần đây đề xuất Denali được thiết kế để hỗ trợ hàng ngàn máy ảo đang chạy các dịch vụ mạng, phần lớn trong số đó là quy mô nhỏ và không phổ biến Ngược lại, Xen được thiết kế để mở rộng quy mô cho khoảng 100 máy ảo đang chạy các ứng dụng và dịch vụ tiêu chuẩn công nghiệp

Thứ nhất, Denali không nhắm đến mục tiêu ABI hiện có, và vì vậy có thể che đi đặc trưng kiến trúc từ giao diện máy ảo của họ Ví dụ, Denali không hỗ trợ đầy

đủ các phân khúc x86 mặc dù nó được sử dụng rộng rãi trong ABIs của NetBSD, Linux, và Windows XP

Thứ hai, việc thực thi của Denali không giải quyết được vấn đề hỗ trợ ghép kênh ứng dụng, cũng như nhiều không gian địa chỉ, trong một hệ điều hành khách duy nhất Thay vào đó, các ứng dụng được liên kết một cách rõ ràng đối với một thực thể của hệ điều hành khách Ilwaco Do đó, thực chất của mỗi máy ảo là single-user, single-application Trong Xen thì ngược lại, một máy ảo duy nhất host một

hệ điều hành thực mà có thể tự mình ghép hàng ngàn các chương trình một cách

an toàn

Thứ ba, trong kiến trúc Denali, VMM thực hiện tất cả các phân trang đến và đi từ

ổ đĩa Điều này có lẽ liên quan đến việc thiếu hỗ trợ quản lý bộ nhớ tại tầng ảo hóa Phân trang trong VMM là ngược lại với mục tiêu của chúng tôi trong việc cô lập thực thi Trong Xen chúng tôi hy vọng mỗi hệ điều hành khách thực hiện phân trang của riêng mình, đảm bảo phân bố bộ nhớ và đĩa

Cuối cùng, Denali ảo hóa “không gian tên” của tất cả tài nguyên máy Ngược lại, chúng tôi tin rằng kiểm soát an toàn truy cập trong các phần mềm máy ảo là đủ

để đảm bảo

Trong phần sau đây, chúng tôi mô tả các máy ảo tạo bởi Xen và thảo luận về cách một hệ điều hành khách được sửa đổi để phù hợp Lưu ý rằng trong bài báo này,

Trang 7

chúng tôi dành riêng thuật ngữ hệ điều hành khách (guest operating system) để nói đến một hệ điều hành mà Xen có thể host và chúng tôi sử dụng thuật ngữ domain để chỉ một máy ảo có hệ điều hành đang chạy, sự khác biệt tương tự như giữa 1 chương trình (program) và một tiến trình (process) trong một hệ thống thông thường Chúng tôi gọi Xen là hypervisor.

2.1 GIAO DIỆN MÁY ẢO:

Quản lý bộ nhớ

Ngắc phần cứng được thay thế bằng một hệ thống sự kiện bình thường

Mỗi hệ điều hành khách có một giao diện hẹn giờ và nhận biết cả thời gian “thực” và “ảo”

Thiết bị I/O

Mạng, đĩa, Thiết bị ảo truy nhập rất đơn giản Dữ liệu được chuyển thông qua vòng không đồng bộ I/O Một cơ chế sự kiện

thay thế ngắt phần cứng bằng các thông báo

Bảng 1: Giao diện ảo hóa song song x86.

Bảng 1 trình bày tổng quan về giao diện ảo hóa song song x86, một nhân tố trong

ba khía cạnh mở rộng của hệ thống: quản lý bộ nhớ, CPU, và thiết bị I/O Trong phần tiếp theo chúng tôi lần lượt đề cập đến máy tính phụ, và trình bày kiến trúc

ảo hóa song song Lưu ý rằng một số phần như quản lý bộ nhớ, CPU và các thiết

bị I/O (cụ thể đối với x86) có thể dễ dàng áp dụng cho kiến trúc máy tính khác Hơn nữa, x86 có thể đại diện cho một trường hợp xấu nhất

2.1.1 Quản lý bộ nhớ

Ảo hóa bộ nhớ chắc chắn là phần khó khăn nhất trong kiến trúc ảo hóa song song Nhiệm vụ này sẽ dễ dàng hơn nếu kiến trúc cung cấp một phần mềm quản

lý TLB TLB là một tính năng hữu ích được hỗ trợ bởi hầu hết các máy chủ có

Trang 8

kiến trúc RISC, bao gồm cả Alpha, MIPS và SPARC Kết hợp một thẻ nhận dạng không gian địa chỉ với mỗi TLB cho phép hypervisor và mỗi hệ điều hành khách cùng tồn tại một cách hiệu quả trong không gian địa chỉ riêng biệt mà không cần giải phóng TLB.

Translation lookaside buffer (TLB) là một cache mà phần cứng quản lý bộ nhớ sử dụng để tăng tốc độ phiên dịch địa chỉ ảo

Tuy nhiên, x86 lại không có phần mềm quản lý TLB; Thay vào đó là được phục

vụ tự động bởi bộ xử lý bằng cách duyệt cấu trúc trong bảng trang phần cứng Vì vậy, để đạt được hiệu quả tốt nhất có thể, tất cả các bản dịch trang trong không gian địa chỉ hiện tại đều hiện diện trong bảng trang phần cứng Hơn nữa, vì TLB không được gắn nhãn, không gian địa chỉ thường yêu cầu giải phóng TLB Với những hạn chế như trên, chúng tôi đưa ra hai quyết định: (i) hệ điều hành khách chịu trách nhiệm bố trí và quản lý các bảng trang phần cứng, với sự tham gia tối thiểu từ Xen để đảm bảo an toàn và cách ly, và (ii) Xen nằm trong 64MB tại đầu mỗi không gian địa chỉ, do đó tránh phải giải phóng TLB khi vào và ra hypervisor

Mỗi lần một hệ điều hành khách yêu cầu một bảng trang mới, một tiến trình mới được tạo ra, nên nó cấp phát và khởi tạo một trang từ bộ nhớ riêng của mình và đăng ký với Xen Tại thời điểm này hệ điều hành không được phép ghi trực tiếp vào bộ nhớ bảng trang: tất cả các bản cập nhật tiếp theo phải được xác nhận bởi Xen Điều này hạn chế cập nhật theo một số cách, bao gồm chỉ cho phép một hệ điều hành kết nối đến các trang mà nó sở hữu, và không cho phép ghi ánh xạ các bảng trang Hệ điều hành khách có thể cập nhật hàng loạt các yêu cầu để tiết kiệm tài nguyên cho hypervisor Khu vực đầu 64MB của mỗi không gian địa chỉ, phần dành cho Xen, hệ điều hành khách không truy cập hoặc ánh xạ lại được Vùng địa chỉ này không được sử dụng bởi bất kỳ Abis x86 nào, tuy vậy, hạn chế này không ảnh hưởng khả năng tương thích ứng dụng

Phân đoạn (segmentation) được ảo hóa theo cách tương tự, bằng cách xác nhận cập nhật đến bảng mô tả phân đoạn phần cứng Các hạn chế trên mô tả phân đoạn x86 là: (i) phải có đặc quyền thấp hơn Xen, và (ii) không cho phép bất kỳ truy cập đến phần dành riêng không gian địa chỉ của Xen

2.1.2 CPU

Ảo hóa CPU có một số tác động đối với hệ điều hành khách Về nguyên tắc, khi hypervisor được cài vào 1 hệ điều hành là vi phạm giả định thông thường: hệ

Trang 9

điều hành là thực thể có đặc quyền cao nhất trong hệ thống Để bảo vệ các hypervisor tránh tác động của hệ điều hành (và từ các domain khác tới), hệ điều hành khách phải được sửa đổi để chạy ở mức có đặc quyền thấp hơn.

Nhiều kiến trúc vi xử lý chỉ cung cấp hai mức độ đặc quyền Trong những trường hợp này, hệ điều hành khách sẽ chia sẻ với các ứng dụng ở mức đặc quyền thấp hơn Hệ điều hành khách sau đó sẽ tự bảo vệ mình bằng cách chạy trong một không gian địa chỉ riêng biệt từ các ứng dụng của nó Nếu TLB của bộ xử lý hỗ trợ nhãn không gian địa chỉ thì sẽ tránh được làm sạch TLB

Mức đặc quyền ảo hóa trên x86 khá linh hoạt vì phần cứng nó hỗ trợ bốn cấp Các cấp đặc quyền x86 thường được mô tả như chiếc vòng (rings), và được đánh

số từ 0 (đặc quyền cao nhất) đến 3 (đặc quyền thấp nhất) Hệ điều hành thường thực thi trong ring 0, trong khi ring 3 thường được sử dụng cho ứng dụng Theo chúng tôi biết, ring 1 và 2 đã không còn được sử dụng bởi bất kỳ hệ điều hành x86 nào kể từ khi OS / 2

Lệnh đặc quyền được ảo hóa song song bằng cách yêu cầu chúng phải được xác nhận và thực thi trong Xen Bất kỳ hệ điều hành khách nào cố gắng để trực tiếp thực thi một lệnh đặc quyền sẽ bị lỗi, vì chỉ có Xen mới được thực thi ở mức đầy

đủ đặc quyền

Trường hợp ngoại lệ, bao gồm cả lỗi bộ nhớ và phần mềm, được ảo hóa trên x86 trực tiếp Một bảng mô tả xử lý đối với từng loại ngoại lệ sẽ được đăng ký với Xen để xác nhận Việc xử lý theo quy định tại bảng này thường đồng nhất với những phần cứng x86 thực tế, vì các stack frame ngoại lệ chưa được sửa đổi trong kiến trúc ảo hóa song song Chỉ có 1 thay đổi là để xử lý lỗi trang, thông thường sẽ đọc địa chỉ lỗi từ thanh ghi xử lý xử lý đặc quyền(CR2), vì điều này là không thể, nên nó đươc ghi vào stack frame mở rộng Một ngoại lệ xảy ra trong khi thực hiện bên ngoài ring 0, Xen xử lý bằng cách tạo ra một bản sao của các stack frame ngoại lệ trên stack hệ điều hành khách và trả về điều khiển để xử lý đăng ký thích hợp

Thông thường chỉ có hai loại ngoại lệ xảy ra thường xuyên, đủ để ảnh hưởng đến hiệu suất hệ thống: cuộc gọi hệ thống (system call) và lỗi trang (page fault) Chúng tôi cải thiện hiệu suất của các cuộc gọi hệ thống bằng cách cho phép mỗi

hệ điều hành khách đăng ký một xử lý ngoại lệ 'nhanh' mà được truy cập trực tiếp bởi các vi xử lý mà không cần gián tiếp qua ring 0; xử lý này được xác nhận trước khi cài đặt nó trong bảng ngoại lệ Tiếc là không thể áp dụng kỹ thuật

Trang 10

tương tự để xử lý lỗi trang được bởi vì những mã thực thi trong ring 0 có thể đọc các địa chỉ lỗi từ thanh ghi CR2, do đó lỗi trang luôn luôn được gửi qua Xen để giá trị thanh ghi này có thể được lưu cho truy cập trong ring 1.

An toàn được đảm bảo bằng cách xác nhận xử lý ngoại lệ khi chúng được đưa tới Xen Yêu cầu kiểm tra đó là đoạn mã xử lý không có nằm trong ring 0 Không có

hệ điều hành khách nào có thể tạo ra một đoạn mã như vậy Xen phát hiện những

"lỗi kép" bằng cách kiểm tra các giá trị đếm lỗi chương trình: nếu địa chỉ nằm trong mã xử lý ngoại lệ thì sẽ ngắt tiến trình xâm phạm đến hệ điều hành khách.Quá trình kiểm tra an toàn ngay cả đối với các xử lý cuộc gọi hệ thống trực tiếp: lỗi truy cập sẽ xảy ra khi CPU cố gắng để “nhảy” trực tiếp đến xử lý hệ điều hành khách Trong trường hợp này, địa chỉ lỗi sẽ ở bên ngoài Xen (vì Xen sẽ không bao giờ thực thi một cuộc gọi hệ thống hệ điều hành khách) và như vậy lỗi được

ảo hóa theo cách thông thường Nếu gây ra thêm "lỗi kép", thì hệ điều hành khách bị ngắt như mô tả ở trên

Tương tự như ngắt phần cứng, Xen hỗ trợ một cơ chế cung cấp sự kiện đơn giản được sử dụng để gửi thông báo không đồng bộ vào domain Các thông báo được thực hiện bằng cách gọi một xử lý sự kiện theo quy định của hệ điều hành khách Những callback có thể được "giữ khoảng cách" theo quyết định của hệ điều hành khách - để tránh chi phí phát sinh thêm bằng cách thường xuyên thông báo đánh thức

2.2 CHI PHÍ THÍCH NGHI (PORTING) 1 HỆ ĐIỀU HÀNH VÀO XEN:

OS subsection # lines

Linux XP

Architecture-independent 78 1299

Virtual network driver 484 –

Virtual block-device driver 1070 –

Trang 11

Xen-specific (non-driver) 1363 3321

(Portion of total x86 code base 1.36%0.04%)

Bảng 2 cho thấy chi phí, (Chuẩn đo là số lines), hệ điều hành thích nghi với môi trường ảo hóa song song x86 của Xen Sự thích nghi của XP vẫn còn đang tiếp diễn, nó có thể thực thi ứng dụng nhờ sử dụng RAM, nhưng hiện đang thiếu một vài trình điều khiển I/O ảo Vì lý do này, số liệu về trình điều khiển thiết bị ảo cho XP không được trình bày Tuy nhiên, với Linux, chúng tôi mong đợi các trình điều khiển này sẽ nhỏ và đơn giản nhờ sự lý tưởng hóa phần cứng của Xen.Windows XP yêu cầu một số lượng lớn cần sửa đổi trong kiến trúc hệ điều hành độc lập bởi vì nó sử dụng các cấu trúc khác nhau để truy cập vào bảng trang (PTEs) Mỗi truy cập bảng trang phải được sửa đổi một cách riêng biệt, mặc dù một số tiến trình này được tự động với kịch bản Ngược lại, Linux cần rất ít sửa đổi vào hệ thống bộ nhớ chung của nó vì nó sử dụng các macro xử lý trước để truy cập các PTE

2.3 KIỂM SOÁT VÀ QUẢN LÝ:

Trong thiết kế và hoạt động của Xen, hypervisor phải gồm các datapath – datapath là tập hợp các đơn vị chức năng để xử lý dữ liệu (ví dụ, lịch làm việc CPU giữa các domain, lọc gói tin mạng trước khi truyền, hoặc thực thi kiểm soát truy cập khi đọc các khối dữ liệu), CPU sẽ được chia sẻ như thế nào hoặc các loại packet nào của domain có thể truyền

Hình1: K i ế n t r ú c c ủ a 1 m á y c h ạ y X e n hypervisor, hosting nhiều hệ điều hành khác nhau, gồm Domain0 chạy phần mềm kiểm soát trong môi trường XenoLinux.

Trang 12

Cấu trúc hệ thống tổng thể được minh họa trong Hình 1 Lưu ý rằng một domain được tạo ra vào lúc khởi động được phép sử dụng giao diện điều khiển Domain khởi tạo này, gọi là Domain0, chịu trách nhiệm hosting các phần mềm quản lý mức ứng dụng Giao diện điều khiển hỗ trợ tạo ra và ngắt các domain khác và kiểm soát các thông số điều phối, cấp phát bộ nhớ vật lý và truy cập chúng từ các

ổ đĩa vật lý của máy và thiết bị mạng

Ngoài tài nguyên bộ nhớ và bộ xử lý, giao diện điều khiển hỗ trợ việc tạo và xóa các giao diện mạng ảo (VIFs) và các thiết bị khối (VBDs) Các thiết bị I/O ảo này đã liên kết thông tin điều khiển truy cập để xác định domain nào có thể truy cập chúng, và cấm những gì (ví dụ, ngăn chặn nguồn giả mạo địa chỉ)

Giao diện điều khiển này, cùng với thống kê về hiện trạng của hệ thống, được hỗ trợ từ một bộ các ứng dụng công cụ quản trị cho phép quản lý thuận tiện toàn bộ máy chủ: các công cụ hiện tại có thể tạo ra và hủy các domain, thiết lập các bộ lọc mạng và quy tắc định tuyến, theo dõi hoạt động mạng tại domain và tạo và xóa các giao diện mạng ảo và các thiết bị khối ảo Chúng tôi đang tiếp tục phát triển các công cụ cao cấp để tiếp tục tự động hóa áp dụng các chính sách quản lý

Trang 13

PHẦN 3: THIẾT KẾ CHI TIẾT

Trong phần này, chúng tôi giới thiệu các thiết kế của các hệ thống con chính để tạo nên một máy chủ Xen Trong mỗi trường hợp, chúng tôi giới thiệu cả chức năng của Xen và hệ điều hành khách để rõ ràng hơn Các cuộc thảo luận hiện nay về hệ điều hành khách tập trung vào XenoLinux vì đây là OS phát triển nhất,

dù sao khả năng thích nghi của Windows XP và NetBSD vẫn tốt lên, tạo cho chúng ta sự tự tin rằng Xen là hệ điều hành khách bất khả tri

3.1 TRUYỀN ĐIỀU KHIỂN: HYPERCALL VÀ SỰ KIỆN

Hai cơ chế tồn tại trong tương tác điều khiển giữa Xen và domain nằm phía trên: các cuộc gọi đồng bộ từ một domain đến Xen có thể được thực hiện bằng cách sử dụng hypercall, trong khi thông báo được gửi đến domain từ Xen sử dụng một cơ chế sự kiện bất đồng bộ

Giao diện hypercall cho phép domain thi hành một lỗi phần mềm đồng bộ vào hypervisor để thực hiện một hoạt động đặc quyền, tương tự như việc sử dụng các cuộc gọi hệ thống trong hệ điều hành thông thường Một ví dụ về sử dụng một hypercall là yêu cầu một tập các cập nhật page table, trong đó Xen xác nhận và

áp dụng một danh sách các bản cập nhật, trả về điều khiển để gọi domain khi điều này được hoàn tất

Thông tin từ Xen vào một domain được cung cấp thông qua một cơ chế sự kiện bất đồng bộ, thay thế cơ chế thông thường để ngắt thiết bị và cho phép thông báo

sự kiện quan trọng như yêu cầu ngắt domain Tương tự như tín hiệu Unix, chỉ có một số ít các sự kiện, mỗi hành động để đánh dấu một loại đặc biệt xảy ra Ví dụ, các sự kiện được sử dụng để chỉ ra rằng dữ liệu mới đã được nhận được qua mạng, hoặc yêu cầu ổ đĩa ảo được hoàn thành

Các sự kiện pending được lưu trữ trong một bitmask của mỗi domain được cập nhật bởi Xen trước khi gọi một xử lý event callback theo quy định của hệ điều hành khách Xử lý callback chịu trách nhiệm cài đặt lại các thiết lập của các sự kiện pending và chịu trách nhiệm thông báo một cách thích hợp Một domain có thể trì hoãn việc xử lý sự kiện một cách rõ ràng bằng cách thiết lập một cờ ready: điều này tương tự để vô hiệu hóa ngắt trên một bộ xử lý thực tế

Trang 14

3.2 TRUYỀN DỮ LIỆU: RING I/O

Sự hiện diện của một hypervisor có nghĩa là thêm vào sự bảo vệ domain giữa hệ điều hành khách và thiết bị I/O, vì vậy điều quan trọng là cơ chế truyền dữ liệu cho phép dữ liệu di chuyển theo chiều dọc của hệ thống với ít chi phí nhất có thể.Hai yếu tố chính để thiết kế cơ chế truyền I/O: quản lý tài nguyên và thông báo

sự kiện Về quản lý tài nguyên, chúng tôi cố gắng để giảm thiểu công việc cần thiết để ghép, tách dữ liệu đến 1 domain cụ thể khi một tín hiệu ngắt được nhận

từ một thiết bị - sau quá trình tính toán sẽ được đưa đến domain thích hợp Tương

tự như vậy, bộ nhớ được ghi vào thiết bị I/O được quy định bởi các domain liên quan, để ngăn chặn sự nhiễu trong vùng đệm chia sẻ; bộ đệm I/O được bảo vệ trong quá trình truyền dữ liệu bằng cách chốt vào page frame trong Xen

Hình 2: Cấu trúc không đồng bộ vòng I/O, được sử dụng để truyền dữ liệu giữa Xen và hệ điều hành khách.

Hình 2 cho thấy cấu trúc của vòng I/O Mỗi vòng là một hàng đợi tròn được mô

tả bởi 1domain nhưng có thể truy cập từ bên trong Xen Truy cập vào mỗi vòng

là dựa trên hai cặp con trỏ Producer-Consumer: vị trí domain yêu cầu một vòng, kéo theo yêu cầu con trỏ Producer, và Xen loại bỏ những yêu cầu xử lý này, kéo theo yêu cầu con trỏ Consumer liên quan Câu trả lời (Responses) được đặt trở lại vòng theo cách tương tự, với Xen là Producer và hệ điều hành khách là

Trang 15

Consumer Không có ràng buộc là các yêu cầu phải được xử lý theo thứ tự: hệ điều hành khách liên kết một định danh duy nhất ứng với mỗi yêu cầu Điều này cho phép Xen sắp xếp lại một cách rõ ràng hoạt động I/O nhờ xem xét lịch trình hoặc độ ưu tiên.

Cấu trúc này hỗ trợ nhiều mô hình thiết bị khác nhau Ví dụ, một tập hợp các 'request' có thể cung cấp bộ đệm để tiếp nhận gói dữ liệu mạng, 'responses' sẽ báo hiệu sự xuất hiện của các gói tin vào các bộ đệm Sắp xếp lại rất hữu ích khi thực hiện yêu cầu sử dụng đĩa, nó cho phép các request này được sắp xếp trong Xen sao cho hiệu quả

Trong trường hợp có request , một domain có thể enqueue (sắp vào hàng) nhiều lần trước khi gọi một hypercall để cảnh báo Xen; trong trường hợp có responses, một domain có thể trì hoãn việc trả lời của một sự kiện bằng cách xác định số ngưỡng của responses Điều này cho phép mỗi domain đánh đổi yêu cầu độ trễ và băng thông

3.3 ẢO HÓA HỆ THỐNG CON

Các cơ chế truyền dữ liệu và điều khiển được sử dụng trong công nghệ ảo hóa các hệ thống con Trong phần tiếp theo, chúng tôi thảo luận về cách ảo hóa được thực hiện cho CPU, giờ, bộ nhớ, mạng và đĩa

3.3.1 Điều phối CPU

Xen hiện đang điều phối theo thuật toán Borrowed Virtual Time (BVT) Chúng tôi chọn thuật toán đặc biệt này vì nó là có thể duy trì công việc và có một cơ chế đặc biệt với độ trễ thấp khi nó nhận được một sự kiện BVT có độ trễ thấp do sử dụng virtual-time warping, một cơ chế tạm thời vi phạm "lý tưởng" chia sẻ công bằng có lợi cho lĩnh vực mới được đánh thức Các thông số điều phối cho mỗi domain có thể được điều chỉnh bằng phần mềm quản lý chạy trong Domain0

3.3.2 Time và timers

Xen cung cấp hệ điều hành khách với các khái niệm về thời gian thực, thời gian

ảo và thời gian wall-clock Thời gian thực được tính trong nano giây kể từ khi máy khởi động và duy trì tính chính xác của chu kỳ của bộ xử lý và có thể là tần

số update từ nguồn thời gian bên ngoài (ví dụ, thông qua NTP) Thời gian ảo của domain được sử dụng khi nó được thực thi: hệ điều hành điều phối để đảm bảo chính xác chia sẻ thời gian giữa các chương trình ứng dụng Wall-lock được xác định như phần bù đắp vào thời gian hiện hành Điều này cho phép thời gian wall-clock được điều chỉnh mà không ảnh hưởng đến tiến trình của thời gian thực

Ngày đăng: 11/04/2017, 10:20

HÌNH ẢNH LIÊN QUAN

Bảng 2 cho thấy chi phí, (Chuẩn đo là số lines), hệ điều hành thích nghi với môi  trường ảo hóa song song x86 của Xen - Tiểu luận về XEN  Nghệ thuật ảo hóa
Bảng 2 cho thấy chi phí, (Chuẩn đo là số lines), hệ điều hành thích nghi với môi trường ảo hóa song song x86 của Xen (Trang 11)
Hình 2: Cấu trúc không đồng bộ vòng I/O, được sử dụng để truyền dữ liệu giữa   Xen và hệ điều hành khách. - Tiểu luận về XEN  Nghệ thuật ảo hóa
Hình 2 Cấu trúc không đồng bộ vòng I/O, được sử dụng để truyền dữ liệu giữa Xen và hệ điều hành khách (Trang 14)
Hình 3: Hiệu suất tương đối của Linux (L), XenoLinux (X), VMware workstation 3.2 - Tiểu luận về XEN  Nghệ thuật ảo hóa
Hình 3 Hiệu suất tương đối của Linux (L), XenoLinux (X), VMware workstation 3.2 (Trang 22)
Bảng 4: lmbench: Context switching times in às - Tiểu luận về XEN  Nghệ thuật ảo hóa
Bảng 4 lmbench: Context switching times in às (Trang 23)
Bảng 3 : lmbench: Processes - times in às - Tiểu luận về XEN  Nghệ thuật ảo hóa
Bảng 3 lmbench: Processes - times in às (Trang 23)
Bảng 5 cho thấy kết quả Độ trễ Mmap và độ trễ lỗi trang là khá thú vị bởi vì  chúng yêu cầu hai quá trình chuyển đổi trong Xen ở mỗi trang: một là bắt lỗi  phần cứng và chuyển tới hệ điều hành khách, và hai là cài đặt các cập nhật bảng  trang trên hệ điều - Tiểu luận về XEN  Nghệ thuật ảo hóa
Bảng 5 cho thấy kết quả Độ trễ Mmap và độ trễ lỗi trang là khá thú vị bởi vì chúng yêu cầu hai quá trình chuyển đổi trong Xen ở mỗi trang: một là bắt lỗi phần cứng và chuyển tới hệ điều hành khách, và hai là cài đặt các cập nhật bảng trang trên hệ điều (Trang 24)
Hình 4: SPEC WEB99 khi chạy 1,2,4,8,16 WebServer Apache: giá trị càng cao càng tốt - Tiểu luận về XEN  Nghệ thuật ảo hóa
Hình 4 SPEC WEB99 khi chạy 1,2,4,8,16 WebServer Apache: giá trị càng cao càng tốt (Trang 25)
Hình 5: Hiệu suất của nhiều PostgreSQL chạy OSDB trong các domain Xen. 8 (diff) cột   cho thấy sự thay đổi hiệu suất với các trọng số khác nhau. - Tiểu luận về XEN  Nghệ thuật ảo hóa
Hình 5 Hiệu suất của nhiều PostgreSQL chạy OSDB trong các domain Xen. 8 (diff) cột cho thấy sự thay đổi hiệu suất với các trọng số khác nhau (Trang 26)
Hình 6: Hiệu suất tổng hợp của một tập hợp con SPEC CINT2000 chạy đồng thời trên   1-128 domain - Tiểu luận về XEN  Nghệ thuật ảo hóa
Hình 6 Hiệu suất tổng hợp của một tập hợp con SPEC CINT2000 chạy đồng thời trên 1-128 domain (Trang 27)

TỪ KHÓA LIÊN QUAN

w