Khóa luận Giải hệ phương trình tuyến tính kích thước lớn trên nền tảng Grid Computing

Tài liệu Khóa luận Giải hệ phương trình tuyến tính kích thước lớn trên nền tảng Grid Computing: ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Đức Thịnh GIẢI HỆ PHƢƠNG TRÌNH TUYẾN TÍNH KÍCH THƢỚC LỚN TRÊN NỀN TẢNG GRID COMPUTING KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hƣớng dẫn: Tiến sĩ. Nguyễn Minh Hằng HÀ NỘI - 2010 Lời cảm ơn Trước hết là lời cảm ơn sâu sắc của em đến những người đã giúp đỡ em hoàn thành khóa luận tốt nghiệp này, một dấu mấu quan trọng trong cuộc đời và sự nghiệp của em. Em xin chân thành cảm ơn Khoa công nghệ thông tin trường đại học Công Nghệ - Đại học quốc gia Hà Nội đã tạo điều kiện cho em được thực hiện khóa luận này. Khóa luận sẽ không thể hoàn thành nếu thiếu sự chỉ bảo tận tình của TS.Nguyễn Minh Hằng, người đã định hướng, hỗ trợ em trong suốt thời gian 3 tháng thực hiện khóa luận. Em xin chân thành cảm ơn cô. Một lời cảm ơn từ đáy lòng con xin được gửi đến cha mẹ, những người đã nuôi nấng con thành người để được có ngày hôm nay. Em xin cảm ơn các quý thầy cô ...

