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

Nghiên cứu tìm hiểu và xây dựng hệ thống quản lý phân phối phần mềm phân tán kết hợp p2p xây dựng mô hình và triển khai trên các hệ điều hành nguồn mở

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 (2.49 MB, 98 trang )

..

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

PHẠM XUÂN LÂM

NGHIÊN CỨU TÌM HIỂU VÀ XÂY DỰNG HỆ THỐNG
QUẢN LÝ PHÂN PHỐI PHẦN MỀM PHÂN TÁN KẾT
HỢP P2P, XÂY DỰNG MƠ HÌNH VÀ TRIỂN KHAI
TRÊN CÁC HỆ ĐIỀU HÀNH NGUỒN MỞ
LUẬN VĂN THẠC SĨ
NGHÀNH : CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC
TS. HÀ QUỐC TRUNG

HÀ NỘI 2009


-1-

BẢN CAM ĐOAN
Tôi là Phạm Xuân Lâm, học viên cao học lớp Cơng nghệ thơng tin khóa 2007 –
2009 thực hiện luận văn tốt nghiệp do TS. Hà Quốc Trung hướng dẫn.
Tơi xin cam đoan tồn bộ nội dung được trình bày trong bản luận văn nay là kết quả
tìm hiểu và nghiên cứu của riêng tôi dưới sự hướng dẫn của TS. Hà Quốc Trung,
trong quá trình nghiên cứu đề tài “Nghiên cứu tìm hiểu và xây dựng hệ thống
quản lý phân phối phần mềm phân tán kết hợp P2P, xây dựng mơ hình và triển
khai trên các hệ điều hành nguồn mở”. Các kết quả và dữ liệu được nêu trong


luận văn là hoàn toàn trung thực và rõ ràng. Mọi thơng tin trích dẫn đều được tn
theo luật sở hữu trí tuệ, liệt kê rõ ràng các tài liệu tham khảo. Tơi xin chịu hồn tồn
trách nhiệm với những nội dung được viết trong luận văn này.

Hà nội, ngày 31 tháng 10 năm 2009.
TÁC GIẢ

PHẠM XUÂN LÂM


-2-

MỤC LỤC
BẢN CAM ĐOAN ..................................................................................................... 1
MỤC LỤC

............................................................................................................ 2

DANH MỤC HÌNH VẼ ............................................................................................ 4
DANH MỤC BẢNG .................................................................................................. 6
DANH MỤC TỪ VIẾT TẮT.................................................................................... 7
LỜI MỞ ĐẦU ............................................................................................................ 8
CHƯƠNG 1. CÁC VẤN ĐỀ VỀ HỆ THỐNG PHÂN PHỐI PHẦN MỀM
PHÂN TÁN

.......................................................................................................... 10

1.1. Các khái niệm cơ bản về phần mềm........................................................... 10
1.1.1. Định nghĩa ........................................................................................... 10
1.1.2. Hoạt động của phần mềm ứng dụng trong một hệ thống máy tính .... 10

1.1.3. Các hình thức và quy trình cung cấp phần mềm................................. 11
1.2. Tổng quan về hệ thống phân phối phần mềm phân tán.............................. 11
1.2.1. Khái niệm và yêu cầu của hệ thống phân phối phần mềm phân tán ... 11
1.2.2. Nguyên tắc hoạt động cơ bản của một hệ thống phân tán phần mềm 12
1.2.3. Cách thức quản lý phần mềm trên hệ điều hành ngn mở................ 13
1.2.4. Vai trị của người quản trị trên hệ thống phân tán phần mềm ............ 13
1.3. Trao đổi giữa các thành phần trong một hệ thống phân tán ....................... 14
1.3.1. Giao tiếp giữa Client và Server ........................................................... 14
1.3.2. Giao dịch phân tán .............................................................................. 14
1.3.3. Khôi phục và chịu lỗi. ......................................................................... 15
1.3.4. Bảo mật ............................................................................................... 16
CHƯƠNG 2. PHÂN PHỐI PHẦN MỀM TRÊN CÁC HỆ ĐIỀU HÀNH
NGUỒN MỞ .......................................................................................................... 20
2.1. Quản lý và phân phối phần mềm trên Redhat sử dụng RPM ..................... 20
2.1.1. Cấu trúc gói RPM ............................................................................... 20
2.1.2. Phân phối gói phần mềm RPM trên máy chủ ..................................... 22
2.1.3. Q trình khai thác gói phần mềm RPM trên máy trạm ..................... 32
2.1.4. Các công cụ quản lý và phân phối gói phần mềm RPM phổ biến ...... 43
2.2. Quản lý và phân phối phần mềm trên Debian ............................................ 46
2.2.1. Phân phối phần mềm trên hệ điều hành Debian ................................. 47


-3-

2.2.2. Gói phần mềm trên hệ điều hành Debian ........................................... 48
2.2.3. Các cơng cụ quản lý và phân phối gói phần mềm deb phổ biến ........ 54
2.2.4. So sánh đánh giá cách đóng gói phần mềm dùng RPM và DPKG ..... 59
2.3. Mạng ngang hàng (Peer to Peer – P2P)...................................................... 62
2.3.1. Các kiến trúc sử dụng để phân tán ...................................................... 62
2.3.2. Mạng ngang hàng ................................................................................ 64

