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

NGHIÊN CỨU XÂY DỰNG HỆ THỐNG QUẢN LÝ VÀ CẤP PHÁT TÀI NGUYÊN CHO HỆ THỐNG VIRTUAL LAB TRÊN NỀN ĐIỆN TOÁN ĐÁM MÂY

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 (1.63 MB, 52 trang )

i





ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH




ĐỒ ÁN THỰC TẬP TỐT NGHIỆP


NGHIÊN CỨU XÂY DỰNG HỆ THỐNG QUẢN LÝ VÀ CẤP
PHÁT TÀI NGUYÊN CHO HỆ THỐNG VIRTUAL LAB
TRÊN NỀN ĐIỆN TOÁN ĐÁM MÂY




BỘ MÔN: HỆ THỐNG & MẠNG MÁY TÍNH
GVHD : TS. PHẠM TRẦN VŨ
SVTH1 : NGUYỄN BÁ HUỲNH QUANG - 50801668
SVTH2 : PHẠM MINH LUÂN - 50801192


TP. HỒ CHÍ MINH – 06/2012
ii



LỜI CÁM ƠN

Trong quá trình học tập và nghiên cứu tại khoa Khoa học và Kỹ thuật máy tính, trường
đại học Bách khoa thành phố Hồ Chí Minh, chúng tôi đã nhận được rất nhiều sự hỗ trợ,
giúp đỡ từ phía các thầy cô, bạn bè, người thân để có thể thực hiện hoàn tất quá trình
nghiên cứu đến giai đoạn hiện nay.
Xin chân thành cám ơn các thầy cô, đặc biệt là TS. Thoại Nam, TS. Phạm Trần Vũ đã
dành nhiều thì giờ quý báu của mình để hỗ trợ, định hướng, truyền đạt kiến thức, kinh
nghiệm cho chúng tôi hoàn thành đề tài nghiên cứu của mình.
Chân thành cám ơn anh Duy đã theo sát chúng tôi trong quá trình nghiên cứu, với kinh
nghiệm và kiến thức của một người đàn anh, luôn sẵn sàng góp ý và hướng dẫn cho chúng
tôi tận tình.
Cám ơn các thành viên trong nhóm nghiên cứu điện toán đám mây của khoa Khoa học và
Kỹ thuật máy tính khóa 2008. Với mong muốn hoàn thành hệ thống Virtual Lab trên nền
điện toán đám mây, các bạn đã hỗ trợ, hợ tác nhiệt tình với chúng tôi, cùng nhau xây
dựng, thiết kế, sửa chữa sản phẩm để dần dần có thể đưa vào hoạt động. Sự nhiệt tình của
các bạn là nguồn cổ vũ, động viên lớn cho chúng tôi hoàn thành đề tài của mình.
Sau cùng, chúng tôi xin chân thành cám ơn gia đình, bạn bè, người than đã động viên,
giúp đỡ về mặt vật chất lẫn tinh thần trong quãng thời gian học tập và nghiên cứu của
chúng tôi.
Hi vọng rằng sản phẩm chúng tôi làm ra, cùng với đề tài nghiên cứu của các nhóm khác
trong khoa, có thể đóng góp vào sự nghiệp giáo dục, đào tạo và nghiên cứu của khoa
Khoa học và Kỹ thuật máy tính trường đại học Bách khoa Thành phố Hồ Chí Minh.
iii


MỤC LỤC
PHẦN I: MỞ ĐẦU 1
PHẦN II: NỘI DUNG 5

CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 5
1.1. Giới thiệu tổng quan về Virtual Lab 5
1.2. Nội dung của đồ án 6
1.3. Mục tiêu 6
1.1.1 Giai đoạn thực tập 6
1.1.2 Giai đoạn luận văn 7
1.4. Lịch trình triển khai, phương pháp triển khai 7
CHƯƠNG 2 CƠ SỞ KỸ THUẬT – CÁC HƯỚNG THỰC HIỆN 9
2.1 Cloud computing 9
2.1.1 Giới thiệu về cloud computing (Điện toán đám mây) 9
2.1.2 Đặc điểm , các mô hình của điện toán đám mây 10
2.1.3 Phân loại điện toán đám mây theo phạm vi 13
2.2 Công nghệ ảo hóa 13
2.2.1 Giới thiệu công nghệ ảo hóa 13
2.2.2 Các kỹ thuật ảo hóa 15
2.2.3 Giới thiệu KVM 17
2.3 Tổng quan về OpenNebula 18
2.3.1 Các chức năng 18
2.3.2 Các thành phần chính 19
2.3.3 Mô hình hệ thống OpenNebula 21
iv

2.3.4 Một vài thành phần trong OpenNebula 23
CHƯƠNG 3 GIẢI PHÁP CHI TIẾT 28
3.1 Tổng quan 28
3.2 Các tương tác chính 29
3.2.1 Giữa Resources Management System( RMS) và Monitor 29
3.2.2 Giữa Resources Management System và module Scheduling 30
3.2.3 Giữa Resources Management System và Accounting& Pricing (AP) 31
3.3 Thiết kế database 31

CHƯƠNG 4 DEMO HỆ THỐNG 37
4.1 Giao diện web tổng quan 37
PHẦN III: TỔNG KẾT 44
1. Các kết quả đạt được 44
1.1. Về mặt lý thuyết 44
1.2. Về mặt thực nghiệm 44
2. Nhận xét, đánh giá 44
3. Hướng phát triển ở giai đoạn luận văn. 45







v

DANH MỤC CÁC HÌNH VẼ