pdf69 trang | Chia sẻ: haohao | Lượt xem: 1072 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Khóa luận Giải hệ phương trình tuyến tính kích thước lớn trên nền tảng Grid Computing, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Đức Thịnh GIẢI HỆ PHƢƠNG TRÌNH TUYẾN TÍNH KÍCH THƢỚC LỚN TRÊN NỀN TẢNG GRID COMPUTING KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hƣớng dẫn: Tiến sĩ. Nguyễn Minh Hằng HÀ NỘI - 2010 Lời cảm ơn Trước hết là lời cảm ơn sâu sắc của em đến những người đã giúp đỡ em hoàn thành khóa luận tốt nghiệp này, một dấu mấu quan trọng trong cuộc đời và sự nghiệp của em. Em xin chân thành cảm ơn Khoa công nghệ thông tin trường đại học Công Nghệ - Đại học quốc gia Hà Nội đã tạo điều kiện cho em được thực hiện khóa luận này. Khóa luận sẽ không thể hoàn thành nếu thiếu sự chỉ bảo tận tình của TS.Nguyễn Minh Hằng, người đã định hướng, hỗ trợ em trong suốt thời gian 3 tháng thực hiện khóa luận. Em xin chân thành cảm ơn cô. Một lời cảm ơn từ đáy lòng con xin được gửi đến cha mẹ, những người đã nuôi nấng con thành người để được có ngày hôm nay. Em xin cảm ơn các quý thầy cô đã dạy dỗ em trong suốt 4 năm học ở nhà trường, cung cấp cho em những kiến thức quý báu để bước vào đời. Cảm ơn các bạn của tôi đã là những người động viên tinh thần cũng như ở bên tôi giúp đỡ tôi khi tôi gặp khó khăn. Thời gian 3 tháng vừa qua, mặc dù đã cố gắng để hoàn thành khóa luận một cách tốt nhất nhưng vẫn không thể tránh nổi những sai sót. Em xin kính mong nhận được sự góp ý cũng như chỉ bảo của quý thầy cô. Xin chân thành cảm ơn Sinh viên Nguyễn Đức Thịnh Mục lục Lời mở đầu ................................................................................................. 1 Tóm tắt khóa luận ....................................................................................... 3 Chương 1 : Tổng quan về công nghệ Grid Computing ............................. 4 1.1. Lịch sử phát triển của công nghệ Grid ............................................................ 4 1.2. Khái niệm ......................................................................................................... 5 1.3. Các kiểu tài nguyên của Grid ........................................................................... 6 1.3.1. Tài nguyên tính toán ............................................................................................ 6 1.3.2. Tài nguyên lưu trữ ............................................................................................... 6 1.3.3. Phương tiện liên lạc ............................................................................................. 6 1.3.4. Phần mềm, ứng dụng ........................................................................................... 7 1.3.5. Các thiết bị đặc biệt ............................................................................................. 7 1.4. Phân lọai các hệ thống Grid ............................................................................. 7 1.4.1. Grid Tính toán (Computation Grid) ..................................................................... 7 1.4.2. Grid Dữ liệu (Data Grid) ..................................................................................... 8 1.4.3. Scavenging Grid .................................................................................................. 8 1.5. Kiến trúc Grid .................................................................................................. 8 1.5.1. Bản chất Kiến trúc Grid ....................................................................................... 8 1.5.2. Chi tiết Kiến trúc Grid tổng quát ....................................................................... 10 1.5.2.1. Tầng Fabric .................................................................................................. 10 1.5.2.2. Tầng Connectivity ....................................................................................... 11 1.5.2.3. Tầng Resource ............................................................................................. 12 1.5.2.4. Tầng Collective ........................................................................................... 13 1.5.2.5. Tầng Application ......................................................................................... 13 1.6. Grid computing đem lại những lợi ích gì ? .................................................... 13 1.6.1. Khai thác tối đa tài nguyên xử lý ....................................................................... 13 1.6.2. Khả năng xử lý song song.................................................................................. 14 1.6.3. Chia sẽ tài nguyên ảo và tổ chức ảo .................................................................. 14 1.6.4. Sự truy cập đến các tài nguyên khác.................................................................. 14 1.6.5. Cân bằng tài nguyên .......................................................................................... 15 1.6.6. Độ tin cậy ........................................................................................................... 16 Chương 2: Globus Toolkit 4 .................................................................... 17 2.1. Khái niệm về Globus ...................................................................................... 17 2.2. Nguyên nhân thúc đẩy sự phát triển của Globus ........................................... 18 2.3. Kiến trúc Globus ............................................................................................ 19 2.3.1. Các thành phần thường trực ............................................................................... 19 2.3.1.1. Java WS Core .............................................................................................. 19 2.3.1.2. C WS Core ................................................................................................... 19 2.3.2. Các thành phần bảo mật ................................................................................. 19 2.3.2.1. Cơ bản về bảo mật Grid và GSI .................................................................. 20 2.3.3. Các thành phần quản lý dữ liệu ......................................................................... 25 2.3.3.1. GridFTP ....................................................................................................... 25 2.3.3.2. Information services .................................................................................... 26 2.3.3.3. Index Service ............................................................................................... 27 2.3.4. Các thành phần quản lý tài nguyên .................................................................... 27 2.3.4.1. Kiến trúc quản lý tài nguyên của Globus Toolkit ....................................... 27 2.3.4.2. Chi tiết các thành phần ................................................................................ 29 2.3.4.2.1. GRAM ................................................................................................... 29 2.3.4.2.2. Pre-WS GRAM ..................................................................................... 32 2.3.4.2.3. WS-GRAM ........................................................................................... 34 Chương 3 : MPICH và MPICH-G2 ......................................................... 40 3.1. MPI ................................................................................................................. 40 3.2. MPICH ........................................................................................................... 41 3.3. MPICH-G2 ..................................................................................................... 41 3.3.1. Quá trình thực thi một ứng dụng ....................................................................... 42 Chương 4 : Thí nghiêm triển khai hệ thống Grid cơ bản cho mục đích tính toán song song sử dụng Globus Toolkit và MPICH-G2 .................. 44 4.1. Triển khai Globus Toolkit .............................................................................. 44 4.1.1. Chuẩn bị về phần cứng và phần mềm hệ thống ................................................. 44 4.1.2. Cài đặt Globus Toolkit ....................................................................................... 45 4.1.3. Cấu hình các thành phần của globus toolkit ...................................................... 47 4.1.3.1. Cấu hình bảo mật ......................................................................................... 47 4.1.3.2. Cấu hình dich vụ GridFTP .......................................................................... 50 4.1.3.3. Cấu hình gatekeeper .................................................................................... 51 4.1.3.4. Cấu hình WS GRAM .................................................................................. 52 4.2. Triển khai MPICH-G2 ................................................................................... 53 Chương 5 : Chạy và đánh giá hiệu năng của hệ thống Grid .................... 54 5.1. Giới thiệu về 3 bài toán sẽ được thử nghiệm ................................................. 54 5.1.1. Tính toán số PI ................................................................................................... 54 5.1.2. Hệ phương trình tuyến tính ................................................................................ 54 5.1.3. Bài toán quy hoạch tuyến tính ........................................................................... 55 5.2. Cách thức chạy 1 bài toán trên hệ thống Grid được xây dựng bởi 2 công cụ Globus Toolkit và MPICH .................................................................................... 57 5.3. Kết quả chạy các chương trình và đánh giá kết quả ...................................... 59 5.3.1. Kết quả chạy chương trình tính số PI ................................................................ 59 5.3.2. Kết quả chạy chương trình giải hệ phương trình tuyến tính .............................. 59 5.3.3. Kết quả giải bài toán quy hoạch tuyến tính ....................................................... 60 5.3.4. Nhận xét chung .................................................................................................. 62 Kết luận .................................................................................................... 63 Tài liệu tham khảo .................................................................................... 64 1 Lời mở đầu Trong thập niên qua, nền công nghệ thông tin thế giới phát triển đã đóng góp rất nhiều vào sự phát triển chung của thế giới. Chúng ta có thể bắt gặp những ứng dụng của công nghệ thông tin ở khắp mọi nơi, giờ đây nhiều người sở hữu máy tính cá nhân, sở hữu những chiếc điện thoại, cập nhập thông tin qua những trang web, kết nối với nhau qua những phần mềm chat… Đấy là những thứ hiện hữu hàng ngày mà chúng ta trực tiếp sờ thấy và sử dụng nó, ẩn sau nó là những nghiên cứu, những công nghệ được rất nhiều nhà khoa học cũng như phát triển trên thế giới nghiên cứu để đóng góp vào sự phát triển của nền công nghệ thông tin nói riêng và nền khoa học thế giới nói chung. Khi nói đến máy tính, một khái niệm hay được nhắc đến là những chiếc máy tính để bàn nhỏ gọn hay những chiếc laptop cá nhân. Nhưng đó là những thiết bị cá nhân giúp chúng ta giải trí, làm việc, còn với những chiếc máy tính phải xử lý lượng dữ liệu từ khắp nơi trên thế giới một cách thường xuyên và liên tục thì sao. Khi đó ,chúng ta lại được bắt gặp khái niệm siêu máy tính (Super Computer) . Những siêu máy tính trên thế giới được xây dựng rất đắt tiền với hàng trăm ngàn hay hàng triệu bộ vi xử lý, để đầu tư cho những hệ thống máy như vậy tốn rất nhiều tiền của cho việc triển khai cũng như bảo dưỡng, với mục đích sử dụng kết nối những người dùng hay tổ chức có chung một mục đích xử lý hay tận dụng tài nguyên máy tính của bất kỳ người dùng máy tính nào để tạo thành một hệ thống mạnh mẽ phục vụ cho việc giải các bài toán về khoa học, thương mại, một lĩnh vực nghiên cứu mới được đưa ra, đó là Grid Computing. Nói một cách tống quát nhất Grid là một loại hệ thống phân tán, bố trí song song, cho phép linh hoạt chia sẻ, tuyển lựa và tập hợp các nguồn tài nguyên độc lập và rải rác về địa lý, tùy theo khả năng sẵn có, công suất, hoạt động, chi phí và yêu cầu về chất lượng dịch vụ của người sử dụng. Grid Computing có rất nhiều ưu điểm mà có thể áp dụng cho việc nghiên cứu cũng như những ưu điểm có thể áp dụng cho doanh nghiệp. Trên thế giới, ý tưởng về Grid Computing đã được hình thành và nghiên cứu từ rất lâu nhưng thực sự bùng nổ vào vài năm trở lại đây khi được các tổ chức cũng như tập đoàn lớn trên thế giới nghiên cứu và triển khai. Tại Việt Nam, công việc nghiên cứu Grid Computing đã được triển khai từ khá lâu và gần đây nhất là đề tài cấp nhà nước “Nghiên cứu, phát triển hệ thống tính toán lưới để hỗ trợ giải quyết các bài toán có khối lượng tính 2 toán lớn (VNGrid)” do PGS.TS. Vũ Đức Thi làm chủ nhiệm cũng đã đạt được một số thành tựu nhất định. Nhận thấy Grid computing là một hướng nghiên cứu đang rất được quan tâm tại ở Việt Nam cũng như thế giới và những lợi ích to lớn mà nó mang lại. Em quyết định chọn đề tài “Giải giải hệ phương trình tuyến tính kích thước lớn trên nền tảng Grid Computing” với mục đích là tìm hiểu Công nghệ Grid là gì ,những khái niệm và đặc điểm liên quan, thí nghiệm tạo một hệ thống Grid nhỏ bằng gói phần mềm GLOBUS TOOLKIT cùng MPICH-G2 để kiểm nghiệm hiệu năng của hệ thống grid khi chạy bài toán Giải hệ phương trình tuyến tính kích thước lớn. 3 Tóm tắt khóa luận 1. Thông tin chung về khóa luận Tên đề tài : Giải hệ phương trình tuyến tính trên nền tảng Grid Computing Giảng viên hướng dẫn : TS.Nguyễn Minh Hằng Sinh viên thực hiện : Nguyễn Đức Thịnh 2. Tóm tắt nội dung khóa luận Khóa luận thực hiện nghiên cứu tìm hiểu các vấn đề chung của công nghệ Grid về mặt khái niệm, kiến trúc của một hệ thống Grid và những ích lợi của Grid mang lại. Cung cấp một cái nhìn tổng quan về Grid. Tìm hiểu mô hình hoạt động của gói phần mềm Globus Toolkit, một gói phần mềm giúp xây dựng một hệ thống Grid, các vấn đề khi thực hiện triển khai tạo dựng một hệ thống Grid với Globus Toolkit. Tìm hiểu về MPICH, MPICH-G2, nguyên tắc hoạt động của MPICH kết hợp với Globus Toolkit để tạo dựng hệ thống Grid phục vụ việc tính toán song song sử dụng ngôn ngữ C và MPI. Thử nghiệm bài toán giải hệ phương trình tuyến tính theo thuật toán song song trên một hệ thống Grid để xem cách thức hoạt động và ưu điểm về khả năng kết hợp xử lý giữa các máy tính khác nhau. 3. Các công cụ đƣợc sử dụng triển khai và thử nghiệm  Globus Toolkit 4.2.1  Centos 5.4  MPICH-1.2.7 4 Chương 1 : Tổng quan về công nghệ Grid Computing 1.1. Lịch sử phát triển của công nghệ Grid Trong những năm gần đây, chúng ta được nghe nhiều đến công nghệ Grid và những ưu điểm của nó. Vậy Grid xuất hiện từ khi nào, từ bao giờ ? Trong quá khứ, những ý tưởng tính toán có liên quan đến Grid đã xuất hiện, với những tên gọi khác nhau và cách tiếp cận khác nhau. Ví dụ như ý tưởng “chia sẻ năng lực tính toán” đã xuất hiện từ những năm 60-70 của thế kỷ XX, lúc đó toàn bộ năng lực tính toán được chia sẻ từ các máy mainframe. Năm 1965, những người phát triển hệ điều hành Multics (tiền thân của hệ điều hành Unix) đã đề cập đến việc sử dụng năng lực tính toán như là một tiện ích, một quan điểm rất gần với quan điểm về Grid hiện nay. Đó là một hệ thống cung cấp năng lực tính toán tương tự như hệ thống cung cấp điện, nước hiện đang được sử dụng trong cuộc sống hàng ngày. Người dùng khi muốn sử dụng tài nguyên tính toán để xử lý công việc, chỉ cần cắm thiết bị vào hệ thống cung cấp, sử dụng và trả tiền giống như khi cắm thiết bị điện vào lưới điện. Tuy trước đó đã có nhiều ý tưởng về Grid nhưng nguồn gốc của Grid chính thức được xác định vào năm 1990, khi thuật ngữ “siêu tính toán” (metacomputing) ra đời, dùng để mô tả các dự án kết nối các trung tâm siêu máy tính của Mỹ nhằm kết hợp sức mạnh xử lý của nhiều siêu máy tính lại với nhau. Đến năm 1995, 2 dự án siêu tính toán quan trọng, ảnh hưởng lớn đến các công nghệ nền tảng trong các dự án Grid ngày nay là FAFNER (Factoring via Network- Enabled Recursion) và I-WAY(Information Wide Area Year) ra đời. Khái niệm Grid ra đời ở phòng thí nghiệm Argonne National Laboratory vào tháng 7/1997, sau đó được đưa vào quyển sách "The Grid: Blueprint for a New Computing Infrastructure" viết bởi tiến sỹ Ian Foster (Argonne National Laboratory) và Carl Kesselman (University of Southern California) năm 1998. Ian Foster đã từng tham gia dự án I-WAY, Carl Kesselman là người tham gia dự án Globus Toolkit, một dự án nền tảng của công nghệ Grid và Metacomputing. 5 Từ đó đến nay, việc phát triển công nghệ Grid trở nên rất sôi động với sự tham gia nghiên cứu, đầu tư của nhiều tổ chức, tập đoàn công nghệ thông tin, nhiều quốc gia, và đã thu được những thành tựu bước đầu. Có thể nói, việc phát triển và xây dựng hệ thống Grid là sự kế thừa và phát triển các ý tưởng, các công nghệ hiện hành ở mức cao hơn. Sự phát triển không ngừng của cơ sở hạ tầng, phần cứng máy tính, mạng đã giúp các hệ thống Grid ngày nay thực hiện được nhiều điều hơn những ý tưởng trước đây. 1.2. Khái niệm Một định nghĩa về Grid khá hoàn chỉnh được đưa ra bởi tiến sỹ Ian Foster như sau “Grid là một loại hệ thống song song, phân tán cho phép chia sẻ, lựa chọn, kết hợp các tài nguyên phân tán theo địa lý, thuộc nhiều tổ chức khác nhau dựa trên tính sẵn sàng, khả năng, chi phí của chúng và yêu cầu về chất lượng dịch vụ (QoS) của người dùng để giải quyết các bài toán, ứng dụng có quy mô lớn trong khoa học, kỹ thuật và thương mại. Từ đó hình thành nên các “tổ chức ảo” (Virtual Organization (VO)), các liên minh tạm thời giữa các tổ chức và tập đoàn, liên kết với nhau để chia sẻ tài nguyên và/hoặc kỹ năng nhằm đáp ứng tốt hơn các cơ hội kinh doanh hoặc các dự án có nhu cầu lớn về tính toán và dữ liệu, toàn bộ việc liên minh này dựa trên các mạng máy tính” Một hệ thống Grid có những đặc trưng như sau:  Có sự kết hợp, chia sẻ các tài nguyên không được quản lý tập trung Grid tích hợp và phối hợp tài nguyên, người dùng thuộc nhiều vùng quản lý khác nhau, nhiều đơn vị khác nhau trong một tổ chức, hay nhiều tổ chức khác nhau. Công nghệ Grid tập trung giải quyết các vấn đề về bảo mật, chính sách quản trị, chi phí, thành viên,… nảy sinh trong quá trình chia sẻ và sử dụng tài nguyên.  Sử dụng các giao diện và giao thức chuẩn, mang tính mở, đa dụng. Grid được xây dựng trên các giao thức và giao diện tổng quát, đa dụng để giải quyết các vấn đề cơ bản như chứng thực người dùng, phân quyền, tìm kiếm và truy xuất tài nguyên.  Đáp ứng yêu cầu cao về chất lượng dịch vụ. Grid cho phép sử dụng phối hợp các tài nguyên để cung cấp nhiều loại dịch vụ với các mức chất lượng khác nhau, liên quan đến ví dụ như thời gian đáp ứng, hiệu suất, tính sẵn sàng, bảo mật, cho phép kết hợp nhiều kiểu tài nguyên để đáp ứng nhu cầu phức tạp của người dùng. Mục tiêu là phải phối hợp làm sao để khả năng của hệ thống sau khi kết hợp phải lớn hơn hẳn tổng khả năng của từng đơn vị cấu thành nên Grid. 6 1.3. Các kiểu tài nguyên của Grid 1.3.1. Tài nguyên tính toán Đây là tài nguyên phổ biến nhất, là các chu kỳ tính toán (computing cycles) được cung cấp bởi bộ vi xử lý của các thiết bị trong Grid. Các bộ vi xử lý không cần phải cùng loại mà có thể có tốc độ, kiến trúc, chạy phần mềm khác nhau. Có 3 cách để khai thác tài nguyên tính toán của Grid: 1. Cách đơn giản nhất là chạy các ứng dụng hiện có trên một node của Grid thay vì chạy trên máy tính cục bộ. 2. Thiết kế ứng dụng, tách các công việc thành các phần riêng rẽ để có thể thực thi song song trên nhiều bộ xử lý khác nhau. 3. Chạy ứng dụng thực thi nhiều lần trên nhiều node khác nhau trong Grid. 1.3.2. Tài nguyên lƣu trữ Tài nguyên phổ biến thứ nhì trong Grid là tài nguyên lưu trữ. Mỗi thiết bị trong Grid thường cung cấp một số dung lượng lưu trữ phục vụ cho việc thực thi ứng dụng trên Grid. Tài nguyên lưu trữ có thể là bộ nhớ trong, ổ đĩa cứng hoặc các thiết bị lưu trữ khác. Bộ nhớ trong thường dùng để lưu trữ dữ liệu tạm thời cho ứng dụng, trong khi các thiết bị lưu trữ ngoài có thể được sử dụng để tăng không gian lưu trữ, tăng hiệu suất, khả năng chia sẻ và đảm bảo tính tin cậy của dữ liệu. 1.3.3. Phƣơng tiện liên lạc Khả năng liên lạc giữa các máy tính phát triển nhanh chóng đã giúp cho công nghệ Grid trở nên hiện thực, do đó đây cũng là một tài nguyên quan trọng. Ở đây bao gồm việc liên lạc, trao đổi dữ liệu giữa các thành phần trong Grid và giao tiếp giữa Grid với bên ngoài. Một số công việc đòi hỏi một lượng dữ liệu lớn nhưng các dữ liệu này thường không nằm trên máy đang thực thi công việc. Khả năng về băng thông trong những trường hợp như vậy là một tài nguyên then chốt, ảnh hưởng đến khả năng của Grid. Việc giao tiếp với bên ngoài được thực hiện thông qua mạng Internet. Grid có thể sử dụng các kết nối Internet để liên lạc giữa các node. Vì các kết nối này không chia sẻ một đường truyền nên làm tăng băng thông truy cập Internet. Các đường truyền dự phòng đôi khi cần thiết để giải quyết tốt hơn các vấn đề về hư hỏng mạng và truyền dữ liệu lớn. 7 1.3.4. Phần mềm, ứng dụng Grid có thể được cài đặt các phần mềm mà có thể quá mắc để cài trên tất cả mọi máy tính trong Grid. Các phần mềm này chỉ cần được cài trên một số node. Thông qua Grid, khi một công việc cần đến chúng, nó sẽ gửi dữ liệu đến node đã được cài đặt phần mềm và cho thực thi. Đây có thể là một giải pháp tốt để tiết kiệm chi phí về bản quyền phần mềm. 1.3.5. Các thiết bị đặc biệt Là các thiết bị dùng trong khoa học, kỹ thuật như kính viễn vọng, các bộ cảm biến (sensor),… Các thiết bị này chủ yếu thu thập các dữ liệu khoa học, phục vụ cho các bước phân tích, xử lý sau này. Ghi chú: Các tài nguyên trên đây đến từ nhiều nguồn khác nhau, có thể không thuộc quyền quản lý của một tổ chức, của một đơn vị mà có thể thuộc nhiều tổ chức, ở nhiều nơi khác nhau. Một số tài nguyên có thể được sử dụng tự do, trong khi một số khác được sử dụng dưới những chính sách nhất định. Các tài nguyên được “ảo hóa” (virtualize) để che dấu sự phức tạp, đa dạng nhằm đưa ra một cái nhìn thống nhất, đơn giản về toàn bộ tài nguyên trên Grid sao cho dưới mắt của người dùng, các tài nguyên Grid là một khối thống nhất. 1.4. Phân lọai các hệ thống Grid Công nghệ Grid Computing có thể được sử dụng theo nhiều cách khác nhau để giải quyết các loại yêu cầu ứng dụng. Thông thường Grid được phân loại bởi kiểu của ứng dụng cần giải quyết. Có 3 loại Grid như trình bày dưới đây. Tuy nhiên không có ranh giới phân biệt rõ ràng giữa các loại Grid và trong thực tế, các giải pháp Grid thường là sự kết hợp 2 hay nhiều loại khác nhau. 1.4.1. Grid Tính toán (Computation Grid) Loại Grid này tập trung chủ yếu vào việc sử dụng năng lực tính toán. Ở dạng Grid này, phần lớn các node là các máy tính hay các nhóm máy tính(cluster) có năng lực xử lý, tính toán rất lớn. Hình thức thực hiện là chia tác vụ tính toán lớn thành nhiều công việc nhỏ thực thi song song trên các node của Grid. Việc phân tán các tác vụ tính toán trong Grid sẽ làm giảm rất đáng kể toàn bộ thời gian xử lý và tăng khả năng tận dụng hệ thống. Thông thường một hệ thống chính sẽ chia khối dữ liệu cần xử lý thành các phần nhỏ, sau 8 đó phân phối đến các node trên Grid. Mỗi node sẽ thực hiện xử lý dữ liệuvà trả kết quả về hệ thống chính để hệ này tổng hợp và trình diễn kết quả toàn cục cho người dùng 1.4.2. Grid Dữ liệu (Data Grid) Ở đây, không gian lưu trữ là tài nguyên. Một Grid Dữ liệu chịu trách nhiệm lưu trữ và cung cấp khả năng truy cập dữ liệu cho nhiều tổ chức khác nhau. Người dùng không cần biết chính xác vị trí dữ liệu khi thao tác với dữ liệu. Các cơ sở dữ liệu, đặc biệt các cơ sở dữ liệu liên hợp, đóng vai trò quan trọng trong các Grid Dữ liệu, nhất là khi có nhiều nguồn dữ liệu và xuất hiện nhu cầu kết hợp các thông tin từ các nguồn dữ liệu này. Các Grid Dữ liệu có thể được sử dụng trong lĩnh vực khai thác dữ liệu(data mining) hoặc các hệ thống thương mại thông minh. Trong trường hợp này, không chỉ có hệ thống file hay các cơ sở dữ liệu mà toàn bộ dữ liệu của tổ chức cần tập hợp lại. Ở đây có thể phải kết hợp giữa Grid Dữ liệu và Grid Tính toán. 1.4.3. Scavenging Grid Một Scavenging Grid thường được dùng với một lượng lớn các máy tính để bàn. Các máy tính thường được kiểm tra định kỳ để xem khi nào bộ xử lý và các tài nguyên khác rảnh rỗi để thực hiện các tác vụ Grid. Chủ nhân của máy để bàn thường có quyền xác định khi nào thì chia sẻ chiếc máy của mình. 1.5. Kiến trúc Grid 1.5.1. Bản chất Kiến trúc Grid “Tổ chức ảo”(VO) là đơn vị cơ bản quan trọng trong hệ thống Grid. Việc thiết lập, quản lý, khai thác, chia sẻ tài nguyên giữa các tổ chức ảo đòi hỏi phải có kiến trúc hệ thống mới, kiến trúc Grid. Kiến trúc Grid dưới đây được xây dựng dựa trên quan niệm “để các VO hoạt động hiệu quả đòi hỏi phải thiết lập được các quan hệ chia sẻ với bất kỳ đơn vị tham gia tiềm năng nào”. Để làm được điều này, vấn đề “liên kết hoạt động” (interoperability) cần phải được tập trung giải quyết. Trong môi trường mạng, “liên kết hoạt động” đồng nghĩa với việc sử dụng các protocol chung. Do đó, kiến trúc Grid sẽ là kiến trúc protocol, với các protocol xác định các cơ chế nền tảng để người dùng và nhà cung cấp tài nguyên thương lượng, thiết lập, quản lý và khai thác các mối quan hệ chia sẻ tài nguyên. 9 Kiến trúc Grid phải là kiến trúc dựa chuẩn, hướng mở, để dễ mở rộng, liên kết hoạt động tốt, có tính khả chuyển (portability) cao. Các protocol chuẩn sẽ giúp định nghĩa các service chuẩn, nhờ đó có thể xây dựng các service cao cấp hơn một cách dễ dàng. Sau khi có được kiến trúc Grid, việc tiếp theo là xây dựng các hàm API và các bộ SDK để cung cấp các công cụ cần thiết để phát triển các ứng dụng chạy trên nền Grid. Sở dĩ vấn đề “liên kết hoạt động” được xem là vấn đề cơ bản vì các mối quan hệ chia sẻ có thể phải được thiết lập giữa các bên tham gia khác nhau về các chính sách, giữa các môi trường khác nhau về nền tảng, ngôn ngữ, môi trường lập trình,…Nếu không có nó, các thành viên trong VO sẽ thực hiện các chính sách chia sẻ song phương và không chắc rằng các cơ chế sử dụng cho 2 thành viên này sẽ mở rộng được cho các thành viên khác. Điều này khiến cho việc thành lập các VO động là không thể thực hiện hoặc cũng chỉ thành lập được VO theo một kiểu nào đó mà thôi. Cũng giống như Web đã làm bùng nổ việc chia sẻ thông tin bằng cách cung cấp các protocol và cú pháp chuẩn (HTTP và HTML) dùng cho việc trao đổi thông tin, ở đây cũng cần các protocol và cú pháp chuẩn để chia sẻ tài nguyên. Để giải quyết vấn đề “liên kết hoạt động”, việc xây dựng các protocol là quan trọng. Vì protocol xác định cách các thành phần phân tán trao đổi với nhau để đạt được một mục đích nào đó, xác định các cấu trúc thông tin cần thiết trong quá trình trao đổi. Các VO thường hay thay đổi, nên các cơ chế xác định, chia sẻ và sử dụng tài nguyên cần phải mềm dẻo, gọn nhẹ, để các thỏa thuận chia sẻ tài nguyên có thể được thiết lập, thay đổi một cách nhanh chóng. Các cơ chế chia sẻ không được ảnh hưởng đến các chính sách cục bộ, và phải cho phép các thành viên quản lý được các tài nguyên của họ. Vì các protocol quy định việc giao tiếp giữa các thành viên chứ không quy định thành viên đó phải như thế nào, nên khi dùng các protocol, các chính sách cục bộ được giữ lại. Do đó các protocol được cần đến. Khi đã có các protocol, thì việc xây dựng các service là cần thiết và quan trọng, các service là bản cài đặt cụ thể của các protocol. Việc xây dựng các service cơ bản phục vụ truy cập đến tài nguyên tính toán, dữ liệu, tìm kiếm tài nguyên, lập lịch và đồng bộ hoá, sao chép dữ liệu,… cho phép xây dựng các service cao cấp hơn cho ứng dụng đồng thời trừu tượng hoá các chi tiết về tài nguyên. Cũng cần phải xây dựng các bộ API và SDK, vì các nhà phát triển ứng dụng cần phải có công cụ để hỗ trợ phát triển các ứng dụng phức tạp trong môi trường Grid, người dùng cũng phải có khả năng thực thi được các ứng dụng này. Sức mạnh, tính đúng đắn của ứng dụng, chi phí phát triển và bảo trì là những mối quan tâm 10 quan trọng. Các API và SDK có thể giúp tăng tốc việc phát triển mã, cho phép chia sẻ mã, tăng tính khả chuyển cho ứng dụng. Tất nhiên, API và SDK chỉ hỗ trợ thêm chứ không thể thay thế các protocol được. 1.5.2. Chi tiết Kiến trúc Grid tổng quát Sau gần 10 năm tập trung nghiên cứu, phát triển, tích luỹ kinh nghiệm, các nhà phát triển công nghệ Grid đã có những thống nhất đáng kể về kiến trúc Grid. Một trong những kiến trúc Grid được chấp nhận nhiều nhất được đưa ra bởi Ian Foster,phần dưới đây sẽ giới thiệu về kiến trúc này. Kiến trúc Grid, theo Ian Foster, là một kiến trúc phân tầng như trong hình 1.1 . Các thành phần trong một tầng có chung đặc điểm, tính chất, có thể được xây dựng từ bất cứ tầng dưới nào. Các thành phần được phân tầng dựa theo vai trò của chúng trong hệ thống Grid. Đây là một kiến trúc mở.Kiến trúc này chỉ quy định các yêu cầu chung nhất về thiết kế và triển khai với mục đích chính là để tham khảo. Việc xây dựng, cài đặt cụ thể tuỳ thuộc vào từng dự án, từng lĩnh vực ứng dụng. Dưới đây là chi tiết của kiến trúc: Hình 1.1.Grid protocol Architecture 1.5.2.1. Tầng Fabric Đây là tầng thấp nhất của kiến trúc, đại diện cho các thiết bị vật lý và toàn bộ tài nguyên của Grid mà các tổ chức, người dùng muốn chia sẻ, sử dụng. Các tài nguyên có thể tồn tại dưới dạng vật lý như các máy tính, hệ thống lưu trữ, các danh mục, tài nguyên Application (Ứng dụng) Collective (Tầng kết hợp) Resource (Tầng tài nguyên) Connectivity (Tầng kết nối) Fabric (Tầng thiết bị) 11 mạng, các loại sensor, cũng có thể là các thực thể logic - một thực thể trừu tượng - đại diện cho một tập các tài nguyên vật lý, như hệ thống file phân tán, các cluster,… Trong trường hợp các thực thể logic, việc triển khai có thể liên quan đến các protocol cục bộ (ví dụ các protocol phục vụ dạng truy cập NFS, hoặc protocol quản lý tài nguyên, tiến trình trong cluster,…) nhưng các protocol này không liên quan đến kiến trúc Grid. Các thành phần của tầng Fabric thực hiện các hoạt động cục bộ trên các tài nguyên cụ thể (vật lý lẫn logic) như là bước tiếp sau của các hoạt động chia sẻ tài nguyên của các tầng trên. Do đó, có một mối liên hệ phụ thuộc chặt chẽ giữa các chức năng của tầng Fabric với các hoạt động chia sẻ được hỗ trợ. Các chức năng của tầng Fabric càng mạnh, càng nhiều sẽ cho phép các hoạt động chia sẻ phức tạp, phong phú hơn. Kinh nghiệm cho thấy, việc quản lý tài nguyên ở tầng này ít nhất cũng phải có cơ chế cung cấp thông tin để xác được cấu trúc, trạng thái, năng lực của tài nguyên và cơ chế điều khiển chất lượng dịch vụ. 1.5.2.2. Tầng Connectivity Tầng Connectivity định nghĩa các protocol liên lạc và chứng thực cơ bản cần thiết cho các giao dịch mạng đặc trưng của Grid. Các protocol liên lạc cho phép trao đổi dữ liệu giữa các tài nguyên tầng Fabric. Các protocol chứng thực xây dựng trên các dịch vụ liên lạc nhằm cung cấp các cơ chế mã hóa, bảo mật, xác minh và nhận dạng các người dùng và tài nguyên. Việc liên lạc đòi hỏi các công việc như vận chuyển, định tuyến, đặt tên. Trong tương lai, việc liên lạc của Grid có thể cần các protocol mới, nhưng hiện nay nên xây dựng trên các protocol có sẵn của bộ TCP/IP protocol stack, cụ thể là các tầng Network (IP và ICMP), Transport (TCP,UDP) và Application (DNS,OSPF,…). Về khía cạnh bảo mật của tầng Connectivity, các giải pháp phải dựa trên các chuẩn bảo mật hiện hành khi có thể. Cũng giống như liên lạc, rất nhiều chuẩn bảo mật đã được phát triển với bộ Internet protocol có thể áp dụng được.Việc chứng thực, phân quyền trong môi trường Grid là rất phức tạp. Các công nghệ bảo mật truyền thống chủ yếu tập trung bảo vệ các giao dịch giữa các máy client và server. Trong Grid, việc phân biệt client/server không tồn tại, vì các mỗi tài nguyên trong một lúc nào đó có thể là server (khi nó nhận yêu cầu), một lúc khác lại là client (khi nó đề xuất yêu cầu đến các tài 12 nguyên khác). Do đó, các giải pháp chứng thực cho các môi trường VO nên đạt được các yêu cầu về bảo mật trong Grid như đã giới thiệu. 1.5.2.3. Tầng Resource Tầng Resource dựa trên các protocol liên lạc và chứng thực của tầng Connectivity để xây dựng các protocol, API và SDK nhằm hỗ trợ việc thương lượng, khởi tạo, theo dõi, điều khiển, tính toán chi phí và chi trả cho các hoạt động chia sẻ trên từng tài nguyên riêng lẻ một cách an toàn. Bản cài đặt các protocol của tầng Resource sẽ gọi các chức năng của tầng Fabric để truy cập và điều khiển các tài nguyên cục bộ. Các protocol tầng Resource tập trung toàn bộ vào các tài nguyên riêng lẻ, không quan tâm đến trạng thái toàn cục và các hoạt động trong các tập tài nguyên phân tán. Các protocol tầng Resource được phân thành 2 dạng chính như sau: - Các protocol thông tin Sử dụng để thu thập thông tin về cấu trúc và trạng thái các tài nguyên ví dụ như cấu hình hiện tại, tải hiện tại, chính sách sử dụng,… - Các protocol quản lý Sử dụng để thương lượng truy xuất đến một tài nguyên chia sẻ, xác định rõ, ví dụ, các yêu cầu về tài nguyên (bao gồm luôn việc giữ chỗ tài nguyên và chất lượng dịch vụ) và các thao tác cần được thực hiện như tạo tiến trình, hoặc truy xuất dữ liệu. Do các protocol quản lý chịu trách nhiệm đại diện cho các quan hệ chia sẻ, đảm bảo các hoạt động sử dụng tài nguyên phải phù hợp với các chính sách chia sẻ tài nguyên, bao gồm luôn việc tính toán và chi trả chi phí. Mỗi protocol cũng nên hỗ trợ việc theo dõi trạng thái và điều khiển các hoạt động. Với những yêu cầu như vậy, tập các protocol tầng Resource (và Connectivity) nên nhỏ gọn và tập trung. Các protocol này chỉ nên đáp ứng được các cơ chế chia sẻ với nhiều loại tài nguyên khác nhau (ví dụ, các hệ thống quản lý tài nguyên cục bộ khác nhau) là đủ. Các chức năng chính của tầng Resource cũng giống như của tầng Fabric cộng thêm nhiều ngữ nghĩa mới với cơ chế báo lỗi tin cậy khi hoạt động không thành công. 13 1.5.2.4. Tầng Collective Trong khi tầng Resource tập trung vào các tài nguyên đơn lẻ, tầng Collective chứa các protocol, service, API, SDK không liên hệ đến bất kỳ một tài nguyên cụ thể nào mà thực hiện quản lý toàn cục, tập trung vào các giao tác giữa các tập tài nguyên. Tầng Collective có thể bổ sung thêm nhiều loại hoạt động chia sẻ mới ngoài những gì đã có từ tầng Resource mà không cần bổ sung thêm các yêu cầu mới cho các tài nguyên đang được chia sẻ. Các chức năng của tầng Collective có thể được cài đặt như các service (với các protocol tương ứng), hay như các bộ SDK(với các API tương ứng) được thiết kế để liên kết với ứng dụng. Trong cả hai trường hợp, các cài đặt này có thể được xây dựng trên các protocol và API của tầng Resource và Connectivity. 1.5.2.5. Tầng Application Tầng trên cùng của kiến trúc Grid bao gồm các ứng dụng của người dùng chạy trong một trường VO. Các ứng dụng được xây dựng theo cách sẽ gọi các dịch vụ định nghĩa bởi các tầng phía dưới. Ví dụ : một chương trình phân tích bộ gen người cần phải chạy hàng ngàn tác vụ độc lập, mỗi tác vụ cần nhiều file chứa thông tin từng phần của bộ gen có thể sử dụng các chức năng Grid sau: - Lấy các thông tin, thẻ chứng thực (các protocol tầng Connectivity). - Truy vấn hệ thống thông tin Grid và các danh mục để tìm các tài nguyên thích hợp và vị trí các file dữ liệu đầu vào. (các dịch vụ tầng Collective). - Gửi các yêu cầu đến các tài nguyên để thực hiện tính toán, di chuyển dữ liệu,… và kiểm soát quá trình thực thi công việc, thông báo cho người dùng khi mọi thứ hoàn tất, dò tìm và phản ứng với các điều kiện gây lỗi (tầng Resource). 1.6. Grid computing đem lại những lợi ích gì ? 1.6.1. Khai thác tối đa tài nguyên xử lý Lợi ích đầu tiên cần nói đến đó là khả năng chạy một chương trình trên nhiều máy tính khác nhau . Hay nói một cách khác ,đó là xử lý song song. Trong một mạng lưới gồm nhiều máy tính ,rất ít khi các máy tính đều được sử dụng một cách tối đa những tài nguyên của mình ,thường thì với công việc văn phòng ,tính toán đơn giản ,máy tính chỉ sử dụng tối đa là 20% tài nguyên của máy, như vậy chúng ta nhìn thấy luôn sự lãng phí của những tài nguyên còn lại. Triên khai hệ thống grid computing sẽ giúp tận dụng những tài 14 nguyên còn chưa được sử dụng kia để xử lý một bài toán chung, trong trường hợp này, tốc độ xử lý được tối ưu, sự lãng phí tài nguyên được giảm tới mức tối đa. Không chỉ thế ,grid computing cho phép ảo hóa những đĩa cứng còn trống thành một đĩa cứng mới , từ đây chúng ta có thể tận dụng tài nguyên lưu trữ dữ liệu. 1.6.2. Khả năng xử lý song song Khi kết hợp nhiều bộ vi xử lý để giải quyết một bài toán, chúng ta có thể hình tượng như sau, bài toán lớn được chia làm n phần cho n CPU xử lý, mỗi một CPU sẽ xử lý 1 phần trong đó. Như vậy công việc chúng ta đạt được sẽ nhanh gấp n lần. Nhưng không phải ứng dụng nào cũng hợp lý nếu được triển khai một cách song song. Công việc này đòi hoi người thiết ké ứng dụng phải tư duy và sáng tạo Tuy nhiên xử lý song song sẽ là một phương án cần nghĩ đến đầu tiên trong nghiên cứu khoa học ,giải quyết những bài toán lớn, có tính độc lập của các thành phần cao. 1.6.3. Chia sẽ tài nguyên ảo và tổ chức ảo Grid computing cho phép tạo ra một môi trường cộng tác rộng lớn ,đồng nhất. Mỗi môi trường đó là một tổ chức ảo. Grid computing thậm chí còn cho phép kết hợp các tổ chức ảo, không đồng nhất với nhau để cộng tác với nhau. Các tổ chức ảo này chia sẽ tài nguyên với nhau như là một mạng lưới lớn. Chia sẽ tài nguyên dữ liệu bằng cách trải rộng cơ sở dữ liệu trên nhiều hệ thống tạo nên dung lượng lớn hơn nhiều so với hệ thống đơn. Cách trải rộng dữ liệu này làm tăng tốc độ truyền dữ liệu với công nghệ stripping. Dữ liệu thường xuyên được sao lưu phục vụ cho việc khôi phục dữ liệu. Ngoài ra ,còn có thể chia sẽ nhiều tài nguyên khác như thiết bị chuyên dụng, phần mềm. 1.6.4. Sự truy cập đến các tài nguyên khác Ngoài CPI và tài nguyên lưu trữ, Grid còn có thể truy cập đến các tài nguyên khác. Các tài nguyên này có thể được cung cấp dưới dạng số lượng hoặc khả năng lưu trữ, băng thông. Ví dụ, nếu một người muốn tăng băng thông truy nhập Internet để thực hiện việc khai thác dữ liệu tìm kiếm, công việc này có thể phân chia giữa các máy trong mạng Grid có đường truyền Internet không phụ thuộc vào nhau. Trong trường hợp này, khả năng tìm 15 kiếm được nhân lên khi mỗi máy có đường truyền riêng biệt. Nếu các máy chia sẻ đường kết nối internet thì nó sẽ không tăng băng thông. Trong một mạng lưới, một số máy tính được cài đặt nhưng phần mềm đắt tiền, một số khác thì không. Người sử dụng không cần cài đặt phần mềm đó vẫn có thể sử dụng phần mềm này bằng cách gửi công việc đến máy đã được cài phần mềm để yêu cầu xử lý. Đó là khả năng tận dụng phần mềm của Grid. Một vài máy in có thể sử dụng những thiết bị đặc biệt, chẳng hạn như máy in. Hầu hết các máy in được sử dụng từ xa. Grid có thể chia sẻ được những thiết bị đặc biệt này. Thậm chí Grid còn có thể chia sẽ những thiết bị, tài nguyên phức tạp như máy chuẩn đoán bệnh hay robot hỗ trợ phẫu thuật. 1.6.5. Cân bằng tài nguyên Grid liên kết các tài nguyên từ nhiều máy khác nhau tạo thành một hệ thống duy nhất. Grid có thể thực hiện cân bằng tài nguyên trong các chương trình bằng cách lập lịch làm việc cho các công việc. Chức năng này có ý nghĩ to lớn trong việc xử lý các trường hợp quá tải về xử lý, tính toán trong một tổ chức. Cân bằng có thể được thực hiện bởi 2 cách sau : những điểm quá tải được đưa đến những máy rỗi trên mạng lưới, nếu toàn mạng Grid bận, những công việc có độ ưu tiên thấp được tạm ngưng để dành cho những công việc có độ ưu tiên cao hơn. Đôi khi có những công việc đột ngột được tăng độ ưu tiên do cần hoàn thành gấp. Grid không thể xử lý được những công việc cần hoàn thành quá gấp. Tuy nhiên Grid có thể xử lý được những công việc nhỏ và huy động một lực lượng lớn tài nguyên để xử lý nó một cách nhanh nhất. Một lợi ích khác của Grid là cân bằng tải. Khi một công việc liên lạc với một công việc khác, với Internet, hoặc các tài nguyên khác, Grid có thể lập lịch cho chúng để có thể giảm thiểu tối đa lưu lượng đường truyền cũng như khoảng cách truyền. Điều này giúp Grid có thể giảm thiểu tắc nghẽn mạng. Cuối cùng Grid còn có khả năng thương mại tài nguyên. Các trạng thái của tất cả các tài nguyên trong mạng được Grid quản lý. Các tổ chức trên Grid có thể tạo tài khoản và trả tiền để sử dụng các tài nguyên này khi cần thiết. Điều này tạo nên tài chính mạng lưới. 16 1.6.6. Độ tin cậy Trong tương lai, một mạng lưới có thể có khả năng thay thế một hệ thống đáng tin cậy. Grid mới chỉ bắt đầu công nghệ này. Mô hình máy chủ đáng tin cậy sử dụng Grid có thể được mô tả như sau. Một mạng lưới gồm nhiều máy tính được phân bố khắp nơi. Do đó, khi có một sự cố tại một nốt mạng nào đó trên mạng lưới, các điểm khác sẽ không bị ảnh hưởng. Khi một máy tính bị hỏng hóc, phần mềm quản lý trong Grid tự động chuyển công việc xử lý từ máy này đến một máy nào đó trong mạng. Trong trường hợp quan trọng, nhiều bản sao của công việc được tạo ra và được chuyển đến nhiều máy khác nhau trên mạng lưới. 17 Chương 2: Globus Toolkit 4 Globus Toolkit là một bộ toolkit mã nguồn mở được sử dụng để xây dựng các hệ thống và các ứng dụng Grid. Globus Toolkit hiện đang được phát triển bởi tổ chức Globus Alliance và nhiều tổ chức khắp nơi trên thế giới. Globus Alliance là một cộng đồng và các cá nhân và tổ chức tham gia phát triển các công nghệ nền tảng cho Grid. Globus Toolkit cho phép hiện thực hóa các ý tưởng, mục tiêu đằng sau khái niệm Grid. Bộ toolkit bao gồm các dịch vụ và thư viện phục vụ việc bảo mật, hạ tầng thông tin Grid, quản lý tài nguyên, quản lý dữ liệu, liên lạc, phát hiện lỗi,… Nó được đóng gói như một tập các thành phần có thể sử dụng độc lập hoặc kết hợp với nhau. Mỗi tổ chức đều có những hoạt động, chính sách khác nhau, việc kết hợp, chia sẻ tài nguyên từ nhiều tổ chức bị cản trở bởi tính không tương thích giữa các tài nguyên. Globus Toolkit được xây dựng để loại bỏ những trở ngại này. Các service, interface, và protocol của nó cho phép người dùng truy cập đến các tài nguyên ở xa như thể nó đang nằm trong máy tính của họ trong khi vẫn cho phép các tổ chức thiết lập chính sách cục bộ của mình như quản lý việc ai được dùng tài nguyên và khi nào… Mặc dù Globus được phát triển để phục vụ các dự án về khoa học và kỹ thuật, nhưng hiện nay Globus cũng đã được áp dụng vào các lĩnh vực thương mại. Từ năm 2000, các công ty hàng đầu thế giới trong lĩnh vực công nghệ thông tin như Avaki, DataSynapse, Entropia, Fujitsu, Hewlett-packard, IBM, NEC, Oracle, Platform, Sun, Microsoft ,đã bắt đầu xây dựng các chiến lược về Grid Computing trên nền tảng Globus. 2.1. Khái niệm về Globus The Globus Toolkit (GT) đã được phát triển từ cuối những năm 1990 đến nay nhằm hỗ trợ phát triển các dịch vụ theo định hướng ứng dụng tính toán phân tán và cơ sở hạ tầng. Các thành phần cơ bản bao gồm an ninh, truy cập tài nguyên, quản lý tài nguyên, di chuyển dữ liệu, tìm kiếm tài nguyên, và v…. Những công cụ này đã lần lượt được sử dụng để mở rộng hạ tầng cơ sở của Grid và các ứng dụng phân tán.  Globus được hiểu theo những quan điểm như sau : 18 - Một cộng đồng những người dùng và phát triển ,những cộng tác viên bằng cách sử dụng hoặc phát triển những phần mềm mã nguồn mở ,liên kết các tài liệu cho việc tính toán phân tán và liên kết tài nguyên. - Là phần mềm GLOBUS TOOLKIT : một tập các thư viện và chương trình cần thiết để xây dựng một hệ thống phân tán và các ứng dụng được triển khai trên nó. - Một nền tảng hỗ trợ cho cộng đồng : mã nguồn ,email … Tất cả đều có thể được giải quyết khi truy cập vào globus.org  Globus toolkit cung cấp rất nhiều thành phần ,bao gồm : - Một tập hợp các dịch vụ được thêm vào tập trung vào việc quản lý cơ sở hạ tầng. - Các công cụ để xây dựng những dịch vụ Web bằng Java, C, Python. - Hạ tầng bảo mật cao. - Là máy khách API hoặc dòng lệnh cho việc truy cập dịch vụ và tài nguyên. - Tài liệu đặc tả về các thành phần và cách dùng nó thế nào để xây dựng một ứng dụng. 2.2. Nguyên nhân thúc đẩy sự phát triển của Globus Phần mềm Globus được thiết kế để cho phép các ứng dụng sử dụng nguồn lực giữa các tài nguyên phân tán cho dù đó là máy vi tính, thiết bị lưu trữ, dữ liệu, dịch vụ, mạng lưới, hoặc cảm biến. Ban đầu, việc phát triển Globus được thúc đẩy bởi nhu cầu của các "tổ chức ảo" trong khoa học. Trong thời gian gần đây, việc sử dụng Globus trong các ứng dụng thương mại đã trở nên ngày càng quan trọng. Thương mại và khoa học có cùng một mối quan tâm là luôn luôn đỏi hỏi xử lý dữ liệu thường xuyên, nhưng không phải là liên tục. Việc phát triển Globus bắt nguồn từ nhu cầu muốn truy cập và xử lý dữ liệu hay nhân rộng dữ liệu đó ra các máy tính khác nhau thuộc các tổ chức khác nhau và đặt tại các vị trí địa lý cách xa nhau. Ví dụ:  Một nhà khoa học (hoặc một nhà phân tích về kinh tế) cần truy cập dữ liệu nằm trong cơ sở dữ liệu khác nhau trong một một tổ chức hợp tác khoa học (hoặc doanh nghiệp).  Một doanh nghiệp cần phải phân bổ tính toán, lưu trữ, và tài nguyên mạng động để hỗ trợ thời gian khác nhau thương mại điện tử (hoặc vật lý phân tích dữ liệu 19  Một kỹ sư có nhu cầu thiết kế và vận hành thử nghiệm trên các thiết bị điều khiển từ xa, liên kết và so sánh các số liệu và mô phỏng vật lý.  Một nhà thiên văn học cần nhân rộng một terabyte dữ liệu một ngày đến các đối tác trên khắp thế giới. 2.3. Kiến trúc Globus 2.3.1. Các thành phần thƣờng trực 2.3.1.1. Java WS Core Bao gồm các API và các công cụ thi hành chuẩn WSRF và WS-Notification trên nền ngôn ngữ Java. Các thành phần đó trở thành nền tảng cho một số các dịch vụ Grid. Ngoài ra, Java WS Core còn cung cấp các thư viện và công cụ cho việc phát triển các dịch vụ WSRF 2.3.1.2. C WS Core Bao gồm các API và các công cụ thi hành chuẩn WSRF trên nền ngôn ngữ C 2.3.2. Các thành phần bảo mật Trong GT, việc bảo mật Grid được đảm trách bởi module Grid Security Infrastructure (GSI). Như đã biết, yêu cầu về bảo mật, an toàn là một trong những vấn đề chính trong các thiết kế Grid. Các thành phần bảo mật cơ sở của GT đã đưa ra các cơ chế khá tốt để thực hiện việc chứng thực, phân quyền, bảo mật liên lạc giữa các node trong Grid. GSI là một sự mở rộng các protocol và API của các chuẩn về bảo mật hiện hành.GSI được xây dựng trên các công nghệ, các chuẩn như :  Mô hình mã hoá khóa công khai (public key infrastructure(PKI))  X.509 certificate  Protocol Secure Sockets Layer (SSL) Tất cả các kết nối liên lạc trong Grid đều được mã hoá theo công nghệ RSA 1024 bit và truyền tải với protocol SSL.  Generic Security Service API (GSS-API) Toàn bộ phần cài đặt của GSI đều tuân theo GSS-API (là một bộ API chuẩn dành cho các hệ thống bảo mật được tổ chức Internet Engineering 20 Task Force (IETF) đưa ra). GSI đã mở rộng các chuẩn này để cung cấp thêm chức năng đăng nhập một lần (single sign-on), ủy quyền (delegation), identity mapping (ánh xạ thực thể). Hình 2.1. Tóm tắt cấu trúc và chức năng các thành phần của GSI 2.3.2.1. Cơ bản về bảo mật Grid và GSI  Symmetric Encryption Mã hoá kiểu Symmetric dựa trên việc sử dụng một khoá bí mật để thực hiện mã hoá và giải mã dữ liệu. Để đảm bảo dữ liệu chỉ được đọc bởi bên gửi và bên nhận, khoá được trao đổi một cách bí mật giữa 2 bên. Nếu ai đó lấy được khóa bí mật đã sử dụng để mã hoá, họ có thể giải mã được thông tin. Phương pháp mã hoá này kém an toàn nhưng tốc độ mã hóa/giải mã lại nhanh hơn dạng mã hoá Asymmetric trình bày dưới dây.  Asymmetric Encryption Phương pháp này được gọi là phương pháp mã hoá khoá công khai, cũng được sử dụng rất thường xuyên. Phương pháp này sử dụng một cặp khoá để mã hóa (được gọi là khóa công khai (public key) và khóa bí mật (private key)). Khóa để mã hoá khác với khoá được sử dụng để giải mã. Phương pháp mã hoá khóa công khai yêu cầu các bên phải bảo vệ kỹ các khóa bí mật của mình, trong khi khóa công khai của họ không cần được bảo vệ, có thể được công bố rộng rãi trong cộng đồng.Thông thường, khóa công khai được để Proxy và ủy quyền (Phần mở rộng bởi GSI, phục vụ single sign-on) PKI (CA và Certificate) SSL/TSL (Chứng thực và bảo vệ thông điệp) 21 trong các chứng chỉ điện tử (digital certificate) được cấp bởi Certificate Authority, nơi chịu trách nhiệm quản lý các khóa công khai và người chủ của khóa công khai tương ứng. Hệ thống khoá công khai thực hiện bảo mật hai lần trên thông điệp trao đổi giữa các bên. Trước hết, bên gửi sẽ mã hóa thông điệp bằng khóa bí mật của mình, sau đó mã hoá tiếp lần nữa bằng khóa công khai của bên nhận. Khi nhận được thông điệp, bên nhận sẽ thực hiện giải mã bằng khóa bí mật của mình trước, sau đó tiếp tục giải mã bằng khóa công khai của bên gửi. Bằng cách này, không ai khác có thể đọc được thông điệp trừ khi có được khóa bí mật của một bên, nhưng điều này rất khó thực hiện được vì hai bên gửi và nhận không trao đổi khóa cho nhau, và khóa bí mật được giữ ở mỗi bên.Các thuật toán phát sinh khóa bí mật và khóa công khai được thiết kế sao cho một thông điệp được mã hoá bởi một khoá thì chỉ có thể được giải mã bởi khoá còn lại tương ứng, và không thể giải mã bởi khoá dùng để mã hoá. Các cặp khoá được phát sinh bằng cách tìm 2 số nguyên tố cực lớn khác nhau. Ngay cả khi khóa công khai được để công khai rộng rãi, cũng rất khó để các máy tính hiện nay có thể tìm ra khóa bí mật từ khóa công khai. Các thuật toán này tăng độ tin cậy về bảo mật nhưng lại tốn rất nhiều thời gian để mã hóa, đặc biệt là khi phải mã hóa một lượng lớn dữ liệu. Do đó, trong thực tế, người chỉ dùng phương pháp public key encryption để trao đổi khóa của phương pháp symmetric encryption giữa hai bên, và sau đó, việc mã hoá/giải mã được sử dụng bằng khoá symmetric này.  Distinguished Name (DN) Distinguished Name là một chuỗi ký tự duy nhất dùng để định danh người dùng (người dùng có thể là một người hay một thực thể ) trong Grid, có thể nói DN là một “Grid username”. DN là một thành phần của chứng chỉ điện tử. Phần lớn thông tin trong DN là do CA cung cấp.  Digital certificates (Chứng chỉ điện tử) Chứng chỉ điện tử là một tài liệu điện tử chứa thông tin định danh tài nguyên, người dùng Grid và khóa công khai tương ứng. Một chứng chỉ điện tử là một cấu trúc dữ liệu chứa khóa công khai và các thông tin chi tiết về chủ của khóa công khai đó. Một chứng chỉ được xem như là một thẻ nhận dạng điện tử không thể làm giả sau khi đã được đóng dấu bởi CA trong môi trường Grid. Khi một thực thể trong Grid muốn bắt đầu một phiên làm việc với đối tác nào đó, nó sẽ đính kèm chứng chỉ điện tử của mình vào thông 22 điệp thay vì khóa công khai. Bên nhận kiểm tra chữ ký của CA trong chứng chỉ vừa nhận được. Nếu chữ ký đó là của một CA mà bên nhận tin tưởng, thì nó có thể chấp nhận và tin tưởng rằng khóa công khai trong chứng chỉ thực sự đến từ nơi gửi (thao tác này đề phòng trường hợp giả danh người chủ của khóa công khai). Sau đó, bên nhận sẽ sử dụng khóa công khai của bên gửi để giải mã SSL session ID, SSL ID này dùng để mã hoá tất cả các dữ liệu truyền thông giữa 2 bên. Các chứng chỉ điện tử của GSI dựa định dạng chứng chỉ X.509, một định dạng chuẩn về chứng chỉ điện tử do tổ chức Internet Engineering Task Force (IETF) đưa ra. Những chứng chỉ này có thể dùng được với các phần mềm dựa trên PKI khác bao gồm các trình duyệt web của Microsoft, Netscape. Có 2 loại chứng chỉ khác nhau được dùng trong môi trường Grid.  User certificate Một người dùng sẽ cần một user certificate để đại diện cho mình, chứng chỉ này xác định tên người dùng thực sự của Grid chứ không phải tên một server hay tên máy trạm. Ví dụ, có một ai đó tên Bobby, thì trong chứng chỉ điện tử của anh ta có thể có một distinguished name như sau: “/O=Grid/O=GridTest/OU=test.domain.com/CN=Bobby"  Server certificate Nếu một người dùng muốn chạy các ứng dụng yêu cầu chứng thực trên server, sẽ cần phải có một server certificate. Server certificate sẽ ghi fully-qualified domain name của server vào user certificate của người đó. Để user certificate có hiệu lực, full-qualified DNS name của người đó phải giống như trong user certificate. Ví dụ : nếu tên server là “Darksky”,tên trong server certificate có thể là : /CN=Service/Darksky..  Certificate Authority (CA) Việc bảo mật trong Grid được xác lập thông qua việc sử dụng các chứng chỉ ở mức host và người dùng, các chứng chỉ này sau đó được ánh xạ vào các người dùng cục bộ trên host. Để có được các chứng chỉ này, các bản yêu cầu xin cấp chứng chỉ được tạo ra, gửi đến một CA tin cậy, CA này sẽ thực hiện ký xác nhận vào chứng chỉ và gửi lại người yêu cầu. 23 Các trách nhiệm chính của một CA bao gồm : - Xác định được các thực thể đang yêu cầu cấp chứng chỉ. - Cấp phát, loại bỏ và lưu trữ các chứng chỉ. - Bảo vệ các CA server. - Quản lý không gian tên cho các chủ sở hữu chứng chỉ. - Theo dõi các hoạt động. Globus Toolkit có cung cấp một module simple CA để phục vụ cho việc thử nghiệm các ứng dụng trong một trường Grid. Trong trừơng hợp này, simple CA kiêm luôn chức năng của CA và RA. Một vấn đề then chốt trong môi trường PKI là đảm bảo tính tin cậy, có thể tin tưởng của hệ thống. Trước khi một CA có thể ký, đóng dấu và cấp chứng chỉ cho các thực thể khác, nó cũng phải làm một việc tương tự cho chính nó, để bản thân CA có thể được đại diện bằng chứng chỉ của mình. Điều đó có nghĩa CA cần phải làm các công việc sau: 1. CA phát sinh ngẫu nhiên cặp khóa cho nó. 2. CA lưu trữ bảo mật khóa bí mật của nó. 3. CA tự tạo ra chứng chỉ cho chính mình. 4. CA ký xác nhận chứng chỉ đó bằng khóa bí mật của mình.  Gridmap File Sau khi đã có các chứng chỉ, một thực thể Grid cần phải biết người dùng nào có chứng chỉ nào được phép truy cập đến các tài nguyên của nó. Điều này được thực hiện bằng một file Grid map. File Grid map là một file trên tài nguyên đầu cuối, thực hiện ánh xạ các DN vào các người dùng cục bộ trên tài nguyên. Sau khi được ánh xạ, một DN có thể sử dụng tài nguyên trên host như là một người dùng cục bộ, tức DN có toàn quyền của người dùng cục bộ. Điều này cho phép phân cho các người dùng Grid khác nhau các quyền khác nhau trên tài nguyên thông qua các người dùng cục bộ được ánh xạ. Để từ chối truy cập đối với một DN, chỉ cần loại bỏ DN đó ra khỏi Grid map file. Trong Globus Toolkit, trên hệ thống Linux, Grid map file được lưu trong file : /etc/grid-security/grid-mapfile. Grid-mapfile là một file text, mỗi dòng là một ánh xạ 24 giữa DN và user cục bộ, có dạng như sau: “DN” Ví dụ : "/O=Grid/OU=GlobusTest/OU=simpleCA-b.ar.com/OU=ar.com/CN=Nguyen Thinh" thinh  Các file quan trọng Thư mục Tên file Diễn giải /etc/grid-sercurity Hostcert.pem Là server certificate được sử dụng trong mutual authentication Hostkey.pem Khóa bí mật tương ứng server certificate Grid-mapfile File ánh xạ giữa tên người dùng Grid (subject hay DN) với người dùng cục bộ. /etc/grid-sercurity/certificate CA certificate Sa-signing-policy.conf $HOME$/.globus Usercert.pem Certificate của người dùng (subject name,khóa công khai, chữ ký của CA) Userkry.pem Khóa bí mật của user certificate (được mã hóa bằng passphare). 25  Các công cụ liên quan Tên Tham số Diễn giải Grid-cert-request Sử dụng để tạo một cặp khóa công khai/bímật và một bản yêu cầu cấp chứng chỉ trong thư mục ~/.globus/ Grid-cert-info -all -startdate -subject - enddate -issuer -help Lấy thông tin về chứng chỉ. Ví dụ : $ Grid-cert-info –subject “/O=Grid/O=GridTest/OU=test.domain.com /CN=GreenStar Grid-proxy-init -hours -bits -help Thực hiện khởi tạo proxy và đăng nhập vào Grid. Grid-proxydestroy Logout khỏi Grid, thực hiện hủy proxy cục bộ. Lưu ý, các proxy ở xa không bị huỷ. Grid-proxy-info -subject -issuer -type -timeleft -strength -help Lấy thông tin về proxy 2.3.3. Các thành phần quản lý dữ liệu 2.3.3.1. GridFTP Giao thức GridFTP đưa ra một cơ chế sử dụng cho mục đích truyền sữ liệu an toàn, tin cậy, đạt hiệu suất cao. Grid được sử dụng rộng rãi trong các nhu cầu truyền tải 26 liệu với khối lượng lớn dữ liệu. GridFTP được xây dựng trên nền tảng của giao thức FTP và đưa ra 2 kênh giao tiếp: một kênh điều khiển và 1 cây dữ liệu. Các lệnh và những dòng phản hồi được di chuyển trên kênh điều khiển, dữ liệu được chuyển qua kênh dữ liệu. GridFTP trong Globus được trình bày như một thành phần có cấu trúc hỗ trợ nhiều lựa chọn bảo mật, nhiều giao thức di chuyển, điều phối việc di chuyển dữ liệu sử dụng nhiều máy tính khác nhau tại nguồn và đích và các đặc tả chức năng. GridFTP (trong Globus) được thiết kế hỗ trợ tạo đường truyền tin cậy thông qua Grid Sercurity Infrastructure (GSI), Kerberos, hoặc cơ chế bảo mật SSH. GSI là phương thức bảo mật thường thấy trong GridFTP. Hình 2.2. Sơ đồ tóm tắt hoạt động gridFTP 2.3.3.2. Information services Grid Information Service (GIS) chịu trách nhiệm cung cấp các thông tin động và 27 tĩnh về tính sẵn sàng và khả năng hiện hành của các tài nguyên cũng như các thông tin khác về toàn bộ hệ thống Grid. Các thông tin này sẽ được dùng để xác định vị trí các tài nguyên theo những tiêu chí cụ thể, để xác định các trình quản lý liên kết với tài nguyên, để xác định các tính chất của tài nguyên, xác định chiến lược sử dụng hiệu quả tài nguyên, và phục vụ nhiều mục đích khác trong quá trình chuyển các đặc tả về tài nguyên cấp cao của ứng dụng thành các yêu cầu cụ thể đến từng trình quản lý tài nguyên. 2.3.3.3. Index Service Hệ thống quản lý thông tin tài nguyên Grid trong GT4 đã có nhiều đổi khác so với GT2. Index Service cũng có các chức năng tương tự như MDS, nhưng nó cung cấp thông tin về các Grid Service dưới các định dạng XML. Không giống như GT2, thành phần GRIS bị loại bỏ vì mỗi Grid Service đều có một tập các thông tin liên quan của riêng nó. Các thông tin này đã được lưu trữ theo một cách thức đã được chuẩn hoá, đã có các cách thức dễ dàng để truy vấn và hiểu các các dữ liệu của service thông qua các interface chuẩn của một Grid service. Các service được yêu cầu phải thông báo các thông tin cơ bản của mình, cho phép người dùng lấy thông tin từ bất cứ Grid service nào.  Index Service đóng vai trò của một GIIS trong mô hình quản lý thông tin Grid, là một trong những GT4 Base Services. Nó thực hiện thu thập, tổng hợp và truy vấn các Service Data, theo dõi quá trình điền dữ liệu; tạo Service Data theo yêu cầu. Nó có thể được sử dụng cho để xây dựng các Service Data chỉ mục mang các thông tin trạng thái từ nhiều service instance phục vụ việc khám phá, lựa chọn và tối ưu hoá việc sử dụng tài nguyên. 2.3.4. Các thành phần quản lý tài nguyên 2.3.4.1. Kiến trúc quản lý tài nguyên của Globus Toolkit Như đã biết, vấn đề quản lý tài nguyên là một thách thức lớn cho công nghệ Grid Computing. Nhóm phát triển Globus Toolkit đã đưa ra một giải pháp khá hoàn chỉnh để giải quyết vấn đề quản lý và chia sẻ tài nguyên trong Grid 28 Hình 2.3. Kiến trúc quản lý tài nguyên của Globus Toolkit Trong kiến trúc này, ngôn ngữ Resource Specification Language (RSL),được sử dụng để trao đổi các yêu cầu về tài nguyên giữa các thành phần: từ ứngdụng (application) đến resource broker, resource co-allocator và resource manager.Tại mỗi bước của quá trình này, các thông tin về yêu cầu tài nguyên được đặc tảtrong chuỗi RSL của ứng dụng hay được xây dựng lại bởi một hay nhiều resourcebroker và co-allocator. Thông tin về khả năng, tính sẵn sàng, tính chất của các tàinguyên có thể lấy từ một Information service Resource broker chịu trách nhiệm chuyển đổi từ một đặc tả RSL cấp caothành các đặc tả RSL chi tiết hơn qua quá trình chi tiết hoá. Nhiều broker có thể phối hợp với nhau để cùng giải quyết một yêu cầu về tài nguyên, một số broker chuyển các yêu cầu của ứng dụng thành các yêu cầu chi tiết hơn về tài nguyên, rồi một số broker khác định vị các tài nguyên thoả yêu cầu. Bản đặc tả chi tiết về vị trí các tài nguyên, có thể được chuyển cho một resource co-allocator, đây là module chịu trách nhiệm phối hợp và quản lý tài nguyên trên nhiều site. Resource co-allocator thực hiện chia nhỏ các yêu cầu tài nguyên trên nhiều site thành từng thành phần nhỏ và chuyển chúng đến resource manager thích hợp. Mỗi 29 Resource manager trong hệ thống chịu trách nhiệm lấy yêu cầu trong RSL và chuyển nó thành các thao tác thực hiện trên hệ thống quản lý tài nguyên cục bộ của site. Information service chịu trách nhiệm cung cấp khả năng truy cập hiệu quả và rộng khắp đến các thông tin về khả năng và tính sẵn sàng hiện tại của các tài nguyên. Thông tin này dùng để định vị các tài nguyên với các đặc tính cụ thể, để xác định Resource Manager liên kết với tài nguyên, xác định tính chất của tài nguyên, và phục vụ cho rất nhiều mục đích trong quá trình biên dịch từ đặc tả yêu cầu tài nguyên cấp cao thành các yêu cầu đến các resource manager cụ thể. Mô hình trên đã giải quyết đƣợc các vấn đề: 1. Quản lý được các tài nguyên không đồng nhất, đa dạng trong nhiều vùng quản trị khác nhau, thông qua module Resource Manager. Resource Manager một mặt cung cấp một giao diện chung thống nhất để sử dụng tài nguyên, che đi sự phức tạp của tài nguyên; một mặt tương thích với từng công cụ quản lý tài nguyên, các chính sách, các cơ chế bảo mật cục bộ. 2. Để điều khiển trực tuyến và mở rộng các chính sách, RSL được định nghĩa để hỗ trợ trao đổi, tìm kiếm giữa các thành phần khác nhau trong kiến trúc. 3. Sử dụng các resource broker để thực hiện chuyển đổi, ánh xạ các yêu cầu cấp cao của ứng dụng thành các yêu cầu cụ thể đến các resource manager. Điều này giảm bớt độ phức tạp cho người dùng khi đặc tả các tài nguyên cần dùng. 4. Giải quyết vấn đề phối hợp cấp phát (co-allocation) bằng cách xác định nhiều chiến lược khác nhau, gói gọn, tích hợp trong các resource coallocator. 2.3.4.2. Chi tiết các thành phần 2.3.4.2.1. GRAM Grid Resource Allocation and Management (GRAM) là thành phần ở tầng thấp nhất trong mô hình trên, thành phần quản lý tài nguyên cục bộ (resource management). GRAM giúp đơn giản hoá việc sử dụng các hệ thống, tài nguyên ở xa bằng cách cung cấp một giao diện chuẩn, đơn giản để yêu cầu và sử dụng các tài nguyên để thực thi các công việc. GRAM xử lý các yêu cầu về tài nguyên để thực thi các ứng dụng từ xa, cấp phát các 30 tài nguyên cần thiết, thực thi và quản lý trạng thái và tiến độ của các công việc đang thực hiện. Nó cũng thực hiện cập nhật các thông tin về khả năng và tính sẵn sàng của các tài nguyên đang quản lý cho module Information Service. GT4.2 chứa 2 bản cài đặt GRAM, một bản xây dựng trên các protocol riêng của Globus (trong GT2) được gọi là Pre-WS GRAM, và một bản mở rộng của Pre-WS GRAM, xây dựng theo chuẩn OGSI, được gọi là WS-GRAM. GRAM cung cấp các hàm API, các dịch vụ để yêu cầu hoặc huỷ bỏ việc thực thi các công việc cũng như kiểm tra trạng thái của các công việc đang thực thi. Các yêu cầu được đặc tả bởi ngôn ngữ đặc tả tài nguyên (Resource Specification Language (RSL)). Resource Specification Language (RSL) là một ngôn ngữ có cấu trúc được sử dụng để đặc tả các yêu cầu tài nguyên và các thông số cần thiết để thực thi một công việc. Trong WS-GRAM, RSL được viết lại dưới dạng XML. GRAM giảm thiểu các cơ chế cần thiết để sử dụng tài nguyên ở xa. Các hệ thống cục bộ ở xa có thể sử dụng nhiều cơ chế quản lý tài nguyên khác nhau (như sử dụng hệ thống lập lịch, hệ thống hàng đợi, hệ thống giữ chỗ, các giao diện điều khiển khác nhau), nhưng người dùng và các nhà phát triển ứng dụng chỉ cần sử dụng một cơ chế, một giao diện duy nhất (của GRAM) để yêu cầu và sử dụng các tài nguyên này. Hiện nay GRAM không có khả năng lập lịch và tìm kiếm để tìm các tài nguyên và để tự động gửi các công việc đến các hệ thống thích hợp, không có các chức năng kế toán và tính toán chi phí. Thay vào đó, nó cung cấp các công cụ và giao diện để xây dựng các chức năng trên. Các chức năng này được bổ sung bằng các dự án khác được xây dựng trên nền tảng GRAM như Condor-G, Gridbus,... GRAM đã được thiết kế để tương thích và sử dụng được với 6 bộ lập lịch cục bộ : Condor, Load Sharing Facility (LSF), Network Queuing Environment (NQE), Fork, EASY, và LoadLeveler. Khi một người dùng hoặc một resource broker gửi một yêu cầu thực thi công việc, nó sẽ đi qua các trạng thái khác nhau theo sơ đồ trạng thái sau: 31 Hình 2.4. Các trạng thái của 1 công việc 1. UnSubmitted Công việc chưa được gửi cho bộ lập lịch cục bộ. Các lời gọi callback về trạng thái công việc sẽ không bao giờ được thực hiện. 2. StageIn Trạng thái khởi tạo, chuẩn bị thực thi, đọc, nhập các file dữ liệu cho job. Một số công việc có thể không có trạng thái này. 3. Pending Công việc đã được gửi đến bộ lập lịch cục bộ, nhưng chưa cấp phát tài nguyên cho nó. 4. Active Công việc đã nhận đủ các tài nguyên cần thiết và đang được thực thi. 5. Suspended Công việc đã bị ngừng tạm thời bởi bộ lập lịch. Chỉ có một số bộ lập lịch cho phép công việc vào trạng thái Suspended. 6. StageOut Trình quản lý công việc gửi các file dữ liệu kết quả đến các kho lưu trữ ở xa. Một số công việc có thể không có trạng thái này. 7. Done Công việc đã thực hiện xong và thành công. 8. Failed 32 Công việc kết thúc trước khi hoàn thành, do một lỗi hay do yêu cầu hủy của người dùng hoặc hệ thống. 2.3.4.2.2. Pre-WS GRAM 1. Các đặc điểm chính - Cung cấp các dịch vụ không theo chuẩn OGSI phục vụ thực thi các công việc trên các site ở xa. - Sử dụng ngôn ngữ RSL để trao đổi các yêu cầu về thực thi công việc. - Các công việc ở xa thực thi dưới quyền của user cục bộ. - Việc uỷ quyền, chứng thực giữa client và dịch vụ phải thông qua thành phần thứ ba (gatekeeper). 2. Mô hình hoạt động tổng quan của pre-WS GRAM Kiến trúc các thành phần và cơ chế hoạt động của Pre-WS GRAM như sau: Hình 2.5. Các thành phần và cơ chế của Pre-WS GRAM 33 Như trên hình vẽ, các thành phần chủ yếu của pre-WS GRAM là : GRAM client library, gatekeeper, RSL parsing library, Job manager và GRAM Reporter. GSI được sử dụng để chứng thực và phân quyền cho người dùng. * GRAM client library được sử dụng bởi các ứng dụng hay một coallocator đại diện cho ứng dụng. Nó giao tiếp với GRAM gatekeeper trên site ở xa để thực hiện mutual authentication và gửi một yêu cầu gồm có bản đặc tả tài nguyên, các yêu cầu về callback, và một số thành phần khác. * Gatekeeper là một thành phần khá đơn giản, chịu trách nhiệm đáp ứng lại yêu cầu từ GRAM client bằng cách thực hiện 3 việc sau: thực hiện mutual authentication với user và tài nguyên, ánh xạ user name cục bộ cho user ở xa, khởi động một Job manager. Job manager này sẽ chạy trên hệ thống như là một user cục bộ, và thực sự xử lý các yêu cầu. * Một Job manager chịu trách nhiệm tạo lập các tiến trình (process) được yêu cầu bởi người dùng. Thông thường nhiệm vụ này được thực hiện bằng cách gửi các yêu cầu cấp phát tài nguyên đến hệ thống quản lý tài nguyên cục bộ của site. Khi các tiến trình được tạo ra, Job manager còn chịu trách nhiệm theo dõi trạng thái của chúng, thông báo callback các thay đổi trạng thái, triển khai các thao tác điều khiển tiến trình như tạm dừng, kích hoạt, kết thúc tiến trình. Hoạt động của Job manager kết thúc khi công việc nó quản lý kết thúc. Một Job manager có 2 thành phần : - Common Component : chuyển thông điệp nhận được từ gatekeeper và client thành các lời gọi đến các API của Machine-Specific Component (MSC). Nó cũng biên dịch các yêu cầu thông báo thông tin callback của MSC thành các thông điệp gửi về client. - Machine-Specific Component : chứa các mã cài đặt cụ thể của các hàm API trên các môi trường cục bộ khác nhau. Đây là phần thay đổi duy nhất trong GRAM để tương thích với các môi trường cục bộ. Mã cài đặt bao gồm các lời gọi hàm đến hệ thống cục bộ, các thông báo đến trình theo dõi tài nguyên (MDS). * GRAM reporter chịu trách nhiệm gửi các thông tin về cấu trúc (như khả năng giữ chỗ, số lượng hàng đợi,… ) và trạng thái (như số lượng các node, số node đang đang sẵn sàng, các công việc đang thực hiện, ….) của bộ lập lịch cục bộ cho hệ thống Information Service (ở đây là MDS). Pre-WS GRAM có thể sử dụng module Global Access to 34 Secondary Storage (GASS) để truyền các file dữ liệu và kết quả về client. Cơ chế này được sử dụng trong lệnh globusrun, gatekeeper và job manager. Người dùng có thể sử dụng cơ chế co-allocator Dynamically-Updated Request Online Coallocator (DUROC) để yêu cầu thực hiện công việc trên nhiều job manager ở cùng một host hay ở nhiều host khác nhau.Các script RSL chứa cú pháp DUROC sẽ được phân tích (parse) ở GRAM client và phân phối đến nhiều job manager. Hình 2.6. Cơ chế hoạt động của duroc trong Pre-WS GRAM 2.3.4.2.3. WS-GRAM 1. Các đặc điểm chính - Cung cấp các service theo chuẩn OGSI phục vụ thực thi các công việc trên các site ở xa. - Sử dụng ngôn ngữ RSL-2 (các đặc tả RSL theo định dạng XML) để trao đổi các yêu cầu về thực thi công việc. - Các công việc ở xa thực thi dưới quyền của user cục bộ. - Việc uỷ quyền, chứng thực giữa client và service không cần thông qua thành phần thứ ba. 2. Mô hình thành phần và hoạt động 35 Với GT4, người dùng đã có thể gọi thực thi các công việc thông qua các Grid service. Kiến trúc GRAM được thiết kế lại theo OGSA thông qua 5 service và một số module: - Master Managed Job Factory Service (MMJFS) Chịu trách nhiệm phát hành các service GRAM ảo cho thế giới bên ngoài. MMJFS sử dụng Service Data Aggregator để thu thập và phát sinh các Service Data Element cục bộ, chứa thông tin về trạng thái các scheduler cục bộ (như tổng các node, các node hiện đang sẵn sàng) và các thông tin về host (host,kiểu CPU, host OS). MMJFS thực hiện cấu hình Redirector để giải quyết các lời gọi createService đến nó qua Startup UHE. Redirector được hướng dẫn để chuyển các lời gọi createService đến hosting environment của người dùng. - Managed Job Factory Service (MJFS) Chịu trách nhiệm tạo lập một instance MJS mới. Nó chỉ phát hành một Service Data Element đơn nhất, là một mảng các GSH của tất cả các instance MJS đang hoạt động. - Managed Job Service (MJS) Là một OGSA service thực hiện gửi công việc đến các scheduler cục bộ, theo dõi trạng thái của công việc, và gửi các thông báo. MJS sẽ khởi động 2 service File Streaming Factory Services làm stdout và stderr cho công việc. Những GSH của 2 service này được lưu trữ trong MFS Service Data Element. - File Stream Factory Service Chịu trách nhiệm tạo các instance mới của File Stream Service. - File Stream Service Là một OGSA service sử dụng một địa chỉ URL đưa vào để chuyển kết quả từ các file cục bộ tạo ra bởi factory đại diện cho các luồng stdout, stderr đến host có URL đó. - Virtual Host Environment Redirector Nhận tất cả các thông điệp SOAP và chuyển chúng đến User Host Environment (UHE). - Starter UHE 36 Được sử dụng bởi Redirector để giải quyết các lời gọi đến một UHE. File gridmap được sử dụng để lấy tên người dùng cục bộ tương ứng với subject DN của người dùng Grid và để đảm bảo chỉ có một UHE trên một người dùng chạy trên một máy. Việc ánh xạ tên người dùng đến số hiệu cổng (port number) của UHE của người dùng đó được quản lý trong một file cấu hình. Khi có một yêu cầu về URL đến và có một điểm nhập(entry) trong file cấu hình, URL đích sẽ được xây dựng và trả về cho Redirector. Nếu UHE ở cổng đó chưa được khởi động, module setuid/launch được sử dụng để khởi động UHE cho user. Nếu một điểm nhập chưa tồn tại trong file cấu hình, một cổng chưa sử dụng được chọn, module setuid/launch được sử dụng để khởi động UHE trên cổng được chọn và trả về URL cho Redirector, sau khi chắc chắn rằng UHE đã được chạy. File cấu hình cũng được cập nhật thêm điểm nhập này. - Launch UHE Dùng để khởi động một hosting environment mới dưới user account. 37 Hình 2.7. Các thành phần và cơ chế hoạt động của WS-GRAM Hình 2.7 miêu tả nguyên tắc hoạt động của WS-GRAM cùng các thành phần. 1. Trước hết MMJFS được cấu hình để sử dụng Redirector để chuyển hướng các lời gọi đến nó và sử dụng Starter UHE để khởi động một UHE nếu chưa có UHE cho người dùng. Sau này, khi có một lời gọi createService MMJFS sẽ sử dụng Redirector để gọi Starter UHE và khởi động một UHE. 2. MMJFS phát hành GSH của nó đến một Registry ở xa. (Có thể không có bước này) 38 3. Một người dùng (client) khởi tạo một proxy và gửi một yêu cầu createService đến server thông qua proxy của mình. Yêu cầu này sẽ được tiếp nhận bởi Redirector. 4. Redirector gọi Starter UHE để thực hiện phân quyền cho yêu cầu của người dủng thông qua Grid-mapfile để xác định tên người dùng cục bộ và cổng được sử dụng, từ đó xây dựng nên một URL đích. 5. Redirector cố gắng chuyển tiếp lời gọi của người dùng đến URL đích vừa được xây dựng. Nếu nó không thể chuyển tiếp được lời gọi bởi vì UHE chưa chạy, module Launch UHE sẽ được gọi. 6. Launch UHE tạo một tiến trình mới UHE dưới tên người dùng cục bộ đã được chứng thực. 7. Starter UHE sẽ chờ cho đến khi UHE được khởi tạo hoàn toàn thông qua cơ chế “ping loop” và trả về URL đích cho Redirector. 8. Redirector chuyển lời gọi createService đến MJFS và ở đây sẽ thực hiện quá trình chứng thực hai chiều và phân quyền. 9. MJFS tạo một MJS mới 10. MJS gửi công việc được yêu cầu đến hệ thống lập lịch cục bộ. 11. Các lời gọi tiếp theo đến MJS từ client sẽ được chuyển đến MJS thông qua Redirector. 12. RIPS cung cấp các dữ liệu liên quan đến các thực thể MJS và MMJFS. Nó thu thập thông tin từ hệ thống lập lịch cục bộ, hệ thống file, thông tin về host,… 13. Các lời gọi FindServiceData sẽ được giải quyết bằng cách trả về một SDE (phát sinh bởi Service Data Aggregate) hoặc được chuyển đến MJFS liên quan. 14. Để gửi các luồng stdout/stderr về client, MJS sẽ tạo ra 2 FSFS, một cho stdout, một cho stderr. 15. Sau đó, MJS tạo các thực thể FSS như xác định trong yêu cầu về công việc. 16. Một trình quản lý GRIM chạy trong UHE để tạo một host certificate. Chứng chỉ này được sử dụng trong quá trình chứng thực hai chiều giữa MJS và 39 client. Từ phiên bản GT3, Các đặc tả yêu cầu tài nguyên và công việc được viết bằng ngôn ngữ RSL mới. Ngôn ngữ RSL mới cũng vẫn có các chức năng tương tự như trong GT2 nhưng được định nghĩa lại dưới dạng XML. 40 Chương 3 : MPICH và MPICH-G2 Máy tính với một bộ vi xử lý có những giới hạn về hiệu năng. Thời gian trễ trên bộ nhớ và thiết bị lưu trữ là rào cản chính mà các nhà thiết kế máy tính phải đối mặt. Thời gian trễ bắt nguồn từ các ràng buộc vật lý và rất khó giảm thiểu. Với các thiết bị lưu trữ độ trễ có thể vào cỡ 10-3giây, gấp hàng triệu lần thời gian trễ của bộ vi xử lý. Như vậy các mô hình tính toán song song là một trong các giải pháp giúp tăng hiệu năng tính toán. Trên quan điểm phần cứng thì mô hình phân tán là cách tiếp cận song song hóa đơn giản nhất. Các máy tình sẽ được kết nổi trong một mạng máy tính. Mô hình lập trình điển hình bao gồm các tiến trình riêng rẽ trên mỗi máy tính trao đổi thông tin với nhau bằng cách gửi và nhận các thông điệp. Đây là mô hình phổ biến nhất của tính toán song song. Hệ thống sử dụng bộ nhớ phân tán là hệ thống tính song song thông dụng nhất hiện nay. Cách tiếp cận sử dụng mô hình bộ nhớ chung sẽ phức tạp hơn, tập hợp các máy tính một cách chặt chẽ hơn bằng cách đưa vào một không gian địa chỉ duy nhất. Các CPU sẽ truy nhập đến dữ liệu thông qua các lệnh nhập và xuất trong tập lệnh cơ bản. Bởi truy cập thông qua tập lệnh cơ bản nhanh hơn là các lệnh truy cập mạng trong hệ thống phân tán cho nên truy cập sẽ có độ trễ thời gian thấp hơn , băng thông rộng hơn. 3.1. MPI MPI (Message Passing Interface) MPI là một hệ thống truyền thông điệp chuẩn hỗ trợ việc trao đổi tài nguyên, thông tin giữa các bộ xử lý phục vụ cho việc viết các ứng dụng song song. Phiên bản MPI đầu tiên được phát hành năm 1994 trên MPI Forum (MPIF). MPI ra đời do mỗi nhà sản xuất MPP (Massively Parallel Processor) đã tạo ra các API trao đổi thông điệp riêng khiến người dùng gặp khó khăn khi viết những chương trình tính toán song song có tính linh động (portable). Tập MPI thi hành bao gồm một thư viện các thủ tục sao cho có thể gọi được từ các chương trình Fortran, C, C++ hay Ada. Lợi thế của MPI so với các thư viện cũ là nó vừa thuận tiện (vì MPI thực thi cho hầu hết các kiến trúc bộ nhớ phân tán) vừa nhanh (vì mỗi thủ tục được tối ưu hóa cho phần cứng mà nó đang chạy). 41 Hiện nay có nhiều phiên bản MPI được phát triển rộng rãi trên khắp thế giới, như là MPICH, Open MPI, LAM/MPI, MVAPICH, Scali MPI... 3.2. MPICH MPICH là một phiên bản MPI khá thông dụng trong mô hình tính toán song song và tính toán phân tán (distributed computing). MPICH là một sản phẩm giữa sự hợp tác giữa phòng thí nghiệm quốc gia Argonne và trường đại học bang Mississippi . Đây là phiên bản được sử dụng rộng rãi trong mạng các máy trạm và hệ thống Beowulf clusters. MPICH miễn phí và có thể download tại: Hiện nay, MPICH là sự kế thừa và phát huy theo chuẩn của MPI-1, với các phần mở rộng hỗ trợ cho các I/O song song đã được định nghĩa trong chuẩn MPI-2. MPICH là một thư viện được phân bố một cách rộng rãi với trung bình 2000 lượt tải mỗi tháng, chưa tính lượt tải tại các trang liên kết. MPICH được phân phối miễn phí và đóng góp khá nhiều cho cộng đồng tính toán song song. Tầng trên cùng của MPICH là MPI interface được định nghĩa bởi chuẩn MPI. Ngay bên dưới là các tầng của MPICH. Hầu hết các đoạn mã của MPI đều độc lập với các thiết bị mạng hoặc hoặc hệ thống quản lý tiến trình. Những đoạn mã này bao gồm việc kiểm tra lỗi và rất nhiều cách sử dụng khác nhau với các đối tượng không rõ ràng. Tất cả các chức năng được thông qua một tầng thấp hơn là Abtract Device Interface (ADI). ADI là một interface đơn giản và tập trung vào việc di chuyển dữ liệu giữa tầng MPU và hệ thống mạng. MPICH-G2 là một sự phát triển từ ADI và còn có cách gọi khác là globus2 device. 3.3. MPICH-G2 MPICH-G2 là một sự bổ sung của MPI v1.1 standard. Nó sử dụng dịch vụ từ Globus Toolkit ,MPICH-G2 cho phép bạn kết hợp nhiều máy tính với các kiến trúc khác nhau để chạy 1 ứng dụng MPI. MPICH-G2 tự động chuyển đổi dữ liệu trong các tin nhắn giữa các máy với kiến trúc khác nhau và hỗ trợ nhiều giao thức giao tiếp khác bằng cách tự động chọn lựa TCP cho việc giao tiếp giữa các máy và phiên bản MPI hỗ trợ việc đó. MPICH-G2 là một sự thể hiện đầy đủ nhất của chuẩn MPI-1 sử dụng Globus Toolkit để hỗ trợ thực thi trong môi trường Grid không đồng nhất. 42 Hình 3.1. Sơ đồ tương tác giữa MPICH với Globus Toolkit 3.3.1. Quá trình thực thi một ứng dụng Trước khi bắt đầu 1 ứng dụng MPICH-G2, người dùng sử dụng Grid Sercurity Infrastruce (GSI) để yêu cầu một (khóa công khai) chứng thực proxy được sử dụng để chứng thực người dùng. Bước này cung cấp khả năng chỉ cần đăng nhập một lần, luôn giữ kết nối trong quá trình chạy ứng dụng mà không cần gõ passphase để chứng thực lại, kết nối này bị hủy khi sử dụng lệnh hủy. Người dùng sử dụng Monitoring and Discovery Service (MDS) để lựa chọn các máy tính sẽ thực thi tiến trình bao gồm các công việc cơ bản như : cấu hình, kiểm tra tính sự tồn tại, kiểm tra kết nối mạng. Sau khi chứng thực và tạo kết nối proxy, người dùng sử dụng dòng lệnh mpirun để yêu cầu tạo một phiên tính toán MPI. MPICH-G2 sử dụng Resource Specification Language (RSL) để đặc tả công việc tính toán. Người dùng viết các file RSL để nhận diện tài nguyên tính toán (ví dụ: máy tính) và môi trường tính toán cụ thể (số lượng CPU sử dụng, bộ nhớ, thời gian thực thi) và các tham số đi kèm cho mỗi một máy tính. Khi tìm thấy thông tin trong file RSL ,MPICH gọi một thư viện được phân phối kèm với Globus Toolkit đó là Dynamic-Updated Request Online Coallocator (DUROC) để lập lịch và khởi động ứng dụng. Thư viện DUROC sử dụng API Grid Resource Allocation and Managenment (GRAM) và các giao thức để khởi động , sau đó quản lý các tiến trình tính toán phụ trên 43 mỗi máy tính. Với mỗi tiến trình tính toán phụ, DUROC sinh ra một yêu cầu GRAM để điều khiển GRAM server yêu cầu chứng thực người dùng, thực thi việc chứng thực người dùng cục bộ và sau đó tương tác với lập lịch cục bộ để khởi tạo quá trình tính toán. DUROC và các thư viện MPICH-G2 liên kết với nhau gói gọn các tiến trình tính toán phụ vào một tiến trình tính toán MPI. GRAM sẽ sử dụng Global Access to Secondary Storage (GASS) để phân các giai đoạn thực thi từ các địa điểm từ xa. Khi GASS được sử dụng, chỉ một ứng dụng được khởi động, chuyển hướng các dòng thông tin đầu ra và lỗi (stdout ,stderr) tới các terminal người dùng. Khi một ứng dụng được khởi động, MPICH-G2 lựa chọn các phương thức giao tiếp có hiệu quả nhất giữa 2 tiến trình, sử dụng phiên bản MPI đi kèm nếu có hoặc Globus communication (Globus IO) với Globus data conversion (Globus DC) cho các giao thức TCP. DUROC và GRAM cũng theo dõi và quản lý các tiến trình thực thi của ứng dụng. Mỗi một server GRAM theo dõi vòng đời của tiến trình tính toán phụ xem chúng đã hoàn thành hay đang thực thi hay đã kết thúc, và chuyển những thông tin này trở về DUROC. Mỗi một tiến trình phụ bị chặn bởi DUROC và được trả lại sau khi các tiến trình phụ đã thực thi xong. Tất nhiên, yêu cầu hủy tiến trình từ người dùng (Coltrol C) cũng được xử lý bởi GRAM và DUROC. Sau khi một tiến trình được khởi động, MPICH-G2 sử dụng thông tin được lưu trữ cụ thể trong file RSL để tạo cluster giữa các tiến trình. 44 Chương 4 : Thí nghiêm triển khai hệ thống Grid cơ bản cho mục đích tính toán song song sử dụng Globus Toolkit và MPICH-G2 Hệ thống các máy thuộc mạng Grid sẽ được triển khai sau đây bao gồm 5 máy tính. Người dùng sẽ được sử dụng dịch vụ của do hệ thống Grid mang lại sẽ là người dùng “thinh”. Cần triển khai lần lượt 2 gói phần mềm Globus Toolkit và MPICH lên cả 5 máy tính. 4.1. Triển khai Globus Toolkit 4.1.1. Chuẩn bị về phần cứng và phần mềm hệ thống Phiên bản GLOBUS Toolkit được sử dụng ở đây là phiên bản 4.2.1, có thể được được tìm thấy trên trang chủ  Phần cứng Sử dụng 4 máy tính với các hostname và địa chỉ IP như sau : Hostname Địa chỉa IP b.ar.com 192.168.1.13 (CA) b1.ar.com 192.168.1.14 b2.ar.com 192.168.1.15 b4.ar.com 192.168.1.17 Khi đặt hostname cho các máy tính, có một số lưu ý sau : - Các hostname phải được đặt ở dạng đầy đủ - Đặt hostname trước khi cài đặt GLOBUS, vì trong quá trình cài đặt GLOBUS sẽ đưa ra các file cấu hình liên quan đến hostname của máy tính. - Các hostname trong cùng một mạng Grid phải có cùng 1 cấu trúc hostname như sau: example.mydomain.com. Trong đó example khác nhau, nhưng luôn luôn phải có mydomain.com. 45 Như đã đề cập trong chương 1 : một hệ thống grid cần có 1 server làm nhiệm vụ chứng thực. Chọn b.ar.com làm server chứng thực (CA)  Phần mềm hệ thống 4 máy tính được cài đặt hệ điều hành CentOS 5.4 Lưu ý : Có thể chọn các bản phân phối khác của Linux cũng như Unix để triển khai Hệ thống phải đảm bảo có các gói sau :  Thư viện zlib cho GSI-OpenSSH  java-1.6.0-openjdk-devel.i386 và java-1.6.0-openjdk.i386 : 2 gói phát triển Java từ Sun  Apache-ant  xinetd  Gcc : C compiler  G++ : C++ compiler  Tar : công cụ nén và giải nén  Make : công cụ cho phép dịch liên kết nhóm các chương trình  Perl : ngôn ngữ perl  IODBC nếu cần triển khai module RSL  Postgresql nếu cần triển khai module RFT 4.1.2. Cài đặt Globus Toolkit Công việc cài đặt được thực hiện tương tự nhau trên cả 3 máy. Tạo người dùng globus với đầy đủ quyền đăng nhập và có thư mục cá nhân Thêm người dùng globus [root@b ~]# Useradd globus Cấp quyền đăng nhập và thư mục cá nhân /home/globus [root@b ~]# Passwd globus Tương tự tạo người dùng thinh với đầy đủ quyền ,đây sẽ là người dùng cục bộ và cũng là người dùng GLOBUS trực tiếp sử dụng dịch vụ grid do GLOBUS TOOLKIT mang lại, người dùng này cần được tạo ra giống nhau trên các máy tham gia mạng grid. 46 Download mã nguồn globus toolkit 4.2.1 : gt4.2.1-all-source-installer.tar.bz2 Với quyền người dùng Globus Giải nén mã nguồn bằng công cụ tar [globus@b ~]$tar xjvf gt4.2.1-all-source-installer.tar.bz2 Tạo một biến môi trường lưu giữ thông tin thư mục sẽ cài đặt Globus toolkit [root@b ~]#export GLOBUS_LOCATION=/usr/local/globus-4.2.1 Tạo thư mục [root@b ~]#mkdir $GLOBUS_LOCATION Cấp quyền sở hữu thư mục này cho người dùng GLOBUS [root@b ~]#chown globus:globus $GLOBUA_LOCATION Với quyền người dùng Globus Chuyển vào thư mục chứa mã nguồn GT4 đã giải nén Sau đó lần lượt thực hiện quy trình biên dịch 1 gói mã nguồn theo các bước sau [globus@b gt4.2.1-all-source-installer]$ ./configure -- prefix=$GLOBUS_LOCATION --with-iodbc=/usr/lib Bước này thành công sẽ tạo ra 1 makefile trong thư mục chứa mã nguồn GT4 để người dùng có thể biên dịch bằng công cụ make Lưu ý : trong bước này thường có thông báo lỗi chưa thiết lập biến môi trường JAVA_HOME. JAVA_HOME là biến chứa thông tin về thư mục gốc của bộ phát triển phần mềm với ngôn ngữ lập trình Java, nơi liên quan đến lệnh javac. Trong trường hợp gặp lỗi trên, cần xác định đường dẫn chính xác thư mục gốc chứa lệnh javac và tạo biến môi trường JAVA_HOME có giá trị là đường dẫn này bằng lệnh export. Tiến hành dịch gói bằng lệnh [globus@b gt4.2.1-all-source-installer]$make | tee install.log 47 Quá trình biên dịch mã nguồn có thể kéo dài 3-4 tiếng đồng hồ với các máy tính cá nhân phổ thông hiện nay Nếu quá trình dịch gói gặp lỗi phát sinh lỗi, hãy kiểm tra file install.log để khắc phục lỗi và dịch lại Nếu quá trình biên dịch thành công, tiến hành cài đặt [globus@b gt4.2.1-all-source-installer]$ make install Quá trình cài đặt thành công ,GT4 sẽ được cài đặt vào thư mục /usr/local/globus-4.2.1 Lưu ý: nên thêm lệnh tạo biến môi trường GLOBUS_LOCALTION vào file /etc/profile để mỗi lần khởi động lại máy tính, biến trên được khởi tạo đồng thời. 4.1.3. Cấu hình các thành phần của globus toolkit 4.1.3.1. Cấu hình bảo mật  b.ar.com b.ar.com đóng vai trò làm server chứng thực, chúng ta cần cài đặt gói simpleCA đi kèm để quản lý các chứng chỉ điện tử. Đặt đường dẫn đến các lệnh của globus [globus@b~]$source $GLOBUS_LOCATION/etc/globus-user-env.sh Cài đặt simpleCA [globus@b~]$GLOBUS_LOCATION/setup/globus/setup-simple-ca Quá trình cài đặt thành công sẽ sinh ra 1 thư mục /home/.globus/simpleCA Tiếp theo, để b.ar.com tin tưởng tuyệt đối vào simpleCA vừa được tạo cần thực hiện lệnh sau với quyền người dùng root [root@b~]#$GLOBUS_LOCATION/setup/globus_simple_ca_ebb88ce5_s etup/setup-gsi -default Sau khi lệnh trên được thực hiện ,thư mục /etc/grid-sercurity được tạo ra Sau đó cần tạo chứng chỉ điện tử cho host b.ar.com và người dùng thinh 48 Máy b.ar.com gửi yêu cầu được CA ký [root@b~]#grid-cert-request -host `hostname` 1 file hostcert_request.pem được tạo ra nằm tại /etc/grid-sercurity Với quyền người dùng globus, thực hiện ký lên hostcert_request.pem để tạo ra chứng chỉ điện tử cho host b [globus@b~]grid-ca-sign –in /etc/grid- sercurity/hostcert_request.pem –out bcert.pem Copy file bcert.pem đè lên file hostcert.pem trong thư mục /etc/grid-sercurity Chứng chỉ điện tử cho host b đã được tạo Tạo chứng chỉ điện tử cho người dùng thinh Chuyển sang quyền người dùng thinh Gửi yêu cầu cần được CA ký [thinh@b~]$grid-cert-request 1 file usercert_request.pem được tạo ra tại thư mục /home/thinh/.globus/ Với quyền người dùng globus, tạo chứng chỉ điện tử cho người dùng thinh bằng việc ký lên usercert_request.pem [globus@b~]$grid-ca-sign –in /home/thinh/.globus/usercert.pem –out thinhcert.pem Người dùng thinh copy file thinhcert.pem đè lên file usercert.pem trong thư mục /home/thinh/.globus/ Quá trình tạo chứng chỉ điện tử cho người dùng thinh kết thúc. Lấy thông tin về người dùng thinh và đưa vào file grid-mapfile [thinh@b~]$ grid-cert-info –subject Ta được thông tin sau : /O=Grid/OU=GlobusTest/OU=simpleCA-b.ar.com/OU=ar.com/CN=Nguyen Thinh Tạo file /etc/grid-sercurity/grid-mapfile như sau : 49 "/O=Grid/OU=GlobusTest/OU=simpleCA-b.ar.com/OU=ar.com/CN=Nguyen Thinh" thinh  b1.ar.com, b2.ar.com, b4.ar.com Copy file globus_simple_ca_xxxx_setup-0.20.tar.gz (xxxx là một mã hash được sinh ra bất kỳ tùy theo từng máy ) từ máy b.ar.com bằng lệnh scp sang các máy b1, b2 ,b3, b4. [globus@b1~]$scp b.ar.com://home/globus/.globus/simpleCA/globus_simple_ca_xxx x_setup-0.20.tar.gz ./ Cài đặt gói vừa copy [globus@b1~]$$GLOBUS_LOCATION/sbin/gpt-built globus_simple_ca_384920d7_setup-0.20.tar.gz [globus@b1~]$$GLOBUS_LOCATION/sbin/gpt-postinstall Chuyển sang người dùng root, để máy tính b1, b2, b3, b4 tin tưởng CA, cần thực hiện lệnh [root@b1~]#$GLOBUS_LOCATION/setup/globus_simple_ca_ebb88ce5_ setup/setup-gsi -default Tạo chứng chỉ điện tử cho host b1, b2, b4 tương tự như với host b .Với quyền root , sử dụng lệnh [root@b1~]#grid-cert-request –host `hostname` File hostcert_request.pem được tạo ra trong thư mục /etc/grid-sercurity/, chuyển file này sang máy b, trên máy b, dùng tài khoản globus ký lên và tạo chứng chỉ điện tử. [globus@b~]$grid-ca-sign –in hostcert.pem –out hostbb1.pem Chuyển file hostb1.pem về máy b1, với tài khoản root trên b1, copy đè file này vào /etc/grid-sercurity/hostcert.pem. Tạo chứng chỉ điện tử cho người dùng thinh trên b1 tương tự như làm với host bằng cách sử dụng lệnh grid-cert-request với tài khoản thinh trên b1 và grid-ca-sign với tài khoản globus trên b. Sau đó, tạo một grid-mapfile trong thư mục /etc/grid-sercurity tương tự như trên máy b. 50 Các bước làm với máy b2, b4 cũng tương tự như các bước làm với máy b1. 4.1.3.2. Cấu hình dich vụ GridFTP Cho cả 4 máy b, b1, b2, b4 Với quyền người dùng root tạo file /etc/xinetd.d/gridftp có nội dung ------------------------------------------------------------ service gsiftp { instances = 100 socket_type = stream wait = no user = root env += GLOBUS_LOCATION=/usr/local/globus-4.2.1 env += LD_LIBRARY_PATH=/usr/local/globus-4.2.1/lib server = /usr/local/globus- 4.2.1/sbin/globus-gridftp-server server_args = -i log_on_success += DURATION disable = no } ------------------------------------------------------------ Thêm dòng gsiftp 2811/tcp vào file /etc/services [root@b~]#echo “gsiftp 2811/tcp” >> /etc/services 2 dòng lệnh trên cho phép dịch vụ /usr/local/globus-4.2.1/sbin/globus-gridftp-server luôn được chạy với cổng 2188 ,giao thức TCP 51 Khởi động lại dịch vụ xinetd [root@b~]#/etc/init.d/xinetd start [root@b~]#/etc/init.d/xinetd reload Kiểm tra xem dịch vụ đã chạy chưa ? [root@b~]#netstat –an | grep 2118 Kiểm tra gridFTP hoạt động hay chưa Với quyền người dùng thinh [thinh@b~]grid-proxy-init -verify –debug Nếu không gặp báo lỗi , thử kiểm tra bằng việc copy sau : [thinh@b~]globus-url-copy gsiftp://b.ar.com/etc/group /home/thinh/ Copy thành công tức là dịch vụ gridFTP đã hoạt động 4.1.3.3. Cấu hình gatekeeper Cho cả 4 máy b, b1, b2, b4 Tạo file /etc/xinetd.d/globus-gatekeeper với nội dung sau : ------------------------------------------------------------ service gsigatekeeper { socket_type = stream protocol = tcp wait = no user = root env = LD_LIBRARY_PATH=/usr/local/4.2.1/lib server = /usr/local/globus-4.2.1/sbin/globus- gatekeeper 52 server_args = -conf /usr/local/globus- 4.2.1/etc/globus-gatekeeper.conf disable = no env = GLOBUS_TCP_PORT_RANGE=40000,50000 } ------------------------------------------------------------ Thêm dòng gsigatekeeper 2119/tcp vào file /etc/service Khởi động lại dịch vụ xinetd. Kiểm tra xem dịch vụ hoạt động chưa bằng lệnh netstat 4.1.3.4. Cấu hình WS GRAM Cho cả 4 máy b, b1, b2, b4 Với quyền root ,dùng lệnh visudo thay đổi thông tin như sau : Chọn comment tại dòng # Defaults requiretty Thêm thông tin sau vào cuối file globus ALL=(thinh) NOPASSWD: /usr/local/globus- 4.2.1/libexec/globus-gridmap-and-execute -g /etc/grid- security/grid-mapfile /usr/local/globus- 4.2.1/libexec/globus-job-manager-script.pl * globus ALL=(thinh) NOPASSWD: /usr/local/globus- 4.2.1/libexec/globus-gridmap-and-execute -g /etc/grid- security/grid-mapfile /usr/local/globus- 4.2.1/libexec/globus-gram-local-proxy-tool * Dòng lệnh trên thêm vào file /etc/sudoer cho phép người dùng globus có quyền thực thi các file nằm tại thư mục riêng của user thinh, đảm bảo cho người dùng thinh có thể thực thi các các ứng dụng 53 Như vậy chúng ta đã cấu hình các thành phần của Globus toolkit để dảm bảo cho người dùng thinh có quyền thực thi các file thông qua cơ chế hoạt động của globus 4.2. Triển khai MPICH-G2 Thực hiện với cả 4 máy. Với quyền người dùng root, tạo thư mục /opt/mpich Cấp quyền sở hữu thư mục cho người dùng globus: [root@b~]#chown globus:globus /opt/mpich Download mã nguồn chương trình mpich từ trang chủ của mpich , mã nguồn có dạng mpich.tar.gz. Giải nén mã nguồn bằng công cụ tar [globus@b~]$tar xzvf mpich.tar.gz Thực hiện 3 bước cấu hình và kiểm tra môi trường cài đặt, biên dịch và cài đặt Kiểm tra môi trường cài đặt : [globus@b mpich-1.2.7-p1]$./configure –prefix=/opt/mpich – device=globus2:-flavor=gcc32dbg Thư mục chỉ định cài đặt là thư mục /opt/mpich, có cài đặt kết nối tới bộ công cụ globus toolkit. Tham số device=globus2 dùng để tại một công cụ kết nối mpich với globus toolkit Bước này thành công, tạo ra 1 makefile cho phép công cụ make tự động biên dịch chương trình. Biên dịch [globus@b mpich-1.2.7-p1]$make Cài đặt [globus@b mpich-1.2.7-p1]$make instal 54 Chương 5 : Chạy và đánh giá hiệu năng của hệ thống Grid Hệ thống Grid mini gồm 5 máy tính kết nối chúng ta vừa tạo được hoạt động như thế nào, có hiệu năng ra sao ? Trong chương này sẽ là phần thử nghiệm lần lượt 3 chương trình tính toán song song khác nhau với kích thước bài toán khác nhau để dánh giá hiệu năng của hệ thống Grid Các chương trình được sử dụng bao gồm : - Chương trình tính toán số PI - Chương trình giải hệ phương trình tuyến tính (HPTTT) - Chương trình giải bài toán quy hoạch tuyến tính (QHTT) 5.1. Giới thiệu về 3 bài toán sẽ đƣợc thử nghiệm 5.1.1. Tính toán số PI Hằng số Pi, được ký hiệu trong toán học là π, nó được xác định bởi chu vi đường tròn chia cho đường kính của đường tròn đó. Mục tiêu của chương trình là dùng giải thuật để tính toán số Pi với độ chính xác của phần thập phân cho trước. Mã nguồn của chương trình được đi kèm phần mềm MPICH 5.1.2. Hệ phƣơng trình tuyến tính Trong toán học (cụ thể là trong đại số tuyến tính), một hệ phƣơng trình đại số tuyến tính hay đơn giản là hệ phương trình tuyến tính là một tập hợp n phương trình tuyến tính với k biến số: 𝑎1,1𝑥1 + 𝑎1,2𝑥2 +⋯+ 𝑎1,𝑘𝑥𝑘 = 𝑏1 𝑎2,1𝑥1 + 𝑎2,2𝑥2 +⋯+ 𝑎2,𝑘𝑥𝑘 = 𝑏2 𝑎3,1𝑥1 + 𝑎3,2𝑥2 +⋯+ 𝑎3,𝑘𝑥𝑘 = 𝑏3 … 𝑎𝑛 ,1𝑥1 + 𝑎𝑛 ,2𝑥2 +⋯+ 𝑎𝑛 ,𝑘𝑥𝑘 = 𝑏𝑛 Hệ phương trình trên có thể được viết theo dạng phương trình ma trận: Ax=B 55 𝑎1,1 𝑎2,1 ⋮ 𝑎𝑛 ,1 𝑎1,2 𝑎2,2 ⋮ 𝑎𝑛 ,2 𝑎1,3 𝑎2,3 ⋮ 𝑎𝑛 ,3 …𝑎1,𝑘−1 𝑎1,𝑘 …𝑎2,𝑘−1 𝑎2,𝑘 ⋮ … 𝑎𝑛 ,𝑘−1 𝑎𝑛 ,𝑘 𝑥1 𝑥2 ⋮ 𝑥𝑘 = 𝑏1 𝑏2 ⋮ 𝑏𝑘 Mục tiêu của bài toán là tìm nghiệm x của hệ phương trình trên. Các trường hợp xảy ra đối với nghiệm của bài toán là: - Hệ không có nghiệm (vô nghiệm). - Hệ có duy nhất một nghiệm. - Hệ có vô số nghiệm. Kết quả chạy bài toán này sẽ được lấy ra tại thời điểm giải xong HPTTT đầu tiên có kích thước mlog x mlog khi giải bài toán QHTT. Lý do là trong giải thuật áp dụng với bài toán QHTT có 1 bước phải giải HPTTT. Giải thuật áp dụng trong bài toán QHTT sẽ được trình bày sau đây. 5.1.3. Bài toán quy hoạch tuyến tính Có thể tạm định nghĩa quy hoạch tuyến tính là lĩnh vực toán học nghiên cứu các bài toán tối ưu mà hàm mục tiêu (vấn đề được quan tâm) và các ràng buộc (điều kiện của bài toán) đều là hàm và các phương trình hoặc bất phương trình tuyến tính. Thuật toán được áp dụng ở đây là thuật toán Newton tổng quát dùng để giải bài toán quy hoạch tuyến tính dạng chuẩn sau đây :  * min , : , 0T n n x X f c x X x Ax b x       (P) Mục đích của bài toán: với các aij, bi là biết trước, cần tìm xj (j=0,1….,n) sao cho f là nhỏ nhất. Bài toán quy hoạch tuyến tính có tính ứng dụng rất cao trong công việc của các nhà tổ chức , thiết kế ki ̃thuâṭ , quản lí điều hành công việc , ... và ngày càng được ứng dụng rôṇg raĩ trong nhiều liñh vưc̣ khác nhau của cuôc̣ sống . Các lớp bài toán quy hoạch tuyến tính thông dụng hiện nay bao gồm bài toán lập kế hoạch, bài toán vận tải, bài toán túi xách, bài toán đóng gói, bài toán lập lịch biểu... Ngoài ra, có rất nhiều bài toán thực tế được mô hình hóa dưới dạng bài toán quy hoạch tuyến tính, ví dụ như các bài toán tìm 56 cấu trúc tối ưu của chuỗi sinh học, các mô hình môi trường thật, các bài toán cơ học hệ thống lớn, v.v.. Với khối lượng thông tin ngày càng tăng, các kích thước của các bài toán ứng dụng thực tế cũng ngày càng tăng, thế nên việc xử dụng các thuật toán truyền thống không đem lại kết quả mong đợi. Chính vì lý do này một thuật toán mới được đề ra cho phép giải các bài toán quy hoạch tuyến tính kích thước lớn (~ 106 biến, ~103 ràng buộc). Thuật toán này đã được thực hiện trên nền tảng tính toán song song sử dụng MPI. Thuật toán ban đầu sử dụng thuật toán gradient liên hợp, sau đó lấy kết quả và sử dụng tiếp thuật toán Newton tổng quát. Có 6 bước làm như sau : 1. Xác định dự đoán ban đầu 0x và 0 0,p p p . 2. Tính gradient ,( , , ) ( ) T k k s s k S G p x b A x A p c p         ở vòng lặp thứ k của phương pháp Newton để giải bài toán tối đa hóa không ràng buộc . Ở đây s là số thứ tự vòng lặp ngoài. 3. Xác định ma trận Hessian tổng quát cho (18) T k kH I AD A  ở đây A là ma trận m n , ma trận chéo n n kD  được xác định như sau 1 if ( ) 0 ( ) 0 if ( ) 0 T i ii s k k T i k k x A p c D x A p c            Như vậy ma trận m m kH  . 4. Hướng tối đa hóa xấpxỉ p được tìm như là nghiệm của hệ phương trình tuyến tính .k kH p G   Vì kH là ma trận dương, đối xứng và bán xác định nên chúng ta có thể dùng phương pháp gradient liên hợp có tiền điều kiện để giải phương trình tuyến tính (21). Phần chéo của ma trận kH được dùng như tiền điều kiện (preconditioner) cho các bước gradient liên hợp. 57 5. Xác định 1k k kp p p    , với k  là kích thước bước được chọn theo quy tắc Armijo: max ( , , )k k sS p p x    Trên thực tế tham s

Các file đính kèm theo tài liệu này:

  • pdfLUẬN VĂN-GIẢI HỆ PHƢƠNG TRÌNH TUYẾN TÍNH KÍCH THƯỚC LỚN TRÊN NỀN TẢNG GRID COMPUTING.pdf