Tải bản đầy đủ (.doc) (31 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (380.59 KB, 31 trang )

Tiểu luận môn học Hệ điều hành Mạng - i -

GVHD: PGS.TS.Nguyễn Tuấn Anh

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

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 1 -

GVHD: TS.Nguyễn Tuấn Anh


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.

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 2 -

GVHD: TS.Nguyễn Tuấn Anh

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.

Đề tài: Xen và nghệ thuật ảo hóa



Tiểu luận môn học Hệ điều hành Mạng - 3 -

GVHD: TS.Nguyễn Tuấn Anh

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.

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 4 -

GVHD: TS.Nguyễn Tuấn Anh

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
đúng
đối

với
kiến
trúc
IA-32,
hoặc
x86.
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.

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 5 -

GVHD: TS.Nguyễn Tuấn Anh

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à singleuser, 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,

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 6 -

GVHD: TS.Nguyễn Tuấn Anh

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:
Không thể cài đặt toàn bộ phân đoạn mô tả và không thể
Quản lý bộ nhớ đè lên phần trên cùng của không gian địa chỉ.
Phân đoạn

Hệ điều hành khách trực tiếp đọc vào bảng phân trang
phần cứng, nhưng các bản cập nhật được quản lý bởi phần
Phân trang
mềm ảo hóa. Một domain có thể được phân trang không
liên tục.
CPU
Hệ điều hành khách phải chạy tại mức ưu tiên thấp hơn so
Bảo vệ
với Xen.
Ngoại lệ
Hệ điều hành khách phải đăng ký một bảng mô cho xử lý
Cuộc gọi hệ ngoại lệ với Xen. Ngoài lỗi phân trang, xử lý vẫn như cũ.
Hệ điều hành khách có thể cài đặt một xử lý “nhanh” cho
thống
cuộc gọi hệ thống, cho phép cuộc gọi trực tiếp từ một ứng
dụng mà không phải gián tiếp qua Xen.
Ngắt
Ngắ
c phần cứng được thay thế bằng một hệ thống sự kiện
Thời gian
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ó

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 7 -

GVHD: TS.Nguyễn Tuấn Anh

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ệ

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 8 -

GVHD: TS.Nguyễn Tuấn Anh


đ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

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 9 -

GVHD: TS.Nguyễn Tuấn Anh

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.
2.1.3 Thiết bị I/O
Trong môi trường ảo hóa toàn diện, Xen gồm các thiết bị đơn giản. Điều này cho
phép chúng ta thiết kế một giao diện hiệu quả và đáp ứng yêu cầu về an toàn và

cô lập. Dữ liệu I/O được chuyển đến và đi từ mỗi domain qua Xen, sử dụng bộ
nhớ chia sẻ, bộ đệm bất đồng bộ,tạo ra một cơ chế truyền thông hiệu suất cao,
cho phép Xen thực thi kiểm tra hiệu quả (ví dụ, kiểm tra xem bộ đệm có chứa bộ
nhớ domain đã lưu trước đó).
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


Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 10 -

GVHD: TS.Nguyễn Tuấn Anh


Xen-specific (non-driver)
1363 3321
Total
2995 4620
(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.


Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 11 -

GVHD: TS.Nguyễn Tuấn Anh

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ý.

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 12 -

GVHD: TS.Nguyễn Tuấn Anh


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ế.
Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 13 -

GVHD: TS.Nguyễn Tuấn Anh

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à
Đề tài: Xen và nghệ thuật ảo hóa



Tiểu luận môn học Hệ điều hành Mạng - 14 -

GVHD: TS.Nguyễn Tuấn Anh

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 wallclock được điều chỉnh mà không ảnh hưởng đến tiến trình của thời gian thực.
Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 15 -

GVHD: TS.Nguyễn Tuấn Anh

Mỗi hệ điều hành khách có thể lập trình 2 giờ báo thức, một cho thời gian thực và
một cho thời gian ảo. Hệ điều hành khách được mong đợi sẽ duy trì hàng đợi thời
gian nội bộ và sử dụng thời gian báo thức được cung cấp bởi Xen để kích hoạt
thời gian chờ sớm nhất.
3.3.3 Phiên dịch địa chỉ ảo
Như các hệ thống con khác, Xen cố gắng để ảo hóa bộ nhớ truy cập với chi phí
thấp nhất có thể. Như đã thảo luận tại mục 2.1.1, mục tiêu này gặp khó khăn do
sử dụng kiến trúc x86 của bảng trang phần cứng. Phương pháp của VMware là
cung cấp cho mỗi hệ điều hành khách một bảng trang ảo, không thấy được đơn vị
quản lý bộ nhớ (MMU). Hypervisor chịu trách nhiệm về các lỗi truy cập đến
bảng trang ảo, xác nhận thông tin cập nhật. Điều này làm tăng đáng kể chi phí
hoạt động của một số hệ điều hành khách, chẳng hạn như việc tạo ra không gian
địa chỉ ảo mới.
Bảng trang cập nhật được chuyển qua Xen thông qua một hypercall, bảo đảm an

toàn, request được xác nhận trước khi được áp dụng.
Để hỗ trợ xác nhận, chúng tôi liên kết mỗi loại và đếm tham chiếu với mỗi khung
trang máy. Mỗi frame có thể có bất kỳ một trong các loại: thư mục trang (PD),
bảng trang (TT), bảng mô tả địa phương (LDT), bảng mô tả toàn cầu (Tổng cục
Thuế), hoặc có thể ghi (RW). Lưu ý rằng một hệ điều hành khách có thể luôn
luôn tạo ra các ánh xạ đọc đến page frame riêng của nó, bất kể loại hiện tại của
chúng. Cơ chế này được sử dụng để duy trì sự an toàn, ví dụ, một domain không
thể có ánh xạ ghi đến bất kỳ bảng trang nào vì điều này sẽ yêu cầu các frame liên
quan có đồng thời PT và RW.
Các loại hệ thống cũng được sử dụng để theo dõi các frame đã được xác nhận để
sử dụng trong bảng trang. Hệ điều hành khách chỉ thị khi một frame được sử
dụng cho bảng trang, điều này đòi hỏi phải có xác nhận một lần nữa của tất cả
các mục trong frame của Xen, sau đó nó được gắn với PD hoặc PT phù hợp, cho
đến khi một request theo sau bị loại bỏ. Điều này đặc biệt hữu ích khi thay đổi
bảng trang dựa vào con trỏ, vì không cần thiết phải xác nhận bảng trang mới trên
tất cả các ngữ cảnh.
Để giảm thiểu số lượng yêu cầu từ hypercalls, hệ điều hành khách có thể cập
nhật lại hàng đợi trước khi áp dụng toàn bộ với một hypercall duy nhất - điều này
đặc biệt có lợi khi tạo không gian địa chỉ mới. Tuy nhiên chúng ta phải đảm bảo
rằng thông tin cập nhật được đảm bảo chính xác. May mắn thay, hệ điều hành

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 16 -

GVHD: TS.Nguyễn Tuấn Anh

khách thường sẽ làm sạch TLB trước khi sử dụng: điều này đảm bảo rằng tất cả
các bộ đệm bị vô hiệu. Tuy nhiên, một số hệ điều hành khách khác lại làm sạch

khi chắc chắn rằng không có trạng thái cũ nào tồn tại trong TLB. Trong trường
hợp này, có thể gây ra lỗi trang. Do đó, hệ điều hành khách xử lý lỗi phải kiểm tra
các bản cập nhật đáng chú ý, nếu tìm thấy thì chúng sẽ được xóa và xem xét lại
lỗi.
3.3.4 Bộ nhớ vật lý
Việc phân bổ bộ nhớ ban đầu, hoặc dành riêng, cho từng vùng được quy định tại
thời điểm khởi tạo của mình, như vậy bộ nhớ được phân chia tĩnh, tạo sự cô lập
giữa các vùng. Bộ nhớ tối đa cho phép dành riêng cũng có thể được xác định: nếu
áp lực bộ nhớ trong một vùng tăng lên, thì nó có thể yêu cầu bổ sung trang nhớ từ
Xen, lên đến giới hạn đã được dành riêng. Ngược lại, nếu một vùng muốn tiết
kiệm tài nguyên, để tránh phát sinh chi phí không cần thiết, nó có thể làm giảm
bộ nhớ của nó bằng cách giải phóng các trang bộ nhớ trở lại Xen.

XenoLinux thực thi một balloon driver, có thể điều chỉnh việc sử dụng bộ nhớ
của mỗi vùng bằng cách duyệt qua các trang bộ nhớ qua lại giữa Xen và
XenoLinux. Mặc dù chúng tôi có thể thay đổi cách quản lý bộ nhớ của Linux một
cách trực tiếp, điều chỉnh bằng cách sử dụng chức năng hệ điều hành hiện có, do
đó đơn giản hóa việc thích nghi Linux. Tuy nhiên, ảo hóa song song có thể được
sử dụng để mở rộng khả năng của balloon driver, ví dụ, cơ chế xử lý tràn bộ nhớ
trong hệ điều hành có thể được sửa đổi để tự động làm giảm bớt áp lực bộ nhớ
bằng cách yêu cầu bộ nhớ từ Xen.
Ánh xạ từ địa chỉ vật lý đến các địa chỉ phần cứng thuộc trách nhiệm của hệ điều
hành khách, chỉ đơn giản qua một mảng lập chỉ mục bởi số khung trang vật lý.
Xen hỗ trợ phần cứng hiệu quả để ánh xạ vật lý bằng cách cung cấp một mảng
dịch chia sẻ để tất cả các vùng có thể đọc được – Xen xác nhận việc cập nhật vào
bảng này để đảm bảo rằng hệ điều hành sở hữu khung trang phần cứng có liên
quan.
Lưu ý rằng ngay cả khi một hệ điều hành khách lựa chọn để bỏ qua địa chỉ phần
cứng trong nhiều trường hợp, nó phải sử dụng các bảng dịch khi truy cập vào
bảng trang của nó (mà nhất thiết phải sử dụng địa chỉ phần cứng). Địa chỉ phần

cứng cũng có thể được tiếp xúc 1 phần với hệ thống quản lý bộ nhớ của hệ điều
hành để tối ưu hóa truy cập bộ nhớ. Ví dụ, một hệ điều hành khách có thể phân

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 17 -

GVHD: TS.Nguyễn Tuấn Anh

bổ các trang phần cứng cụ thể để tối ưu hóa vị trí trong cache chỉ mục vật lý,
hoặc liên kết các phần tiếp giáp của bộ nhớ phần cứng sử dụng siêu trang.
3.3.5 Mạng
Xen cung cấp một bộ định tuyến tường lửa ảo (VFR), trong đó mỗi domain có
một hoặc nhiều giao diện mạng (VIFs) logic gắn liền với VFR. VIF có vẻ hơi
giống như một card mạng hiện đại: có hai vòng I/O của bộ đệm, một cho truyền
và một cho nhận. Mỗi hướng cũng có một danh sách các quy tắc liên quan đến
các hình thức (, <action>) - nếu mẫu phù hợp thì các hành vi liên quan
được áp dụng.
Domain0 chịu trách nhiệm chèn và loại bỏ các rule. Trong trường hợp điển hình,
các rule này sẽ được cài đặt để ngăn chặn địa chỉ IP nguồn giả mạo, và để đảm
bảo phân giải chính xác dựa trên địa chỉ IP nguồn và đích. Các rule này cũng có
thể được liên kết với các giao diện phần cứng trên VFR. Đặc biệt, chúng tôi có
thể cài đặt các rule này để thực thi chức năng firewall truyền thống như ngăn
chặn việc kết nối đến cổng không an toàn.
Để truyền tải một gói tin, hệ điều hành khách chỉ đơn giản là sắp xếp lại mô tả bộ
đệm trên vòng truyền. Xen sao chép lại mô tả đó và để đảm bảo an toàn, Xen sẽ
sao chép các tiêu đề gói tin và thực thi các rule lọc phù hợp. Trọng tải gói dữ liệu
không được sao chép vì chúng tôi sử dụng DMA phân tán, tuy nhiên lưu ý rằng
các khung trang có liên quan phải được gắn cho đến khi truyền tải hoàn tất. Để

đảm bảo sự công bằng, Xen thực hiện cơ chế điều phối round-robin.
Để việc thu nhập gói tin đạt hiệu quả, hệ điều hành khách cần trao đổi một khung
trang không sử dụng cho mỗi gói tin nó nhận được, điều này tránh việc sao chép
các gói tin giữa Xen và hệ điều hành khách, mặc dù nó đòi hỏi rằng trang liên kết
nhận được bộ đệm sẽ xếp hàng tại giao diện mạng. Khi một gói tin nhận được,
Xen ngay lập tức kiểm tra các rule nhận để xác định VIF đích, và trao đổi các bộ
đệm cho một khung trang trên các vòng có liên quan. Nếu không có khung có
sẵn, các gói tin bị loại bỏ.
3.3.6 Đĩa
Chỉ Domain0 có quyền truy cập trực tiếp không qua kiểm soát tới ổ đĩa vật lý
(IDE và SCSI). Tất cả các domain khác truy cập phải thông qua các thiết bị khối
ảo (VBDs), được tạo ra và cấu hình bằng phần mềm quản lý chạy trong
Domain0. Cho phép Domain0 quản lý các VBD trong Xen rất đơn giản và tránh
được giải pháp phức tạp hơn như các UDF được sử dụng bởi các Exokernel.

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 18 -

GVHD: TS.Nguyễn Tuấn Anh

Một VBD bao gồm một danh sách mở rộng về quyền sở hữu và kiểm soát truy
cập thông tin, và được truy cập thông qua cơ chế vòng I/O. Thuật toán điều phối
đĩa của hệ điều hành khách sẽ sắp xếp lại để giảm thời gian đáp ứng và áp dụng
các dịch vụ khác nhau.
Một bảng dịch được duy trì trong các hypervisor cho mỗi VBD, các mục trong
bảng này được cài đặt và Domain0 quản lý thông qua một giao diện điều khiển
đặc quyền. Khi nhận được yêu cầu đĩa, Xen kiểm tra định danh VBD và tạo ra
các vùng địa chỉ tương ứng với thiết bị vật lý. Kiểm tra quyền cũng xảy ra ở thời

điểm này.
3.4 XÂY DỰNG 1 DOMAIN MỚI
Nhiệm vụ xây dựng cấu trúc hệ điều hành ban đầu cho một domain mới chủ yếu
được giao cho Domain0, sử dụng giao diện điều khiển của nó (mục 2.3) để truy
cập bộ nhớ của domain mới và thông báo cho Xen về trạng thái đăng ký ban đầu.
Cách tiếp cận này có một số ưu điểm so với việc xây dựng một domain bên trong
Xen, bao gồm giảm hypervisor phức tạp và cải thiện mạnh mẽ (truy cập vào giao
diện đã được kiểm tra cho phép bắt nhiều lỗi trong quá trình phát triển ban đầu).

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 19 -

GVHD: TS.Nguyễn Tuấn Anh

PHẦN 4. ĐÁNH GIÁ

Trong phần này chúng tôi trình bày một đánh giá toàn diện hiệu suất của Xen.
Chúng tôi bắt đầu bằng điểm chuẩn Xen so với một số kỹ thuật ảo hóa khác, sau
đó so sánh tổng thể hệ thống khi thực hiện nhiều ứng dụng đồng thời trên một hệ
điều hành so với mỗi ứng dụng chạy trong 1 máy ảo riêng của mình. Sau đó
chúng tôi đánh giá hiệu suất cô lập hóa giữa các máy ảo cấp bởi Xen và đánh giá
tổng chi phí hoạt động của nhiều hệ điều hành trên cùng một phần cứng. Đối với
các phép đo này, chúng tôi đã sử dụng XenoLinux (dựa trên Linux 2.4.21) vì đây
là hệ điều hành khách mới nhất của chúng tôi. Chúng tôi hy vọng các chi phí
tương đối cho Windows XP và NetBSD là tương tự nhưng vẫn chưa tiến hành
một đánh giá đầy đủ.
Chúng tôi trình bày kết quả từ VMware Workstation 3.2, chạy trên một máy chủ
hệ điều hành Linux, vì nó là sản phẩm VMware gần đây nhất mà không có cấm

công bố điểm chuẩn.
Chúng tôi cũng trình bày kết quả cho User-mode Linux (UML), một nền tảng
ngày càng phổ biến để lưu trữ ảo. Giống như XenoLinux, các thay đổi cần được
giới hạn trong cơ sở kiến trúc phụ thuộc mã. Tuy nhiên, các mã UML có rất ít sự
tương đồng với x86 do tính chất rất khác nhau của môi trường thực thi.
Chúng tôi cũng khảo sát 3 kỹ thuật ảo hóa khác nhau chạy trên các phiên bản của
Linux trên cùng máy x86. Virtual PC của Connectix và sắp tới các sản phẩm
Virtual Server (nay được mua lại bởi Microsoft) cũng tương tự như trong thiết kế
của VMware, cung cấp ảo hóa toàn bộ cho x86. Vì tất cả các phiên bản của
Virtual PC có những hạn chế đánh giá điểm chuẩn trong thỏa thuận giấy phép
của họ, chúng tôi không phân tích sâu hơn. Công việc cải thiện hiệu suất của
UMLinux thông qua hệ điều hành máy chủ đang diễn ra. Mặc dù Plex86 ban đầu
là định hướng VMM x86, nhưng sau đó nó đã được định hướng để hỗ trợ hệ điều
hành khách Linux. Hệ điều hành khách phải được biên dịch đặc biệt để chạy trên
Plex86. Hiệu suất của Plex86 hiện đang thấp hơn các kỹ thuật khác.
Tất cả các thí nghiệm đã được thực hiện trên một bộ vi xử lý máy chủ Xeon 2650
2.4GHz dual Dell với 2GB RAM, Broadcom Tigon 3 Gigabit Ethernet NIC, và
Hitachi DK32EJ 146GB 10k RPM đĩa SCSI. Linux phiên bản 2.4.21 đã được sử
dụng trong suốt quá trình thử nghiệm, biên dịch cho kiến trúc i686 cho các thí

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 20 -

GVHD: TS.Nguyễn Tuấn Anh

nghiệm trên hệ điều hành khách VMware, cho Xeno-i686 khi chạy trên Xen, và
kiến trúc UM khi chạy trên UML. Chúng tôi đảm bảo rằng tổng số lượng bộ nhớ
có sẵn cho tất cả các hệ điều hành khách cộng với VMM của họ tương đương với

tổng số bộ nhớ có sẵn cho bản Linux.
Bản RedHat 7.2 đã được sử dụng trong suốt quá trình thử nghiệm, được cài đặt
trên hệ thống tập tin ext3. Các máy ảo được cấu hình để sử dụng các cùng phân
vùng đĩa trong "chế độ raw”, mà mang lại hiệu suất tốt nhất. Bằng cách sử dụng
hệ thống tập tin hình ảnh tương tự cũng loại bỏ sự khác biệt trong thời gian tìm
kiếm đĩa và tốc độ truyền tải.

4.1 HIỆU SUẤT TƯƠNG ĐỐI
Chúng tôi đã thực hiện một thí nghiệm để đánh giá các chi phí của các kỹ thuật
ảo hóa khác nhau liên quan đến hoạt động trên “bare metal”. Mức điểm chuẩn
của các ứng dụng phức tạp thực thi trong toàn bộ hệ thống đã được sử dụng để
mô tả hiệu suất theo một loạt các loại khối lượng công việc máy chủ. Vì không
phải Xen hay bất kỳ sản phẩm VMware nào hiện đang hỗ trợ hệ điều hành đa xử
lý (mặc dù chính chúng là những SMP), các máy tính thử nghiệm đã được cấu
hình với một CPU cho những thí nghiệm này, chúng tôi kiểm tra hiệu suất với hệ
điều hành khách đồng thời sau. Các kết quả được trình bày là trung bình của 7 kết
quả thử nghiệm.
Theo hình 3, tập các thanh đầu tiên là SPEC CPU, nó bao gồm một chuỗi các ứng
dụng tính toán chuyên sâu nhằm đo hiệu suất của bộ vi xử lý của hệ thống, bộ
nhớ hệ thống, và chất lượng biên dịch.
Các tập thanh tiếp theo hiển thị tổng số thời gian thực hiện để xây dựng theo cấu
hình mặc định một nhân Linux 2.4.21 trên một hệ thống tập tin ext3 với gcc 2.96.
Bản Linux dành khoảng 7% thời gian CPU trong hệ điều hành, chủ yếu là thực
hiện các tập tin I/O, lập kế hoạch và quản lý bộ nhớ. Trong trường hợp của
VMM, hệ thống thời gian này được mở rộng đến một mức độ nhiều hơn hoặc ít
hơn: trong khi Xen chỉ mất 3%, trải nghiệm trên các VMM khác thì thấy một sự
suy giảm đáng kể hơn.

Đề tài: Xen và nghệ thuật ảo hóa



Tiểu luận môn học Hệ điều hành Mạng - 21 -

GVHD: TS.Nguyễn Tuấn Anh

Hình 3: Hiệu suất tương đối của Linux (L), XenoLinux (X), VMware workstation 3.2
(V) and User-Mode Linux (U).

Hai thí nghiệm được thực hiện sử dụng hệ quản trị cơ sở dữ liệu PostgreSQL
7.1.3. Chúng tôi trình bày kết quả đối với Information Retrieval (IR) đa người
dùng và xử lý giao dịch trực tuyến On-Line Transaction Processing (OLTP), đơn
vụ đo là tup/s. PostgreSQL đặt tải đáng kể trên các hệ điều hành, và điều này
được phản ánh trong chi phí quản lý ảo hóa của VMware và UML. Trong đó,
điểm chuẩn OLTP yêu cầu nhiều đĩa hoạt động đồng bộ, dẫn đến nhiều chuyển
tiếp domain.
Chương trình dbench là một tiêu chuẩn hệ thống tập tin bắt nguồn từ chuẩn
'NetBench’. Nó mô phỏng tải trọng đặt trên một máy chủ tập tin của Windows
95. Ở đây, chúng tôi trải nghiệm trên 1 máy chứa khoảng 90000 tập tin.
SPEC WEB99 là một chuẩn ở cấp ứng dụng để đánh giá các máy chủ web và các
hệ thống lưu trữ chúng. Khối lượng công việc là một kết hợp phức tạp của các
yêu cầu: 30% yêu cầu tạo nội dung động, 16% là hoạt động HTTP POST và 0,5%
thực thi một kịch bản CGI. Khi máy chủ chạy nó tạo ra truy cập và các bản ghi
POST, vì vậy khối lượng công việc đĩa không phải là hoàn toàn chỉ đọc. Do đó,
các phép đo phản ánh hiệu suất hệ điều hành chung, bao gồm cả hệ thống tập tin
và mạng, ngoài chức năng máy chủ web của mình.

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 22 -


GVHD: TS.Nguyễn Tuấn Anh

4.2 ĐIỂM CHUẨN HỆ ĐIỀU HÀNH
Để đo lường chính xác hơn các chức năng trong Xen và VMMS khác, chúng tôi
thực hiện một số thí nghiệm nhỏ hơn trên các hệ thống con đặc biệt. Các thông số
được đo bằng chương trình lmbench phiên bản 3.0-a3 của McVoy.

Bảng 3 : lmbench: Processes - times in µs

Trong Bảng 3, Xen thực thi chậm hơn ở thông số Fork, exec và sh so với bản
Linux. Điều này là đúng với dự kiến, bởi vì các hoạt động này đòi hỏi một số
lượng lớn các bản cập nhật bảng trang mà tất cả đều phải được xác nhận qua Xen.
Tuy nhiên, cách tiếp cận ảo hóa song song cho phép XenoLinux cập nhật yêu cầu
hàng loạt.

Bảng 4: lmbench: Context switching times in µs

Bảng 4 thể hiện thời gian chuyển ngữ cảnh giữa các tiến trình làm việc với các
thiết lập kích thước khác nhau. Xen sẽ phát sinh thêm chi phí giữa 1μs và 3μs,
bởi vì nó thực hiện một hypercall để thay đổi bảng trang. Tuy nhiên, kết quả
chuyển đổi ngữ cảnh là nhỏ so với các tác động bộ nhớ cache. Kết quả cũng cho
thấy VMware Workstation kém hơn so với UML, tuy nhiên, điều này sẽ được cải
tiến trong ESX Server.

Bảng 5: lmbench: File & VM system latencies in µs

Đề tài: Xen và nghệ thuật ảo hóa



Tiểu luận môn học Hệ điều hành Mạng - 23 -

GVHD: TS.Nguyễn Tuấn Anh

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 hành khách. Mặc dù vậy, kết quả như trên là tương đối khiêm
tốn.

Bảng 6: ttcp: Bandwidth in Mb/s

4.2.1 Hiệu suất mạng
Để đánh giá chi phí cho việc ảo hóa mạng, chúng tôi kiểm tra hiệu suất TCP trên
một mạng LAN Ethernet Gigabit. Trong tất cả các thí nghiệm, chúng tôi sử dụng
SMP chạy trên Linux. Điều này cho phép chúng tôi để đo hiệu suất nhận và
truyền tải độc lập. Điểm chuẩn ttcp đã được sử dụng để thực hiện các phép đo. Cả
hai ứng dụng gửi và nhận đã được cấu hình với kích thước bộ đệm socket của
128KB, điều này giúp có hiệu suất tốt nhất cho tất cả các hệ thống thử nghiệm.
Các kết quả được trình bày là trung bình của 9 thí nghiệm truyền 400MB. Bảng 6
trình bày hai bộ kết quả, Ethernet MTU 1500 byte, và MTU 500-byte (được lựa
chọn vì nó thường được sử dụng để dial-up PPP). Kết quả chứng minh rằng kỹ
thuật lật trang sử dụng bởi các trình điều khiển mạng ảo XenoLinux tránh được
chi phí của sao chép dữ liệu và do đó đạt được rất thấp trên mỗi byte. Với MTU
500 byte, các chi phí cho mỗi gói tin chiếm ưu thế. ESX Server cũng hỗ trợ một
trình điều khiển 'vmxnet' đặc biệt cho hệ điều hành khách, cải tiến hiệu suất mạng
đáng kể.

4.3 MÁY ẢO CHẠY ĐỒNG THỜI
Trong phần này, chúng ta so sánh hiệu suất của việc chạy nhiều ứng dụng trong

nhiều máy cùng hệ điều hành so với chạy chúng trên 1 máy. Chúng tôi tập trung
vào kết quả sử dụng Xen, nhưng chúng tôi cũng nhận xét về hiệu suất của các
VMM khác.

Đề tài: Xen và nghệ thuật ảo hóa


Tiểu luận môn học Hệ điều hành Mạng - 24 -

GVHD: TS.Nguyễn Tuấn Anh

Hình 4: SPEC WEB99 khi chạy 1,2,4,8,16 WebServer Apache: giá trị càng cao càng tốt

Hình 4 cho thấy kết quả điểm chuẩn SPEC WEB99 khi chạy đồng thời 1, 2, 4, 8
và 16 WebServer Apache trên một máy hai nhân CPU. Số cổng TCP khác nhau
để cho phép các bản sao được chạy song song.
Trong trường hợp chỉ chạy 1 Apache duy nhất, việc bổ sung một CPU thứ hai
cho phép bản Linux cải thiện số điểm trong phần 4.1 được 28%, đến 662 điểm.
Tuy nhiên, điểm tốt nhất đạt được khi chạy hai Apache, cho thấy rằng Apache
1.3.27 có khả năng mở rộng SMP.

Đề tài: Xen và nghệ thuật ảo hóa


×