Nội tuyến dữ liệu tệp nhỏ OneFS

OneFS 9.3 giới thiệu tính năng hiệu quả lưu trữ hệ thống tệp mới, lưu trữ dữ liệu của tệp nhỏ trong inode, thay vì phân bổ thêm không gian lưu trữ. Các lợi ích chính của việc đưa dữ liệu vào OneFS bao gồm:

  • Giảm việc sử dụng dung lượng lưu trữ cho các tập dữ liệu tệp nhỏ, tạo ra tỷ lệ chi phí trên mỗi TB được cải thiện
  • Tuổi thọ SSD được cải thiện đáng kể
  • Cải thiện hiệu suất đọc và ghi tiềm năng cho các tệp nhỏ
  • Không cần cấu hình, hoạt động thích ứng và tính minh bạch hoàn toàn ở cấp hệ thống tệp OneFS
  • Khả năng tương thích rộng với các dịch vụ dữ liệu OneFS khác, bao gồm nén và loại bỏ trùng lặp

Nội tuyến dữ liệu tránh phân bổ rõ ràng trong quá trình ghi vì các tệp nhỏ không yêu cầu bất kỳ khối dữ liệu hoặc bảo vệ nào để lưu trữ. Thay vào đó, nội dung tệp được lưu trữ trực tiếp trong không gian chưa sử dụng trong inode của tệp. Cách tiếp cận này cũng rất thân thiện với phương tiện flash vì nó làm giảm đáng kể số lượng ghi vào ổ SSD.

OneFS inodes, hay index node, là một lớp cấu trúc dữ liệu đặc biệt lưu trữ các thuộc tính tệp và con trỏ đến các vị trí dữ liệu tệp trên đĩa. Chúng có mục đích tương tự như inode hệ thống tệp UNIX truyền thống, nhưng cũng có một số thuộc tính duy nhất bổ sung. Mỗi đối tượng hệ thống tệp, cho dù đó là tệp, thư mục, liên kết tượng trưng, ​​vùng chứa luồng dữ liệu thay thế hay kho lưu trữ bóng, đều được biểu diễn bằng một inode.

Trong OneFS, các nhóm nút SSD trong các nút toàn flash dòng F luôn sử dụng inode 8KB. Đối với các nền tảng lưu trữ và lai, các nhóm nút HDD có kích thước 512 byte hoặc 8KB và điều này được xác định bởi kích thước khối vật lý và logic của ổ cứng hoặc SSD trong một nhóm nút. 

Có ba kiểu định dạng ổ đĩa khác nhau được sử dụng trong các nút OneFS, tùy thuộc vào thông số kỹ thuật của nhà sản xuất:

Định dạng ổ đĩa Đặc trưng
Bản địa 4Kn (bản địa) Ổ đĩa 4Kn gốc có cả kích thước khối vật lý và logic là 4096B.
512n (bản địa) Ổ đĩa có cả kích thước vật lý và kích thước logic là 512 là ổ đĩa 512B gốc.
512e (giả lập) Ổ đĩa 512e (mô phỏng 512 byte) có kích thước khối vật lý là 4096, nhưng kích thước khối logic là 512B.

Nếu các ổ đĩa trong nodepool của cụm được định dạng gốc 4Kn, theo mặc định, các inode trên nodepool này sẽ có kích thước 8KB. Ngoài ra, nếu các ổ đĩa được định dạng 512e, thì theo mặc định, các inode sẽ có kích thước 512B. Tuy nhiên, chúng cũng có thể được định cấu hình lại thành kích thước 8KB nếu cài đặt ‘force-8k-inodes’ được đặt thành true.

Một inode OneFS bao gồm một số phần. Chúng bao gồm:

  • Một vùng tĩnh, thường có kích thước 134 byte và chứa các thuộc tính có độ rộng cố định, thường được sử dụng như bit chế độ POSIX, chủ sở hữu và kích thước tệp. 
  • Tiếp theo, inode thông thường chứa một bộ đệm metatree, được sử dụng để dịch một hoạt động tệp trực tiếp vào nhóm bảo vệ thích hợp. Tuy nhiên, đối với inode nội tuyến, metatree không còn cần thiết nữa, vì vậy dữ liệu được lưu trữ trực tiếp trong khu vực này. 
  • Tiếp theo là vùng inode động được phân bổ trước, nơi các thuộc tính chính, chẳng hạn như OneFS ACL, chính sách bảo vệ, gốc cây B+ nhúng, dấu thời gian, v.v., được lưu vào bộ nhớ đệm. 
  • Và cuối cùng là khu vực lưu trữ mã kiểm tra IDI.