Hình 1.1. Sơ đồ hệ thống Virtual Lab 5
Hình 1.2. Sơ đồ phân loại người dùng trong hệ thống 6
Hình 2.1. Công nghệ ảo hóa 11
Hình 2.2. Công nghệ ảo hóa 14
Hình 2.3. Full-virtualization 15
Hình 2.4. Para-virtualization 16
Hình 2.5. OS-level virtualization 17
Hình 2.6. Các thành phần khi ảo hóa với KVM 18
Hình 2.7. Tổng quan về OpenNebula 19
Hình 2.8. Các thành phần của openNebula 20
Hình 2.9. Sơ đồ tổng quan kiến trúc hệ thống sử dụng OpenNebula 21

Hình 2.10. Mô hình Datastore trong hệ thống OpenNebula 22
Hình 2.11. Mô hình một host có 2 bridge, một gắn với card mạng eth0, một gắn với
card mạng eth1 23
Hình 2.12. OpenNebula interface 24
Hình 3.1. Sơ đồ tổng quan của hệ thống virtual lab 28
Hình 3.2. Sơ đồ tương tác giữa Resource Management System và Monitor system . 30
Hình 3.3. Sơ đồ tương tác giữa Resources Management System (RMS) và Scheduler
31
Hình 3.4. User phải được lưu trữ và quản lý hai cơ sở dữ liệu khác nhau 32
Hình 3.5. Thuộc tính vm_id của bảng res_vm_time tham chiếu đến mã máy ảo trong
hệ thống OpenNebula 33
vi

Hình 3.6. Thiết kế lớp Java để duy trì các quan hệ giữa hai cơ sở dữ liệu độc lập 34
Hình 3.7. Một số hàm đặc trưng của VM_TIME Dao 34
Hình 3.8. Ví dụ các hàm truy cập đến OpenNebula của lớp VM_TIME 35
Hình 3.9. Lược đồ EER của hệ thống Virtual Lab 36
Hình 4.1. Trang đăng nhập 37
Hình 4.2. Trang About us 37
Hình 4.3. Danh sách các môn học 38
Hình 4.4. Thêm một môn học vào cơ sở dữ liệu 38
Hình 4.5. Sau khi thêm thành công môn học 39
Hình 4.6. Danh sách các bài thực hành 39
Hình 4.7. Thêm một bài thực hành 40
Hình 4.8. Sau khi thêm bài thực hành thành công 40
Hình 4.9. Template máy ảo dành cho bài Lab1 41
Hình 4.10. Máy ảo được tạo thành công 41
Hình 4.11. Dùng VNC client để kết nối đến máy ảo 43

1


PHẦN I: MỞ ĐẦU

Những năm qua, nền công nghệ thông tin của thế giới phát triển như vũ bão. Hàng loạt
công nghệ mới ra đời đã thay đổi một phần rất lớn cách làm việc, học tập, sinh hoạt, giải
trí của con người.
Thay vì phải ngồi hàng giờ ở trước bàn làm việc để cập nhật tin tức, kiểm tra hộp thư điện
tử, đọc tài liệu, người ta có thể làm những việc như vậy ở mọi nơi với chiếc laptop hoặc
smart phone của mình.
Thay vì phải lo lắng sao lưu những dữ liệu quan trọng của mình ở nhiều nơi, tốn nhiều
thời gian và tiền bạc, người ta chỉ đơn giản sử dụng một dịch vụ lưu trữ điện toán đám
mây như Dropbox, Sky Drive
Thay vì phải liên lạc lại với người thân một cách khó khăn để xin lại số liên lạc khi không
may mất thiết bị điện thoại di động, người dùng chỉ đơn giản đưa toàn bộ danh bạ của
mình lên tài khoản Google hoặc Apple của mình. Một thao tác đơn giản là đăng nhập vào
tài khoản hỗ trợ đồng bộ hóa danh bạ, lịch làm việc chúng ta không còn phải lo lắng đến
rủi ro mất hết danh sách liên lạc.
Thay vì phải bỏ ra một khoảng tiền khổng lồ để đầu tư cũng như duy trì hệ thống server
cho mình, người ta chỉ cần thuê một dịch vụ máy ảo VPS trên nền tảng điện toán đám
mây, những nhu cầu cho một máy tính mạnh, hạ tầng mạng ổn định, có nhân viên bảo trì
thường xuyên được đáp ứng một cách dễ dàng với chi phí hết sức phải chăng.
Vâng, hàng loạt sự thay đổi của cuộc sống được mang lại từ sự phát triển của công nghệ
thế kỷ 21, mà nổi bật trên hết là điện toán đám mây, đã chứng minh cho sự hiệu quả và
ích lợi mà công nghệ này mang lại.
Nhận thức được ích lợi và hiệu quả mà điện toán đám mây mang lại cho cuộc sống, chúng
tôi quyết định tham gia vào đề tài nghiên cứu xây dựng một thành phần trong hệ thống
Virtual Lab của trường đại học Bách khoa thành phố Hồ Chí Minh sử dụng các công nghệ
của điện toán đám mây.
2


