Tải bản đầy đủ (.pdf) (88 trang)

Nghiên cứu kiến trúc máy ảo hệ thống và triển khai hệ thống đa nền tảng

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 (3.59 MB, 88 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------

NGUYỄN ĐÌNH THIẾT

NGHIÊN CỨU KIẾN TRÚC MÁY ẢO HỆ THỐNG VÀ
TRIỂN KHAI HỆ THỐNG ĐA NỀN TẢNG

Chuyên ngành: CÔNG NGHỆ THÔNG TIN

Mã đề tài: CNTTVINH13B-12
LUẬN VĂN THẠC SỸ KỸ THUẬT
CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC

TS Nguyễn Kim Khánh
Hà Nội – 2015


MỤC LỤC
Nội dung

Trang

Lời cam đoan………………………………………...…………………….

4

Lời cảm ơn …………………………………………………………............



5

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT ……………........... 6
DANH SÁCH CÁC HÌNH VẼ, CÁC BIỂU BẢNG ……………………… 7
PHẦN MỞ ĐẦU ……………………………………………………………. 8
CHƢƠNG 1: TÌM HIỂU TỔNG QUAN VỀ MÁY ẢO …………….........

11

1.1. Giới thiệu về kiến trúc của máy ảo …………………...……….. 11
1.2. Giao diện kiến trúc ….......……………………………………… 14
1.3. Kiến trúc tập lệnh ………………………………………………. 15
1.4. Giao diện ứng dụng nhị phân ……...…………………………... 16
1.5. Giao diện lập trình ứng dụng ……...………………………….. 16
1.6. Máy ảo tiến trình và Máy ảo hệ thống ………..……………….
CHƢƠNG 2: NGHIÊN CỨU CHI TIẾT VỀ MÁY ẢO HỆ THỐNG

16
19

2.1. Một số khái niệm cơ bản ………...……………………………... 19
2.1.1. Biểu hiện bên ngoài. ……..……………………………………

19

2.1.2. Quản lý các trạng thái ……………………………………….... 20
2.1.3. Kiểm soát tài nguyên …………………………………….......... 22
2.1.4. Nguồn gốc và tổ chức máy ảo. ……………………………....... 25
2.2. Ảo hóa tài nguyên của Vi xử lý. ………………………….........


27

2.2.1. Điều kiện để ảo hóa ISA ………………………………………

28

2.2.2. Sự tái lập quá trình ảo hóa …………………………………… 32
2.2.3. Vá lỗi của các lệnh quan trọng ………………………….......... 33
2.2.4. Mã mô phỏng bộ nhớ Cache

35

2.3. Ảo hóa tài nguyên của bộ nhớ …………………………………. 36
2.3.1. Hỗ trợ bộ nhớ ảo trong một môi trường máy ảo hệ thống …... 36

1


2.3.2. Ảo hoá kiến trúc Page Tables ………………………………… 38
2.3.3. Ảo hoá kiến trúc TLB ……………………………………......... 41
2.4. Ảo hóa nguồn tài nguyên vào/ra ………………………….........

43

2.4.1. Ảo hoá thiết bị …………………………………………………

44

2.4.1.1. Thiết bị chuyên dụng ………………………………………… 44

2.4.1.2. Thiết bị phân chia ……………………………………………. 44
2.4.1.3. Thiết bị chia sẻ ……………………………………………….

45

2.4.1.4. Thiết bị spooled ……………………………………………… 45
CHƢƠNG 3: NGHIÊN CỨU VỀ ẢO HÓA ĐA NỀN TẢNG …………...

48

3.1. Nền tảng sản phẩm máy ảo ……………………………….........

48

3.2. Bộ vi xử lý ảo hóa ………………………………………….........

50

3.3. Ảo hóa vào/ra …………………………………………………… 52
3.3.1. Mô phỏng trong VMMonitor ……………………………............. 52
3.3.2. Sử dụng các dịch vụ của hệ điều hành máy chủ ……………… 53
3.4. Ảo hóa Bộ nhớ …………………………………………………..

56

CHƢƠNG 4: XÂY DỰNG MÔ HÌNH KIẾN TRÚC ẢO HÓA
MÁY CHỦ TẠI CỤC THUẾ TỈNH HÀ TĨNH …………. 57
4.1. Giới thiệu về Cục thuế tỉnh Hà Tĩnh ………………………….. 57
4.2. Nhu cầu sử dụng và hiện trạng hệ thống Công nghệ thông tin


57

4.2.1. Nhu cầu sử dụng………………………………………………. 57
4.2.2. Hiện trạng Hệ thống CNTT tại Cục thuế …………………….. 58
4.2.2.1. Về trang thiết bị ……………………………………………… 58
4.2.2.2. Về ứng dụng, có thể chia ra các nhóm theo chức năng sau ….

62

4.3. Giải pháp kiến trúc hệ thống máy ảo vào hệ thống thông tin
của Cục thuế tỉnh Hà Tĩnh ………………………………………………… 63
4.3.1. Mục tiêu giải pháp …………………………………………….. 63
4.3.2. Mô hình giải pháp triển khai. ………………………………… 64
4.3.3. Cấu hình thông số máy ảo. …………………………………… 74
4.3.4. Tạo các vSwitch………………………………………………...

2

76


4.3.5. Tạo ổ cứng……………………………………………………...

77

4.3.6. Gán ổ cho máy ảo. …………………………………………….. 80
4.3.7. Đánh giá mô hình giải pháp…………………………………...

82


KẾT LUẬN ………………………………………………………….. 84
TÀI LIỆU THAM KHẢO …………………………………………..

3

85


LỜI CAM ĐOAN
Luận văn thạc sĩ này do tôi nghiên cứu và thực hiện dưới sự hướng dẫn của
Thầy giáo TS. Nguyễn Kim Khánh. Với mục đích học tập, nghiên cứu để nâng cao
kiến thức và trình độ chuyên môn nên tôi đã làm luận văn này một cách nghiêm túc
và hoàn toàn trung thực.
Để hoàn thành bản luận văn này, ngoài các tài liệu tham khảo đã liệt kê, tôi
cam đoan không sao chép toàn văn các công trình hoặc thiết kế tốt nghiệp của người
khác.
Hà Nội, tháng 10 năm 2015
Học viên

Nguyễn Đình Thiết

4


LỜI CẢM ƠN
Trước tiên, tôi xin phép bày tỏ sự biết ơn chân thành đến TS Nguyễn Kim
Khánh đã trực tiếp, tận tình hướng dẫn, định hướng cho tôi giải quyết các vấn đề
trong luận văn để luận văn được hoàn thành.
Tôi cũng xin chân thành cảm ơn các thầy, các cô ở viện Công nghệ Thông tin
và Truyền thông Đại học Bách khoa Hà Nội đã tận tình giảng dạy, truyền đạt cho

tôi những kiến thức quí báu trong suốt thời gian của khóa học Thạc sĩ 2013.
Xin cảm ơn các học viên cùng khóa, các đồng nghiệp cơ quan ở Cục thuế
tỉnh Hà Tĩnh, Cục công nghệ thông tin - Tổng Cục thuế đã tạo điều kiện, động viên
tôi trong thời gian thực hiện luận văn.
Xin cảm ơn Ban Lãnh đạo Cục thuế tỉnh Hà Tĩnh đã giúp tôi trang thiết bị,
điều kiện thử nghiệm và triển khai hệ thống.
Cuối cùng học viên xin được gửi lời chia vui cùng gia đình, người thân, bạn
bè và các đồng nghiệp.

Hà Nội, tháng 10 năm 2015
HỌC VIÊN

Nguyễn Đình Thiết

5


DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
VM

Vitual Machine: máy ảo

ISA

Instruction Set Architecture: Kiến trúc tập lệnh

HW

Hardware: Phần cứng


SW

Sotware: Phần mềm

ABI

Applicationbinary interface: Giao diện ứng dụng nhị phân

API

Applicationprogramming interface: Giao diện lập trình ứng dụng

HLL

High Level Language: Ngôn ngữ cao cấp

VMM

Vitual Machine Monitor: Giao diện máy ảo

LPSW

Load the processor status word: nạp vào vi xử lý từ bản sao trạng
thái

PSW

Processor status word : bản sao trạng thái

TLB


Translation lookaside buffer: cache phần cứng quản lý bộ nhớ

ASID

Address-space identifers: Không gian địa chỉ

DMA

Direct Memory Access: Truy bộ nhớ trực tiếp

VMApp

Vitual Machine Application: ứng dụng chế độ người dùng

VMDriver

Vitual Machine Driver: trình điều khiển thiết bị

ID

Identification: dùng để nhận dạng một đối tượng đặc trưng, có tính
duy nhất

IOPS

Input/Output Per Second: IOPS quyết định độ nhanh và nhạy của
volume do bản chất IOPS càng cao thì càng nhiều thao tác có thể
thực hiện đồng thời một lúc, tốc độ xử lý càng nhanh. Điều đó trực
tiếp dẫn tới tốc độ hoạt động ứng dụng.


6


DANH SÁCH CÁC HÌNH VẼ, CÁC BIỂU BẢNG
Hình 1.1

Các giao diện khác nhau được cung cấp bởi hệ thống máy tính

Hình 1.2

Trừu tượng và ảo hóa được áp dụng để lưu trữ đĩa

Hình 1.3

Kiến trúc hệ thống máy tính. Các lớp giao tiếp hoạt động chủ yếu theo
chiều đứng qua các kiến trúc tập lệnh (ISA), giao diện ứng dụng nhị
phân (ABI), và giao diện lập trình ứng dụng (API).

Hình 1.4

Máy ảo tiến trình và hệ thống

Hình 2.1

Các phương pháp duy trì trạng thái ảo minh họa cho một File đăng ký.

Hình 2.2

Hoạt động chụp bởi VMM trong một Virtual Machine nghỉ và kích

hoạt máy ảo tiếp theo

Hình 2.3

Nguồn gốc và tổ chức máy ảo hệ thống

Hình 2.4

Các thành phần của VMM

Hình 2.5

Xử lý một lệnh đặc quyền trong một hệ điều hành máy khách

Hình 2.6

Sự tái lập quá trình ảo hóa

Hình 2.7

Mã caching (Bộ đệm) để tăng cường hiệu suất của các lệnh mô phỏng
quan trọng

Hình 2.8

Bản đồ bộ nhớ của máy ảo khách

Hình 2.9

Bảng trang bóng (shadow) minh hoạ việc lập bản đồ bộ nhớ


Hình 2.10

Ảo hoá các TLB trong hệ thống

Hình 2.11

Spooling trong một máy ảo hệ thống

Hình 3.1

Quan điểm người dùng về VMware System

Hình 3.2

Các thành phần của hệ thống VMware.

Hình 3.3

Sử dụng các chức năng giao diện hệ điều hành thư viện để ánh xạ một
thiết bị Giao diện ảo đến một giao diện thiết bị phần cứng

Hình 4.1

Mô hình phân bố hệ thống ứng dụng tại Cục thuế tỉnh Hà Tĩnh

Hình 4.2

Mô hình phân bố kiến trúc hệ thống máy ảo tại Cục thuế tỉnh Hà Tĩnh


7


PHẦN MỞ ĐẦU
1. Lý do chọn đề tài
Ảo hoá hiện đang phát triển manh mẽ và là xu hướng của nhiều hệ thống
công nghệ thông tin tại Việt Nam và thế giới nhằm tiết kiệm tối đa chi phí tài
nguyên phần cứng và vận hành hệ thống. Kiến trúc ảo hoá là nền tảng cho các công
nghệ ảo hóa nhằm tăng mức độ ảo hóa hệ thống, cho phép tăng hiệu suất làm việc
của máy tính. Một máy ảo là một môi trường máy tính được hiện thực bằng phần
mềm và nhờ vào sự chia sẽ tài nguyên phần cứng máy vật lý từ đó cho phép nhiều
hệ điều hành cùng chạy trên một máy tính được phân bố ổ cứng, card mạng và các
tài nguyên phần cứng khác một cách hợp lý. Lúc này mỗi hệ điều hành trên máy ảo
thực thi các tác vụ trong môi trường ảo được tạo riêng cho chúng và tạo cảm giác
như đang làm việc trực tiếp với môi trường phần cứng máy thật.
Ví dụ về một ích lợi của ảo hóa là đơn giản hóa quá trình nâng cấp các hệ
thống (trong một số trường hợp, không cần nâng cấp hệ thống), bằng việc cho phép
người sử dụng nắm bắt được trạng thái của máy ảo và sau đó chuyển trạng thái đó
trong tình trạng nguyên vẹn từ hệ thống cũ sang một hệ thống mới. Ngoài ra, ảo hóa
cũng tạo ra khả năng điện toán với hiệu quả cao hơn. Số lượng thực các bộ xử lý, bộ
nhớ và các nguồn lưu trữ … cần có cho hệ thống sẽ được điều chỉnh và quyết định
bởi các khả năng tính toán của ảo hóa để tối ưu hóa công suất sử dụng phần cứng,
thông thường, một hệ thống máy chủ ở các trung tâm dữ liệu thường hoạt động chỉ
với một tỷ lệ % nào đó trên tổng hiệu suất của hệ thống. Nói cách khác, tài nguyên
hệ thống còn dư thừa, công suất của máy không được dùng đến có thể còn khá lớn.
Xuất phát từ nhu cầu và bài toán thực tế tại cơ quan, học viên chọn đề tài
“Nghiên cứu kiến trúc máy ảo hệ thống và trển khai hệ thống đa nền tảng” để làm
cơ sở kiến trúc và xây dựng mô hình ảo hóa tại Cục thuế tỉnh Hà Tĩnh.
2. Lịch sử nghiên cứu
Như vậy, trong một hệ thống chưa dùng hết công suất đã nói ở phần 1, chính

là sự lãng phí tài nguyên thiết bị, lãng phí chi phí vận hành hoạt động. Đây chính là

8


sự lãng phí biết mà không tránh được. Các công nghệ trước đây chưa giải quyết
được và đến bây giờ với kiến trúc máy ảo hệ thống cộng với hệ thống xử lý đa nền
tảng đã khắc phục được điều này.
3. Mục đích, đối tƣợng và phạm vi nghiên cứu
Luận văn này nghiên cứu về kiến trúc máy ảo hệ thống và xử lý đa nền tảng
để có cơ sở kiến trúc, thiết kế và xây dựng nền tảng cho việc ảo hóa, điện toán đám
mây, là cơ sở cho việc xử lý đa nền tảng các hệ ứng dụng trên tài nguyên hệ thống
phần cứng, sử dụng tối ưu nguồn tài nguyên đó. Thông qua kiến trúc máy ảo hệ
thống và xử lý đa nền tảng để đáp ứng nhu cầu lưu trữ và xử lý dữ liệu ngày càng
lớn, dễ quản trị, giúp triển khai các máy chủ nhanh chóng, dễ dàng và tự động quản
lý các tài nguyên trong máy chủ tối ưu hơn như: Đơn giản hóa việc quản lý hạ tầng
bằng cách quản lý tập trung, tự động hóa việc quản lý các nguồn tài nguyên máy
chủ giúp các nhân viên IT không còn tốn quá nhiều thời gian vào việc quản lý các
máy chủ và đặc biệt là giảm các chi phí tốn kém trong việc mua sắm, trang bị các
máy chủ và thiết bị đi kèm.
4. Tóm tắt các luận điểm cơ bản và đóng góp của luận văn
Về lý thuyết: làm cơ sở để kiến trúc, thiết kế và xây dựng nền tảng cho việc
ảo hóa, điện toán đám mây trên tài nguyên hệ thống phần cứng, sử dụng tối ưu
nguồn tài nguyên hệ thống và thiết bị. Luận văn cũng đã đưa ra cái nhìn tổng quát
về sự tích hợp và đồng bộ hóa các ứng dụng chạy trên các môi trường kiến trúc máy
tính hay các hệ điều hành khác nhau, là cơ sở cho việc triển khai đa nền tảng các hệ
ứng dụng
Về ứng dụng: từ cơ sở lý thuyết trên, luận văn đã đi sâu vào thiết kế mô hình
kiến trúc và xây dựng hệ thống máy ảo tại Cục thuế tỉnh Hà Tĩnh với việc đánh giá
tài nguyên hệ thống hiện có của các máy chủ để thiết kế hợp lý các máy chủ ảo trên

hệ thống. Từ đó làm nền tảng cho việc triển khai hệ thống ứng dụng của cơ quan
đảm bảo toàn vẹn dữ liệu, dễ dàng quản trị và sử dụng.
Về bố cục luận văn: Luận văn được chia làm 4 chương.

9


* Chương 1: Tìm hiểu tổng quan về máy ảo. Giới thiệu về kiến trúc và các
giao diện của máy ảo. Đồng thời cũng đưa ra cái nhìn tổng quan về máy ảo tiến
trình và máy ảo hệ thống.
* Chương 2: Nghiên cứu chi tiết về máy ảo hệ thống. Chương này đưa ra một
số khai niệm cơ bản, cơ chế ảo hóa các tài nguyên vi xử lý, bộ nhớ, thiết bị vào ra…
đưa ra những kiến thức chuyên sâu về nguyên lý và cơ chế hoạt động của tài nguyên
phần cứng khi ảo hóa.
* Chương 3: Nghiên cứu về ảo hóa đa nền tảng. Cung cấp thêm kiến thức về
đa nền tảng trong ảo hóa, cơ chế làm việc của một hệ thống kép máy ảo trong môi
trường nhiều hệ điều hành.
* Chương 4: Tập trung về xây dựng mô hình kiến trúc máy ảo, đưa ra giải
pháp phân chia các Host sau khi ảo hóa trên hệ thống máy chủ hiện tại của Cục thuế
tỉnh Hà Tĩnh và từ đó đưa ra mô hình phân bố hệ thống ứng dụng cho hợp lý.
5. Phƣơng pháp nghiên cứu
Về lý thuyết: với phương pháp nghiên cứu phân loại, hệ thống hóa lý thuyết
cùng với phương pháp mô hình hóa, sắp xếp các nội dung khoa học theo từng
mãng, từng lĩnh vực, từng nhóm vấn đề có cùng chức năng và bản chất kiến trúc;
cùng một hướng phát triển tri thức thành một hệ thống trên cơ sở một mô hình lý
thuyết làm cho sự hiểu biết về lĩnh vực và đối tượng đầy đủ hơn bằng cách xây
dựng gần giống với đối tượng, mô tả, tái hiện lại đối tượng theo các cơ cấu, chức
năng của đối tượng.
Về thực nghiệm: Học viên đã tiến hành khảo sát, đánh giá hệ thống công
nghệ thông tin hiện tại của đơn vị, với tình trạng manh mún trong quy hoạch, bố trí

các máy chủ, các ứng dụng; khó quản trị, khó nâng cấp để đáp ứng các yêu cầu lâu
dài và đặc biệt là tiết kiệm chi phí mua sắm thêm các máy chủ mới và máy chủ thay
thế của cơ quan. Từ đó, nắm vững các nguyên tắc tổ chức và thiết kế hệ thống của
đơn vị, đề xuất và thử nghiệm mô hình nghiên cứu mới

10


Chƣơng 1: TÌM HIỂU TỔNG QUAN VỀ MÁY ẢO

1.1. Giới thiệu về kiến trúc của máy ảo
Ảo hóa đã trở thành một công cụ quan trọng trong việc thiết kế hệ thống máy
tính và các máy ảo được sử dụng trong một số lĩnh vực khác nhau, từ hệ điều hành
đến các ngôn ngữ lập trình và kiến trúc vi xử lý. Được thiết kế bởi các nhà phát
triển và người dùng bằng cách giải phóng các giao diện và tài nguyên truyền thống
còn hạn chế, máy ảo nâng cao khả năng tương tác giữa các phần mềm và là hệ
thống đảm bảo vững chắc và nền tảng linh hoạt.
Máy ảo (VM) là sản phẩm của các nhà phát triển với mục tiêu khác nhau.
Tuy nhiên, hiện vẫn có rất ít sự thống nhất về khái niệm máy ảo. Do đó, sẽ là hữu
ích để có một bước trở lại, xem xét sự đa dạng của kiến trúc máy ảo và mô tả chúng
một cách thống nhất, đưa các khái niệm ảo hóa và các loại máy ảo trong cùng một
quan điểm.
Trìu tượng và sự ảo hóa: Ảo hoá có thể xây dựng bằng nhiều cách khác nhau,
tổng quan về sự mô tả được trình bày bởi hai nhà khoa học Smirth và Nair (2005)[1].
Để hiểu được vấn đề, chúng ta cần nắm vững 4 loại giao diện tương ứng với 4 mức
khác nhau trong một hệ thống máy tính.
1. Giao diện giữa phần cứng và phần mềm, gồm các lệnh máy, được đưa ra
bởi bất kỳ chương trình nào.
2. Giao diện giữa phần cứng và phần mềm, gồm các lệnh máy, chỉ được gọi
bởi một số chương trình đặc biệt, ví dụ như hệ điều hành.

3. Giao diện giữa hệ điều hành và chương trình người dùng: gồm các lời gọi
hệ thống (system call) được cung cấp bởi hệ điều hành.
4. Giao diện giữa các thư viện: tập các giao diện chương trình ứng dụng
(APIs). Trong nhiều trường hợp các lời gọi hệ thống được che dấu bởi APIs.
Bản chất của ảo hoá là sự mô tả lại hành vi của các giao diện này.

11


Hình 1.1. Các giao diện khác nhau được cung cấp bởi một hệ thống máy tính [2]
Hướng tiếp cận ở đây là ảo hoá diễn ra theo cách là cung cấp một tần suất
phần cứng có đầy đủ các tập lệnh như một giao diện thật sự. Điểm cốt yếu là giao
diện này cung cấp đồng thời cho các chương trình khác nhau, kết quả là các hệ điều
hành khác nhau có thể chạy độc lập và đồng thời trên cùng một nền tảng (platform).
Ví dụ điển hình của dạng này là VMware, VMware ngày càng đáp ứng tính tin cậy
và bảo mật của các hệ phân tán, chúng cho phép cách ly một ứng dụng hoàn thiện
với môi trường của nó, sai sót xảy ra do lỗi hay tấn công về bảo mật sẽ không thể
tác động lên toàn bộ hệ thống.
Mặc dù tính phức tạp khó tin của chúng, song hệ thống máy tính vẫn tồn tại
và tiếp tục phát triển vì chúng được thiết kế với các giao diện như hệ thống phân
cấp có mức độ trừu tượng riêng biệt. Khi giao diện được sử dụng, thì sẽ xác định cụ
thể điều kiện để phát triển hệ thống con (computer subsystems) độc lập của cả hai
nhà thiết kế phần cứng và phần mềm tương đương. Các khái niệm về trừu tượng
làm đơn giản hóa sự mô tả chi tiết thực hiện ở cấp thấp hơn, do đó làm giảm sự
phức tạp của quá trình thiết kế.
Hình 1.2(a) cho thấy một ví dụ của sự trừu tượng ảo hoá áp dụng để lưu trữ
đĩa. Các hệ điều hành trừu tượng hóa chi tiết địa chỉ ổ cứng, ví dụ, rằng nó bao gồm
các sector và các track – để các đĩa sẽ xuất hiện với các phần mềm ứng dụng như
một bộ các tập tin có kích thước biến đổi. Sau đó các lập trình ứng dụng có thể tạo


12


ra cách viết và đọc các tập tin mà không cần biết cấu trúc và tổ chức vật lý của đĩa
cứng .

Hình 1.2. Trừu tượng và ảo hóa được áp dụng để lưu trữ đĩa [3].
(a) Trừu tượng hóa: cung cấp một giao diện đơn giản hóa các nguồn lực
tiềm ẩn.
(b) Ảo hóa: cung cấp giao diện khác nhau hoặc các tài nguyên khác tại cùng
một mức độ trừu tượng.
Kiến trúc tập lệnh của máy tính (ISA) sẽ minh họa rõ ràng những ưu điểm
của các giao diện cụ thể. Các giao diện này cho phép phát triển tương tác với hệ
thống con của máy tính với các nhà cung cấp và tại các thời điểm khác nhau. Ví dụ,
Intel và AMD thiết kế phát triển các bộ vi xử lý Intel IA-32 (x86), trong khi các nhà
phát triển Microsoft thực hiện biên soạn viết hướng dẫn cài đặt phần mềm đối với
các tập lệnh tương tự. Bởi vì cả hai nhà phát triển đáp ứng các đặc điểm kỹ thuật
của ISA, phần mềm có thể sẽ được thực hiện một cách chính xác trên bất kỳ PC nào
được xây dựng với một bộ vi xử lý IA-32.
Không may, giao diện được xác định cũng có những hạn chế của chúng. Hệ
thống con và các thành phần thiết kế chi tiết kỹ thuật cho giao diện đó sẽ không làm
việc với những thiết kế khác. Ví dụ, chương trình ứng dụng, khi phân phối như

13


những chương trình biên soạn, được gắn với một ISA cụ thể và phụ thuộc vào một
giao diện hệ điều hành cụ thể. Sự thiếu khả năng tương tác có thể được giới hạn,
đặc biệt là trong một thế giới của máy tính nối mạng, nơi đó là thuận lợi để di
chuyển các phần mềm tự do cũng như dữ liệu.

Ảo hóa cung cấp một cách để nhận biết được các ràng buộc xung quanh nó.
Ảo hóa một hệ thống hoặc một thành phần như một bộ xử lý, bộ nhớ, hoặc một thiết
bị I/O, ở một lớp trừu tượng có thể nhìn thấy các giao diện trên các bản đồ giao diện
của nó và các tài nguyên ở mức trên và mức dưới giao diện đó, có thể là một hệ
thống thực. Do đó, hệ thống thực xuất hiện như một hệ thống ảo khác nhau hoặc
thậm chí là nhiều hệ thống ảo.
Không giống như trừu tượng, ảo hóa không nhất thiết nhằm đơn giản hóa
hoặc ẩn thông tin chi tiết. Ví dụ, trong hình 1(b), ảo hóa biến đổi một đĩa lớn thành
hai đĩa ảo nhỏ hơn, mỗi trong số đó xuất hiện để có các bài hát và các lĩnh vực riêng
của mình. Ảo hóa sử dụng phần mềm trừu tượng tập tin như một bước trung gian để
cung cấp một ánh xạ giữa các ổ đĩa ảo và thực. Một đĩa ảo được chuyển thành một
tập tin ghi. Lưu ý rằng mức độ chi tiết được cung cấp tại các giao diện ổ đĩa ảo các
sector / track là không có sự khác nhau cho một đĩa thực.
1.2. Giao diện kiến trúc
Một cuộc thảo luận về các máy ảo cũng là một cuộc thảo luận về kiến trúc
máy tính theo nghĩa thuần túy của thuật ngữ này. Bởi vì việc cài đặt máy ảo (VM)
nằm ở giao diện kiến trúc, một trong các công việc chủ yếu để xây dựng một VM
chính là độ tin cậy mà nó thực hiện các giao diện này.
Kiến trúc, khi áp dụng cho các hệ thống máy tính, ta đề cập đến một đặc
điểm kỹ thuật chính của giao diện trong hệ thống, bao gồm các hành động logic của
các nguồn tài nguyên được quản lý thông qua giao diện đó. Thực hiện mô tả các
phương án thực tế của kiến trúc. Mức độ trừu tượng tương ứng với các lớp hoạt
động, cho dù trong phần cứng hay phần mềm, mỗi cái kết hợp với giao diện hoặc
kiến trúc của riêng mình.

14


Hình 1.3 cho thấy một số giao diện quan trọng và các lớp hoat động trong
một hệ thống máy tính điển hình. Ba trong số các giao diện này là tại hoặc gần ranh

giới HW/SW - kiến trúc tập lệnh, giao diện nhị phân ứng dụng và giao diện lập trình
ứng dụng, đặc biệt quan trọng cho việc xây dựng VM .

Hình 1.3. Kiến trúc hệ thống máy tính. Các lớp giao tiếp hoạt động chủ yếu
theo chiều đứng qua các kiến trúc tập lệnh (ISA), giao diện ứng dụng nhị phân
(ABI), và giao diện lập trình ứng dụng (API)[4].
1.3. Kiến trúc tập lệnh
ISA đánh dấu sự phân chia giữa phần cứng và phần mềm, bao gồm các giao
diện 3 và 4 trong Hình 1.3. Giao diện 4 đại diện cho người sử dụng ISA và bao gồm
những khía cạnh có thể nhìn thấy một chương trình ứng dụng. Giao diện 3, hệ thống
ISA, là một tập cha của người dùng ISA và bao gồm những khía cạnh chỉ để có thể

15


nhìn thấy phần mềm hệ điều hành chịu trách nhiệm về việc quản lý tài nguyên phần
cứng.
1.4. Giao diện ứng dụng nhị phân
ABI cho một chương trình truy cập vào các tài nguyên phần cứng và các dịch
vụ có sẵn trong hệ thống thông qua việc sử dụng ISA (giao diện 4) và giao diện hệ
thống (giao diện 2). ABI không bao gồm các lệnh hệ thống, thay vào đó, tất cả các
chương trình ứng dụng tương tác với các tài nguyên phần cứng gián tiếp bằng cách
gọi dịch vụ của hệ điều hành thông qua giao diện hệ thống (system call). Giao diện
hệ thống cung cấp cho hệ điều hành thực hiện các hoạt động trên danh nghĩa của
một chương trình sử dụng sau khi xác nhận tính xác thực và an toàn của chúng.
1.5. Giao diện lập trình ứng dụng
Các API cho phép các chương trình truy cập vào các tài nguyên phần cứng
và các dịch vụ có sẵn trong hệ thống thông qua việc sử dụng ISA (giao diện 4) bổ
sung với ngôn ngữ cấp cao (HLL) trong lời gọi thư viện (giao diện 1- Libraries).
Bất kỳ lời gọi nào của hệ thống này thường được thực hiện thông qua các thư viện.

Sử dụng một API cho phép các phần mềm ứng dụng được chuyển một cách dễ
dàng, thông qua biên dịch lại, với các hệ thống khác có cùng hỗ trợ các API.
1.6. Máy ảo tiến trình và Máy ảo hệ thống
Để hiểu một máy ảo là gì, điều đầu tiên đó là cần thiết xem xét ý nghĩa của
"máy" từ cả hai góc độ tiến trình và hệ thống.
Từ góc nhìn của một tiến trình khi sử dụng một chương trình, “máy” bao
gồm một không gian địa chỉ bộ nhớ logic được gán cho tiến trình cùng với các
hướng dẫn người sử dụng cấp và đăng ký cho phép thực thi các mã thuộc vào quá
trình này. Các máy thiết bị I/O (vào ra) có thể hiển thị thông qua các hệ điều hành,
và cách duy nhất quá trình này có thể tương tác với các hệ thống I/O là thông qua
các lời gọi của hệ điều hành. Do đó, ABI định nghĩa máy theo cách nhìn của một
tiến trình. Tương tự như vậy, các API xác định các đặc điểm máy theo cách nhìn
của chương trình ứng dụng HLL.

16


Từ góc độ các hệ điều hành và các ứng dụng nó hỗ trợ, toàn bộ hệ thống
chạy trên một máy tính cơ bản. Hệ thống là một môi trường thực thi đầy đủ mà có
thể hỗ trợ rất nhiều các tiến trình cùng một lúc. Các tiến trình chia sẻ một tập tin hệ
thống và các tài nguyên I/O khác. Môi trường hệ thống vẫn tiếp diễn theo thời gian
khi các tiến trình đến và đi. Hệ thống phân phối bộ nhớ thực và các tài nguyên I/O
cho các tiến trình và cho phép các tiến trình tương tác với các tài nguyên của chúng.
Từ góc nhìn hệ thống, cơ bản đặc điểm phần cứng là xác định máy tính; ISA (kiến
trúc tập lệnh) cung cấp giao diện giữa hệ thống và máy.
Cũng có nhiều quan điểm về tiến trình và hệ thống của "máy", về máy ảo
tiến trình và máy hệ thống. Máy ảo tiến trình là một nền tảng ảo mà thực hiện một
tiến trình độc lập. Đây là loại VM tồn tại chỉ để hỗ trợ tiến trình; nó được tạo khi
tiến trình được tạo ra và chấm dứt khi tiến trình này kết thúc. Ngược lại, một máy
ảo hệ thống cung cấp đầy đủ, môi trường hệ thống liên tục, có hệ điều hành hỗ trợ

cùng với nhiều tiến trình sử dụng. Nó cung cấp các hệ điều hành khách có quyền
truy cập vào tài nguyên phần cứng ảo, bao gồm mạng, thiết bị I/O, và có thể một
giao diện người dùng đồ họa cùng với một bộ xử lý và bộ nhớ.
Tiến trình hoặc hệ thống chạy trên một máy ảo như là vị khách, trong khi các
nền tảng cơ bản để hỗ trợ các máy ảo là máy chủ. Các phần mềm ảo hóa mà thực
hiện một tiến trình VM thường được gọi là thời gian chạy. Các phần mềm ảo hóa
trong một hệ thống máy ảo thường được gọi là màn hình (giao diện) máy ảo
(VMM).

17


Hình 1.4. Máy ảo tiến trình và hệ thống [5] .
(a) Trong máy ảo tiến trình, phần mềm ảo hóa tập hợp các hệ điều hành dịch
từ tập lệnh người sử dụng cung cấp từ một trong những nền tảng khác.
(b) Trong một máy ảo hệ thống, phần mềm ảo hóa dịch ISA sử dụng bởi một
nền tảng phần cứng của người khác
Hình 1.4 mô tả máy ảo tiến trình và hệ thống, với giao diện tương thích minh
họa bằng đồ thị chia lưới để làm ranh giới. Trong một máy ảo tiến trình, các phần
mềm ảo hóa là tại ABI hoặc API, Hệ điều hành và HW kết hợp. Thời gian chạy mô
phỏng tập lệnh người sử dụng cung cấp cho hệ điều hành hoặc lời gọi thư viện.
Trong một hệ thống máy ảo, phần mềm ảo hóa là giữa các phần cứng máy máy chủ
và phần mềm của khách. VMM mô phỏng các ISA (kiến trúc tập lệnh) phần cứng
để phần mềm của khách có khả năng thực hiện một ISA khác từ một trong những
nhiệm vụ đang thực hiện trên máy chủ. Tuy nhiên, trong nhiều ứng dụng máy ảo hệ
thống, VMM không thực hiện mô phỏng tập lệnh; đúng hơn, vai trò chính của nó là
cung cấp các nguồn tài nguyên phần cứng ảo hóa.

18



Chƣơng 2: NGHIÊN CỨU CHI TIẾT VỀ MÁY ẢO HỆ THỐNG
2.1. Một số khái niệm cơ bản
Trong phần này chúng ta sẽ được giới thiệu về các bộ phận khác nhau của
một nền tảng phần cứng, với một cái nhìn để hiểu được cách ảo hóa có thể đạt được
2.1.1. Biểu hiện bên ngoài
Những ý tưởng về máy tính đa nhiệm là một phần quan trọng của máy ảo hệ
thống (VM systems). Ý tưởng này có thể được thực hiện hoàn toàn bằng phần mềm
hoặc thông qua một bản sao của một tập hợp con của các tài nguyên phần cứng. Ví
dụ, có thể có trường hợp các tài nguyên vật lý được sử dụng trực tiếp bởi người
dùng cá nhân, cụ thể là bàn phím, màn hình và các thiết bị ngoại vi cá nhân, chẳng
hạn như một ổ đĩa CD ROM, được nhân rộng, với một bộ dành riêng cho mỗi người
dùng, trong khi phần còn lại của phần cứng được chia sẻ thông qua các phần mềm
ảo hóa.
Ngoài ra, khi một người dùng duy nhất muốn chạy hai hệ điều hành trên
cùng một phần cứng, không cần nhân rộng bất kỳ các thiết bị vật lý. Người sử dụng
có thể được cung cấp một ảo hóa chạy cả hai hệ điều hành cùng một lúc. Bằng cách
sử dụng một bộ chuyển mạch phần cứng hay, thông thường hơn, bằng cách nhập
vào một dãy phím đặc biệt trên bàn phím, tất cả các thiết bị cá nhân có thể được
chuyển từ một máy ảo khác đến.
Trong một số môi trường máy ảo hệ thống, hệ điều hành có thể được coi là
một trong những chức năng quan trọng hơn so với những cái khác. Giao diện của
người dùng đầu tiên sẽ cung cấp một cửa sổ hiển thị giao diện đầy đủ của người
dùng thứ hai, tương tác với các ứng dụng chạy trên hệ điều hành thứ hai diễn ra
trong cửa sổ này. Trong một máy ảo được lưu trữ, ví dụ, nếu các hệ điều hành máy
chủ là Windows, một cửa sổ đồ họa có thể được thiết lập trên giao diện máy tính để
bàn tương tác với một máy ảo trên cùng một nền tảng. Giải pháp này cũng tương tự
như cửa sổ DOS có thể được đưa lên trong giao diện desktop của Windows để chạy
các ứng dụng DOS cũ.


19


2.1.2. Quản lý các trạng thái
Các trạng thái kiến trúc của một máy tính được chứa trong và duy trì bởi các
tài nguyên phần cứng của máy. Trên khía cạnh hiệu suất (thực hiện), tất cả các tài
nguyên phần cứng là không tương đương. Thường có một hệ thống phân cấp kiến
trúc của các tài nguyên phần cứng, từ đăng ký ở mức trên cùng của hệ thống phân
cấp đến các bộ lưu trữ thứ cấp (ví dụ như các ổ đĩa) vào cuối cùng của hệ thống
phân cấp. Trong một máy ảo hệ thống, mỗi máy ảo có thông tin trạng thái kiến trúc
riêng của mình và có thể có hoặc có thể không có đủ tài nguyên trong một nền tảng
phần cứng máy chủ để ánh xạ mỗi phần tử của một trạng thái máy khách đến cấp độ
gốc của nó trong hệ thống phân cấp bộ nhớ của máy chủ. Ví dụ, một trạng thái đăng
ký máy khách thực sự có thể được tổ chức trong bộ nhớ chính của các nền tảng máy
chủ như là một phần của một khối đăng ký chung.
Trong hoạt động bình thường, định kỳ các VMM (giao diện máy ảo) chuyển
mạch kiểm soát giữa các máy ảo khách. Không phân biệt nơi mà các trạng thái đang
diễn ra các hoạt động thực sự về tình trạng của máy ảo khách đang được thực hiện,
việc duy trì các trạng thái trên các máy chủ sẽ được điều chỉnh vì các trạng thái đó
là trên nền tảng cơ bản của máy khách. Có hai cách cơ bản để quản lý tình trạng của
khách.
Một cách là sử dụng một mức gián tiếp, bằng cách tổ chức trạng thái cho mỗi
máy khách tại các địa điểm cố định trong hệ thống phân cấp bộ nhớ của máy chủ
với một màn hình VMM quản lý con trỏ chỉ ra trạng thái của máy khách đang hoạt
động. Khi VMM chuyển mạch giữa các hệ thống của máy khách, nó thay đổi con
trỏ để phù hợp với sự hiện hành của máy khách. Điều này được minh họa trong hình
2.1, nơi con trỏ thực sự chỉ đến khối đăng ký của máy ảo khách đang hoạt động.
Điều này tương tự với tình trạng trong hệ thống bộ nhớ ảo, nơi bảng con trỏ được sử
dụng bởi hệ điều hành để trỏ đến các không gian địa chỉ của tiến trình đang hoạt
động.

Cách tiếp cận của việc sử dụng gián tiếp có thể tương đối không hiệu quả nếu
các tài nguyên bộ nhớ mà giữ trạng thái trong các máy ảo khách (VM) có đặc điểm

20


khác biệt so với những cái trên nền tảng gốc (cơ bản), như trong ví dụ của hình 2.1,
nơi mà trạng thái đăng ký thực sự là được tổ chức trong bộ nhớ . Trong trường hợp
như vậy, để thực hiện một hoạt động sao chép từ một đăng ký ở máy ảo 2 đến một
đăng ký B ở cùng máy ảo, VMM sẽ phải thực hiện một bản sao bộ nhớ - tới - bộ
nhớ bằng cách tải các giá trị trong vị trí bộ nhớ đại diện đăng ký A vào một số đăng
ký tạm thời và sau đó lưu trữ các giá trị trong vị trí bộ nhớ tương ứng để đăng ký B.
Bản sao này có hai lệnh truy cập bộ nhớ và có thể đưa ra thêm câu lệnh nếu một địa
chỉ đăng ký được nạp với một vị trí con trỏ đến các tập tin đăng ký trong bộ nhớ.

Hình 2.1: Các phương pháp duy trì trạng thái ảo minh họa cho một File
đăng ký. (a) Sử dụng gián tiếp, (b) Bằng sao chép. Hộp ở bên phải chỉ ra các hành

21


động thực hiện khi kích hoạt một máy ảo và sao chép một giá trị đăng ký. Trong
trường hợp đầu tiên, giá trị tương ứng với một thanh ghi được nạp từ một bảng
trong bộ nhớ và sao chép lại cho một vị trí trong bảng. Trong trường hợp thứ hai,
các thanh ghi được sử dụng trực tiếp để thực hiện việc di chuyển [6].
Để tránh việc thiếu hiệu quả này, một cách tiếp cận thứ hai cho việc quản lý
trạng thái của máy khách là sao chép thông tin trạng thái của một máy khách ở mức
độ nguyên sơ (ban đầu) của nó trong hệ thống phân cấp bộ nhớ, bất cứ khi nào nó
được kích hoạt bởi các VMM và sao chép nó trở lại khi các máy khách khác nhau
được kích hoạt. Ví dụ, trong hình 2.1.b, VMM bản sao toàn bộ các nội dung đăng

ký của khách vào tập tin đăng ký của máy chủ lúc máy ảo 2 được kích hoạt bởi các
VMM (sau khi lưu sổ đăng ký của máy khách trước). Với phương pháp này, các
hoạt động di chuyển một giá trị từ đăng ký A đến đăng ký B được thực hiện bằng
cách trực tiếp thực hiện một lệnh di chuyển đăng ký ban đầu. Trong nhiều hệ thống
cài đặt VM, mục tiêu là để thực thi mã của máy khách nguyên bản (nghĩa là không
có mô phỏng) trên các nền tảng máy chủ. Vì vậy, trong ví dụ trên, sau thời gian đầu
của việc chuyển đổi ra các đăng ký máy ảo cũ và chuyển đổi trong việc đăng ký của
máy ảo 2, có thể tiến hành thực hiện ở mức tương tự như trên một máy khách chạy
mô phỏng.
Sự lựa chọn giữa gián tiếp và sao chép tùy thuộc vào tần suất sử dụng và cho
dù trạng thái của máy khách được quản lý bởi VMM là chiếm giữ một cách khác
nhiều hơn các tài nguyên phần cứng so với trên nền tảng ban đầu. Để biết thông tin
trạng thái thường xuyên được sử dụng, chẳng hạn như việc đăng ký mục đích
chung, để trao đổi các trạng thái của máy ảo, để các tài nguyên thực sự tương ứng
mỗi khi máy ảo được kích hoạt.
2.1.3. Kiểm soát tài nguyên
Trong một môi trường máy ảo hệ thống, tài nguyên phần cứng, bao gồm tài
nguyên bộ vi xử lý, được gán cho một máy ảo tại thời điểm nó được tạo ra theo
thông số kỹ thuật cấu hình. Một khi các tài nguyên được trao cho một máy ảo
khách, điều quan trọng là phải có một cách cho VMM nhận được chúng trở lại để

22


chúng có thể được gán cho một máy ảo khác. Như vậy, VMM phải duy trì kiểm soát
tổng thể của tất cả các tài nguyên phần cứng, mặc dù chúng đang tạm thời được sử
dụng bởi các máy ảo khách đang chạy. Phần này xem xét các cách thức mà điều này
có thể đạt được.
Lưu ý, đầu tiên là một vấn đề tương tự phát sinh trong trường hợp thời gian
quy ước hệ thống chia sẻ nhiều công việc được đồng thời thực thi trên máy, với mỗi

công việc có thể truy cập tức thì vào tài nguyên của mình tại bất kỳ thời gian nhất
định nào. Tuy nhiên, có một số tài nguyên trong máy mà không thể truy cập trực
tiếp đến các ứng dụng người dùng có thể truy cập, nhưng chỉ cho hệ điều hành. Một
tài nguyên như vậy là khoảng thời gian đếm, trong đó, sau khi được nạp với một giá
trị của các hệ điều hành, đếm ngược đồng hồ và kích hoạt một ngắt khi giá trị nó
giữ trở thành số không. Trước khi truyền cho điều khiển một tiến trình sử dụng, hệ
điều hành khởi tạo bộ đếm thời gian với thời gian tối đa thời gian nó sẽ cho phép
tiến trình sử dụng để chạy. Các bộ đếm thời gian sẽ đảm bảo việc kiểm soát được
việc chuyển giao lại cho các hệ điều hành trong khoảng thời gian tối đa gián đoạn
sau đó. Như vậy, các hệ điều hành sử dụng bộ đếm thời gian để giữ quyền kiểm soát
của các bộ vi xử lý bằng cách đảm bảo rằng không có ứng dụng người dùng có thể
chạy trong một thời gian nhất định. Vì các hệ điều hành có quyền kiểm soát các bộ
vi xử lý, nên nó có thể kiểm soát tất cả các tài nguyên khác.
Tình trạng này cũng tương tự như trong môi trường máy ảo hệ thống. Ở đây,
vấn đề chính là thời gian chia sẻ tài nguyên giữa các máy ảo. Chúng ta sẽ thấy trong
phần 2.2.1 rằng một cách thuận tiện để cung cấp các VMM với sự kiểm soát tổng
thể là cho VMM chặn tất cả các truy cập đến cái gọi là tài nguyên đặc quyền, chẳng
hạn như bộ đếm thời gian. Vì vậy, các tài nguyên đặc quyền không được sử dụng
trực tiếp bởi các máy ảo riêng biệt - đúng hơn là VMM mô phỏng các hoạt động của
các tài nguyên ở tất cả các thời gian. Thay vì cho phép hệ điều hành trong một máy
ảo với trường bộ đếm thời gian gián đoạn, ví dụ, các VMM đầu tiên xử lý các ngắt
của chính nó. Việc xử lý bao gồm đối với cả các mã ngắt bộ đếm thời gian dành cho
trạng thái của máy ảo khách hiện tại, xác định các máy ảo tiếp theo được kích hoạt,

23


và tải (load) trạng thái cho các máy ảo tiếp theo sẽ được chạy. Việc hoàn thành này,
như đã đề cập trước đó, bằng cách thay đổi con trỏ, bằng cách sao chép trạng thái
thành tài nguyên phần cứng, hoặc bằng cả hai cách làm. Hình 2.2 - mô tả lịch trình

các hoạt động thực hiện bởi VMM.

Hình 2.2- Hoạt động chụp bởi VMM trong một Virtual Machine nghỉ và kích
hoạt máy ảo tiếp theo [7].
Có thể có thêm cơ hội cho các VMM để có được quyền kiểm soát hệ thống
khác thông qua ngắt đếm khoảng thời gian. Ví dụ, từ các lệnh đặc quyền gặp phải
trong chế độ người dùng, như đã nói, bị chặn và mô phỏng bởi các VMM, VMM
tăng kiểm soát bất cứ khi nào các lệnh đặc quyền của hệ điều hành máy khách (cơ
chế để làm như vậy được mô tả trong mục 2.2).
Một hệ thống công bằng trong phân bổ tài nguyên phần cứng cho các máy ảo
là một trong các máy ảo có được quyền sở hữu của tài nguyên trong lần lượt một
lượng khoảng thời gian bằng nhau. Vấn đề ở đây là tương tự như các vấn đề phát
sinh trong hệ điều hành multiprogrammed (đa chương trình). Nếu thời gian phân bổ
cho mỗi máy ảo là lớn, có khả năng rằng các tài nguyên không sử dụng một cách tối
ưu. Mặt khác, nếu thời gian phân bổ là nhỏ, các phí phát sinh trong chuyển đổi giữa
các máy ảo bắt đầu suy giảm hiệu suất.
Để một chương trình làm việc, hệ điều hành máy khách trên một máy ảo phải
bị từ chối truy cập trực tiếp đến các thiết bị đếm khoảng thời gian để nó không thể
sắp xếp lại bộ đếm thời gian gián đoạn tiếp theo. Hơn nữa, để thực hiện hoạt động
theo một máy ảo hoàn toàn rõ ràng, hệ điều hành khách nên không được phép đọc
các giá trị bộ đếm thời gian thực được thiết lập bởi VMM. (Sự minh bạch này là cần

24


×