2.3.3. Kiến trúc trong mạng ngang hàng....................................................... 66
2.3.4. So sánh P2P với mơ hình Client-Server ............................................. 70
2.3.5. Phát triển các ứng dụng trên mạng ngang hàng .................................. 70
CHƯƠNG 3. XÂY DỰNG HỆ THỐNG PHÂN PHỐI PHẦN MỀM PHÂN
TÁN KẾT HỢP P2P ............................................................................................... 71
3.1. Yêu cầu đối với mơ hình phân phối phần mềm phân tán ........................... 71
3.2. Xây dựng mơ hình phân phối phần mềm phân tán .................................... 72
3.2.1. Mơ hình tổng thể và cơ chế làm việc .................................................. 72
3.2.2. Mơ hình trên mỗi điểm phân tán ......................................................... 74
3.2.3. Mơ hình trên máy trạm ....................................................................... 75
3.2.4. Mơ hình mạng tổng thể cả hệ thống ................................................... 75
3.3. Cơ chế hoạt động giải pháp trên từng thành phần của hệ thống ................ 76
3.3.1. Trên Server.......................................................................................... 76
3.3.2. Trên máy trạm ..................................................................................... 81
3.4. Triển khai xây dựng hệ thống trên các hệ điều hành nguồn mở ................ 87
3.4.1. Đề xuất hệ thống ................................................................................. 87
3.4.2. Triển khai hệ thống ............................................................................. 88
3.5. Đánh giá hệ thống....................................................................................... 89
3.5.1. Các thao tác cơ bản của hệ thống........................................................ 89
3.5.2. Độ phức tạp của từng thao tác ............................................................ 90
3.5.3. Phân tích đánh giá về sự phức tạp của hệ thống ................................. 93
KẾT LUẬN .......................................................................................................... 95
TÀI LIỆU THAM KHẢO ...................................................................................... 97


-4-

DANH MỤC HÌNH VẼ
Hình 2-1: Cấu trúc gói RPM .....................................................................................21
Hình 2-2: Phần thơng tin gói RPM ...........................................................................22

Hình 2-3: Thơng tin trên mỗi tệp trong gói RPM .....................................................22
Hình 2-4: Quy trình đóng gói một tệp RPM .............................................................23
Hình 2-5: Cấu trúc cây thư mục để tạo tệp RPM ......................................................23
Hình 2-6: Cấu trúc file spec ......................................................................................24
Hình 2-7: Q trình đóng gói RPM ..........................................................................28
Hình 2-8: Các bước trong q trình cài đặt gói RPM trực tuyến ..............................30
Hình 2-9: Mơ hình phân phối gói RPM ....................................................................31
Hình 2-10: Các bước thực hiện trên máy trạm khi cài đặt gói RPM ........................32
Hình 2-11: Các bước để xóa một gói RPM đã cài đặt ..............................................34
Hình 2-12: Cơng cụ quản lý gói YAST ....................................................................46
Hình 2-13: Tiến trình cài đặt một gói Deb nhị phân .................................................51
Hình 2-14: Tiến trình hủy bỏ một gói deb nhị phân .................................................51
Hình 2-15: Định dạng một gói nguồn .......................................................................52
Hình 2-16: Tổng quan về q trình đóng gói trong debian.......................................52
Hình 2-17: Các thao tác trong tạo gói nguồn và gói nhị phân ..................................53
Hình 2-18: Quản lý gói sử dụng Synaptic.................................................................57
Hình 2-19: Kiểm tra cấu hình một gói bằng cơng cụ Synaptic .................................58
Hình 2-20: Remote access model..............................................................................63
Hình 2-21: Kiến trúc phân lớp NFS ..........................................................................64
Hình 2-22: So sánh mơ hình Client Server và mơ hình P2P .....................................65
Hình 2-23: Phân loại các kiến trúc mạng ngang hàng ..............................................65
Hình 2-24: Mơ hình chia sẻ tập trung .......................................................................66
Hình 2-25: Mơ hình chia sẻ thuần túy.......................................................................67
Hình 2-26:Mơ hình chia sẻ sử dụng mạng lai (Hybrid) ............................................68
Hình 3-1: Mơ hình chung hệ thống phân phối phần mềm phân tán. ........................73
Hình 3-2: Mơ hình các khối trên điểm phân tán phần mềm .....................................75
Hình 3-3: Các module trên máy trạm........................................................................75


-5-


Hình 3-4: Mơ hình mạng tổng thể tồn bộ hệ thống .................................................76
Hình 3-5: Q trình đóng gói phần mềm ..................................................................77
Hình 3-6: Khối các dịch vụ .......................................................................................80
Hình 3-7: Sơ đồ cài đặt và nâng cấp phần mềm .......................................................83
Hình 3-8: Các bước khi cài đặt phần mềm offline ....................................................85
Hình 3-9: Các bước thực hiện gỡ bỏ phần mềm .......................................................86
Hình 3-10: Triển khai hệ thống lưu trữ .....................................................................88
Hinh 3-11: Mơ hình đơn giản một mạng phân tán phần mềm ..................................88


-6-

DANH MỤC BẢNG
Bảng 2-1: Các tham số khi biên dịch gói RPM bằng câu lệnh rpmbuild..................29
Bảng 2-2: Bảng tham số khi cài đặt gói RPM sử dụng câu lệnh RPM -i .................34
Bảng 2-3: Bảng tham số khi gỡ bỏ gói RPM sử dụng câu lệnh RPM -e ..................35
Bảng 2-4: Bảng tham số khi nâng cấp gói RPM sử dụng câu lệnh RPM -u .............36
Bảng 2-5: Cú pháp khi cài đặt gói deb sử dụng dpkg ...............................................55
Bảng 2-6: Cú pháp khi cài đặt gói deb sử dụng apt-get ............................................56
Bảng 2-7: So sánh tính bảo mật và xác thực .............................................................59
Bảng 2-8: So sánh khả năng sử dụng bởi các công cụ của linux ..............................60
Bảng 2-9: So sánh về khả năng mô tả dữ liệu ...........................................................60
Bảng 2-10: So sánh khả năng hỗ trợ tệp đặc biệt ......................................................61
Bảng 2-11: So sánh về khả năng đóng gói ................................................................61
Bảng 2-12: So sánh về khả năng mở rộng ................................................................62
Bảng 2-13: so sánh ưu nhược điểm của P2P với Client/Server ................................70
Bảng 3-1: Các thao tác cơ bản của hệ thống phân phối phần mềm phân tán ...........90



-7-

DANH MỤC TỪ VIẾT TẮT
Từ viết tắt
APT
DB
DPKG
HĐH
LAN
MD5
NAS
P2P
RPM
SWP
YaST
YUM

Từ viết đầy đủ
Advanced Package Tool
Database
Dibian Package Management
Hệ Điều Hành
Local Area Connection
Message Digest Algorithm 5
Network-attached storage
Peer to Peer
Redhat Package Management
Software Processor
Yet another Setup Tool
Yellow dog Updater Modified



-8-

