Bao gồm trong số rất nhiều cải tiến của OneFS 9.5 là cơ sở hạ tầng báo cáo khóa NFS được cập nhật, bộ lệnh và các điểm cuối API nền tảng tương ứng. Chức năng mới này bao gồm các tùy chọn liệt kê và lọc nâng cao cho cả khóa và người chờ, dựa trên phiên bản chính của NFS, máy khách, LIN, đường dẫn, thời gian tạo, v.v. Nhưng trước tiên, hãy cùng tìm hiểu một số thông tin cơ bản.
Giao thức NFS phổ biến đã trải qua một số thay đổi cơ bản về mặt kiến trúc giữa phiên bản 3 và 4. Một trong những khác biệt chính liên quan đến lĩnh vực khóa tệp.
NFSv4 là phiên bản chính hiện tại nhất của giao thức, tích hợp khóa tệp gốc và do đó tránh nhu cầu về bất kỳ cơ chế gọi lại RPC bổ sung (và phức tạp) nào cần thiết với các phiên bản NFS trước đó. Với NFSv4, khóa được tích hợp vào giao thức tệp chính và hỗ trợ các loại khóa mới, chẳng hạn như khóa phạm vi, đặt chỗ chia sẻ và ủy quyền/oplock, mô phỏng các loại khóa có trong Window và SMB.
Trạng thái khóa tệp được duy trì tại máy chủ theo mô hình dựa trên hợp đồng thuê. Máy chủ xác định một thời hạn thuê duy nhất cho tất cả các trạng thái do máy khách NFS nắm giữ. Nếu máy khách không gia hạn hợp đồng thuê trong thời hạn đã xác định, máy chủ có thể giải phóng tất cả các trạng thái liên quan đến hợp đồng thuê của máy khách. Nếu được giải phóng, máy khách có thể gia hạn hợp đồng thuê một cách rõ ràng hoặc chỉ cần đưa ra yêu cầu đọc hoặc hoạt động liên quan khác. Ngoài ra, với NFSv4, máy khách có thể chọn khóa toàn bộ tệp hoặc phạm vi byte trong tệp.
Ngược lại với NFSv4, giao thức NFSv3 không có trạng thái và không hỗ trợ khóa tệp gốc. Thay vào đó, giao thức Network Lock Manager (NLM) phụ trợ cung cấp lớp khóa. Vì khóa tệp vốn có trạng thái, nên bản thân NLM được coi là có trạng thái. Ví dụ, khi hệ thống tệp NFSv3 được gắn trên máy khách NFS nhận được yêu cầu khóa tệp, nó sẽ tạo lệnh gọi thủ tục từ xa NLM thay vì lệnh gọi thủ tục từ xa NFS.
Bản thân giao thức NLM bao gồm các lệnh gọi thủ tục từ xa mô phỏng các đối số và đầu ra của điều khiển tệp UNIX chuẩn (fcntl). Vì một quy trình chặn chờ khóa xung đột với một người giữ khóa khác – còn được gọi là ‘khóa chặn’ – nên giao thức NLM có khái niệm về các lệnh gọi lại từ máy chủ tệp đến máy khách NLM để thông báo rằng khóa khả dụng. Do đó, máy khách NLM đôi khi hoạt động như một máy chủ RPC để nhận kết quả bị trì hoãn từ các lệnh gọi khóa.
Thuộc tính | NFSv3 | NFSv4 |
Tình trạng | Không trạng thái – Về mặt kỹ thuật, máy khách không thiết lập phiên mới nếu có thông tin chính xác để yêu cầu tệp, v.v. Điều này cho phép chuyển đổi dự phòng đơn giản giữa các nút OneFS bằng nhóm IP động. | Có trạng thái – NFSv4 sử dụng phiên để xử lý giao tiếp. Do đó, cả máy khách và máy chủ đều phải theo dõi trạng thái phiên để tiếp tục giao tiếp. |
Bài thuyết trình | Thông tin Người dùng và Nhóm được trình bày dưới dạng số – Máy khách và Máy chủ trao đổi thông tin người dùng bằng mã định danh số, cho phép cùng một người dùng xuất hiện dưới nhiều tên khác nhau giữa máy khách và máy chủ. | Thông tin Người dùng và Nhóm được trình bày dưới dạng chuỗi – Cả máy khách và máy chủ đều phải giải quyết tên của thông tin số được lưu trữ. Máy chủ phải tra cứu tên để trình bày trong khi máy khách phải ánh xạ lại chúng thành số ở phía máy chủ. |
Khóa | Khóa tệp nằm ngoài băng tần – sử dụng NLM để thực hiện khóa. Điều này yêu cầu máy khách phản hồi tin nhắn RPC từ máy chủ để xác nhận khóa đã được cấp, v.v. | Khóa tệp nằm trong băng tần – Không còn sử dụng giao thức riêng để khóa tệp nữa, thay vào đó biến nó thành một loại lệnh gọi thường được kết hợp với các lệnh OPEN, CREATE hoặc WRITE. |
Chuyên chở | Có thể chạy trên TCP hoặc UDP – Phiên bản giao thức này có thể chạy trên UDP thay vì TCP, để lại việc xử lý mất mát và truyền lại cho phần mềm thay vì hệ điều hành. Chúng tôi luôn khuyến nghị sử dụng TCP. | Chỉ hỗ trợ TCP – Phiên bản 4 của NFS đã bỏ qua việc mất mát và truyền lại cho đến hệ điều hành cơ bản. Có thể nhóm một loạt các cuộc gọi trong một gói duy nhất, cho phép máy chủ xử lý tất cả chúng và trả lời ở cuối. Điều này được sử dụng để giảm số lượng các cuộc gọi liên quan đến các hoạt động chung. |
Vì NFSv3 không có trạng thái, nên cần phức tạp hơn để phục hồi sau các lỗi như sự cố máy khách và máy chủ và phân vùng mạng. Nếu máy chủ NLM bị sập, máy khách NLM đang giữ khóa phải thiết lập lại chúng trên máy chủ khi máy chủ khởi động lại. Giao thức NLM xử lý vấn đề này bằng cách yêu cầu trình giám sát trạng thái trên máy chủ gửi tin nhắn thông báo đến trình giám sát trạng thái của mỗi máy khách NLM đang giữ khóa. Khoảng thời gian ban đầu sau khi máy chủ khởi động lại được gọi là thời gian gia hạn, trong thời gian đó chỉ các yêu cầu thiết lập lại khóa mới được cấp. Do đó, máy khách thiết lập lại khóa trong thời gian gia hạn được đảm bảo không bị mất khóa.
Khi một máy khách NLM gặp sự cố, lý tưởng nhất là bất kỳ khóa nào mà nó đang giữ tại thời điểm đó đều bị xóa khỏi máy chủ NLM có liên quan. Giao thức NLM xử lý việc này bằng cách để trình giám sát trạng thái trên máy khách gửi tin nhắn đến trình giám sát trạng thái của từng máy chủ sau khi máy khách khởi động lại. Chỉ báo khởi động lại máy khách thông báo cho máy chủ rằng máy khách không còn yêu cầu khóa của nó nữa. Tuy nhiên, nếu máy khách gặp sự cố và không khởi động lại được, khóa của máy khách sẽ tồn tại vô thời hạn. Điều này là không mong muốn vì hai lý do chính: Tài nguyên bị rò rỉ vô thời hạn. Cuối cùng, một máy khách khác sẽ muốn có khóa xung đột trên ít nhất một trong các tệp mà máy khách bị sự cố đã khóa và do đó, máy khách kia bị hoãn vô thời hạn.
Do đó, việc có các tiện ích máy chủ NFS báo cáo nhanh chóng và chính xác về trạng thái khóa và trình chờ cũng như các tiện ích xóa trình chờ khóa NFS là điều rất mong muốn đối với các quản trị viên – đặc biệt là trên các kiến trúc lưu trữ cụm.
Trước OneFS 9.5, các lệnh CLI khóa NFS cũ có phần kém hiệu quả và cũng hiển thị các khóa miền tư vấn khác, khiến đầu ra có phần khó hiểu. Bảng sau đây hiển thị các lệnh CLI mới (và trình xử lý tương ứng) thay thế cú pháp NLM cũ.
Kiểu / Bộ lệnh | OneFS 9.4 trở về trước | OneFS 9.5 |
Khóa | isi nfs nlm khóa | khóa isi nfs |
Phiên họp | isi nfs nlm phiên bản | isi nfs nlm phiên bản |
Người phục vụ | isi nfs nlm khóa bồi bàn | isi nfs khóa bồi bàn |
Trong OneFS 9.5 trở lên, trình xử lý API cũ vẫn tồn tại để tránh làm hỏng các tập lệnh và tính năng tự động hóa hiện có, tuy nhiên cú pháp lệnh CLI đã không còn được sử dụng và sẽ không còn hoạt động nữa.
Ngoài ra, hãy lưu ý rằng các lệnh CLI isi_classic nfs locks và waits cũng đã bị vô hiệu hóa trong OneFS 9.5. Các nỗ lực chạy những lệnh này sẽ tạo ra thông báo cảnh báo sau:
# isi_classic khóa nfs Lệnh này đã bị vô hiệu hóa. Vui lòng sử dụng isi nfs cho chức năng này.
Đầu ra lệnh CLI isi nfs locks mới bao gồm các trường đối tượng khóa sau :
Cánh đồng | Sự miêu tả |
Khách hàng | Tên máy chủ của khách hàng, Tên miền đủ điều kiện thường xuyên hoặc IP |
ID_khách_hàng | ID khách hàng (được tạo nội bộ) |
Tạo | Thời gian Epoch UNIX mà khóa được tạo ra |
NHẬN DẠNG | ID khóa (ID cần thiết để sắp xếp API nền tảng, không hiển thị trong đầu ra CLI) |
LÂM | Số inode logic (LIN) của tài nguyên bị khóa |
Kiểu khóa | Loại khóa (chia sẻ, độc quyền, không có) |
Con đường | Đường dẫn của tập tin bị khóa |
Phạm vi | Phạm vi byte trong tệp bị khóa |
Phiên bản | Phiên bản chính của NFS: v3 hoặc v4 |
Lưu ý rằng đặc quyền ISI_NFS_PRIV RBAC là bắt buộc để xem các khóa hoặc trình chờ NFS thông qua CLI hoặc PAPI. Ngoài ‘root’, các vai trò ‘SystemAdmin’ và ‘SecurityAdmin’ của cụm có đặc quyền này theo mặc định.
Ngoài ra, các lệnh CLI khóa mới có thời gian chờ mặc định là 60 giây. Nếu cụm rất lớn, thời gian chờ có thể cần phải tăng lên cho lệnh CLI. Ví dụ:
# isi –timeout <giá trị thời gian chờ> danh sách khóa nfs
Kiến trúc cơ bản của khung báo cáo khóa NFS nâng cao như sau:
Trình xử lý API mới tận dụng proxy API nền tảng, mang lại hiệu suất cao hơn so với trình xử lý cũ. Ngoài ra, các syscall được cập nhật đã được triển khai để tạo điều kiện lọc theo dịch vụ NFS và phiên bản chính.
Vì NFSv3 không có trạng thái, cụm không biết khi nào máy khách mất trạng thái trừ khi kết nối lại. Để đảm bảo an toàn tối đa, khung khóa OneFS (lk) sẽ giữ khóa mãi mãi. Lệnh CLI isi nfs nlm sessions cho phép quản trị viên giải phóng khóa NFSv3 thủ công trong những trường hợp như vậy và lệnh này vẫn khả dụng trong OneFS 9.5 cũng như các phiên bản trước đó. Khóa NFSv3 cũng có thể bị rò rỉ khi xóa, vì cần có inode hợp lệ cho các hoạt động khóa. Do đó, lkf có một trình gỡ khóa định kỳ kiểm tra các khóa liên quan đến các tệp đã xóa.
Trong OneFS 9.5 trở lên, các khóa NFS hiện tại có thể được xem bằng lệnh isi nfs locks list mới . Bộ lệnh này cũng cung cấp nhiều tùy chọn để giới hạn và định dạng đầu ra hiển thị. Ở dạng cơ bản, lệnh này tạo ra danh sách cơ bản về địa chỉ IP của máy khách và đường dẫn. Ví dụ:
# danh sách khóa isi nfs Đường dẫn khách hàng -------------------------------------------------- ------------------ 1/TMECLI1:487722/10.22.10.250 /ifs/locks/nfsv3/10.22.10.250_1 1/TMECLI1:487722/10.22.10.250 /ifs/locks/nfsv3/10.22.10.250_2 Linux NFSv4.0 TMECLI1:487722/10.22.10.250 /ifs/locks/nfsv4/10.22.10.250_1 Linux NFSv4.0 TMECLI1:487722/10.22.10.250 /ifs/locks/nfsv4/10.22.10.250_2 -------------------------------------------------- ------------------ Tổng cộng: 4
Để bao gồm thêm thông tin, cờ -v có thể được sử dụng để tạo danh sách khóa chi tiết:
# isi nfs khóa danh sách -v Khách hàng: 1/TMECLI1:487722/10.22.10.250 Mã khách hàng: 487722351064074 LIÊN: 4295164422 Đường dẫn: /ifs/locks/nfsv3/10.22.10.250_1 Loại khóa: độc quyền Phạm vi: 0, 92233772036854775807 Ngày tạo: 2023-08-18T08:03:52 Phiên bản: v3 -------------------------------------------------- ------------- Khách hàng: 1/TMECLI1:487722/10.22.10.250 Mã khách hàng: 5175867327774721 LIÊN: 42950335042 Đường dẫn: /ifs/locks/nfsv3/10.22.10.250_1 Loại khóa: độc quyền Phạm vi: 0, 92233772036854775807 Ngày tạo: 2023-08-18T08:10:31 Phiên bản: v3 -------------------------------------------------- ------------- Máy khách: Linux NFSv4.0 TMECLI1:487722/10.22.10.250 Mã khách hàng: 487722351064074 LIÊN: 429516442 Đường dẫn: /ifs/locks/nfsv3/10.22.10.250_1 Loại khóa: độc quyền Phạm vi: 0, 92233772036854775807 Ngày tạo: 2023-08-18T08:19:48 Phiên bản: v4 -------------------------------------------------- ------------- Máy khách: Linux NFSv4.0 TMECLI1:487722/10.22.10.250 Mã khách hàng: 487722351064074 LIÊN: 4295426674 Đường dẫn: /ifs/locks/nfsv3/10.22.10.250_2 Loại khóa: độc quyền Phạm vi: 0, 92233772036854775807 Ngày tạo: 2023-08-18T08:17:02 Phiên bản: v4 -------------------------------------------------- ------------- Tổng cộng: 4
Cú pháp trước trả về thông tin chi tiết hơn cho từng khóa, bao gồm ID máy khách, LIN, đường dẫn, loại khóa, phạm vi, ngày tạo và phiên bản NFS.
Danh sách khóa cũng có thể được lọc theo máy khách hoặc id máy khách. Lưu ý rằng tùy chọn –client phải là tên đầy đủ trong dấu ngoặc kép:
# isi nfs khóa danh sách --client="tên_đầy_đủ_của_client/Địa_chỉ_IP" -v
Ví dụ:
# isi nfs khóa danh sách --client="1/TMECLI1:487722/10.22.10.250" -v Khách hàng: 1/TMECLI1:487722/10.22.10.250 Mã khách hàng: 5175867327774721 LIÊN: 42950335042 Đường dẫn: /ifs/locks/nfsv3/10.22.10.250_1 Loại khóa: độc quyền Phạm vi: 0, 92233772036854775807 Ngày tạo: 2023-08-18T08:10:31 Phiên bản: v3
Ngoài ra, hãy lưu ý rằng CLI không hỗ trợ tên một phần, do đó phải chỉ định tên đầy đủ của máy khách.
Lọc theo phiên bản NFS có thể hữu ích khi cố gắng thu hẹp phạm vi máy khách nào có khóa. Ví dụ, để chỉ hiển thị khóa NFSv3:
# isi nfs khóa danh sách --version=v3 Đường dẫn khách hàng -------------------------------------------------- ------------------ 1/TMECLI1:487722/10.22.10.250 /ifs/locks/nfsv3/10.22.10.250_1 1/TMECLI1:487722/10.22.10.250 /ifs/locks/nfsv3/10.22.10.250_2 -------------------------------------------------- ------------------ Tổng cộng: 2
Lưu ý rằng cờ –-version hỗ trợ cả v3 và nlm làm đối số và sẽ trả về cùng một đầu ra v3 trong cả hai trường hợp. Ví dụ:
# isi nfs khóa danh sách --version=nlm Đường dẫn khách hàng -------------------------------------------------- ------------------ 1/TMECLI1:487722/10.22.10.250 /ifs/locks/nfsv3/10.22.10.250_1 1/TMECLI1:487722/10.22.10.250 /ifs/locks/nfsv3/10.22.10.250_2 -------------------------------------------------- ------------------ Tổng cộng: 2
Lọc theo LIN hoặc đường dẫn cũng được hỗ trợ. Ví dụ, để lọc theo LIN:
# isi nfs khóa danh sách --lin=42950335042 -v Khách hàng: 1/TMECLI1:487722/10.22.10.250 Mã khách hàng: 5175867327774721 LIÊN: 42950335042 Đường dẫn: /ifs/locks/nfsv3/10.22.10.250_1 Loại khóa: độc quyền Phạm vi: 0, 92233772036854775807 Ngày tạo: 2023-08-18T08:10:31 Phiên bản: v3
Hoặc theo đường dẫn:
# isi nfs khóa danh sách --path=/ifs/locks/nfsv3/10.22.10.250_2 -v Máy khách: Linux NFSv4.0 TMECLI1:487722/10.22.10.250 Mã khách hàng: 487722351064074 LIÊN: 4295426674 Đường dẫn: /ifs/locks/nfsv3/10.22.10.250_2 Loại khóa: độc quyền Phạm vi: 0, 92233772036854775807 Ngày tạo: 2023-08-18T08:17:02 Phiên bản: v4
Xin lưu ý rằng đường dẫn đầy đủ phải được chỉ định, bắt đầu bằng /ifs . Không có sự khớp lệnh hoặc thay thế một phần nào cho đường dẫn trong bộ lệnh này.
Việc lọc cũng có thể được thực hiện theo thời gian tạo, ví dụ:
# isi nfs khóa danh sách --created=2023-08-17T09:30:00 -v
Lưu ý rằng khi lọc theo created , đầu ra sẽ bao gồm tất cả các khóa được tạo trước hoặc tại thời điểm được cung cấp.
Đối số —limits có thể được sử dụng để cắt giảm số lượng kết quả trả về và limits có thể được sử dụng kết hợp với tất cả các tùy chọn truy vấn khác. Ví dụ, để giới hạn đầu ra của danh sách khóa NFSv4 thành một khóa:
# isi nfs khóa danh sách -–version=v4 --limit=1
Lưu ý rằng limit có thể được sử dụng với phạm vi các loại truy vấn.
Các tùy chọn bộ lọc loại trừ lẫn nhau ngoại trừ phiên bản . Lưu ý rằng phiên bản có thể được sử dụng với bất kỳ tùy chọn bộ lọc nào khác. Ví dụ, lọc theo cả phiên bản đã tạo và phiên bản.
Điều này có thể hữu ích khi khắc phục sự cố và cố gắng thu hẹp kết quả.
Ngoài khóa, OneFS 9.5 còn cung cấp bộ lệnh CLI isi nfs locks waiters . Lưu ý rằng waiters dành riêng cho máy khách NFSv3 và CLI báo cáo bất kỳ khóa v3 nào đang chờ xử lý và chưa được cấp.
Vì NFSv3 không có trạng thái, một cụm không biết khi nào máy khách mất trạng thái trừ khi nó kết nối lại. Để đảm bảo an toàn tối đa, lk giữ khóa mãi mãi. Lệnh isi nfs nlm cho phép quản trị viên giải phóng khóa thủ công trong những trường hợp như vậy. Khóa cũng có thể bị rò rỉ khi xóa, vì cần có inode hợp lệ cho các hoạt động khóa. Do đó, lkf có một trình gặt khóa kiểm tra định kỳ các khóa liên quan đến các tệp đã xóa:
# isi nfs khóa bồi bàn
Cú pháp CLI của người phục vụ sử dụng một phạm vi đối số truy vấn tương tự như bộ lệnh isi nfs locks list .
Ngoài CLI, API nền tảng cũng có thể được sử dụng để truy vấn cả khóa NFS và trình chờ NFSv3. Ví dụ, sử dụng curl để xem trình chờ qua OneFS pAPI:
# curl -k -u <tên người dùng>:<mật khẩu> https://localhost:8080/platform/protocols/nfs/waiters” { “tổng cộng” : 2, “người phục vụ”; } { “khách hàng”: “1/TMECLI1487722/10.22.10.250”, “client_id”: “4894369235106074”, “đã tạo”: “1668146840”, “id”: “1 1YUIAEIHVDGghSCHGRFHTiytr3u243567klj212-MANJKJHTTy1u23434yui-ouih23ui4yusdftyuySTDGJSDHVHGDRFhgfu234447g4bZHXhiuhsdm”, “lin” : “4295164422”, “lock_type” : “độc quyền” “đường dẫn”: “/ifs/locks/nfsv3/10.22.10.250_1” “phạm vi”: [0, 92233772036854775807 ], “phiên bản” : “v3” } }, “tổng cộng” : 1 }
Tương tự như vậy, sử dụng API nền tảng để hiển thị các khóa được lọc theo ID máy khách:
# curl -k -u <tên người dùng>:<mật khẩu> “https://<địa chỉ>:8080/platform/protocols/nfs/locks?client=<client_ID>”
Ví dụ:
# curl -k -u <tên người dùng>:<mật khẩu> “https://localhost:8080/platform/protocols/nfs/locks?client=1/TMECLI1487722/10.22.10.250” { “khóa”; } { “khách hàng”: “1/TMECLI1487722/10.22.10.250”, “client_id”: “487722351064074”, “đã tạo”: “1668146840”, “id”: “1 1YUIAEIHVDGghSCHGRFHTiytr3u243567FCUJHBKD34NMDagNLKYGHKHGKjhklj212-MANJKJHTTy1u23434yui-ouih23ui4yusdftyuySTDGJSDHVHGDRFhgfu234447g4bZHXhiuhsdm”, “lin” : “4295164422”, “lock_type” : “độc quyền” “đường dẫn”: “/ifs/locks/nfsv3/10.22.10.250_1” “phạm vi”: [0, 92233772036854775807 ], “phiên bản” : “v3” } }, “Tổng cộng” : 1 }
Lưu ý rằng, giống như CLI, API nền tảng không hỗ trợ việc khớp tên một phần, do đó phải chỉ định tên đầy đủ của máy khách.
Tác giả : Nick Trimbee
Bài viết mới cập nhật
Chính sách bảo mật mật khẩu OneFS
Trong số hàng loạt cải tiến bảo mật được giới thiệu ...
Hỗ trợ Rekey của OneFS Key Manager
Trình quản lý khóa OneFS là dịch vụ phụ trợ điều ...
Hiệu suất phát triển mô hình và AI
Đã có một sự gia tăng thông tin to lớn về ...
Mã hóa SMB Redirector
Khi mã hóa trực tuyến ngày càng trở nên phổ biến ...