Khóa tệp OneFS và truy cập đồng thời

Gần đây có rất nhiều câu hỏi về cách OneFS cho phép nhiều máy khách được gắn vào các nút khác nhau của một cụm đồng thời đọc và ghi vào cùng một tệp. Vì vậy, có vẻ như đây là thời điểm thích hợp để ôn lại nhanh một số khái niệm và cơ chế đằng sau tính đồng thời và khóa phân tán của OneFS.

Khóa tệp là cơ chế cho phép nhiều người dùng hoặc quy trình truy cập dữ liệu đồng thời và an toàn. Đối với việc đọc dữ liệu, đây là một quy trình khá đơn giản liên quan đến khóa chia sẻ. Tuy nhiên, với việc ghi, mọi thứ trở nên phức tạp hơn và yêu cầu khóa độc quyền, vì dữ liệu phải được giữ nhất quán.

OneFS có trình quản lý khóa phân tán hoàn toàn, sắp xếp các khóa trên dữ liệu trên tất cả các nút trong cụm lưu trữ. Trình quản lý khóa này có khả năng mở rộng cao và cho phép nhiều loại khóa hỗ trợ cả khóa hệ thống tệp cũng như khóa cấp giao thức nhất quán cụm, chẳng hạn như khóa chế độ chia sẻ SMB hoặc khóa chế độ tư vấn NFS. OneFS hỗ trợ các khóa được ủy quyền như khóa oplock SMB và ủy quyền NFSv4.

Mỗi nút trong cụm có thể hoạt động như một điều phối viên để khóa tài nguyên và một điều phối viên được chỉ định cho các tài nguyên có thể khóa dựa trên thuật toán băm. Thuật toán lựa chọn này được thiết kế sao cho điều phối viên hầu như luôn kết thúc ở một nút khác với nút khởi tạo yêu cầu. Khi yêu cầu khóa cho một tệp, khóa đó có thể là khóa chia sẻ hoặc khóa độc quyền. Khóa chia sẻ chủ yếu được sử dụng để đọc và cho phép nhiều người dùng chia sẻ khóa cùng lúc. Mặt khác, khóa độc quyền chỉ cho phép một người dùng truy cập vào tài nguyên tại bất kỳ thời điểm nào và thường được sử dụng để ghi. Các loại khóa độc quyền bao gồm:

Khóa đánh dấu : Tài nguyên khóa độc quyền được sử dụng để đồng bộ hóa các quy trình đánh dấu và quét cho công việc của công cụ thu thập.

Snapshot Lock : Đúng như tên gọi, tính năng khóa snapshot độc quyền này đồng bộ hóa quá trình tạo và xóa snapshot.

Khóa ghi : Khóa độc quyền được sử dụng để dừng ghi cho các hoạt động cụ thể, bao gồm tạo ảnh chụp nhanh, đổi tên thư mục không trống và đánh dấu.

Cơ sở hạ tầng khóa OneFS có thuật ngữ riêng và bao gồm các định nghĩa sau:

Miền : Chỉ các thuộc tính khóa cụ thể (đệ quy, phát hiện bế tắc, giới hạn sử dụng bộ nhớ, v.v.) và ngữ cảnh cho một ứng dụng khóa cụ thể. Có một định nghĩa về chủ sở hữu, tài nguyên và loại khóa và chỉ các khóa trong một miền cụ thể mới có thể xung đột.

Loại khóa : Xác định sự tranh chấp giữa các tủ khóa. Khóa chia sẻ hoặc khóa đọc không cạnh tranh với các loại khóa chia sẻ hoặc khóa đọc khác, trong khi khóa độc quyền hoặc khóa ghi cạnh tranh với tất cả các loại khác. Các loại khóa bao gồm:

  • Tư vấn
  • Chống vi-rút
  • Dữ liệu
  • Xóa bỏ
  • LÂM
  • Đánh dấu
  • Khóa Oplock
  • hạn ngạch
  • Đọc
  • Chế độ chia sẻ
  • Phạm vi byte SMB
  • Ảnh chụp nhanh
  • Viết

Locker : Xác định thực thể có được khóa.

Chủ sở hữu : Một tủ khóa đã thành công trong việc có được một ổ khóa cụ thể. Một tủ khóa có thể sở hữu nhiều ổ khóa cùng loại hoặc khác loại do khóa đệ quy.

Tài nguyên : Xác định một khóa cụ thể. Việc thu thập khóa chỉ cạnh tranh trên cùng một tài nguyên. ID tài nguyên thường là LIN để liên kết khóa với tệp.

Người phục vụ : Đã yêu cầu khóa nhưng chưa được chấp thuận hoặc chưa có khóa.

Sau đây là ví dụ về cách các luồng từ các nút khác nhau có thể yêu cầu khóa từ bộ điều phối:

  1. Nút 2 được chọn làm điều phối viên khóa của các tài nguyên này.
  2. Luồng 1 từ Nút 4 và luồng 2 từ Nút 3 yêu cầu khóa chia sẻ trên một tệp từ Nút 2 cùng một lúc.
  3. Nút 2 kiểm tra xem có khóa độc quyền cho tệp được yêu cầu hay không.
  4. Nếu không có khóa độc quyền nào tồn tại, Nút 2 sẽ cấp khóa chia sẻ cho luồng 1 từ Nút 4 và luồng 2 từ Nút 3 trên tệp được yêu cầu.
  5. Nút 3 và Nút 4 hiện đang thực hiện thao tác đọc tệp được yêu cầu.
  6. Luồng 3 từ Nút 1 yêu cầu khóa độc quyền cho cùng một tệp đang được đọc bởi Nút 3 và Nút 4.
  7. Nút 2 kiểm tra với Nút 3 và Nút 4 xem có thể lấy lại được khóa chia sẻ hay không.
  8. Nút 3 và Nút 4 vẫn đang đọc nên Nút 2 yêu cầu luồng 3 từ Nút 1 đợi trong giây lát.
  9. Luồng 3 từ Nút 1 sẽ bị chặn cho đến khi khóa độc quyền được Nút 2 cấp và sau đó hoàn tất thao tác ghi.

Tác giả : Nick Trimbee