LỜI MỞ ĐẦU
Ngày nay công nghệ thông tin và truyền thơng phát triển một cách mạnh mẽ, các
mạng máy tính và Internet đã đến được với hầu nơi trên trái đất, từ đó nhu cầu trao
đổi, phát triển và chia sẻ phần mềm cũng phát triển khơng ngừng vì vậy đòi hỏi các
cơ chế quản lý và phân phối phần mềm ngày càng phải linh hoạt, thuận tiện và
triển khai trên phạm vi rộng hơn.
Các máy tính nối mạng hiện nay chủ yếu dùng hai hệ điều hành: mã nguồn mở tiêu
biểu là các hệ điều hành UNIX và hệ điều hành mã nguồn đóng mà điển hình là hệ
điều hành Windows. Những hệ điều hành này đều có các cơ chế để phân phối các
phần mềm từ mọi nơi trên mạng theo các phương thức khác nhau. Trên UNIX do
mã nguồn được cơng khai vì vậy việc lấy mã nguồn để đóng gói và phân phối rất
thuận lợi, các cơ chế quản lý và phân phối phần mềm khá tốt và linh hoạt như
RPM, DPKG, YUM, APT…đã giúp người dùng dễ tiếp cận với kho tài nguyên phần
mềm phong phú và thường xuyên phát triển của cộng đồng thông qua Internet.
Tuy nhiên trong điều kiện thực tế hiện nay, trên các hệ thống UNIX, đôi khi người
sử dụng vẫn gặp khó khăn khi tìm kiếm, cài đặt và quản lý phần mềm, cách thức sử
dụng hệ thống UNIX khá phức tạp đồng thời chưa có một hệ thống kho chứa với cơ
sở dữ liệu đầy đủ và cập nhật thường xuyên để người dùng tìm kiếm và tải các phần
mềm mà họ cần, các nhà sản xuất phần mềm cũng gặp khó khăn trong việc phân
phối phần mềm. Vì vậy, tơi đã lựa chọn đề tài “Nghiên cứu tìm hiểu và xây dựng
hệ thống quản lý phân phối phần mềm phân tán kết hợp P2P, xây dựng mơ hình
và triển khai trên các hệ điều hành nguồn mở” nhằm mục đích tạo cho người sử
dụng hệ điều hành nguồn mở dễ dàng tìm kiếm, tiếp cận được với các phần mềm
thường xuyên cập nhật mà họ cần.
Trong luận văn này, được trình bày làm ba phần lớn:
• Chương 1: Các vấn đề về hệ thống phân phối phần mềm phân tán.

• Chương 2: Nghiên cứu các cơ chế quản lý và phân phối phần mềm phân tán
hiện có như: RPM, DPKG trên HĐH nguồn mở, tổng quan nghiên cứu về công
nghệ chia sẻ ngang hàng P2P.


-9-

• Chương 3: Đề xuất một giải pháp quản lý và phân phối phần mềm phân tán
chạy trên hệ điều hành nguồn mở cho phép người sử dụng quản lý, tìm kiếm cập
nhật trực tuyến các phần mềm thương mại và phần mềm mã nguồn mở một cách
linh hoạt và trực quan hơn.
Trong q trình thực hiện luận văn khơng tránh khỏi thiếu sót. Rất mong được tiếp
nhận sự đóng góp ý kiến của các thầy, các cơ, các bạn và tất cả mọi người để cho
luận văn được hoàn thiện hơn.


-10-

CHƯƠNG 1.

CÁC VẤN ĐỀ VỀ HỆ THỐNG PHÂN PHỐI
PHẦN MỀM PHÂN TÁN

1.1. Các khái niệm cơ bản về phần mềm
1.1.1.

Định nghĩa

Phần mềm là tập hợp các câu lệnh, được viết bằng một hay nhiều ngơn ngữ lập
trình theo một trật tự xác định, nhằm thực hiện một hay nhiều các công việc cụ thể.

Về cơ bản, phần mềm được chia thành các loại như sau:
• Phần mềm hệ thống: là những phần mềm giúp chạy phần cứng và hệ thống
máy tính. Nhiệm vụ chính của phần mềm hệ thống là tích hợp, điều khiển và
quản lý các phần cứng riêng biệt của hệ thống máy tính.
• Phần mềm ứng dụng: là một loại chương trình có khả năng làm cho máy tính
thực hiện trực tiếp một cơng việc nào đó người dùng muốn thực hiện.
• Phần mềm lập trình: có nhiệm vụ cung cấp các công cụ hỗ trợ cho người lập
trình viết các chương trình máy tính, mà cụ thể là các phần mềm, bao gồm cả
phần mềm hệ thống và phần mềm ứng dụng
Phạm vi của đề tài là nghiên cứu cơ chế phương thức trong việc phân tán phần
mềm ứng dụng, vì vậy sẽ tập chung vào cách làm việc của các phần mềm ứng dụng
trong một hệ thống máy tính.

1.1.2.

Hoạt động của phần mềm ứng dụng trong một hệ

thống máy tính
Các phần mềm ứng dụng trong một hệ thống máy tính muốn làm việc được, cần
phải có sự hỗ trợ từ các phần mềm hệ thống, phần mềm hệ thống sẽ cung cấp:
• Điều khiển: Điều khiển các phần mềm ứng dụng trong việc chia sẻ tài nguyên
máy tính, đảm bảo các phần mềm trong hệ thống có thể hoạt động đồng thời.
• Thư viện: Bao gồm các thư viện lập trình nhằm hỗ trợ các phần mềm ứng dụng
trong việc giao tiếp vào ra, các thư viện tính tốn, các thư viện đồ họa v.v…


-11-

• Cơ sở dữ liệu: cung cấp kho chứa thơng tin, hỗ trợ phần mềm ứng dụng trong
việc kết nối với với cơ sở dữ liệu

Ngoài ra một phần mềm ứng dụng trong một hệ thống máy tính sẽ sử dụng các tài
ngun trên hệ thống máy tính đó, bao gồm các tài nguyên cục bộ và các tài nguyên
trực tuyến. Hệ thống sẽ hỗ trợ các phần mềm ứng dụng trong việc kết nối với các tài
nguyên này thông qua các thư viện lập trình.