Khi một tệp ghi đến từ bộ đệm ghi lại hoặc coalescer được xác định là ứng cử viên cho dữ liệu nội tuyến, nó sẽ đi qua một đường dẫn ghi nhanh trong BSW (ghi an toàn BAM – đường dẫn ghi OneFS chuẩn). Nén sẽ được áp dụng, nếu phù hợp, trước khi dữ liệu nội tuyến được ghi vào bộ lưu trữ.

Đường dẫn đọc cho các tệp nội tuyến tương tự như đối với các tệp thông thường. Tuy nhiên, nếu dữ liệu tệp chưa có sẵn trong các lớp lưu trữ đệm, dữ liệu đó sẽ được đọc trực tiếp từ inode, thay vì từ các khối đĩa riêng biệt như với các tệp thông thường.

Bảo vệ dữ liệu nội tuyến hoạt động theo cùng cách như đối với các inode khác và liên quan đến phản chiếu. OneFS sử dụng phản chiếu làm biện pháp bảo vệ cho tất cả siêu dữ liệu vì nó đơn giản và không yêu cầu chi phí xử lý bổ sung của mã hóa xóa. Số lượng phản chiếu inode được xác định bởi chính sách bảo vệ đạt được của nodepool, theo bảng sau:

Mức độ bảo vệ OneFS Số lượng gương Inode
+1n 2 inode cho mỗi tệp
+2ngày:1đ 3 inode cho mỗi tệp
+2n 3 inode cho mỗi tệp
+3ngày:1n 4 inode cho mỗi tệp
+3ngày:1ngày1ngày 4 inode cho mỗi tệp
+3n 4 inode cho mỗi tệp
+4ngày:1n 5 inode cho mỗi tệp
+4ngày:2đ 5 inode cho mỗi tệp
+4n 5 inode cho mỗi tệp

Không giống như các inode tệp ở trên, các inode thư mục, bao gồm không gian tên đơn OneFS, được phản chiếu ở một cấp độ cao hơn chính sách bảo vệ đã đạt được. Gốc của Cây LIN là loại siêu dữ liệu quan trọng nhất và luôn được phản chiếu ở mức 8x.

Inlining dữ liệu được tự động bật theo mặc định trên tất cả các nodepool định dạng 8KB cho các cụm chạy OneFS 9.3 và không yêu cầu bất kỳ phần mềm, phần cứng hoặc giấy phép sản phẩm bổ sung nào để hoạt động. Hoạt động của nó hoàn toàn minh bạch và do đó, không có điều khiển OneFS CLI hoặc WebUI nào để cấu hình hoặc quản lý inlining.

Để nâng cấp lên OneFS 9.3 và hưởng lợi từ việc nhúng dữ liệu, cụm phải chạy tối thiểu OneFS 8.2.1 trở lên. Cần phải cam kết nâng cấp đầy đủ lên OneFS 9.3 trước khi nhúng dữ liệu có thể hoạt động.

Xin lưu ý rằng việc nhúng dữ liệu trong OneFS 9.3 có một số cảnh báo đáng chú ý. Cụ thể, việc nhúng dữ liệu sẽ không được thực hiện trong các trường hợp sau:

  • Khi nâng cấp lên OneFS 9.3 từ phiên bản trước đó không hỗ trợ nhúng
  • Trong các hoạt động phân chia lại, chẳng hạn như phân tầng SmartPools, khi dữ liệu được di chuyển từ diskpool 512 byte sang diskpool 8KB
  • Viết các tập tin stub CloudPools SmartLink
  • Trên tập tin cắt bớt xuống kích thước khác không
  • Các tệp thưa thớt (ví dụ: các tệp đục lỗ thưa thớt NDMP) trong đó các khối được phân bổ được thay thế bằng các khối thưa thớt tại các độ lệch tệp khác nhau
  • Đối với các tập tin trong ảnh chụp nhanh có thể ghi

Tương tự như vậy, trong OneFS 9.3, các thao tác sau đây có thể khiến dữ liệu nhúng bị hoàn tác hoặc bị tràn:

  • Phân chia lại từ diskpool 8KB thành diskpool 512 byte
  • Phân bổ bắt buộc các khối trên một tệp (ví dụ: sử dụng lệnh gọi hệ thống POSIX ‘madvise’)
  • Đấm thưa thớt một tập tin
  • Bật CloudPools BCM (trình quản lý bộ nhớ đệm BAM) trên một tệp

Những lưu ý này sẽ được giải quyết trong bản phát hành sau.

Tác giả: Nick Trimbee