Hiện nay, để phục vụ nhu cầu thực hành các môn học trong chương trình đào tạo của nhà
trường, mỗi sinh viên trong giờ học cần phải có một máy tính với cấu hình đủ mạnh, đã
cài đặt sẵn các phần mềm cần thiết. Thực tế công tác quản lý thiết bị của nhà trường đã
cho thấy nhiều khó khăn và bất cập.
Thứ nhất, một sinh viên muốn thực hành môn học của mình phải đợi đến giờ lên lớp, vào
đến phòng lab của mình. Điều đó gây khó khăn cho nhu cầu tự học, tự tìm hiểu của sinh
viên. Để khắc phục tình trạng này, nhiều sinh viên đã chủ động laptop của mình đến
phòng lab để chép tài liệu, cài đặt phần mềm, thực hành. Dĩ nhiên không phải sinh viên
nào cũng có đủ điều kiện để tự trang bị laptop cho mình. Đó là chưa kể đến nguy cơ mất
cắp thường xuyên xảy ra trong nhà trường, làm ảnh hưởng đến tâm lý và đời sống của
sinh viên.
Thứ hai, vấn đề bảo mật thông tin của sinh viên chưa được đảm bảo tốt. Do nhiều người
cùng có quyền truy cập vào một tài toản trên cùng một máy tính, nguy cơ lây nhiễm virus
vào hệ thống là hoàn toàn có thể xày ra. Thông tin cá nhân, mã nguồn của sinh viên cũng
có thể dễ dàng bị đánh cắp. Hiện nay rất nhiều môn học có quy định bài làm của các sinh
viên không được sao chép lẫn nhau, nếu có bất kỳ sự trùng hợp bất thường nào về mã
nguồn cũng có thể dẫn đến một án kỹ luật nặng cho sinh viên.
Thứ ba, chi phí để bảo trì, tu sửa hệ thống máy tính từ phần cứng đến hệ điều hành, phần
mềm là rất lớn. Thời gian để sửa chữa một hỏng hóc nhỏ cũng chiếm khá nhiều thì giờ.
Do đó, tại các phòng lab, thường xuyên xảy ra tình trạng sinh viên không thể sử dụng
máy tính của mình vào bài thực hành. Điều đó làm giảm chất lượng của tiết thực hành đi
đáng kể.
Từ những bất cập kể trên, hệ thống Virtual Lab cần phải nhanh chóng đươc xây dựng và
triển khai để khắc phục những khuyết điểm hiện tại của mô hình truyền thống. Hệ thống
Virtual Lab dựa trên nền tảng điện toán đám mây, nghĩa là cung cấp dịch vụ máy ảo cho
nhu cầu thực hành của sinh viên. Mỗi tiết thực hành của sinh viên sẽ được cấu hình sẵn tại
server của hệ thống. Khi có nhu cầu thực hành, sinh viên chỉ cần đăng nhập vào tài khoản
của mình, chọn môn học, tiết thực hành và bật máy ảo đã được cấu hình sẵn lên. Như vậy,
sinh viên có thể thực hành ở bất cứ nơi đâu, bất cứ thời gian nào, bất cứ điều kiện nào,
3


miễn là có một chiếc máy tính cấu hình vừa phải kết nối mạng Internet. Vấn đề bảo mật
cũng được giải quyết rất tốt vì mỗi sinh viên chỉ có thể đăng nhập vào máy ảo của mình,
tài khoản của mình mà không có quyền truy cập vào máy ảo của người khác. Bên cạnh
đó, khả năng hỏng hóc xảy ra cũng ít hơn. Về phần cứng, người quản trị chỉ cần quan tâm
bảo trì server của mình chứ không phải lo bảo trì hàng trăm máy tính một cách thường
trực như trước đây. Về phần mềm, người quản trị chỉ cần cài đặt một lần lên máy ảo khi
cấu hình ban đầu. Khi có vấn đề về phần mềm xảy ra, sinh viên chỉ cần khôi phục về
trạng thái ban đầu thông qua một vài thao tác đơn giản và tốn rất ít thời gian.
Hệ thống Virtual Lab nếu được xây dựng thành công sẽ làm thay đổi một cách toàn diện
cách thức dạy và học thực hành trong trường Đại học Bách khoa thành phố Hồ Chí Minh.
Sử dụng nó, sinh viên có thể học thực hành ở bất cứ nơi đâu, bất cứ thời gian nào mà
không phải lo lắng, quan tâm đến các vấn đề bất cập gặp phải trước đây. Hệ thống chắc
chắn sẽ góp phần đẩy mạnh phong trào học tập và nghiên cứu trong nhà trường, nâng cao
chất lượng đào tạo, giảm thiểu chi phí vận hành.
Công việc của chúng tôi là xây dựng một web portal dùng để quản lý và cấp phát tài
nguyên cho hệ thống virtual lab của trường đại học bách khoa dựa trên công nghệ điện
toán đám mây và phần mềm OpenNebula. Có nhiều loại tài nguyên trong hệ thống Virutal
lab mà quan trọng đó là các máy chủ vật lý, các máy này nên có cấu hình mạnh và có khả
năng ảo hóa để các máy ảo có thể chạy trên nó. Tài nguyên thứ hai cũng quan trọng đó
chính là các template, một template trong openNebula có thể hiểu tương tự như là một
“bản vẽ kĩ thuật” trong xây dựng, bản vẽ kĩ thuật dùng để mô tả ngôi nhà cần xây thì
template được dùng để mô tả máy ảo, ban đầu tất cả các máy ảo được khởi tạo từ một
template thì sẽ giống nhau. Hai tài nguyên trên đã được openNebula quản lý rất tốt nên
Web portal sẽ không hiện thực lại những chức năng đó. Hệ thống của chúng tôi sẽ tập
trung giải quyết các vấn đề liên quan đến học vụ trong trường đại học Bách Khoa. Cụ thể
là mỗi một giảng viên khi bắt đầu một học kì mới sẽ đảm nhiệm một số môn học nào đó,
mỗi một môn học sẽ bao gồm nhiều bài thực hành và các sinh viên học môn đó. Mỗi bài
thực hành sẽ dùng một template đã được định nghĩa sẵn, template này sẽ mô tả máy ảo và
các công cụ cần thiết dùng cho bài thực hành đó. Giảng viên sẽ sử dụng hệ thống để quản

4