1.1.3.

Các hình thức và quy trình cung cấp phần mềm

Các phần mềm được sử dụng trên máy được tạo ra bởi các cá nhân hay các nhà sản
xuất, đứng trên phương diện về chi phí thì có thể phân chia phần mềm ra thành hai
loại là phần mềm miễn phí và phần mềm thương mại. Đối với phần mềm thương
mại, khách hàng phải trả tiền khi mua sản phẩm, hoặc trả tiền trong quá trình sử
dụng. Cả phần mềm thương mại và phần mềm miễn phí đều được cung cấp dưới hai
hình thức:
• Cung cấp thơng thường: Nhà sản xuất đóng gói sản phẩm, in sao lên các thiết
bị lưu trữ như CD, DVD v.v… hoặc đi kèm với sản phẩm mua như máy xách
tay, máy để bàn v.v… từ đó chuyển tới người sử dụng.
• Cung cấp trực tuyến: Các sản phẩm được đưa lên mạng, và người sử dụng có
thể truy cập vào các Website của hãng để tải các phiên bản phần mềm, việc cung
cấp trực tuyến rất thuận lợi cho việc cập nhật các phiên bản mới của sản phẩm,
hay các bản sữa lỗi, cập nhật bảo mật v.v… Việc cung cấp trực tuyến có lợi cho
các doanh nghiệp, các nhà sản xuất phần mềm cung cấp các phần mềm tới tay
người sử dụng thông qua Internet, không bị trở ngại bởi khoảng cách địa lý. Tuy
nhiên việc cung cấp trực tuyến đơi khi gặp khó khăn về vấn đề bản quyền, tính
chất pháp lý và vấn đề thanh tốn trực tuyến v.v…

1.2. Tổng quan về hệ thống phân phối phần mềm phân tán
1.2.1.


Khái niệm và yêu cầu của hệ thống phân phối phần

mềm phân tán
Hệ thống phân phối phần mềm phân tán được định nghĩa là một hệ thống trong
đó, các máy tính được nối với nhau tạo thành một mạng, trong mạng này các máy


-12-

sử dụng nhiều máy chủ, cung cấp và phân tán các phần mềm trên đó cho các máy
trạm trong hệ thống. Các máy trạm trong hệ thống sử dụng phần mềm phân tán để
tải các phần mềm từ máy chủ.
Một hệ thống phân phối phần mềm phân tán cần đảm bảo:
• Hệ thống đáp ứng được các yêu cầu từ máy trạm, số lượng yêu cầu phụ thuộc
vào số lượng máy trạm trong hệ thống, số lượng máy trạm có thể mở rộng được.
• Hệ thống phải đảm báo tính trong suốt để người sử dụng giao tiếp với hệ thống
như một hệ thống thống nhất tồn vẹn
• Hệ thống phải có tính an tồn, bảo mật cao.
• Hệ thống cho phép các dịch vụ khác bổ sung vào mà khơng gây xung đột với
các dịch vụ đã có của hệ thống phân tán.
• Trên máy trạm ngồi việc cài đặt cịn cho phép cập nhật các gói phần mềm một
cách dễ dàng.

1.2.2.

Nguyên tắc hoạt động cơ bản của một hệ thống phân

tán phần mềm
Một hệ thống phân tán phần mềm, làm việc nhằm cung cấp sản phẩm từ nhà sản
xuất đến người sử dụng, quá trình phân tán phần mềm bao gồm ba bước cơ bản:

đóng gói phần mềm, phân tán phần mềm, bảo trì và nâng cấp phần mềm.
• Đóng gói phần mềm: Q trình đóng gói phần mềm nhằm tạo thuận tiện cho
việc phân tán từ người nhà phân phối, đồng thời cũng tạo thuận lợi cho quá, hiện
nay trên các hệ thống máy UNIX phổ biến với hình thức đóng gói RPM và
DEB, trên Windows các phần mềm thường được đóng gói dưới dạng file cài đặt
EXE. Từ phiên bản Windows 2000, Microsoft cung cấp chuẩn đóng gói MSI
mới.
• Phân tán phần mềm: Chỉ xét q trình phân tán phần mềm trực tuyến, hiện nay
trên Windows phổ biến là hình thức người sử dụng tải các bản phần mềm trên
mạng sau đó cài đặt trên máy. Trên các máy UNIX người sử dụng cũng có thể
tải các gói phần mềm về sau đó tiến hành cài đặt bằng cách sử dụng câu lệnh
hay phần mềm hỗ trợ


-13-

• Bảo trì và nâng cấp phần mềm: bảo trì và nâng cấp phần mềm là trong những
giai đoạn quan trọng trong quá trình phân tán phần mềm. Hầu hết các phần mềm
được tạo ra đều được các nhà sản xuất nâng cấp và cập nhật các phiên bản,
nhiệm vụ của một hệ thống phân tán phần mềm không chỉ dừng lại ở q trình
phân tán phần mềm mà cịn phải cung cấp các giao thức cho quá trình nâng cấp
và cập nhật các phiên bản phần mềm sau này.

1.2.3.

Cách thức quản lý phần mềm trên hệ điều hành

nguôn mở
Trên hệ điều hành nguồn mở, các phần mềm được quản lý dưới dạng các gói phần
mềm, các gói phổ biến hay gặp nhất là gói Debian, gói RPM và gói Tarball. Gói

Debian là định dạng phổ biến nhất sẽ gặp khi cài đặt phần mềm trong Ubuntu. Đây
là định dạng gói phần mềm chuẩn sử dụng bởi Debian và các nhánh con của
Debian. Tất cả phần mềm trong kho của Ubuntu là được đóng gói với định dạng
này. Tarballs là một tập hợp rất nhiều tệp được nén lại trong một tệp tài liệu đơn.
Một tarball là rất giống với một tệp .zip trong Windows hoặc một tệp .hqx ở Macs.
Trình quản lý gói của Redhat hoặc định dạng .RPM là được thiết kế đặc biệt để dễ
dàng cài đặt và quản lý gói phần mềm. Định dạng này cho phép bạn tự động cài đặt,
nâng cấp và gỡ bỏ các gói phần mềm. Nó tìm vết các phụ thuộc và sẽ không cài đặt
phần mềm nếu những phụ thuộc của nó trong các gói khác chưa được cài đặt.

