Giới hạn chuyển nhượng OneFS SmartPools

Phiên bản OneFS 9.5 mới giới thiệu giai đoạn đầu tiên của sáng kiến ​​Smarter SmartPools về kỹ thuật và cung cấp một tính năng mới có tên là giới hạn chuyển giao SmartPools.

Mục tiêu của SmartPools Transfer Limits là giải quyết tình trạng tràn dữ liệu. Trước đây, khi các chính sách nhóm tệp được thực thi, OneFS không có rào chắn nào để bảo vệ chống lại việc tràn dữ liệu vào nhóm lưu trữ đích hoặc mục tiêu. Vì vậy, nếu một nhóm bị tràn dữ liệu, dữ liệu sẽ bất ngờ tràn vào các nhóm lưu trữ khác.

Tràn dữ liệu sẽ dẫn đến việc sử dụng storagepool vượt quá 100% và khiến chính công việc SmartPools phải thực hiện một lượng công việc không cần thiết đáng kể, cố gắng gửi tệp đến một storagepool nhất định. Nhưng vì pool đã đầy, nên nó sẽ phải gửi các tệp đó đến một storagepool khác có dung lượng thấp hơn. Điều này sẽ dẫn đến việc dữ liệu sẽ đi đến nơi không mong muốn và có khả năng các tệp riêng lẻ sẽ bị chia tách giữa các pool. Ngoài ra, nếu pool đầy nằm trên bộ lưu trữ có hiệu suất cao nhất trong cụm, thì tất cả dữ liệu mới được tạo sau đó giờ sẽ nằm trên bộ lưu trữ chậm hơn, ảnh hưởng đến thông lượng và độ trễ của nó. Việc phục hồi sau khi tràn dữ liệu có thể khá cồng kềnh vì cụm khó lấy lại sự cân bằng và có thể cần phải quản trị hệ thống khẩn cấp để giải phóng dung lượng trên tầng bị ảnh hưởng.

Để giải quyết vấn đề này, SmartPools Transfer Limits cho phép quản trị viên cụm cấu hình ngưỡng sử dụng dung lượng lưu trữ, được thể hiện dưới dạng phần trăm và vượt quá ngưỡng này thì chính sách nhóm tệp sẽ ngừng di chuyển dữ liệu đến nhóm lưu trữ cụ thể đó.

Các giới hạn truyền tải này chỉ có hiệu lực khi chạy các tác vụ áp dụng chính sách nhóm tệp, chẳng hạn như SmartPools, SmartPoolsTree và FilePolicy.

Tính năng này có hai lợi ích chính:

  • An toàn, vì OneFS tránh các hành động không mong muốn, do đó khách hàng không phải lo lắng về các tình huống leo thang, vì SmartPools sẽ không làm đầy nhóm lưu trữ.
  • Hiệu suất, vì giới hạn truyền tải giúp tránh công việc không cần thiết và cho phép công việc SmartPools hoàn thành sớm hơn.

Bên trong, mức sử dụng SSD và HDD của một nhóm lưu trữ được tính toán bằng cùng một thuật toán như được báo cáo bởi lệnh CLI ‘isi storagepools list’. Điều này có nghĩa là dung lượng dự trữ VHS (virtual hot spare) của nhóm được tôn trọng theo giới hạn truyền tải của SmartPools. Khi một tác vụ SmartPools đang chạy, có ít nhất một công nhân trên mỗi nút xử lý một LIN duy nhất tại bất kỳ thời điểm nào. Để tính toán mức sử dụng HDD và SSD hiện tại cho mỗi nhóm lưu trữ, công nhân phải đọc từ cơ sở dữ liệu diskpool. Để tránh tình trạng tắc nghẽn tiềm ẩn này, thuật toán chính sách filepool sẽ lưu trữ đệm nội dung cơ sở dữ liệu diskpool trong bộ nhớ trong tối đa 10 giây.

Giới hạn truyền được lưu trữ trong gconfig và một mục riêng được lưu trữ trong phân cấp ‘smartpools.storagepools’ cho mỗi giới hạn truyền được xác định rõ ràng.

Lưu ý rằng trong từ điển SmartPools, ‘storage pool’ là thuật ngữ chung biểu thị một tầng hoặc nodepool. Ngoài ra, các tầng SmartPools bao gồm một hoặc nhiều nodepool thành phần.

Mỗi mục nhập giới hạn chuyển gconfig lưu trữ một giá trị giới hạn và mã định danh cơ sở dữ liệu diskpool của storagepool mà giới hạn chuyển áp dụng. Ngoài ra, trường ‘transfer limit state’ chỉ định giới hạn ở trạng thái nào trong ba trạng thái sau:

Trạng thái giới hạn Sự miêu tả
Mặc định Trở lại giới hạn chuyển tiền mặc định.
Tàn tật Bỏ qua giới hạn chuyển nhượng.
Đã bật Giá trị giới hạn chuyển nhượng tương ứng là hợp lệ.

Giới hạn truyền tải SmartPools không ảnh hưởng đến việc nhập chung, phân chia lại hoặc bảo vệ lại các tệp, bất kể nhóm lưu trữ tại nơi tệp đó được lưu trữ đầy đến mức nào. Vì vậy, nếu bạn đang tạo hoặc sửa đổi tệp trên cụm, tệp đó sẽ được tạo ở đó. Điều này sẽ tiếp tục cho đến khi nhóm đạt 100% dung lượng, tại thời điểm đó, nó sẽ tràn ra.