lý môn học, các sinh viên tham gia vào môn học đó và các bài thực hành cũng như là các
template được dùng với bài thực hành đó. Các bài thực hành sẽ có thời gian bắt đầu và kết
thúc dựa vào thời khóa biểu của các lớp học ở đầu mỗi học kì, khi đến thời điểm đó, một
số lượng máy ảo sẽ được khởi động tùy theo số lượng sinh viên tham gia vào bài thực
hành đó. Mỗi một máy ảo trong danh sách sẽ được cấp cho một sinh viên sử dụng. Hệ
thống sẽ xây dựng các cơ chế dùng để cấp phát và quản lý tài nguyên máy ảo.
Đồ án chúng tôi làm còn gặp phải nhiều vấn đề chưa thể giải quyết được. Hy vọng trong
giai đoạn luận văn đại học, chúng tôi sẽ có nhiều thời giờ hơn để giản quyết các vấn đề
đang gặp phải của Virtual Lab web portal. Giai đoạn phân tích yêu cầu và thiết kế chắc
chắn sẽ không thể nào tạo nên một kiến trúc tổng quát hoàn chỉnh mà sẽ gặp khá nhiều sai
sót. Chỉ khi qua quá trình hiện thực, tìm lỗi sai, chỉnh sửa, chạy thử nghiệm… hệ thống
Virtual Lab mới thực sự có được một thiết kế tổng thể linh động, chặt chẽ, dễ mở rộng và
ổn định. Có điều gì sai sót trong đổ án này, xin quý độc giả chân tình góp ý để chúng tôi
có thể thực hiện được tốt hơn công việc của mình.



5

PHẦN II: NỘI DUNG
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
1.1. Giới thiệu tổng quan về Virtual Lab
Virtual Lab là hệ thống hỗ trợ công tác giảng dạy thực hành cho trường đại học Bách
khoa thành phố Hồ Chí Minh dựa trên nền tảng điện toán đám mây. Hệ thống gồm có một
tổ hợp các máy server đã cài đặt và cấu hình sẵn nhằm cung cấp các dịch vụ cho người
dùng. Trong mô hình này, không phải là một máy server, mà là một tổ hợp máy kết nối
với nhau. Tổ hợp này phải đảm bảo được yêu cầu chạy ổn định kể cả khi một máy nào đó
trong tổ hợp không hoạt động. Bên cạnh đó, hệ thống phải cung cấp cho người dùng một

giao diện thống nhất, duy nhất, che đậy đi cấu trúc phức tạp nội tại của nó. Đó những yêu
cầu đặc trưng của một dịch vụ dựa trên nền tảng điện toán đám mây.

Hình 1.1. Sơ đồ hệ thống Virtual Lab
Dịch vụ ở đây được hiểu là các máy ảo được cài đặt sẵn các phần mềm cụ thể cho từng
tiết thực hành của sinh viên. Mỗi một máy máy ảo được định nghĩa thông qua một
template. Template này cần phải chứa thông tin về hệ điều hành, các gói phần mềm cần
thiết cho tiết thực hành. Các máy ảo phải đảm bảo được yêu cầu ổn định trong quá trình
vận hành, nghĩa là nếu có sự cố ở máy tính thực đang chạy máy ảo này, nó phải được lưu
lại trạng thái và khôi phục lại mà không mất dữ liệu của người dùng.
6

Hệ thống Virtual Lab hỗ trợ chức năng phân loại để phân quyền người dùng. Người dùng
cơ bản trong hệ thống gồm có sinh viên, giảng viên, người quản trị chung. Hệ thống phân
quyền đảm bảo cho Virtual Lab hoạt động ổn định và tin cậy.

Hình 1.2. Sơ đồ phân loại người dùng trong hệ thống
Hệ thống Virtual Lab còn phải cung cấp công cụ cho người quản trị, giảng viên quản lý
các tiết thực hành. Công cụ này cho phép người dùng liệt kê dạnh sách các môn học, các
tiết học của một môn, tạo, sửa, xóa tiết học, cấu hình lại các máy ảo cho phù hợ với từng
tiết học.
Ngoài ra, hệ thống Virtual Lab cho phép tích hợp thêm các chức năng quản lý, ví dụ như
hệ thống theo dõi thông tin hoạt động, hệ thống tính phí Các chức năng này được phát
triển và tích hợp vào hệ thống chung một các dễ dàng.
1.2. Nội dung của đồ án
Virtual Lab là một hệ thống lớn. Để xây dựng nó, cần phải tiến hành thực hiện nhiều
module khác nhau. Trong phạm vi của đồ án, chúng tôi cố gắng xây dựng nên module
giám sát và quản lý tài nguyên của Virtual Lab.
Tài nguyên ở đây không phải là các thành phần thuộc về kiến trúc của điện toán đám mây,
ví dụ như các máy host, các vnet…, đã được quản lý tốt bởi OpenNebula. Tài nguyên ở

đâu bao gồm danh sách các người dùng của hệ thống kèm theo danh sách các quyền đi
kèm, danh sách các môn học, tiết học thực hành, các máy ảo và phần mềm…
1.3. Mục tiêu
1.1.1 Giai đoạn thực tập
7

