Phần tiếp theo của chương này trình bày về thuật tốn sao lưu dữ liệu theo phương pháp phân cụm các nút. Thuật toán sao lưu dữ liệu theo phương
pháp phân cụm đảm bảo được những ưu điểm của thuật toán các thuật toán sao lưu đã đề xuất đồng thời đạt tỷ lệ truy vấn thành công cao hơn và tận dụng được khả năng lưu trữ của các nút trong mạng
4.3. Sao lưu dữ liệu dựa trên phân cụm trong mạng P2P
4.3.1 Tổng quan
Hệ thống chia sẻ dữ liệu ngang hàng trong thuật tốn của chúng tơi dựa trên kiến trúc DHT, khơng gian khóa được tổ chức theo dạng vịng trịn, ví dụ: Chord [21], Pastry [22], v.v. Mỗi nút trong mạng được định danh bởi một khóa, gọi là định danh của một nút, chịu trách nhiệm quản lý một phần của khơng gian khóa DHT giữa định danh của nút láng giềng phía trước (ngược chiều kim đồng hồ) và định danh của chính nó. Để định tuyến các thơng điệp đến nút quản lý khóa DHT, mỗi nút duy trì một liên kết đến nút successor
(nút láng giếng theo chiều kim đồng hồ) và một số liên kết đến các nút khác được định nghĩa bởi thuật toán định tuyến DHT. Một thơng điệp với khóa k sẽ được chuyển đến nút quản lý khóa k theo các thủ tục định tuyến trong DHT. Với giao thức Chord [21], một thơng điệp có thể chuyển đến nút đích với chi phí là O(logN) bước, trong khi đó mỗi nút chỉ cần duy trì O(logN) liên kết đến các nút khác, với N là số nút trong mạng. Việc áp dụng kiến trúc DHT giúp hệ thống của chúng tơi có khả năng mở rộng cao và khả năng chịu lỗi tốt.
Thuật toán sao lưu đề xuất chia mạng DHT thành một số cụm, mỗi cụm chứa một số nút và mỗi nút chịu trách nhiệm quản lý một phần liên tục khơng gian khóa DHT. Khi một nút có dữ liệu cần sao lưu dữ liệu, nó mã hóa tệp dữ liệu thành n mảnh sử dụng phương pháp mã xóa [63] và các mảnh dữ liệu này được lưu trữ tại một số nút trong cùng một cụm. Với phương pháp mã xóa, nếu thu thập được k mảnh (k<n) của tệp dữ liệu có thể tái tạo lại được tệp dữ
đảm bảo tính sẵn sàng của các tệp dữ liệu khi có các nút ra/vào mạng thì số mảnh của tệp dữ liệu phải được phải duy trì lớn hơn hoặc bằng k, trong đó k
số mảnh cần thiết để tái tạo lại tệp dữ liệu. 4.3.2 Quản lý thông tin cụm
Trong thuật toán sao lưu dữ liệu chúng tôi đề xuất, khơng gian khóa DHT được chia thành các phân vùng, mỗi phân vùng tương ứng với một cụm. Với khơng gian khóa d-bit, biên của cụm thứ k được xác định bởi khóa đầu
tiên và khóa cuối cùng của cụm theo hướng cùng chiều kim đồng hồ. Các nút có định danh nằm giữa khóa đầu tiên và khóa cuối cùng của một cụm sẽ thuộc cùng một cụm. Nút quản lý khóa đầu tiên của một cụm được gọi là nút đầu tiên của cụm. Nút quản lý khóa cuối cùng của một cụm gọi là nút cuối cùng của cụm. Nút cuối cùng của cụm là nút đầu tiên của cụm kế tiếp như thể hiện trong hình 4.1. Để xác định một nút có phải là nút đầu tiên hay nút cuối cùng của một cụm hay không bằng cách kiểm tra nút đó có quản lý khóa đầu tiên hoặc khóa cuối cùng của cụm hay khơng.
Hình 4.2. Thơng báo cập nhật trong cụm có khơng gian khóa là [𝐾𝑓𝑑, 𝐾𝑙𝑑] Các nút trong cùng một cụm trao đổi thông điệp với nhau để cập nhật thông tin của cụm. Thông điệp cập nhật chứa thông tin sau:
• Phạm vi khóa của cụm
• Địa chỉ của nút đầu tiên của cụm
• Một danh sách các nút có dung lượng lưu trữ chưa sử dụng tốt nhất: Dung lượng lưu trữ chưa sử dụng của một nút là số lượng dữ liệu mà nút đó có thể lưu trữ được. Nó được tính bằng hiệu số giữa khả năng lưu trữ của một nút với số lượng các mảnh dữ liệu đã được lưu trữ trong nút đó.
• Một danh sách các nút rời mạng trong một chu trình cập nhật. Chu trình cập nhật là khoảng thời gian từ nút đầu cụm gửi một thông báo cập nhật thông tin cụm đến khi nút cuối cùng trong cụm cập nhật thông tin và gửi thơng báo cho nút đầu cụm.
• Hop count: Số nút mà thông điệp cập nhật đi qua bắt đầu từ nút đầu tiên. Giá trị Hop count được nút đầu tiền cập nhật lại bằng 0 khi gửi thông điệp cập nhật mới.
Nút đầu tiên trong cụm khởi tạo thủ tục cập nhật trong một chu trình bằng việc gửi thơng báo cập nhật đến nút successor của nó. Sau đó nút
thơng điệp và gửi cho nút tiếp theo. Q trình này tiếp tục cho đến nút cuối cùng của cụm. Khi nút cuối cùng trong cụm nhận được thông báo cập nhật nó bổ sung thêm thơng tin và gửi thông báo trở lại nút đầu cụm để phục vụ cho lần cập nhật tiếp theo (Hình 4.2). Thời gian cập nhật thông tin cụm là tổng thời gian mà một thông báo được gửi từ nút đầu tiên đến nút cuối cùng trong cụm. Thời gian cập nhật tỷ lệ thuận với số nút trong cụm.
Nút nhận được thông báo cập nhật sẽ lưu trữ thông tin của cụm vào cơ sở dữ liệu và kiểm tra dung lượng còn trống của các nút trong cụm. Nếu tìm được một nút trong cụm cịn có khả năng lưu trữ và danh sách các nút có dung lượng lưu trữ chưa sử dụng tốt nhất cịn thiếu thì nó sẽ bổ sung nút còn khả năng lưu trữ vào danh sách đó. Thơng tin bổ sung gồm địa chỉ của nút và số lượng đơn vị lưu trữ dữ liệu chưa sử dụng của nút. Nếu danh sách đầy và nút tìm được trong cụm có dung lượng cịn trống lớn hơn nút có dung lượng lưu trữ chưa dùng thấp nhất trong danh sách thì nút tìm được trong cụm đó sẽ được thay thế cho nút có dung lượng lưu trữ chưa dùng thấp nhất trong danh sách. Khi nút đầu tiên trong cụm nhận được thông báo cập nhật từ nút cuối cùng, nó bổ sung danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất và gửi danh sách này trong một thơng báo cập nhật của vịng tiếp theo.
Danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất trong cụm được sử dụng để lựa chọn ra một nút lưu trữ các mảnh dữ liệu. Bằng việc sử dụng danh sách này, thuật tốn sao lưu có thể giảm được thơng tin dư thừa trong mạng khi tìm kiếm nút tốt nhất trong cụm phục vụ việc sao lưu dữ liệu. Một nút tham gia vào mạng có thể lấy thơng tin cụm từ nút successor của nó bao gồm cả danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất.
Thông báo cập nhật thông tin cụm được gửi định kỳ. Tuy nhiên, khi số nút rời mạng do lỗi trong một khoảng thời gian cao hơn giá trị ngưỡng, thì
đầu tiên nút của cụm sẽ ngay lập tức gửi thông báo cập nhật mà không cần phải chờ đến khi kết thúc chu trình cập nhật cũ.
4.3.3. Sao lưu và truy vấn dữ liệu
Trong hệ thống đề xuất, các mảnh dữ liệu của một tệp tin được lưu trữ tại một số nút thuộc cùng một cụm với nút quản lý khóa của tập tin. Khóa của tệp tin là một khóa duy nhất, được sinh ra từ nội dung của tệp tin và được dùng trong các truy vấn dữ liệu. Nút quản lý khóa của tệp tin quản lý các thông tin sao lưu dữ liệu của tập tin. Thông tin bao gồm danh sách các nút lưu trữ các mảnh dữ liệu của tập tin. Khi các nút ra/vào xuất hiện trong mạng, nút quản lý khóa của tệp tin thực hiện q trình duy trì tính sẵn sàng dữ liệu bằng cách kiểm tra các mảnh dữ liệu của tệp tin đó và thực hiện việc bổ sung các mảnh dữ liệu nếu cần thiết.
Tiến trình sao lưu một tệp dữ liệu mới tại nút s được thực hiện theo các bước trong hình Hình 4.3 và được mơ tả bằng đoạn giả mã Hình 4.4.
Hình 4.3. Ví dụ về sao lưu một tệp dữ liệu
yêu cầu sao lưu đến nút quản lý khóa (nút n) dựa trên thuật tốn định tuyến
DHT (dịng 2-3, Hình 4.4).
Hình 4.4. Giả mã sao lưu dữ liệu tại nút s
• Bước 2. Nút quản lý khóa gửi danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất trong cụm đến nút nguồn (dịng 4, Hình 4.4).
• Bước 3. Sau khi nhận được danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất, nút nguồn ngẫu nhiên chọn một số nút sao lưu từ danh sách. Sau đó, nút nguồn tạo các mảnh dữ liệu ra từ tệp tin bằng cách sử dụng phương pháp mã xóa và gửi mảnh dữ liệu cùng với khóa của tệp tin tới một nút sao lưu dữ liệu để lưu trữ. Nếu nút sao lưu khơng có đủ khoảng trống để lưu trữ mảnh dữ liệu, nó thơng báo cho nút nguồn và nút nguồn chọn một nút dự phịng khác (dịng 5-11, Hình 4.4).
• Bước 4. Khi q trình sao lưu kết thúc, nút nguồn cung cấp cho nút quản lý khóa của tệp tin danh sách các nút trong cụm lưu trữ các mảnh dữ liệu (dòng 12, Hình 4.4). Nút quản lý khóa sẽ lưu trữ thơng tin khóa của tệp tin và danh sách các nút lưu trữ các mảnh dữ liệu vào cơ sở dữ liệu của nó.
Vì số nút trong một cụm là lớn cho nên khả năng để nút nguồn tìm được một nút lưu trữ các mảnh dữ liệu của tệp tin là khơng khó. Q trình lựa chọn ngẫu nhiên các nút sao lưu từ danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất giúp cho các nút trong cụm cân bằng được tải lưu trữ.
Khi một nút muốn truy vấn một tệp tin, nó gửi một thông báo truy vấn đến nút quản lý khóa của tệp tin. Nút quản lý khóa tìm kiếm trong cơ sở dữ liệu và gửi lại danh sách các nút lưu trữ mảnh dữ liệu của tệp tin. Nút truy vấn chọn ngẫu nhiên các nút lưu trữ mảnh dữ liệu từ danh sách nhận được và gửi thông báo truy vấn đến các nút này cho đến khi nó lấy được k mảnh dữ liệu
cần thiết để tái tạo lại tệp tin.
Vì thơng tin về các nút lưu trữ các mảnh dữ liệu là điều kiện cần để giải quyết truy vấn, nút quản lý khóa cũng lưu trữ thơng tin này trong danh sách các nút successor của nó. Nếu nút quản lý khóa rời mạng đột ngột, nút successor sẽ chịu trách nhiệm về thông tin này.
4.3.4. Khôi phục tệp tin
Khi một nút rời mạng, nó sẽ chuyển thơng tin về các tệp tin sao lưu mà nó chịu trách nhiệm quản lý cho nút successor của nó và gửi thơng báo về
trạng thái rời khỏi mạng cho nút đầu tiên của cụm. Nếu một nút rời mạng do lỗi mạng hoặc sự cố của nút thì nút successor dị tìm nút gặp sự cố dựa trên thủ tục ổn định mạng của giải thuật DHT. Sau đó, nút successor sẽ gửi thơng báo về nút rời mạng đến nút đầu tiên của cụm. Tuy nhiên, trong cả hai trường
Như đã đề cập ở trên, chúng ta cần phải duy trì ít nhất k mảnh dữ liệu của tệp tin trong mạng để đảm bảo tính sẵn sàng của tệp tin.
Để giải quyết vấn đề trên, định kỳ nút đầu tiên của cụm sẽ gửi một thông báo cập nhật chứa danh sách các nút rời mạng trong một cụm hoặc ngay lập gửi danh sách này khi số nút rời mạng trong khoảng thời gian cập nhật lớn hơn một giá trị ngưỡng cho trước. Khi một nút nhận được một thông báo cập nhật, nó sẽ kiểm tra danh sách nút sao lưu đối với các tệp dữ liệu mà nó chịu trách nhiệm quản lý. Nếu nút rời mạng nằm trong danh sách này, số lượng các mảnh dữ liệu của mỗi tệp tin sao lưu tại nút rời mạng sẽ được đếm lại. Nếu tổng số mảnh dữ liệu của một tệp tin nhỏ hơn giá trị ngưỡng m thì nút quản lý thực hiện khôi phục lại các mảnh đã mất, trong đó m phải lớn hơn hoặc bằng k - số mảnh dữ liệu cần thiết để tái tạo tệp tin (Hình 4.5).
Để khơi phục lại một mảnh dữ liệu bị mất, nút quản lý khóa của tệp tin sẽ chọn một nút sao lưu từ danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất và gửi một thơng báo u cầu khơi phục đến nút đó. Nội dung thơng báo chứa thơng tin của các mảnh dữ liệu hiện có và danh sách các nút đang giữ các mảnh dữ liệu này. Nút sao lưu mới nhất sẽ lấy các mảnh dữ liệu từ các nút sao lưu khác, tái tạo lại tệp tin và tạo ra các mảnh dữ liệu bị mất. Nếu có nhiều mảnh dữ liệu cần lưu trữ, nút đó sẽ gửi các mảnh dữ liệu này đến các nút lưu trữ mới, nút mới này được chọn ngẫu nhiên từ danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất và gửi danh sách các nút sao lưu mới này cho nút quản lý khóa của tệp tin.
Thủ tục sao lưu dữ liệu có thể đảm bảo tính sẵn sàng của các tệp tin, tuy nhiên, việc thu thập lại các mảnh dữ liệu để tái tạo lại tệp tin sẽ mất chi phí di chuyển dữ liệu lớn. Để giảm chi phí sao lưu, các nút tìm kiếm tệp tin có thể tạo ra các mảnh dữ liệu bị mất do các nút rời mạng để lại và gửi các mảnh dữ liệu này đến các nút sao lưu mới. Thủ tục này có thể mơ tả như sau (hình 4.6).
Khi một nút muốn truy vấn một tệp tin, nó sẽ gửi thơng báo truy vấn đến nút quản lý khóa của tệp tin. Nút quản lý khóa kiểm tra số mảnh dữ liệu sao lưu hiện có của tệp tin. Nếu có mảnh dữ liệu bị mất, nó sẽ thơng báo cho nút truy vấn gửi các mảnh dữ liệu bị mất đến các nút sao lưu mới được lựa chọn. Nội dung thông báo chứa danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất. Sau khi nút truy vấn tái tạo lại tệp tin nó sẽ tạo ra các mảnh dữ liệu bị mất và gửi các mảnh dữ liệu này đến các nút được lựa chọn từ danh sách các nút có dung lượng lưu trữ chưa dùng tốt nhất do nút quản lý khóa gửi để lưu trữ tại các nút đó. Trong trường hợp này, mảnh dữ liệu bị mất được khơi phục lại với chi phí bằng chi phí di chuyển một mảnh dữ liệu từ nút truy vấn đến nút sao lưu mới được lựa chọn.
Do độ trễ truyền tin trong việc chuyển thông báo cập nhật thông tin cụm và tỷ lệ nút ra/vào trong mạng cao nên số mảnh dữ liệu của một tệp tin bị mất có thể nhiều. Nếu số mảnh hiện có của một tệp tin nhỏ hơn số mảnh cần thiết để tái tạo lại tệp tin thì tệp tin đó sẽ khơng phục hồi được. Trong trường hợp này, nút quản lý khóa của tệp tin sẽ thông báo cho các nút lưu trữ xóa các mảnh dữ liệu liên quan đến khóa của tệp tin đó.
4.3.5. Xây dựng cụm
Chúng tơi đề xuất hai phương pháp xây dựng cụm trong thuật tốn chúng tơi đưa ra, đó là xây dựng cụm tĩnh và xây dựng cụm động. Hai phương pháp đó được mơ tả cụ thể như sau:
Xây dựng cụm tĩnh
Trong phương pháp xây dựng cụm tĩnh, khơng gian khóa DHT được chia thành m phần tương ứng với m cụm. Với khơng gian khóa gồm d-bit,
biên của cụm thứ k được định nghĩa bởi khóa đầu tiên và khóa cuối cùng theo hướng cùng chiều với kim đồng hồ, được xác định như sau:
Theo cách phân chia này số cụm trong khơng gian khóa là cố định (m cụm), biên của một cụm cũng cố định theo số cụm. Các nút tham gia mạng sau khi có định danh sẽ thuộc một trong các cụm được phân chia. Số nút tham