1.2.4.

Vai trò của người quản trị trên hệ thống phân tán

phần mềm
Trong một hệ thống phân tán phần mềm, người quản trị có vai trị rất quan trọng,
việc cấu hình, bổ sung, cập nhật thơng tin cho các gói phần mềm v.v.. đều được
thực hiện bởi người quản trị hệ thống.
Trên máy chủ, nhiệm vụ của người quản trị hệ thống bao gồm:
• Cấu hình hệ thống, cập nhật hệ điều hành tối ưu hóa hệ thống
• Cài đặt tường lửa, kiểm tra sửa lỗi bảo mật.
• Bổ sung, cập nhật các gói phần mềm


-14-

• Theo dõi hệ thống, hỗ trợ 24/7

1.3. Trao đổi giữa các thành phần trong một hệ thống phân tán
1.3.1.


Giao tiếp giữa Client và Server

Phân phối phần mềm được thực hiện dựa trên mơ hình Client-Server. Trong đó
Client là một tiến trình thực hiện khởi đầu của các hoạt động trong hệ thống, cịn
Server là một tiến trình chờ các yêu cầu được gửi tới từ các Client và thực hiện các
yêu cầu đó. Trong một hệ phân tán theo mơ hình Client-Server, việc chia sẻ dữ liệu
giữa Server với các Client cần có sự phối hợp chặt chẽ giữa cả hai bên để đảm bảo
tính nhất quán và độ tin cậy của dữ liệu được chia sẻ. Điều đó được thể hiện bởi hai
điều kiện trái ngược nhau cần được thoả mãn đồng thời: hoạt động của các Client
không được ảnh hưởng lẫn nhau, đồng thời các Client có thể sử dụng Server để
chia sẻ và trao đổi dữ liệu. Trong mơ hình Client-Server, các thao tác của Client
đều phụ thuộc vào Server, do đó để đảm bảo khả năng chia sẻ dữ liệu, Server cần
phải đảm bảo:
• Có khả năng điều khiển tương tranh.
• Có khả năng điều phối giao dịch phân tán.
• Có khả năng phục hồi và chịu lỗi.
• Có khả năng bảo mật cao.
Trong một số trường hợp, Client gửi yêu cầu đến Server và kết quả trả về là khá
lớn, khi đó, thay vì nhận toàn bộ dữ liệu trong một lần, Client và Server có thể trao
đổi dữ liệu thành nhiều lần. Như vậy, cả Client và Server đều có thời gian thực hiện
các việc khác trong khi vẫn trao đổi dữ liệu, đồng thời có khả năng xử lý ngay dữ
liệu vừa nhận để đưa ra các quyết định về thao tác tiếp theo.

1.3.2.

Giao dịch phân tán

Giao dịch phân tán là giao dịch bao gồm một tập các thao tác giữa hai hoặc nhiều
máy tính. Thơng thường, trong một giao dịch phân tán, một số máy tính cung cấp

tài nguyên cho giao dịch (tức là đối tượng giao dịch), máy quản lý việc giao dịch
(tức quản lý vào thao tác trên tài nguyên được cung cấp), và máy yêu cầu giao dịch


-15-

(gửi yêu cầu tới máy quản lý giao dịch). Những máy này có thể là một hoặc khác
nhau, tuỳ theo cấu trúc của hệ thống. Có hai cách giao dịch phân tán có thể thực
hiện: giao dịch đơn giản và giao dịch cấu trúc lồng.
Trong giao dịch đơn giản Client gửi yêu cầu đến nhiều hơn một Server, nhưng mỗi
Server thực hiện yêu cầu của Client mà không liên quan đến các thao tác trên các
Server khác. Một giao dịch Client đơn giản hồn thành các u cầu của nó trước khi
tiếp tục chuyển sang giao dịch tiếp theo. Do đó, mỗi giao dịch truy cập đến các phần
tử dữ liệu một cách tuần tự. Khi các Server sử dụng trạng thái khố, một giao dịch
có thể chỉ bị khố đối với một phần tử dữ liệu ở một thời điểm.
Trong một số trường hợp, thao tác trên Server này có thể liên quan đến thao tác trên
các Server khác. Để giải quyết điều này, mỗi giao dịch Client sẽ được định cấu trúc
như là một tập các giao dịch có cấu trúc lồng (một giao dịch bao gồm một phân
cấp các giao dịch lồng). Các giao dịch lồng ở cùng một mức có thể thực hiện đồng
thời. Giao dịch có cấu trúc sẽ đạt được hiệu năng cao hơn so với giao dịch đơn giản
bởi vì các yêu cầu có thể thực hiện song song, trong khi với một giao dịch đơn giản,
tất cả các yêu cầu phải được thực hiện một cách tuần tự.

1.3.3.

Khôi phục và chịu lỗi.

Server cung cấp các giao dịch bao gồm một trình quản trị khơi phục mà mối quan
tâm của nó là đảm bảo rằng hiệu năng của các cuộc giao dịch trên Server có thể
được khơi phục khi Server bị khởi động lại sau khi gặp lỗi, trình khơi phục cất giữ

các thành phần dữ liệu trong một bộ chứa thường trực cùng với một danh sách các ý
định và tình trạng thông tin của mỗi giao dịch.
Các phiên giao dịch không phải ln thích hợp cho mọi ứng dụng, các ứng dụng
yêu cầu thời gian thực và các ứng dụng cần chạy đúng trên các phần cứng lỗi cần
phải có các cách giải quyết khác cho khả năng chịu lỗi và khơi phục.
Khả năng chịu lỗi có hai khía cạnh – miêu tả các đặc tính của các lỗi và khả năng
che, lọc lỗi. Rất nhiều loại lỗi có thể xuất hiện trong hệ phân tán. Nó bao gồm các
lỗi ‘fail-stop’ và các lỗi ‘Byzantine failure’.
Có hai cách tiếp cân để thực hiện che phủ lỗi mà trong phần này chúng ta sẽ đề cập
đến đó là che phủ lỗi phân cấp và che phủ lỗi nhóm.