Vì thời gian không cho phép, chúng tôi chỉ dừng lại ở việc xây dựng trang web phục vụ
cho việc quản trị, chuẩn bị nội dung từng tiết học. Đối tượng mà trang web hướng đến là
người quản trị hệ thống tài nguyên của Virtual Lab (phân biệt với các tài nguyên của điện
toán đám mây), các giảng viên.
Để có được phiên bản hiện thực hoàn chỉnh của trang web, cần có sự giao tiếp với các
thành phần khác của hệ thống. Các thành phần đó là monitor, pricing, software
management, user management. Vì còn nhiều vấn đề phải giải quyết, chúng tôi chưa thể
hoàn thiện hoàn toàn trang web của mình mà chỉ có thể dừng lại ở một bản prototype.
1.1.2 Giai đoạn luận văn
Trong giai đoạn này, chúng tôi sẽ tiếp tục hoàn thiện hệ thống giám sát và quản lý tài
nguyên cho Virtual Lab. Phiên bản hoàn thiện của trang web cho người quản trị và giảng
viên sẽ được hoàn thành.
Ngoài ra, còn một thành phần không thể thiếu là giao diện dành cho sinh viên sử dụng.
Như một yêu cầu bắt buộc, giao diện dành cho sinh viên phải được tích hợp lên hệ thống
Sakai của khoa. Chúng tôi sẽ cố gắng nghiên cứu để hiện thực chức năng này.
1.4. Lịch trình triển khai, phương pháp triển khai
Thời điểm bắt đầu đề tài nghiên cứu điện toán đám mây tại khoa, chúng tôi tìm hiểu các
khái niệm liên quan đến điện toán đám mây. Thế nào là điện toán đám mây? Thế nào là
sự ảo hóa? Điện toán lưới là gì? Có những công cụ mã nguồn mở nào hỗ trợ triển khai
một hết thống điện toán đám mây? Hệ thống này được cài đặt trên hệ điều hành nào?
Sau quá trình tìm hiểu, chúng tôi đã dành thời gian thử nghiệm cài đặt hai công cụ mã
nguồn mở rất phổ biến hiện nay là OpenNebula và Eucalyptus. Hệ điều hành được thử
nghiệm gồm có Ubuntu và Cent OS. Về vấn đề ảo hóa, chúng tôi thử nghiệm Xen và
KVM.

Sau quá trình nghiên cứu và bàn bạc với các nhóm khác, cộng với các điều kiện khách
quan của khoa, chúng tôi đi đến quyết định sử dụng OpenNebula cài đạt trên Ubuntu, sử
dụng KVM làm công cụ ảo hóa. Việc lựa chọn OpenNebula giúp chúng tôi có thể thừa kế
lại các đề tài nghiên cứu của các anh chị sinh viên, nghiên cứu sinh khóa trước.
8

Ở giai đoạn đồ án môn học 1, chúng tôi thử nghiệm cài đặt hệ thống OpenNebula, cấu
hình để có chạy được các máy ảo trên đó. Ngoài ra, chúng tôi cũng nghiên cứu Java API
do OpenNebula hỗ trợ, thông qua giao thức XML-RPC, để hiện thực một trang web mẫu
có chức năng triển khai các máy ảo chạy trên các host.
Ở giai đoạn thực tập tốt nghiệp, chúng tôi tiếp tục cài đặt một hệ thống điện toán đám
mây thực trên các máy tính tại phòng lab của khoa. Các nhóm nghiên cứu phân công thiết
kế, phát triển từng module. Chúng tôi đảm nhận module giám sát và quản lý tài nguyên củ
hệ thống Virtual Lab.
Đến giai đoạn luận văn, các module cần phải được hiện thực hoàn chỉnh, kết nối lại với
nhau tạo nên một tổng thể thống nhất có khả năng chạy được trong thực tế.
9

CHƯƠNG 2 CƠ SỞ KỸ THUẬT – CÁC HƯỚNG THỰC HIỆN
2.1 Cloud computing
2.1.1 Giới thiệu về cloud computing (Điện toán đám mây)
Thuật ngữ “Điện toán đám mây” đã xuất hiện từ lâu, khoảng năm 2006 nhưng cho đến
bây giờ nó vẫn là một thuật ngữ có nhiều cách hiểu và định nghĩa khác nhau, hầu như mỗi
một công ty cung cấp các dịch vụ “ Điện toán đám mây” hoặc có liên quan đến Điện toán
đám mây đều có một cách định nghĩa riêng.
Theo góc nhìn của đa số người không am hiểu nhiều về kĩ thuật thì : điện toán đám mây
là một mô hình kinh tế mới, nó cho phép các doanh nghiệp giảm thiểu chi phí đáng kể vào
việc vận hành và bảo trì các hệ thống thông tin của doanh nghiệp đó. Trước khi có điện
toán đám mây, mỗi một doanh nghiệp dù lớn hay nhỏ thường phải xây dựng riêng cho
mình một hệ thống thông tin để quản lý dữ liệu hoặc thực hiện các tính toán khác. Nhưng

điểm hạn chế ở đây là một khi hệ thống thông tin của doanh nghiệp đó bị sự cố, doanh
nghiệp phải tốn rất nhiều chi phí để sửa chữa cũng như bảo trì, nào là chi phí về máy móc,
chi phí về nhân sự - điều mà không phải một doanh nghiệp nào cũng có thể làm tốt được.
Vì vậy nhu cầu được thuê một hệ thống thông tin với các máy tính và phần mềm cần thiết
xuất hiện, lúc này cũng là lúc mà mô hình điện toán đám mây xuất hiện, nó đưa ra một
cách thức để giải quyết bài toán chi phí cho các doanh nghiệp : thay vì mỗi doanh nghiệp
phải từ mình xây dựng một hệ thống riêng thì sẽ có một nhà cung cấp dịch vụ đứng ra
đảm nhận công việc này, nhà cung cấp này sẽ chuẩn bị tất cả từ tài nguyên từ máy móc
cho đến nhân lực. Doanh nghiệp chỉ cần thuê một hệ thống máy tính từ nhà cung cấp để
phục vụ cho nhu cầu của mình mà không cần quan tâm đến việc cấu hình bên dưới như
thế nào hay việc hỏng hóc xảy ra, tất cả những vấn đề này đều được nhà cung cấp xử lý,
doanh nghiệp chỉ đơn giản là trả tiền cho nhà cung cấp. Vậy một câu hỏi được đặt ra nữa
là liệu chi phí thuê một hệ thống từ bên ngoài có nhiều hơn so với chi phí cho việc tự xây
dựng một hệ thống của riêng mình không ? Câu trả lời là còn tùy vào quy mô của doanh
nghiệp đó và loại hệ thống thông tin mà doanh nghiệp đó đang muốn sử dụng. Đối với
10

