Trong phần này, tiểu luận sẽ trình bày giải pháp cho việc chia sẻ tài nguyên vật lý. Một cách tổng quát, ta có thể xem hệ thống phân tán là một tập
hợp các nút mạng có thể liên lạc với nhau thông qua kênh truyền thông, giả sử mỗi nút đều có một bộ xử lý và bộ nhớ địa phương, để tối ưu hóa hiệu năng của hệ thống phân tán, thì điều cần thiết là chia sẻ tài nguyên của hệ thống, cụ thể là chia sẻ bộ xử lý và bộ nhớ của mỗi nút mạng riêng biệt.
3.1. Chia sẻ bộ xử lý
Giả sử tại mỗi nút mạng của hệ phân tán có một tập các tác vụ cần thực hiện. Để tối thiểu hóa thời gian thực hiện các tác vụ, một giải pháp được đặt ra đó là tận dụng hết năng lực của bộ xử lý bằng cách phân phối lại các tác vụ cho các nút mạng. Ví dụ, nếu có một vài tác vụ đòi hỏi phải có sự truyền thông giữa các nút mạng, và chi phí cho truyền thông rất cao, thì có thể giải quyết bằng cách sắp xếp các tác vụ, sao cho hai tác vụ cần có truyền thông được tập trung chỉ tại một nút hoặc tại hai nút gần nhau (về khoảng cách địa lý). Hay một ví dụ khác, giả sử có một số tác vụ cần thực hiện, tất cả các tác vụ có thể được thực hiện bởi bất kỳ bộ xử lý nào trong hệ thống. Nếu ban đầu, các tác vụ được phân phối cho các nút mạng một cách hợp lý thì thời gian thực hiên các tác vụ có thể giảm xuống đáng kể do có sự di chuyển của một số tác vụ từ nút mạng chịu tải nặng đến các nút mạng có tải nhẹ hơn. Thao tác này ta gọi là cân bằng tải (load balancing).
Một chiến lược đơn giản để cân bằng tải đó là định kỳ hỏi thăm thông tin về tải của các nút mạng khác và gửi một vài phần công việc cho các nút có tải nhẹ hơn trong trường hợp có thể được, nhằm giảm tải cho một nút chịu tải nặng. Ta có hai chiến lược cân bằng tải, đó là cân bằng tải tĩnh (static load balancing) và cân bằng tải động (dynamic load balancing).
Để cho thuận tiện trình bày các chiến lược, ta dùng từ thẻ bài (token) để gọi một đơn vị khối lượng công việc, một nút có tải càng nặng thì có số thể bài càng nhiều
3.1.1. Cân bằng tải tĩnh
Trong chiến lược cân bằng tải tĩnh, vào thời điểm khởi dầu của việc tính toán, tất cả các tải công việc của hệ thống đều đã có sẵn, không có tải mới được nạp vào hệ thống trong quá trình hoạt động,
tức số thẻ bài là cố định, không có thẻ bài được thêm vào hoặc loại ra khỏi hệ thống trong thời gian cân băng tải. Ở mỗi bước, chỉ có tối đa một thẻ bài được chuyển từ một trạm nào đó sang một trong các trạm gần kề với nó. Vấn đề cần giải quyết đó là tìm một thuật toán để làm giảm độ thiếu cân bằng tải giữa các trạm, độ thiếu cân bằng này được đo bằng chênh lệch lớn nhất giữa số thẻ bài trung bình của các trạm trong mạng so với số thẻ bài mỗi trạm sở hữu. Chiến lược cân bằng tĩnh chỉ được áp dụng trong trường hợp tải của cả hệ thống mạng là cố định, nếu có sự thay đổi tải trong thời gian thực hiện thì ta cần đến chiến lược cân bằng động.
3.1.2. Cân bằng tải động
Chiến lược cân bằng tải động áp dụng cho trường hợp tải tải của hệ thống có sự biến đổi theo thời gian, tức là thẻ bài có thể được thêm vào hoặc bớt ra trong quá trình thực hiện. Ở mỗi bước có các thẻ bài được thêm mới hoặc hủy bỏ. Một đối tác bên ngoài sẽ quyết định sẽ quyết định số thẻ bài cũng như định vị của mỗi thẻ bài trong hệ thống. Mục tiêu của chiến lược cân bằng tải động là tối thiểu hóa sự thiếu cân bằng của hệ thống tại tất cả các thời điểm.
Để thực hiện được hai chiến lược trên, cần phải có các thuật toán tối ưu hóa phức tạp, như thuật toán multi-port cho cân bằng tải tĩnh và thuật toán stable cho cân bằng tải tĩnh.
3.2. Chia sẻ bộ nhớ dùng chung
Bộ nhớ dùng chung phân tán (DSM) là một khái niệm trừu tượng sử dụng cho việc chia sẻ dữ liệu giữa các máy tính nhưng không chia sẻ bộ nhớ vật lý. Các xử lý truy nhập bộ nhớ dùng chung phân tán cho quá trình đọc và cập nhật mọi thứ có mặt bên trong bộ nhớ hiện tại thuộc không gian địa chỉ bộ nhớ.
Đặc điểm chính của bộ nhớ dùng chung phân tán là nó không cần đến người lập trình nhúng vào các thông điệp khi đọc các ứng dụng, điều này là một trong những sức mạnh mà ta cần sử dụng bộ nhớ dùng chung phân tán. Bộ nhớ dùng chung phân tán là một công cụ chính cho các ứng dụng song song hay các ứng dụng có sự phân tán hay các nhóm ứng dụng mà trong đó các mục dữ liệu riêng biệt có thể được truy nhập trực tiếp. Bộ nhớ dùng chung phân tán nhìn tổng hợp thì ít thích hợp cho các hệ thống client-server, tuy nhiên server có thể cung cấp bộ nhớ dùng chung phân tán cho sự chia sẻ giữa các client.
Hệ thống bộ nhớ dùng chung phân tán quản lý các bản sao dữ liệu: Mỗi máy tính có một bản sao địa phương mà dữ liệu được cập nhật mới nhất được lưu vào trong bộ nhớ dùng chung phân tán tạo ra sự nhanh chóng cho tốc độ xử lý.
Bộ nhớ dùng chung phân tán là một lĩnh vực đã được nghiên cứu từ rất sớm vào những năm 1980. Một trong những thí dụ đầu tiên của sự thực thi bộ nhớ dùng chung phân tán là hệ thống tập tin Apollo Domain [Leach etal 1983], cái mà máy chủ thực hiện các xử lý là các tập tin chia sẻ từ các trạm làm việc khác nhau và chúng được ánh xạ hoàn toàn vào bên trong bộ nhớ. Thí dụ này là một hình thức chia sẻ bộ nhớ phân tán được thức hiện liên tục. Khi đó có thể tồn tại nhiều sự thi hành các xử lý hoặc một nhóm các xử lý mà cần truy cập vào hosted và chúng có thể được chia sẻ bởi một tập các xử lý khác nhau tại bất kỳ thời điểm nào.
Bộ nhớ dùng chung phân tán có ý nghĩa tạo ra một lớp bên cạnh sự phát triển của bộ nhớ của các bộ vi xử lý có sự chia sẻ. Nhiều nghiên cứu đã đưa ra các kết quả phù hợp cho các quá trình xử lý song song trên nhiều bộ vi xử lý và được sử dụng trong việc sử dụng phần cứng để lưu trữ và làm cực đại hoá số lượng các xử lý có thể duy trì liên tục bởi chúng [Dubois etal 1988]. Tuy nhiên trong thực tế giới hạn của sự chính xác vào khoảng 10 hay 20 xử lý. Nơi đây có sự kết nối đến các mô đun bộ nhớ trên một bus dùng chung, sau đó lợi dụng thêm các xử lý phụ giúp cho các xử lý cho ra kết quả cuối cùng được nhanh chóng.
Các bộ nhớ của các bộ vi xử lý phân tán và các hệ thống mạng phân tán trên các nguồn khác nhau có phạm vi xử lý rất xa bởi số lượng các xử lý hay các máy tính. Hiện nay các bộ vi xử lý có bộ nhớ chia sẻ thiết kế dùng các mô đun bộ nhớ chia sẻ nối lại với nhau bằng các hệ thống mạng tốc độ cao, cho phép các xử lý truy cập vào các không gian địa chỉ đơn giản. Một vấn đề trung tâm đã theo đuổi bởi một nhóm nghiên cứu bộ nhớ dùng chung phân tán và bộ vi xử lý là khả năng đầu tư vào bên trong tri thức của các thuật toán chia sẻ bộ nhớ bộ nhớ và sự kết hợp với các phần mềm có thể tạm thời điều khiển nhiều hơn có thể làm thay đổi kiến trúc của bộ nhớ phân tán.
3.2.1. Thông điệp và bộ nhớ dùng chung phân tán:
Như một kỹ thuật truyền thông, bộ nhớ dùng chung phân tán có thể cho phép các thông điệp gửi qua khá hơn các yêu cầu cơ bản của sự truyền thông, cũng từ đây các ứng dụng song song sẽ được xử lý, trong từng xử lý có sự đòi hỏi phải sử dụng sự truyền thông không đồng bộ. Hệ thống bộ nhớ dùng chung phân tán và thông điệp gửi qua gần như quá trình lập trình có thể tạo ra sự tương phản.
Có hay không câu trả lời cuối cùng, liệu có hay không một bộ nhớ dùng chung phân tán được ưa chuộng với những thông điệp ngẫu nhiên cho các ứng dụng riêng biệt. Bộ nhớ dùng chung phân tán là một công cụ có nhiều triển vọng, nó có trạng thái nền tảng phụ thuộc lên trên năng suất với những gì nó thi hành.
3.2.2. Hướng tiếp cận của bộ nhớ dùng chung phân tán:
Có 3 hướng tiếp cận chính cho sự thực thi chia sẻ bộ nhớ phân tán. Điều này bao gồm quá trình sử dụng phần cứng, bộ nhớ ảo hay thư viện hỗ trợ. Lưu ý rằng chúng thì không nhất thiết phải mang các đặc trưng của nhau.
Dựa trên phần cứng: Một số kiến trúc vi xử lý như Dash [Lenoski etal 1992], PLUS [Birinai và Ravishankar 1990] liên kết tin cậy các phần cứng để tạo ra các xử lý các quá trình truyền tải và lưu trữ áp dụng chế độ địa chỉ của bộ nhớ dùng chung phân tán và truyền thông với các bộ nhớ từ xa như là một thứ yếu để mà thi hành chúng. Những thiết kế phân cấp bên trong các clusters của các mô hình bộ nhớ và các bộ xử lý thì được kết nối qua một mạng tốc độ cao. Điều này được tập trung vào các xử lý ở các vị trí khác có tầm quan trọng hơn những xử lý thông thường với giới hạn là 10 hay nhiều hơn thế, chúng có thể cung cấp nhiều trên một đường bus phỗ biến. Bộ vi xử lý mô hình mẫu của Dash bản sao đầu có 64 nút.
Dựa trên bộ nhớ ảo: Ivy, Munin, Mirage, Clouds, Choices, COOL và Mether đều thực hiện dùng chung bộ nhớ phân tán như là một lớp bộ nhớ ảo cùng giữ một vùng địa chỉ trong không gian địa chỉ của các tiến trình tham gia. Trong mỗi trường hợp, nhân hệ điều hành điều khiển để duy trì sự nhât quán dữ liệu trong lớp bộ nhớ phân tán dùng chung như là một phần của việc kiểm soát lỗi bộ nhớ ảo.
Dựa trên thư viện hỗ trợ: Một số ngôn ngữ hoặc các ngôn ngữ lập trình mở rộng như Orca, Linda… hỗ trợ dùng chung bộ nhớ phân tán. Trong lớp này, việc chia sẻ không thông qua bộ nhớ ảo mà thông qua việc giao tiếp giữa các lớp của ngôn ngữ hiện hành. Các lệnh tạo thư viện được gọi bởi trình biên dịch khi các tiến trình truy cập vào các đối tượng dữ liệu trong bộ nhớ dùng chung. Các thư viện truy cập vào các đối tượng dữ liệu và liên kết truyền thông khi cần thiết để duy trì tính nhất quán
3.3. Chia sẻ thiết bị lưu trữ
Ta có thể chia thiết bị lưu trữ trong thành hai loại, thiết bị lưu trữ sơ cấp và thiết bị lưu trữ thứ cấp. Thiết bị lưu trữ sơ cấp thường có tốc độ nhanh, truy cập ngẫu nhiên, như các ổ đĩa, có thể là riêng biệt hoặc thuộc hệ thống RAID,
còn thiết bị lưu trữ thứ cấp thường là thiết bị truy cập tuần tự hoặc có tốc độ truy cập thấp như băng từ, đĩa quang.
3.3.1. Mạng lưu trữ
Theo mô hình truyền thống, các thiết bị lưu trữ thường được lắp đặt bên trong hoặc kết nối trực tiếp với các file server. SAN là một đổi mới so với các mô hình cũ, các thiết bị lưu trữ được liên kết với nhau để tạo thành một mạng riêng biệt.
Đĩa từ, băng từ, đĩa quang có thể tích hợp trực tiếp vào SAN, các thiết bị trong SAN có thể được nối với nhau bằng hệ thống cáp quang, switch và hub để tạo nên một mạng hỗn hợp gồm các thiết bị lưu trữ. Một mạng SAN được thiết kế chỉ cho viêc truyền dữ liệu vào/ra giữa máy server và các thiết bị lưu trữ, nó không dành cho việc truyền các ứng dụng. Với kênh truyền cáp quang, tốc độ truyền dữ liệu giữa server và thiết bị lưu trữ thuộc SAN có thể lên đến 200 Mbps với chế độ dual loop và 100 Mbps với chế độ dư thừa (redundant mode). Bảng dưới đây cho thấy những tiện ích của kênh truyền cáp quang và SAN so với mô hình truyền thống dùng chuẩn SCSI.
3.3.2. Chia sử thiết bị lưu trữ
Hệ thống lưu trữ dùng chung cho phép các máy tính trong mạng có thể truy cập đến tập các thiết bị lưu trữ như đĩa từ, băng từ, đĩa quang… Trong mô hình truyền thống, chia sẻ các thiết bị lưu trữ cho các người dùng trong mạng là việc chia sẻ tài nguyên có chi phí cao, các thiết bị lưu trữ được lắp đặt bên trong các file server, và từ đó chúng có thể được truy cập bởi bất kỳ cá nhân nào có quyền truy cập hợp pháp.
Chia sẻ thiết bị lưu trữ với SAN cho một cách nhìn mới hơn về chia sẻ hệ thống lưu trữ. Các thiết bị lưu trữ được di chuyển ra khỏi các máy server, và liên kết trực tiếp với mạng, do đó chúng được đánh địa chỉ trực tiếp bởi tập hợp các máy server. Cụ thể, giả sử để backup phần mềm của mình, ta cần một ổ đĩa tại máy server địa phương, thông thường ta ta phải lắp ổ đĩa vào mỗi server của mạng LAN, nhưng với SAN, chỉ cần lắp một số ít ổ đĩa vào dãy thiết bị lưu trữ và tích hợp vào SAN, thì các ổ đĩa đó có thể được truy cập bởi tất cả các server của mạng.
Với hệ thống lưu trữ dùng chung, độc quyền truy cập được cung cấp khi một thiết bị được cấp phát. Thiết bị lưu trữ sơ cấp có thể được gán cho một máy tính trong một thời gian dài bởi vì dữ liệu và các ứng dụng lưu trữ trên thiết bị là một phần không thể thiếu đối với máy tính. Các thiết bị lưu trữ thứ cấp, như băng từ, được cấp phát cho một máy tính
trong một khoảng thời gian ngắn, thường la đủ để cho máy tính đó backup dữ liệu của mình.
Độc quyền truy cập là rất quan trọng trong việc giữ gìn tính toàn vẹn của dữ liệu. Đặc biệt là trong trường hợp một đĩa lưu trữ được chia sẻ cho hai hệ điều hành hoàn toàn khác nhau. Cho phép hai hệ thống cùng truy cập cùng lúc vào một ổ đĩa có thể gây nên một hậu quả không lường trước được, có khi lại là một thảm họa. Vì thế cần có cơ chế khóa thiết bị khi nó đã được gán cho một máy tính nào đó trong mạng, nhằm tránh tình trạng trên.
4. KẾT LUẬN
Qua thời gian làm tiểu luận, bản thân em phần nào đã nắm được các kiến thức tổng quan về hệ phân tán. Bài toán chia sẻ tài nguyên trong hệ phân tán và các nguyên lý để xây dựng các giải thuật giải quyết bài toán chia sẻ tài nguyên. Vấn đề chia sẻ tài nguyên là vấn đề cốt lõi của hệ phân tán, việc nắm vững các nguyên lý giải quyết bài toán chia sẻ tài nguyên là hết sức quan trọng. Tiểu luận đã trình bày được các kiến thức tổng quan về hệ phân tán, nêu được lý do tại sao phải chia sẻ tài nguyên và giải quyết bài toán chia sẻ tài nguyên.
Tuy nhiên, do chủ đề khá rộng và kiến thức còn hạn chế nên tiểu luận của em mới chỉ dừng lại ở mức tìm hiểu các nguyên lý để xây dựng các giải pháp chia sẻ tài nguyên trong hệ phân tán, và mới chỉ dừng lại ở việc trình bày giải pháp cho việc chia sẻ tài nguyên vật lý.
Cuối cùng, em xin gửi lời cảm ơn tới cô Vũ Thị Hương Giang đã giảng dạy và cung cấp cho chúng em những kiến thức về hệ phân tán, và các tài liệu