Giới hạn chuyển mặc định là 90% dung lượng của nhóm. Điều này áp dụng cho tất cả các nhóm lưu trữ mà quản trị viên cụm không đặt ngưỡng rõ ràng. Cũng lưu ý rằng giới hạn mặc định không được đặt cho đến khi nâng cấp cụm lên OneFS 9.5 được cam kết. Vì vậy, nếu bạn đang chạy tác vụ chính sách SmartPools trong quá trình nâng cấp, bạn sẽ có hành vi hiện có, đó là gửi tệp đến bất kỳ nơi nào mà chính sách nhóm tệp hướng dẫn. Cũng cần lưu ý rằng, mặc dù giới hạn chuyển mặc định được đặt khi cam kết, nhưng nếu một tác vụ đang chạy vượt quá ranh giới cam kết đó, bạn sẽ phải tạm dừng và tiếp tục tác vụ đó để hành vi giới hạn mới có hiệu lực. Điều này là do cấu hình mới được tải chậm khi các công nhân tác vụ được khởi động, vì vậy ngay cả khi cấu hình thay đổi, vẫn cần phải tạm dừng và tiếp tục để chọn những thay đổi đó.

Bản thân SmartPools cần được cấp phép trên một cụm để giới hạn chuyển giao hoạt động. Và giới hạn có thể được cấu hình ở cấp độ tầng hoặc nodepool. Nhưng nếu bạn thay đổi giới hạn của một tầng, nó sẽ tự động áp dụng cho tất cả các nodepool con của nó, bất kể bất kỳ cấu hình giới hạn con nào trước đó. Tính năng giới hạn chuyển giao cũng có thể bị vô hiệu hóa, dẫn đến cùng một hành vi tràn mà OneFS luôn hiển thị và bất kỳ giới hạn nào được cấu hình sẽ không được tôn trọng.

Lưu ý rằng thuật toán giới hạn truyền của chính sách nhóm tệp không xem xét kích thước của tệp khi quyết định có nên di chuyển tệp đó đến nhóm lưu trữ mục tiêu của chính sách hay không, bất kể tệp đó là tệp rỗng hay tệp lớn. Tương tự như vậy, mức sử dụng của nhóm lưu trữ mục tiêu phải vượt quá giới hạn truyền của nó trước khi chính sách nhóm tệp ngừng di chuyển dữ liệu đến nhóm mục tiêu đó. Giả định ở đây là bất kỳ mức sử dụng vượt mức nào của nhóm lưu trữ đều không đáng kể về quy mô so với dung lượng của nhóm lưu trữ của cụm.

Chính sách nhóm tệp SmartPools cho phép bạn gửi ảnh chụp nhanh hoặc khối dữ liệu HEAD đến các mục tiêu khác nhau nếu muốn.

Vì giới hạn chuyển giao áp dụng cho chính storagepool, chứ không phải cho chính sách của file pool, nên điều quan trọng cần lưu ý là nếu bạn có nhiều mục tiêu storagepool khác nhau và một chính sách của file pool, bạn có thể gặp trường hợp các khối dữ liệu head bị di chuyển. Nhưng nếu snapshot đang trỏ đến một storage pool đã vượt quá giới hạn chuyển giao, các khối của nó sẽ không bị di chuyển.

Chính sách nhóm tệp cũng cho phép bạn chỉ định cách sử dụng SSD của một nút hỗn hợp: hoặc là bộ đệm L3 hoặc là chiến lược SSD cho khối đầu và khối ảnh chụp nhanh. Nếu SSD trong một nút được định cấu hình cho L3, chúng không được sử dụng để lưu trữ, do đó bất kỳ giới hạn truyền nào cũng không liên quan đến nó. Là một giải pháp thay thế cho bộ đệm L3, SmartPools cung cấp ba danh mục chính của chiến lược SSD:  

  • Tránh, nghĩa là gửi tất cả các khối đến HDD 
  • Dữ liệu, nghĩa là gửi mọi thứ đến SSD 
  • Đọc hoặc Ghi Siêu dữ liệu, gửi nhiều bản sao siêu dữ liệu khác nhau tới SSD và các khối dữ liệu tới ổ cứng.

Để phản ánh điều này, giới hạn chuyển giao của SmartPools có đôi chút sắc thái khi nói đến các chiến lược SSD. Nghĩa là, nếu mục tiêu storagepool chứa cả HDD và SSD, thì dung lượng sử dụng của cả hai phương tiện cần phải thấp hơn giới hạn chuyển giao để tệp được chuyển đến mục tiêu đó. Ví dụ, hãy lấy hai node pool, NP1 và NP2.

Chính sách nhóm tệp, Pol1, được cấu hình và khớp với tất cả các tệp trong /ifs/dir1, với chiến lược SSD là Ghi siêu dữ liệu và nhóm NP1 làm mục tiêu cho các khối dữ liệu của HEAD. Đối với ảnh chụp nhanh, mục tiêu là NP2, với chiến lược SSD ‘tránh’, do đó chỉ ghi vào ổ cứng cho cả dữ liệu ảnh chụp nhanh và siêu dữ liệu.

Khi một tác vụ SmartPools chạy và cố gắng áp dụng chính sách nhóm tệp này, nó thấy rằng mức sử dụng SSD cao hơn giới hạn truyền được cấu hình 85% cho NP1. Vì vậy, mặc dù mức sử dụng dung lượng ổ cứng thấp hơn giới hạn, dữ liệu HEAD hoặc siêu dữ liệu sẽ không được gửi đến NP1.

Đối với ảnh chụp nhanh, mức sử dụng SSD cũng cao hơn giới hạn truyền dữ liệu 90% của nhóm NP2.

Tuy nhiên, vì chiến lược SSD là ‘tránh’ và vì mức sử dụng ổ cứng thấp hơn giới hạn nên dữ liệu và siêu dữ liệu của ảnh chụp nhanh sẽ được gửi thành công đến ổ cứng NP2.

Tác giả : Nick Trimbee