những doanh nghiệp lớn cần một hệ thống lớn và các dữ liệu của doanh nghiệp đó mang
tính bí mật cao thì việc thuê một hệ thống bên ngoài là điều đáng cân nhắc, nhưng đối với
những doanh nghiệp nhỏ hoặc những doanh nghiệp vừa mới thành lập thì việc thuê một
hệ thống từ nhà cung cấp dịch vụ là điều đáng làm bởi vì nó vừa tiết kiệm thời gian vừa
tiết kiệm chi phí – đó là những lợi thế khởi điểm rất lớn cho những doanh nghiệp kiểu
như vậy.
Vậy vì sao lại tiết kiệm được chi phí ? Ngoài những vấn đề đã phân tích ở trên thì còn một
điều đáng lưu ý đó là khi thuê một dịch vụ điện toán đám mây, người dùng chỉ cần trả cho
những gì mình sử dụng, điều này có nghĩa là nếu bạn muốn sử dụng phần mềm Microsoft
Office Word trong vòng một giờ thì bạn chỉ chỉ cần trả tiền cho thời gian một giờ đó –
khoảng tiền này rất nhỏ so với việc bạn phải mua nguyên phần mềm Microsoft Office
Word đó và cài đặt lên máy tính cá nhân của bạn mà thực tế bạn lại chỉ có nhu cầu sử
dụng nó trong một giờ - điều này gây ra việc lãng phí tài nguyên và tiền bạc rất lớn.

Từ những điều trên có thể thấy được những lợi ích mà điện toán đám mây mang lại và rất
nhiều chuyên gia đã dự đoán rằng nó chính là xu hướng điện toán trong tương lai. Vậy
bên trong của “đám mây” thực chất là gì và tại sao nó có thể làm được những điều đó mà
những mô hình, công nghệ trước đó không làm được.
2.1.2 Đặc điểm , các mô hình của điện toán đám mây
2.1.2.1 Đặc điểm
Về góc nhìn kĩ thuật, điện toán đám mây không phải là một công nghệ mới, thực chất nó
là sự kết hợp của những công nghệ đã được phát triển trước đó như công nghệ ảo hóa
(Virtualization), tính toán lưới (Grid Computing), tính toán hiệu năng (Utility
Computing), SOA (Software Oriented Architecture), Web Services… Công nghệ được
xem là cốt lõi của điện toán đám mây chính là công ghệ ảo hóa, nó làm cho điện toán đám
mây có khả năng giải quyết được nhiều bài toán kinh tế mà các mô hình điện toán trước
đó không làm được.
Công nghệ ảo hóa cho phép một máy tính vật lý có thể chạy được nhiều máy ảo, các máy
ảo này sẽ sử dụng tài nguyên của máy vật lý nhưng nó có thể được xem như những máy
11

độc lập, điều này giúp cho việc một máy tính vật lý có thể phục vụ được nhiều người
dùng cùng một lúc.

Hình 2.1. Công nghệ ảo hóa
Theo Wikipedia,điện toán đám mây có một số đặc điểm sau :
- Agility : Cung cấp tài nguyên một cách nhanh chóng đến người sử dụng.
- Application Programming Interface (API) : Cung cấp khả năng tương tác với các
hệ thống phần mềm khác.
- Cost : Giảm chi phí cho người sử dụng do dùng cơ chế tính phí theo thời gian sử
dụng- dùng bao nhiêu trả bấy nhiêu.
- Device and location independence : Cho phép người sử dụng thông qua một trình
duyệt hoặc một ứng dụng trên điện thoại để sử dụng dịch vụ ở bất kì nơi đâu.
- Virtualization : Công nghệ ảo hóa cho phép nhiều máy ảo có thể dùng chung tài

nguyên vật lý và các ứng dụng có thể dễ dàng di chuyển từ máy này sang máy
khác.
- Multi-tenancy : cho phép chia sẽ tài nguyên cũng như tiết kiệm chi phí khi có một
lượng lớn người sử dụng vì tất cả đều được tập trung tại một chỗ và được quản lý
bởi nhà cung cấp.
12

- Reliability : Có khả năng vận hành liên tục và khả năng phục hồi khi có lỗi xảy ra,
đảm bảo độ tin cậy cao.
- Security : Do dữ liệu được tập trung một chỗ nên dễ dàng áp dụng các chính sách
bảo mật hơn, khi đó mức độ bảo mật sẽ còn phụ thuộc vào độ tin cậy của nhà cung
cấp dịch vụ.
2.1.2.2 Các mô hình của điệm toán đám mây
Hiện tại điện toán đám mây cung cấp 3 dịch vụ cơ bản cho người sử dụng, đó là dịch vụ
cung cấp cơ sở hạ tầng IaaS (Infrastructure as a service), dịch vụ cung cấp nền tảng PaaS
(Platform as a service), dịch vụ cung cấp ứng dụng SaaS (Software as a service).
2.1.2.2.1 Infrastructure as a service
Đây là mô hình dịch vụ cơ bản nhất của điện toán đám mây, cung cấp các tài nguyên liên
quan đến cơ sở hạ tầng cho người sử dụng như máy ảo, kho lưu trữ dữ liệu, hệ thống
mạng. Người dùng sẽ trực tiếp quản lý hệ thống này và cài đặt bất cứ phần mềm hay hệ
điều hành nào dùng để phục vụ cho mục đich của mình. Một ví dụ cho mô hình dịch vụ
này đó là Amazon Elastis Compute Cloud (Amazon EC2) – đây là một dịch vụ của
Amazon cho phép người sử dụng thông qua trình duyệt có thể thuê được máy ảo, yêu cầu
hệ điều hành nào cũng như là các phần mềm cần thiết để chạy trên máy ảo đó, từ hệ thống
của Amazon. Đối với mô hình này thì nhà cung cấp sẽ chỉ quản lý cơ sở hạ tầng vật lý
bên dưới, còn người sử dụng sẽ chịu trách nhiệm quản lý các tài nguyên ở tầng trên, từ hệ
điều hành, phần mềm, cơ sở dữ liệu…
2.1.2.2.2 Platform as a service
Đối với mô hình dịch vụ này, nhà cung cấp dịch vụ sẽ cung cấp các tài nguyên từ cơ sở hạ
tầng bên dưới, cho đến hệ điều hành , hệ thống mạng, hệ cơ sở dữ liệu, môi trường lập