-16-

Mặc dù các dịch vụ giao dịch rất thích hợp để giải quyết các vấn đề về duy trì giữ
liệu được chia sẽ trong một thời gian dài nhưng trên thực tế khơng phải các dịch vụ
này ln thích hợp cho mọi ứng dụng phân tán. Một dịch vụ giao dịch lưu trữ các
thành phần dữ liệu của mình trong một tệp khôi phục trong các hoạt động thông
thường của nó. Vì thế khi xảy ra lỗi nó có thể thực hiện khôi phục các thành phần
dữ liệu này từ tệp khơi phục nói trên.
Khơi phục một dịch vụ bằng cách khởi động lại và phục hồi các thành phần dữ liệu
của chúng từ tệp phục hồi có thể rất chậm đối với một vài ứng dụng. Việc sử dụng
các bản sao dịch vụ chạy trên các máy tính khác nhau có thể làm cho khả năng phục
hồi nhanh hơn nhiều. Nếu các bản sao này luôn được cập nhật thì việc khơi phục
một lỗi đơn có thể được thực hiện ngay lập tức.
Phần đầu tiên trong chương này chúng ta đề cập tới khôi phục các phiên giao dịch
phân tán. Phần còn lại ta đề cập tới một cách tiếp cân với khả năng chịu lỗi mà chi
tiết là bản thiết kế các dịch vụ với yêu cầu thời gian thực, giới thiệu các loại lỗi khác
nhau có thể làm ánh hưởng tới các Server, mạng, các tệp hệ thống …Các loại lỗi
này bao gồm lỗi dừng-“fail-stop” và lỗi Byzantine “Byzantine-failure” cuối cùng ta

xem xét làm cách nào các dịch vụ có thể thực hiên che lỗi.

1.3.4.

Bảo mật

Hệ thống phân tán có rất nhiều lợi ích mà hầu hết mọi người đều biết. Nó cho phép
mọi người dùng mạng có thể chia sẻ thơng tin với nhau. Tuy nhiên, ngoài việc chia
sẻ tài nguyên ta cần phải đảm bảo an tồn cho hệ thống để những người dùng có thể
tin cậy và để mạng phân tán thực sự có ích cho mọi người.
Sự xâm phạm tính an toàn của mạng phân tán phần lớn là do tính mở của các kênh
thơng tin(chính là các cổng được sử dụng hợp pháp để thơng tin giữa các tiến trình
ví dụ như giữa Client và Server).
Tính mở của hệ thống phân tán đã để lộ ra nhiều lỗ hổng bảo mật ở nhiều ngữ cảnh
khác nhau đe dọa đến sự an toàn của mạng và sự tồn vẹn của cá thơng tin. Các
phương thức để tìm ra những sự đe dọa đó được nhận ra(còn gọi là xác định tội
phạm) dựa trên sự can thiệp trái phép vào hệ thống. Những sự can thiệp trái phép


-17-

này gồm có nghe trộm, giả danh, can thiệp vào các thơng báo và phát lại các thơng
báo cũ.
Thật khó mà xác định các nguy cơ tiềm ẩn vì vậy ta cần hạn chế những thông tin
được phép xem đối với những người sử dụng có khơng được tin tưởng. Nhưng
trước hết ta phải bắt đầu với các thành phần đáng tin cậy để xây dựng một hệ thống
hữu ích. Tính tin cậy của hệ thống truyền thơng phải có mặt ở tất cả thành phần của
hệ thống đó.
Những cơ chế được sử dụng để thực hiện bảo mật phải phù hợp với một chuẩn nào
đó, ví dụ bảo vệ các giao thức thông tin và phần mềm cần được xác thực đối với các

thơng báo. Q trình chứng minh phải thực hiện đúng theo chuẩn.

1.3.4.1. Những yêu cầu về bảo mật cho hệ thống ClientServer
Để bảo vệ hệ thống khỏi những vi phạm về tính mật đã nêu ở trên chúng ta phải:
• Bảo đảm an tồn cho các kênh thơng tin, tránh việc nghe trộm.
• Thiết kế hệ thống sao cho Client và Server có thể theo dõi được những nghi ngờ
thường nhật và đưa ra những thay đổi thơng báo thích hợp (các giao thức xác
thực) để đạt đến các trạng thái sau:
o Server phải biết rằng Client đang hoạt động nhân danh những người yêu
cầu chúng.
o Client cần được biết rằng Server cung cấp một phần dịch vụ cho nó chính là
Server đã được xác thực cho những dịch vụ đó.
• Chắc chắn việc truyền thơng là trong suốt để tránh những vi phạm bảo mật nhờ
phát lại những thông báo.
Các cơ chế bảo mật của hệ thống phân tán thường dựa trên ba kỹ thuật: mã hóa, xác
thực và điều khiển truy cập. Những yêu cầu về tính trong suốt sẽ được đề cập đến ở
phần xác thực.

1.3.4.2. Các cơ chế xác thực
Trong hệ thống đa người dùng tập trung, các cơ chế xác thực có thể thực hiện rất
đơn giản. Một người sử dụng có thể được xác thực bởi username và password ngay


-18-

từ khi họ bắt đầu phiên làm việc và phiên làm việc đó hoạt động dưới sự điều khiển
của người sử dụng đó. Vấn đề này dựa trên việc quản lý tập trung các tài nguyên
của hệ thống. Hạt nhân của hệ điều hành sẽ ngăn chặn tất cả những hành động cố
gắng tạo ra những phiên làm việc mới giả danh những người dùng khác.
Trong hệ phân tán, xác thực là cơ chế đảm bảo tính tin cậy của Server và Client. Cơ

chế để thực hiện quá trình xác thực dựa trên quyền sở hữu khóa mã xuất phát từ một
thực tế là người chủ thực sự sở hữu một khóa bí mật riêng và chỉ có người đó và chỉ
có người đó mới được sử dụng khóa ấy.

