All news
Virtual Appliance: Giải pháp hiệu quả cho việc phát triển và phân phối phần mềm
5/27/2009 11:20:11 AM
Ảo hóa cho phép một hay nhiều máy ảo (VM – virtual machine) chạy trên một nền phần cứng có sẵn. Một ví dụ dễ thấy nhất của ảo hóa là việc cài đặt một máy ảo chạy hệ điều hành (HĐH) Linux trên nền HĐH Windows. Lí do để ảo hóa thì có nhiều, nhưng có thể tóm tắt một số ý chính như sau
- Tiết kiệm tài nguyên: Nếu trước đây, mỗi máy chỉ có thể chạy một HĐH vào một
thời điểm, dẫn đến đòi hỏi phải có các máy khác nhau chạy các hệ điều hành khác
nhau. Với ảo hóa, một máy có thể chạy nhiều máy ảo, trong đó mỗi máy ảo chạy một
hệ điều hành. Cách làm này có thể tận dụng tối đa tài nguyên như CPU và bộ nhớ.
Rộng hơn là tiết kiệm tiền mua máy và điện để chạy nó. Hiện nay ảo hóa chính là
nền tảng của điện toán đám mây (hay điện toán máy chủ ảo).
- Giúp hạn chế
và cô lập lỗi: Nếu một máy chạy hai chương trình quan trọng, lỗi của một chương
trình có thể ảnh hưởng đến chương trình còn lại (ví dụ làm treo máy). Nếu cho
hai chương trình chạy trên 2 máy ảo khác nhau sẽ giảm sự ảnh hưởng của chương
trình này lên chương trình kia. Một ví dụ khác, giả sử chúng ta muốn có môi
trường để kiểm thử (test) chương trình mới mà không muốn ảnh hưởng đến môi
trường hiện tại, cách tốt nhất là thử chương trình mới trên máy ảo để kiểm tra
độ an toàn và tin cậy trước khi cài vào hệ thống hiện có.
- Hỗ trợ mô
phỏng: Với ảo hóa, chúng ta có thể mô phỏng các môi trường làm việc khác nhau,
ví dụ các phiên bản khác nhau của HĐH, các cấu hình phần cứng (ví dụ bộ nhớ bị
hạn chế), để kiểm tra tính tương thích của ứng dụng.
Khái niệm về Virtual Appliance
Virtual appliance
(VA) là sự tích hợp của hệ điều hành và các ứng dụng (đã được cài đặt và cấu
hình sẵn trên HĐH đó) thành một đơn vị duy nhất nhằm phục vụ cho một mục đích
chuyên biệt nào đó tạm dịch là máy ảo chuyên dụng. Kết quả của sự tích hợp
thường là một hay nhiều tập tin được lưu theo định dạng sao cho có thể thực thi
được trên các phần mềm hỗ trợ máy ảo (ví dụ VMWare Player).
| Hình 2 – Sự khác nhau giữa VM và VA. Để có thể chạy được
ứng dụng trên VM, bạn phải tự cài đặt HĐH và các ứng dụng liên quan. Với VA, HĐH
và các ứng dụng đã được cài đặt và tích hợp sẵn. (Nguồn:
VMWare) |
Một ví dụ điển hình cho VA là MediaWiki
virtual appliance. Thông thường, để chạy MediaWiki (phần mềm ứng dụng tương tự
như Wikipedia), người dùng cần phải cài đặt và cấu hình các phần mềm như PHP, hệ
quản trị cơ sở dữ liệu MySQL, máy chủ web Apache và MediaWiki trên một HĐH nào
đó (ví dụ Linux). Việc cài đặt này tốn thời gian và đòi hỏi người dùng phải có
kiến thức để cấu hình và tích hợp các phần mềm lại với nhau. Với MediaWiki VA,
HĐH và các phần mềm trên đã được cài đặt, cấu hình và tích hợp sẵn thành một
thực thể chung nhất bởi nhà cung cấp. Người dùng chỉ cần thực thi nó trên một
máy ảo là có ngay ứng dụng MediaWiki mà không phải mất thời gian và công sức như
cách làm thông thường trước đây.
Để chạy được VA trên phần cứng máy tính
sẵn có, bạn cần phải có:
- Phần mềm hỗ trợ thực thi máy ảo. WMWare Player
và VMWare Server là các phần mềm như vậy.
- VA phục vụ cho nhu cầu của
bạn. Ví dụ nếu bạn muốn dùng MediaWiki, bạn có thể tải VA này về tại:
http://wiki.rpath.com/wiki/Appliance:MediaWiki_Appliance. Một số địa chỉ mà bạn
có thể tìm kiếm các VA:
+ VMWare Virtual Appliance Market: http://www.vmware.com/appliances/marketplace.html
+ rPath: http://www.rpath.org/
- Cài đặt và chạy VA: Thông thường các VA được cung cấp dưới dạng một
tập tin nén, ví dụ dạng .rar hay .zip. Sau khi giải nén, bạn sẽ tìm thấy tập tin
ảnh máy ảo (ví dụ nếu dùng VMWare thì tập tin này có phần mở rộng là vmx) và nạp
nó vào phần mềm hỗ trợ thực thi máy ảo. Sẽ có một số thao tác đơn giản khác phải
tuân theo trước khi có thể sử dụng, ví dụ chấp nhận các điều khoản liên quan đến
bản quyền, thay đổi mật khẩu người quản trị...
| Hình 1 - Mỗi máy ảo có phần cứng ảo
như CPU, bộ nhớ, không gian đĩa cứng, card mạng và thiết bị ngoại vi để dựa trên
đó mà cài đặt HĐH và các ứng dụng. Với mô hình này, một phần cứng có thể chia sẻ
bởi nhiều máy ảo khác nhau để có thể tận dụng tối đa công suất làm việc. (Nguồn:
VMWare) |
Sự khác nhau
giữa VA và VM
Một máy ảo có thể xem như một máy tính thông
thường, trong đó các tài nguyên như CPU, bộ nhớ RAM, đĩa cứng và card mạng là
ảo. Để có thể chạy được ứng dụng, người dùng cần phải cài đặt và cấu hình hệ
điều hành và các ứng dụng trên đó. VA khác máy ảo một chút ở chỗ, hệ điều hành
và các ứng dụng đã được cài đặt và cấu hình sẵn.
Lợi ích của VA
Đối với các nhà phát triển phần
mềm: Một trong những vấn đề tốn nhiều công sức và tiền bạc của các nhà phát
triển phần mềm đó là phải kiểm thử tính tương thích của phần mềm với các thiết
bị phần cứng khác nhau (ví dụ máy hỗ trợ bộ vi xử lí 32 bit hoặc 64 bit), các
phiên bản khác nhau của các hệ điều hành (ví dụ Linux và Windows, hay Windows XP
và Windows Vista), các phần mềm hệ thống hỗ trợ ứng dụng (ví dụ web server IIS
hay Apache). Do không kiểm soát được môi trường của người dùng cuối, nên mỗi khi
có sự thay đổi, ví dụ như cập nhật các miếng vá hệ thống, sẽ làm nảy sinh các
lỗi không lường trước được. Điều này dẫn đến chi phí hỗ trợ và bảo trì rất lớn.
Bằng cách dùng VA, nhà phát triển phần mềm chỉ định sẵn hệ điều hành, phần mềm
hệ thống và phần mềm ứng dụng liên quan, cấu hình và đóng gói sẵn dưới dạng hộp
đen trước khi chuyển đến người dùng cuối, nhờ vậy giảm chi phí phát triển, kiểm
thử và bảo trì phần mềm. Một ví dụ điển hình đó là trước đây thay vì phải phát
triển hai phiên bản phần mềm chạy trên cả hai hệ điều hành Linux và Windows, thì
nay chỉ cần phát triển trên một hệ điều hành, ví dụ là Linux; sau đó tích hợp
Linux vào VA. Lúc đó, người dùng Windows chỉ cần chạy VA này dưới dạng máy ảo.
Đối với người dùng cuối: Bằng cách sử dụng VA, người dùng sẽ tiết kiệm
thời gian cài đặt và cấu hình các phần mềm, giảm thiểu các rủi ro có thể có liên
quan đến vấn đề tương thích mỗi khi có các bản cập nhật mới liên quan đến hệ
thống. Ngoài ra, với việc chạy mỗi ứng dụng chuyên biệt dưới dạng một VA, tính
độc lập và an toàn của hệ thống được nâng cao.
Đối với các nhà quản trị
hệ thống: Trong các tổ chức lớn nơi mà máy móc và phần mềm đa dạng, việc triển
khai phần mềm mới sẽ rất phức tạp do phải kiểm thử tính tương thích với hệ thống
hiện có. Với việc dùng VA, mọi thứ sẽ trở nên đơn giản rất nhiều.
|
Hình 3 – Mô hình dùng VA. Nhà cung cấp
phần mềm tạo ra VA tích hợp sẵn HĐH và phần mềm trước khi chuyển đến người dùng.
Người dùng cài đặt và chạy VA trên hệ thống phần cứng của mình. VA đã được cấu
hình để có thể cập nhật các bản vá mới một cách nhanh chóng và tiện lợi. (Nguồn:
VMWare) |
Xây dựng
VA
Bạn cần phải có các phần mềm hỗ trợ xây dựng VA. VMWare
Studio của VMWare hay rBuiderOnline của rPath là hai trong số các phần mềm hỗ
trợ khá thông dụng hiện nay. Bạn sẽ cần phải chọn trước hệ điều hành và các phần
mềm hệ thống cũng như các thư viện liên quan nào cần được tích hợp vào VA của
bạn. Sau đó chọn dạng kết xuất của VA. Các dạng kết xuất có thể tham khảo tại
http://wiki.rpath.com/wiki/rBuilder_Online:Build_Types. Ví dụ, nếu bạn muốn VA
chạy được trên các phần mềm hỗ trợ máy ảo của VMWare thì chọn cách kết xuất theo
định dạng .vmx.
Một kịch bản sử dụng
VA
Ở các trường đại học, các phòng máy thực hành của sinh viên
thường có vài chục đến vài trăm máy, phục vụ cho nhiều nhu cầu thực hành khác
nhau của sinh viên như lập trình ứng dụng với Visual Studio trên Windows, lập
trình mạng trên Linux. Cách làm thông thường nhất là cài đặt các phần mềm cần
thiết cho toàn bộ nhu cầu có thể có lên một máy, sao đó dùng các phần mềm như
Norton Ghost để tạo các ảnh (disk image) và sao chép sang các máy còn lại. Cách
làm này có hạn chế là mỗi khi có phần mềm hay bản cập nhật mới là phải sao chép
lại từ đầu. Hơn nữa, cách làm này sẽ hạn chế sinh viên khi muốn thử nghiệm các
môi trường hay ứng dụng mới vì có thể sẽ gây các ảnh hưởng không lường trước
được với hệ thống hiện có cần ổn định để phục vụ cho các sinh viên khác. Với
việc dùng VA, các vấn đề này hầu như sẽ được giải quyết. Quản trị hệ thống sẽ
tạo VA dành cho các sinh viên lập trình ứng dụng, trong đó tích hợp HĐH Windows
cùng các ứng dụng Visual Studio trên đó; và tạo ra VA khác dành cho sinh viên
lập trình mạng, trong đó tích hợp hệ điều hành Linux và các ứng dụng liên quan.
Mỗi khi có nhu cầu mới, quản trị hệ thống chỉ cần tạo ra một VA mới là có thể
triển khai ngay đến toàn bộ hệ thống mà không ảnh hưởng đến hệ thống hiện tại.
Sinh viên có thể tự do thử nghiệm các môi trường và ứng dụng mới một cách dễ
dàng bằng cách chạy VA liên quan. Với mô hình này, trên phần cứng máy tính hiện
có chỉ cài đặt tối thiểu hệ điều hành và phần mềm hỗ trợ máy ảo là đủ. Mỗi nhu
cầu riêng biệt sẽ được phục vụ bởi một VA tương ứng.
Tham khảo:
[1]
http://download3.vmware.com/media/vam/vam_demo.html
[2]
http://www.vmware.com/files/pdf/vam_gettingstarted.pdf
[3]
http://wiki.rpath.com/wiki/rBuilder_Online:Build_Types
Lê Đình Duy
PC World VN
Công nghệ
Từ khóa liên quan:
máy ảo