trình và các công cụ cần thiết để người sử dụng có thể xây dựng cũng như triển khai các
ứng dụng cho riêng mình. Các nhà cung cấp dịch vụ này có thể kể đến như Google App
Engine, Microsoft Window Azure.
2.1.2.2.3 Software as a service
13

Với mô hình dịch vụ này, nhà cung cấp dịch vụ sẽ cung cấp tất cả các tài nguyên từ cơ sở
hạ tầng bên dưới cho đến các phần mềm bên trên, người sử dụng chi đơn giản là thuê
phần mềm đó và sử dụng, chi phí được trả theo thời gian sử dụng phần mềm đó. Ở mô
hình này người sử dụng không phải quản lý bất cứ thứ gì mà toàn bộ hệ thống đều được
nhà cung cấp quản lý.
2.1.3 Phân loại điện toán đám mây theo phạm vi
2.1.3.1 Public cloud
Đây là dạng điện toán đám mây mà dịch vụ của nó có thể được cung cấp cho người sử
dụng thông qua đường truyền mạng internet và web services, dạng này thường có rất
nhiều người sử dụng bởi vì nó có thể được truy xuất ở bất kì đâu chỉ cần có một trình
duyệt và kết nối internet. Một số công ty lớn thường cung cấp các cloud dạng này như
Google, Microsoft, Amazon.
2.1.3.2 Private cloud
Dạng điện toán đám mây này được xây dựng dựa trên hệ thống mạng nội bộ, bên ngoài
không thể truy xuất được và chỉ được dùng riêng cho một tổ chức hoặc một công ty nào
đó.
2.1.3.3 Hybrid cloud
Đây là dạng kết hợp của hai dạng hệ thống private cloud và public cloud, một phần của nó
sẽ được bảo mật và không cho phép sự truy xuất từ bên ngoài còn một phần sẽ cho phép
bên ngoài truy xuất.
2.2 Công nghệ ảo hóa
2.2.1 Giới thiệu công nghệ ảo hóa
Ảo hóa (Virtualization) là một công nghệ phân chia tài nguyên vật lý máy tính thành
nhiều môi trường thực thi khác nhau bằng cách sử dụng các khái niệm và công nghệ khác

nhau như phân chia tài nguyên phần cứng và phần mềm, chia sẽ thời gian, mô phỏng và
nhiều khái niệm khác [1-Vir].
14

Trong môi trường Virtual lab, công nghệ ảo hóa được sử dụng chủ yếu là tạo máy ảo
(Virtual machine) từ những máy vật lý, một máy vật lý có khả năng chạy nhiều máy ảo có
môi trường thực thi hoàn toàn khác với môi trường của máy hiện tại - có nghĩa là máy ảo
đó sẽ chạy hệ điều hành riêng biệt, các phần mềm riêng biệt so với các máy ảo khác và
máy vật lý chứa những máy ảo đó. Công nghệ thứ hai là ảo hóa mạng (Network
virtualization) dùng để tạo một cầu nối ảo (virtual bridge) - đây là một giải pháp để cung
cấp cơ sở kết nối mạng cho các máy ảo.

Hình 2.2. Công nghệ ảo hóa
Một số ưu điểm của công nghệ ảo hóa [2-Vir] :
- Server consolidation : tải trọng của một số lượng máy chủ vật lý có thể được và
hợp nhất vào một số ít hơn các máy chủ vật lý hơn do đó tiết kiệm được tài
nguyên, chi phí để quản lý hạ tầng.
- Application consolidation : Mỗi một phần mềm mới có thể yêu cầu máy tính hoặc
hệ điều hành mới để chạy, nếu sử dụng công nghệ ảo hóa thì có thể tránh được việc
phải đầu tư thêm máy tính hoặc hệ điều hành mới này.
- Sandboxing : Ảo hóa có thể cho phép nhiều chương trình có độ bảo mật kém chạy
tách biệt với hệ thống hiện tại cho mục đích kiểm tra để làm giảm nguy cơ rủi ro vì
vậy công nghệ ảo hóa có thể hổ trợ cho việc xây dựng những hệ thống có độ bảo
mật cao.
15

- Multiple execution environments: Ảo hóa cho phép tạo nhiều môi trường thực thi
tách biệt nhau để sử dụng cho nhiều mục đích khác nhau do đó nâng cao chất
lượng dịch vụ bằng cách giới hạn tài nguyên ở một mức nào đó.
- Multiple simultaneous OS : Cung cấp cách thức để có thể chạy được nhiều hệ điều

hành cùng một lúc, mỗi một hệ điều hành có thể chạy những ứng dụng rất khác
nhau.
- Software migration : Tăng tính linh động cho việc chuyển một phần mềm từ hệ
thống này sang hệ thống khác.
2.2.2 Các kỹ thuật ảo hóa
2.2.2.1 Ảo hóa hoàn toàn (full virtualization)

