Bcachefs 1.33: Chẩn đoán nâng cao, số liệu thời gian thực và tối ưu hóa Btree

Những điểm chính:
  • Thông báo lỗi chi tiết: giải thích nguyên nhân, loại lỗi (lỗi phần cứng/lỗi phần mềm) và giải pháp.
  • Lệnh bcachefs fs top hiện hiển thị tốc độ truyền tải theo thời gian thực.
  • Kết hợp không đồng bộ các nút Btree để cải thiện hiệu suất khi chịu tải
  • Các tùy chọn mới mount_trusts_udev và writeback_timeout.
  • Giảm đáng kể số lượng lệnh goto trong mã nguồn (từ 2500 xuống còn 600) để chuẩn bị cho sự ra mắt của Rust.
bachefs

Bcachefs là một hệ thống tệp sao chép khi ghi cho các hệ điều hành dựa trên Linux.

Vài ngày trước, Kent Overstreet đã công bố phát hành Bcachefs 1.33.0 , một phiên bản mới của hệ thống tập tin mang đến những thay đổi cấu trúc sâu sắc trong quản lý dữ liệu và kiến ​​trúc mã nguồn của nó.

Bản cập nhật này hứa hẹn sẽ là một trong những bản cập nhật quan trọng nhất trong hai năm qua, tập trung vào tính toàn vẹn của siêu dữ liệu và hiện đại hóa mã nguồn C.

"Reconcile": Một kỷ nguyên mới cho tính toàn vẹn dữ liệu

Tính năng mới đáng chú ý nhất, được mô tả là thay đổi quan trọng nhất trong hai năm qua, là sự ra mắt chức năng Đối chiếu (rebalance_v2) . Cơ chế mới này thay thế hệ thống "cân bằng lại" cũ và giải quyết một trong những hạn chế chính của nó: hệ thống giờ đây có thể quản lý và di chuyển không chỉ dữ liệu người dùng mà còn cả siêu dữ liệu hệ thống tệp.

Rebalance_v2 hoạt động chủ động và tự động. Nếu một đĩa mới được thêm vào mảng hoặc các tùy chọn dự phòng được thay đổi, Bcachefs sẽ ngay lập tức bắt đầu sao chép và sửa chữa bất kỳ dữ liệu hoặc siêu dữ liệu nào bị suy giảm, sử dụng các chỉ mục riêng biệt để ưu tiên các thao tác quan trọng. Điều này đảm bảo tính toàn vẹn của hệ thống được duy trì ngay cả trong các hoạt động bảo trì chuyên sâu.

Dọn dẹp mã nguồn và chuẩn bị cho Rust

Về mặt kỹ thuật, phiên bản 1.33.0 mang đến một sự tái cấu trúc lớn cho mã C để làm cho nó an toàn hơn và tương thích với một triển khai trong tương lai. RustNhà phát triển đã thực hiện việc dọn dẹp kỹ lưỡng, giảm số lượng câu lệnh. goto Từ 2.500 xuống chỉ còn 600, điều này giúp đơn giản hóa đáng kể luồng logic của chương trình.

Ngoài ra, các macro mới cũng đã được giới thiệu, chẳng hạn như: DARRAY() y try()Những điều này được thiết kế để mô phỏng hành vi vectơ động và khả năng xử lý lỗi của Rust và C++. Điều này không chỉ hiện đại hóa mã hiện tại mà còn tạo điều kiện thuận lợi cho tính khả chuyển và giảm thiểu bề mặt lỗi bộ nhớ trong tương lai.

Cải thiện khả năng chẩn đoán và tính linh hoạt trong lưu trữ.

Với mục tiêu hỗ trợ quản trị hệ thống, phiên bản này cải thiện đáng kể độ rõ ràng của các thông báo lỗi . Giờ đây, Bcachefs có thể phân biệt và thông báo liệu lỗi là do lỗi phần mềm hay sự cố phần cứng vật lý, thậm chí còn đề xuất các bước khắc phục cần thiết. Điều này rất quan trọng để tránh chẩn đoán sai, trong đó hệ thống tệp bị đổ lỗi cho ổ đĩa bị lỗi.

Sự minh bạch này được thể hiện ở nhiều cấp độ:

  • Chi tiết lỗi I/O: Khi lớp khối báo cáo lỗi, Bcachefs sẽ truyền mã cụ thể (chẳng hạn như BLK_STS_IOERR), giúp xác định xem ổ đĩa vật lý có phải là nguyên nhân gây ra sự cố hay không.
  • Lỗi lắp ráp: Nếu thiếu các thiết bị để lắp ráp một tập tin, hệ thống giờ đây sẽ chỉ rõ chính xác thiết bị nào bị thiếu, hiển thị tên và kiểu máy dựa trên lần cuối cùng thiết bị đó được ghi nhận.
  • Giới hạn tỷ lệ lỗi: Ranh giới giữa lỗi "mềm" (phần mềm) và lỗi "cứng" (phần cứng) đã được phân tách, đảm bảo rằng hàng loạt lỗi nhỏ không che khuất lỗi nghiêm trọng của ổ đĩa.

Ngoài ra, lệnh bcachefs fs top Nó đã được cải thiện. Các bộ đếm nội bộ hiện hiển thị tốc độ truyền dữ liệu thay vì chỉ hiển thị các con số tĩnh, giúp việc liên kết các sự kiện dễ dàng hơn nhiều (chẳng hạn như...). data_update_fail) với sự suy giảm hiệu năng theo thời gian thực.

Tối ưu hóa trong cây B và các tùy chọn lắp đặt mới

Về mặt kỹ thuật, hiệu năng khi xử lý tải nặng được cải thiện nhờ những thay đổi trong quản lý cây B. Việc hợp nhất các nút trống giờ đây diễn ra bất đồng bộ, loại bỏ các tắc nghẽn bộ đệm ghi. Ngoài ra, một bước phục hồi tùy chọn đã được thêm vào. merge_btree_nodes, để tối ưu hóa cấu trúc cây theo cách thủ công nếu cần thiết.

Một tính năng bổ sung rất thiết thực khác là khả năng khởi động hệ thống tập tin với cấu hình đã được thiết lập. replicas=2 trên một đĩa duy nhấtĐiều này cho phép người dùng bắt đầu với một ổ đĩa duy nhất, biết rằng hệ thống "phải" có tính dự phòng; ngay khi ổ đĩa thứ hai được kết nối, Bcachefs sẽ tự động sao chép dữ liệu mà không cần sự can thiệp thủ công phức tạp.

Cuối cùng, cần lưu ý rằng phiên bản mới, hiện đã có sẵn cho các bản phân phối như Debian, Fedora, Arch Linux và NixOS, yêu cầu nhân Linux 6.16 trở lên và được phân phối trong hai gói cơ bản: mô-đun nhân (bcachefs-kernel-dkms) và các công cụ người dùng (bcachefs-tools).


Thêm vào danh sách nguồn ưu tiên trên Google.