1.3.4.3. Quản lý truy cập
Cơ chế quản lý truy cập có liên quan đến việc đảm bảo việc truy cập đến các tài
ngun thơng tin (như tệp, các tiến trình hoặc các cổng thông tin…) và các tài
nguyên phần cứng (như bộ dị đường, cơng cụ thăm dị…) là hợp lệ đối với một số
người sử dụng có quyền quản lý và sử dụng chúng.
Các cơ chế quản lý truy cập diễn ra trong những hệ điều hành đa người dùng không
phân tán. Trong hệ thống Unix và các hệ thống đa người dùng khác, tệp là nguồn tài
nguyên quan trọng nhất có thể chia sẻ và một cơ chế điều khiển truy cập được cung
cấp cho phép người sử dụng lưa trữ một vài tệp của riêng và chia sẻ cho người khác
theo một cách nào đó.
Trong ba cơ chế đảm bảo an ninh trên, thì cơ chế mã hóa là rất quan trọng trong vấn
đề chia sẻ tài nguyên. Đây là cơ chế để đảm bảo tính tồn vẹn của thơng tin trong
mơi trường phân tán.
Mã hóa: mã hóa thông tin là chuyển thông tin thành một dạng khác sao cho khơng
ai hiểu được nó trừ người có được khóa giải mã.
Chuyển mã và khóa: một thơng báo được mã hóa bởi người gửi theo một phương
pháp mã hóa nào đó là chuyển từ một bản rõ sang bản mã. Người nhận phải biết qui
tắc ngược lại để chuyển từ bản mã về bản rõ ban đầu. Những người sử dụng khác
khơng thể giải mã được văn bản đó trừ khi họ biết được qui tắc giải mã. Việc
chuyển đổi được thực hiện theo qui tắc mã hóa lại các phần tử dữ liệu hoặc đổi chỗ
các phần tử dữ liệu từ vị trí này sang vị trí khác. Điều này ta có thể thực hiện được,
tuy nhiên chúng khá cứng nhắc. Người gửi và người nhận phải biết được cặp khóa


-19-


biến đổi ấy. Nếu người gửi muốn gửi đồng thời cho nhiều người nhận cùng một lúc,
để tránh việc nghe trộm thì các cặp khóa này phải là khác nhau đối với từng người
nhận.
Để tránh việc tạo ra nhiều khóa mới khơng cần thiết, q trình biến đổi giữa mã hóa
và giải mã được chia thành hai phần: hàm mã hóa và khóa. Hàm mã hóa xác định
một giải thuật mã hóa dùng để biến đổi dữ liệu từ bản rõ sang bản mã bằng cách kết
hợp chúng với khóa biến đổi chúng theo các thao tác mà kết quả trả về là sự phụ
thuộc của các giá trị vào khóa.
Xét một văn bản mã M với một hàm mã hóa xác định và một khóa K [M]K. Hiệu
quả của bất kỳ phương thức mã hóa thơng tin nào phụ thuộc vào việc sử dụng các
hàm biến đổi bởi rõ ràng một hình thức tấn cơng bất kỳ đều tìm cách khơi phục M
nếu biết hoặc tìm K từ một thông báo M bất kỳ và
Lược đồ cơ bản của khóa này phụ thuộc vào q trình bảo đảm an tồn trong việc
lưu trữ và phân phối khóa. Trong hệ phân tán, q trình sản xuất và phân phối khóa
thường được thực hiện bởi một dịch vụ đặc biệt: dịch vụ phân phối khóa.


-20-

CHƯƠNG 2.

PHÂN PHỐI PHẦN MỀM TRÊN CÁC HỆ ĐIỀU
HÀNH NGUỒN MỞ

2.1. Quản lý và phân phối phần mềm trên Redhat sử dụng
RPM
Được thành lập năm 1993, Redhat là nhà cung cấp Linux và giải pháp mã nguồn
mở hàng đầu trên thế giới. Được xếp hạng đánh giá cao trong những nhà cung cấp
hàng đầu được bình chọn bởi tạp chí CIO Insight Magazine trong hai năm liên tiếp,
Redhat vẫn giữ vững các giá trị và độ tin cậy cao đối với khách hàng, và được biết

đến nhiều nhất với giải pháp mã nguồn mở hàng đầu trên thế giới. Redhat sử dụng
RPM (Redhat Package Management) để quản lý các gói phần mềm.
Các tính năng của RPM:
• Hỗ trợ đa kiến trúc.
• Cho phép nhiều phiên bản phần mềm chạy song song.
• Một tệp cho cả một chương trình.
• u cầu chỉ một lệnh khi thực hiện.
• Sử dụng mã nguồn mở.
RPM là một phương thức quản lý gói được sử dụng bởi nhiều bản phân phối Linux
như Redhat, Suse, Mandrake, … Khi các phần mềm đã được đóng gói dưới dạng
RPM, người sử dụng chỉ việc tải về và cài đặt qua tiện ích của RPM. Tuy nhiên có
nhiều phần mềm chỉ cung cấp dưới dạng mã nguồn (tgz, tar.gz, tar.bz2). Người
dùng có thể sử dụng những mã nguồn này hoặc người dùng có thể lấy phần mềm
của mình để đóng gói thành gói tin RPM và phân phối lại cho cộng đồng sử dụng.

2.1.1.

Cấu trúc gói RPM

Để thuận tiện trong việc cài đặt và quản lý, các gói này được gán nhãn, với khả
năng định danh cao. Cách đặt tên tệp của một gói như sau:
name-version-release.architecture.RPM


-21-

Thơng thường name là tên ứng dụng hoặc tên gói khi nó được cài đặt trên hệ thống.
Trường version định nghĩa số phiên bản của phần mềm chứa trong gói, trường
release lưu giữ ngày phát hành phiên bản phần mềm mà chứa gói tệp. Trường cuối
cùng architecture xác định là kiểu kiến trúc, định danh các loại hệ thống và tệp đó