Hình 2.3. Full-virtualization
Ảo hóa hoàn toàn sử dụng một lớp đặc biệt gọi là Virtual Machine Monitor ( còn gọi là
hypervisor). Lớp hypervisor này sẽ tương tác trực tiếp với các tài nguyên vật lý bên dưới
như CPU, RAM, harddisk và có nhiệm vụ như là một lớp nền tảng tách biệt với phần
cứng bên dưới mà các máy ảo ( virtual machine) có thể chạy trên đó ( gọi là Guest OS).
Mỗi một máy ảo chạy một hệ điều hành riêng của nó và tách biệt với các máy ảo khác do
đó với kiểu ảo hóa này thì một máy ảo có thể chạy Window trong khi máy ảo khác chạy
Linux.
16

2.2.2.2 Para-virtualizaiton

Hình 2.4. Para-virtualization
Với para-virtualization, kiến trúc tập lệnh của hypervisor không giống hoàn toàn với kiến
trúc bên dưới như của full-virtualization do được chỉnh sửa một phần để hổ trợ những
lệnh gọi trực tiếp từ hệ điều hành ảo xuống dưới phần cứng vật lý, để làm được điều này
thì những hệ điều hành ảo (Guest OS) cần phải được chỉnh sửa vì vậy chúng không thể
tách biệt như full-virtualization được mà phụ thuộc vào hệ điều hành chạy trên máy chủ
vật lý.
2.2.2.3 Ảo hóa ở mức hệ điều hành (OS-level virtualization)
Ở mức này sẽ không có hypervisor mà sẽ có một hệ điều hành sẽ đóng chức năng như
hypervisor( shared OS), “máy ảo” ở đây không phải là một máy ảo thực sự như ở hai kỹ
thuật ảo hóa trên mà như một ứng dụng của share OS. Ưu điểm của phương pháp này có

khả năng hổ trợ một lượng lớn các “máy ảo” chạy đồng thời.
17


Hình 2.5. OS-level virtualization
2.2.3 Giới thiệu KVM
KVM (Kernel-based Virtual Machine) là một phần mềm ảo hóa mã nguồn mở cho hệ điều
hành Linux và openSolaris và có thể hổ trợ các bộ vi xử lý x86 và x86_64.
KVM có thể hổ trợ chạy nhiều hệ điều hành cả Linux và Window mà không cần chỉnh
sửa, mỗi một máy ảo sẽ có một phần tài nguyên phần cứng riêng và độc lập với những
máy ảo khác .

18

Hình 2.6. Các thành phần khi ảo hóa với KVM
- KVM thực ra sẽ không thực hiện thao tác mô phỏng nào, khi nhận yêu cầu từ
chương trình của người sử dụng, thành phần /dev/kvm sẽ được chạy để thiết lập
vùng địa chỉ bộ nhớ. Việc mô phỏng các tác vụ của phần cứng sẽ do QEMU thực
hiện.
- Điểm mạnh của KVM là tốc độ nhanh khi chạy trên các máy tính có hỗ trợ ảo hóa,
hổ trợ được nhiều nền tảng hệ điều hành do đó chúng tôi chọn KVM để cung cấp
các công cụ ảo hóa cho đồ án này.
2.3 Tổng quan về OpenNebula
OpenNebula là mã nguồn mở tiêu chuẩn công nghiệp cho việc ảo hóa trung tâm dữ liệu,
cung cấp nhiều tính năng, giải pháp linh hoạt cho việc quản lý toàn diện các trung tâm dữ
liệu ảo hóa, cung cấp các dịch vụ điện toán đám mây dựa trên hạ tầng hiện có.
2.3.1 Các chức năng
Về phía người xây dựng và quản trị hệ thống, OpenNebula cung cấp một nền tảng mạnh
mẽ, linh động và bảo mật bao gồm nhiều chức năng. Trong đó, nổi bật lên nhất bao gồm
Image Repository, Template Repository, Virtual Networking và một tập hợp các thao tác

cho phép triển khai và quản lý các máy ảo theo ý muốn.
2.3.1.1 Image repository
Chức năng này cho phép thiết lập và quản lý các Image, bao gồm ảnh của các hệ điều
hành hoặc các phân vùng luận lý chứa dữ liệu của người sử dụng.
2.3.1.2 Template repository
Chức năng này cho phép đăng ký các file template mô tả về máy ảo trong hệ thống, nhằm
mục đích khởi tạo các máy ảo sau này dưới dạng các Virtual machine instance.
2.3.1.3 Virtual networking
Virtual Netwotking cho phép kết nối giữa các máy ảo khác nhau theo nhiều cách khác
nhau. Dải địa chỉ IP có thể quy định một các cố định (Fixed) hoặc theo dải địa chỉ
(Ranged).
19

2.3.1.4 Operations
OpenNebula cung cấp một tập lệnh cho phép điều khiển nhiều thành phần khác nhau
trong hệ thống, ví dụ như: create, deploy, migrate… các máy ảo. Các lệnh này có thể
được thực hiện thông qua CLI hoặc giao diện web Sunstone.

Hình 2.7. Tổng quan về OpenNebula
2.3.2 Các thành phần chính
2.3.2.1 Interface và API
OpenNebula cung cấp khá nhiều các Interface để giao tiếp với các chức năng được hỗ trợ
bên dưới nhằm quản lý các tài nguyên vật lý và luận lý. Có hai cách chính để sử dụng các
giao diện của OpenNebula: thông qua command line interface và giao diện web Sunstone.
Còn có nhiều interface khác để xây dựng các ứng dụng public cloud: OCCI và EC2
Query. Bên cạnh đó, OpenNebula cung cấp các API rất mạnh để để hỗ trợ việc phát triển
các thành phần mới của nền tảng này.
2.3.2.2 User và Group
OpenNebula hỗ trợ quản lý các tài khoản người dùng và nhóm, kèm theo các kỹ thuật mã
hóa và phân quyền. Ngoài ra, hệ thống Access control list cho phép cơ chế cấp quyền cho

×