OneFS Đa người viết

Trong một trong những bài viết blog khác của tôi, chúng ta đã xem xét khóa ghi và quyền truy cập được chia sẻ trong OneFS. Tiếp theo, chúng ta sẽ đi sâu hơn vào một lớp khác về quyền truy cập tệp đồng thời của OneFS.

Hệ thống phân cấp khóa OneFS cũng cung cấp một cơ chế gọi là Đa người viết, cho phép một cụm hỗ trợ ghi đồng thời từ nhiều luồng ghi máy khách vào cùng một tệp. Khóa ghi chi tiết này đạt được bằng cách chia nhỏ tệp thành các vùng riêng biệt và cấp khóa ghi dữ liệu độc quyền cho các phạm vi riêng lẻ này, trái ngược với toàn bộ tệp. Quá trình này cho phép nhiều máy khách hoặc luồng ghi được gắn vào một nút đồng thời ghi vào các vùng khác nhau của cùng một tệp.

Việc ghi đồng thời vào một tệp duy nhất cần nhiều hơn là chỉ hỗ trợ khóa dữ liệu cho các phạm vi. Mỗi người ghi cũng cần cập nhật các thuộc tính siêu dữ liệu của tệp như dấu thời gian hoặc số lượng khối. Một cơ chế để quản lý tính nhất quán của inode cũng cần thiết, vì OneFS dựa trên khái niệm về một khóa inode duy nhất cho mỗi tệp.

Ngoài các khóa chia sẻ đọc và ghi độc quyền tiêu chuẩn, OneFS còn cung cấp các nguyên hàm khóa sau, thông qua delta nhật ký, để cho phép nhiều luồng cùng lúc đọc hoặc ghi các thuộc tính siêu dữ liệu của tệp:

Các loại khóa OneFS bao gồm:

Độc quyền : Một luồng có thể đọc hoặc sửa đổi bất kỳ trường nào trong inode. Khi giao dịch được cam kết, toàn bộ khối inode được ghi vào đĩa, cùng với bất kỳ khối thuộc tính mở rộng nào.

Chia sẻ : Một luồng có thể đọc nhưng không thể sửa đổi bất kỳ trường inode nào.

DeltaWrite : Một luồng có thể sửa đổi bất kỳ trường inode nào hỗ trợ delta-writes. Các hoạt động này được gửi đến nhật ký dưới dạng một tập hợp delta khi giao dịch được cam kết.

DeltaRead : Một luồng có thể đọc bất kỳ trường nào mà inode delta không thể sửa đổi.

Các khóa này cho phép các luồng riêng biệt có khóa Chia sẻ trên cùng một LIN hoặc cho các luồng khác nhau có khóa DeltaWrite trên cùng một LIN. Tuy nhiên, không thể có một luồng có khóa Chia sẻ và luồng khác có khóa DeltaWrite. Điều này là do luồng Chia sẻ không thể thực hiện đọc mạch lạc một trường đang trong quá trình được luồng DeltaWrite sửa đổi.

Khóa DeltaRead tương thích với cả khóa Shared và DeltaWrite. Thông thường, hệ thống tệp sẽ cố gắng sử dụng khóa DeltaRead cho hoạt động đọc và khóa DeltaWrite cho hoạt động ghi, vì điều này cho phép đồng thời tối đa, vì tất cả các khóa này đều tương thích.

Sau đây là những gì xảy ra khi khóa ghi không tương thích:

OneFS bảo vệ dữ liệu bằng cách ghi các khối tệp (restriping) trên nhiều ổ đĩa trên các nút khác nhau. Job Engine định nghĩa một tập hợp resttripe bao gồm các công việc liên quan đến quản lý hệ thống tệp, bảo vệ và bố trí trên đĩa. Tập hợp resttripe chứa các công việc sau:

  • Tự động cân bằng & AutoBalanceLin
  • FlexProtect và FlexProtectLin
  • Quét phương tiện truyền thông
  • Quét đa năng
  • Thiết lậpProtectPlus
  • Hồ bơi thông minh
  • Nâng cấp

Multi-writer for resttripe cho phép nhiều luồng công nhân resttripe hoạt động trên một tệp duy nhất đồng thời. Điều này, đến lượt nó, cải thiện hiệu suất đọc/ghi trong các hoạt động bảo vệ lại tệp, cộng với giúp giảm cửa sổ rủi ro (MTTDL) trong quá trình Smartfails ổ đĩa hoặc các lỗi khác. Điều này đặc biệt đúng đối với các quy trình làm việc bao gồm các tệp lớn, trong khi một trong các tác vụ resttripe ở trên đang chạy. Thông thường, các tệp trên cụm càng lớn thì multi-writer for resttripe sẽ mang lại nhiều lợi ích hơn.

Với multi-writer cho resttripe, khóa độc quyền không còn cần thiết trên LIN trong quá trình resttripe dữ liệu thực tế. Thay vào đó, OneFS cố gắng sử dụng khóa ghi delta để cập nhật các con trỏ được sử dụng để theo dõi những phần nào của tệp cần resttripe. Điều này có nghĩa là ứng dụng hoặc chương trình máy khách sẽ có thể tiếp tục ghi vào tệp trong khi hoạt động resttripe đang diễn ra.

Khóa độc quyền chỉ được yêu cầu trong một khoảng thời gian rất ngắn trong khi tệp được thiết lập để được phân chia lại. Tệp sẽ có chiều rộng cố định cho mỗi khóa phân chia lại và số lượng khóa phạm vi sẽ phụ thuộc vào số lượng luồng và nút đang tích cực phân chia lại một tệp duy nhất.

Tác giả : Nick Trimbee