tương thích.
Có hai loại gói RPM chính là RPM nhị phân (RPM binary) và RPM nguồn (RPM
source). Một gói RPM nhị phân được biên dịch riêng cho một kiến trúc đặc biệt.
Phần lớn những gói RPM nhị phân chứa đựng các ứng dụng hồn chỉnh, số cịn lại
cung cấp các thư viện. RPM cung cấp các thư viện cho phép nhiều ứng dụng chia sẻ
các thư viện dùng chung.
Trong khi đó, các gói RPM nguồn (thơng thường tên tệp có phần mở rộng là
.src.RPM. Các gói RPM nguồn chứa mã nguồn của chương trình và các scripts cần
thiết để tạo lại các gói RPM nhị phân.
Ngồi ra RPM cịn có các định dạng khác như ppc.rpm (dành cho Pocket PC), và
noarch.rpm (là những gói cài đặt khơng phụ thuộc vào kiến trúc - no architect).
Tất cả các gói RPM đều có chung một cấu trúc như sau:

Hình 2-1: Cấu trúc gói RPM

2.1.1.1. Định danh gói
Phần định danh cũng được gọi là phần lead (hay rpmlead) chứa các thông tin sau:
• Magic number: Việc đầu tiên khi đọc tệp này hệ thống sẽ đọc số này và tìm
kiếm trong cơ sở dữ liệu (chứa trong /usr/share/magic hoặc /etc/magic), từ đó hệ
thống sẽ phát hiện ra đây là một gói RPM.
• Type Flag: Cờ này giúp hệ thống có thể xác định kiểu của gói RPM (là RPM
nhị phân hay RPM nguồn).
• Architecture flag: Cờ này sẽ được sử dụng để kiểm tra lại rằng gói RPM có
theo một kiến trúc hay không.


-22-

2.1.1.2. Phần chữ ký
Phần chữ ký là phần tiếp theo của phần định danh gói. Chữ ký RPM được sử dụng

để xác nhận tính tồn vẹn của một gói, nó không kiểm tra lỗi trong các ứng dụng
phần mềm mà thay vào đó nó đảm bảo rằng người sử dụng đã tải về một gói RPM
hợp lệ. Ở đây gói RPM sử dụng một hàm tốn học để tạo, thơng thường là một PGP
(Pretty Good Privacy), hay một chuỗi mã hóa MD5.

2.1.1.3. Phần header
Trong phần header này những khối thơng tin dữ liệu thuộc về gói, bao gồm: thơng
tin về bản quyền, tên của gói, số phiên bản, ngày phát hành, các thơng tin khác mơ
tả về gói v.v...

Hình 2-2: Phần thơng tin gói RPM

2.1.1.4. Phần payload
Payload (hay archive) chứa tất cả những tệp trong gói, đây là những tệp của chương
trình sẽ được cài đặt trong quá trình cài đặt. Để tiết kiệm không gian, giữ liệu trong
phần này được nén theo chuẩn định dạng GNU gzip.Trong một tệp chứa các thông
tin về tên, quyền, mã kiểm tra, nội dung tệp v.v...

Hình 2-3: Thơng tin trên mỗi tệp trong gói RPM

2.1.2.

Phân phối gói phần mềm RPM trên máy chủ

2.1.2.1. Q trình đóng gói
Q trình tạo tệp RPM chỉ là việc lựa chọn từ hệ thống tệp đã được biên dịch của
các gói mã nguồn để đưa vào gói RPM.
Trong quá trình tạo tệp RPM bước xây dựng tệp .spec là rất quan trọng vì chính tệp
này hướng dẫn q trình tạo lập ra tệp RPM. Nó nói cho trình tạo RPM biết phải
sao chép các tệp hay thiết lập các thơng số cho gói RPM. Trong chính tệp này,

người dùng cũng có thể can thiệp vào các tệp và các thư mục sẽ được cài đặt, thiết


-23-

lập các thơng số cho gói mã nguồn sẽ được được biên dịch và do đó ảnh hưởng tới
tệp RPM. Quy trình đóng gói một gói tin rpm bao gồm:

Hình 2-4: Quy trình đóng gói một tệp RPM
Khi chuẩn bị mã nguồn và tệp spec để biên dịch, chúng phải được đặt tại các thư
mục theo đúng cấu trúc, khi đó hệ thống mới có thể hiểu và biên dịch thành cơng.
Như vậy bước đầu tiên trong q trình đóng gói là tạo cấu trúc thư mục, file spec và
mã nguồn.
• Tạo cấu trúc thư mục

Hình 2-5: Cấu trúc cây thư mục để tạo tệp RPM
Trong đó:
o /usr/src/redhat/SOURCE: Chứa các tệp mã nguồn source code, các tệp
patch, các tệp icon. Nếu ta cài đặt một gói mã nguồn, sẽ đặt các tệp mã
nguồn vào thư mục này.
o /usr/src/redhat/SPECS: Chứa các tệp .spec điều khiển q trình tạo gói.
Khi cài một gói mã nguồn, tệp .spec của gói binary cũng được sao chép vào
đây.


-24-

o /usr/src/redhat/BUILD: Thư mục diễn ra quá trình xây dựng gói.
o /usr/src/redhat/RPMS: Thư mục mà các gói nhị phân được tạo ra sau quá
trình xây dựng. Trong thư mục này cịn có các thư mục cấp nhỏ hơn là i386,

i686, noarch chứa gói ứng với từng hệ thống, kiến trúc cụ thể.
o /usr/src/redhat/SRPMS: Thư mục mà các gói mã nguồn được tạo ra đặt ở
đây.
• Tạo tệp cấu hình spec
Ðể đóng gói được một phần mềm, rpm cần đến một tệp mơ tả tất cả các q trình nó
cần tiến hành, tất cả các thông tin liên quan đến phần mềm đó, tệp .spec là một tệp
text thơng thường (tệp .spec gần giống với Makefile).

Hình 2-6: Cấu trúc file spec
Ví dụ về một file spec:
Summary: A program that ejects removable media using software
control.
Name: eject
Version: 2.0.2
Release: 3
Copyright: GPL
Group: System Environment/Base
Source: />Patch: eject-2.0.2-buildroot.patch
BuildRoot: /var/tmp/%{name}-buildroot
%description
The eject program allows the user to eject removable media
(typically CD-ROMs, floppy disks or Iomega Jaz or Zip disks)
using software control. Eject can also control some multidisk CD changers and even some devices' auto-eject features.
Install eject if you'd like to eject removable media using
software control.
%prep
%setup -q
%patch -p1 -b .buildroot
%build
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"

%install
rm -rf $RPM_BUILD_ROOT


×