Phát hành ZFS trên Linux 0.8.0, triển khai ZFS cho nhân Linux

Sau gần hai năm phát triển trình bày giải phóng ZFS trên Linux 0.8.0, một triển khai hệ thống tệp ZFS, được thiết kế dưới dạng mô-đun cho nhân Linux. Mô-đun này đã được thử nghiệm với nhân Linux từ 2.6.32 đến 5.1. Sắp có gói cài đặt sẵn sàng sẽ được chuẩn bị dành cho các bản phân phối Linux chính bao gồm Debian, Ubuntu, Fedora, RHEL/CentOS. Mô-đun ZFS trên Linux đã được bao gồm trong các bản phân phối Debian, Ubuntu, Gentoo, Sabayon Linux và ALT Linux.

Là một phần của ZFS trên Linux, việc triển khai các thành phần ZFS liên quan đến cả hoạt động của hệ thống tệp và chức năng của trình quản lý ổ đĩa đã được chuẩn bị. Cụ thể, các thành phần sau được triển khai: SPA (Bộ phân bổ nhóm lưu trữ), DMU (Đơn vị quản lý dữ liệu), ZVOL (Khối mô phỏng ZFS) và ZPL (Lớp ZFS POSIX). Ngoài ra, dự án còn cung cấp khả năng sử dụng ZFS làm phụ trợ cho hệ thống tệp cụm Lustre. Công việc của dự án dựa trên mã ZFS gốc, được nhập từ dự án OpenSolaris và được mở rộng với các cải tiến và sửa lỗi từ cộng đồng Illumos. Dự án đang được phát triển với sự tham gia của các nhân viên Phòng thí nghiệm quốc gia Livermore theo hợp đồng với Bộ Năng lượng Hoa Kỳ.

Mã được phân phối theo giấy phép CDDL miễn phí, không tương thích với GPLv2, không cho phép ZFS trên Linux được tích hợp vào nhánh chính của nhân Linux, vì việc trộn mã theo giấy phép GPLv2 và CDDL là không thể chấp nhận được. Để tránh sự không tương thích cấp phép này, người ta đã quyết định phân phối toàn bộ sản phẩm theo giấy phép CDDL dưới dạng một mô-đun có thể tải xuống riêng biệt, được cung cấp riêng biệt với hạt nhân. Tính ổn định của cơ sở mã ZFS trên Linux được đánh giá là có thể so sánh với các hệ thống tệp khác dành cho Linux.

Sự thay đổi chính:

  • Đã thêm hỗ trợ tích hợp để mã hóa dữ liệu được lưu trữ ở cấp hệ thống tệp và phân vùng. Thuật toán mã hóa mặc định là aes-256-ccm. Để tải các khóa mã hóa, lệnh “zfs Load-key” được đề xuất;
  • Khả năng truyền dữ liệu được mã hóa khi thực hiện lệnh “zfs gửi” và “zfs nhận” đã được triển khai. Khi chỉ định tùy chọn “-w”, dữ liệu đã được mã hóa trong nhóm sẽ được chuyển sang nhóm khác mà không cần giải mã trung gian. Trong quá trình sao chép như vậy, dữ liệu vẫn được bảo vệ bằng khóa của bên gửi, cho phép sử dụng chế độ này để sao lưu vào các hệ thống không đáng tin cậy (nếu người nhận bị xâm phạm, nếu không có khóa, kẻ tấn công sẽ không thể truy cập dữ liệu);
  • Đã thêm hỗ trợ để xóa các ổ đĩa chính khỏi nhóm lưu trữ, được kết nối riêng lẻ hoặc như một phần của máy nhân bản. Việc xóa được thực hiện bằng lệnh “zpool Remove”. Trong quá trình xóa, dữ liệu từ ổ đĩa đã xóa sẽ được sao chép sang các ổ đĩa chính còn lại trong nhóm;
  • Đã thêm lệnh “điểm kiểm tra zpool” để lưu trạng thái hiện tại của nhóm với khả năng khôi phục các thay đổi tiếp theo về thời điểm đã lưu (ảnh chụp nhanh của toàn bộ nhóm được tạo). Tính năng được trình bày có thể hữu ích trong quá trình thực hiện công việc quản trị phức tạp tiềm ẩn nguy hiểm thường dẫn đến những thay đổi không thể đảo ngược (ví dụ: kích hoạt cờ cho chức năng ZFS mới hoặc xóa dữ liệu);
  • Đã thêm lệnh “zpool Trim” để thông báo cho các ổ đĩa được sử dụng trong nhóm về các khu vực không còn được sử dụng. Việc sử dụng thao tác TRIM giúp tăng hiệu suất của ổ SSD và ngăn chặn tình trạng suy giảm hiệu suất của chúng. Để kích hoạt quy trình nền liên tục để truyền các lệnh TRIM, một thuộc tính mới “autotrim” đã được đề xuất;
  • Đã thêm lệnh "khởi tạo zpool" để khởi tạo tất cả dung lượng ổ đĩa chưa được phân bổ, đảm bảo rằng nó sẵn sàng để sử dụng ngay lập tức mà không ảnh hưởng đến hiệu suất trong lần truy cập đầu tiên (ví dụ: khi lưu trữ bộ lưu trữ ảo hóa như VMware VMDK);
  • Đã thêm hỗ trợ cho tính toán và hạn ngạch ở cấp dự án, bổ sung cho hạn ngạch ở cấp độ người dùng và nhóm có sẵn trước đó. Về cơ bản, các dự án là một không gian riêng biệt của các đối tượng được liên kết với một mã định danh riêng (ID dự án). Liên kết được xác định thông qua thao tác 'chattr -p' hoặc thông qua kế thừa thuộc tính. Để quản lý dự án, các lệnh “zfs project” và “zfs projectspace” được cung cấp, cho phép bạn quản lý việc tạo dự án và đặt giới hạn dung lượng ổ đĩa cho chúng;
  • Đã thêm khả năng tạo tập lệnh Lua để tự động hóa nhiều công việc khác nhau với ZFS. Các tập lệnh được khởi chạy trong môi trường biệt lập đặc biệt bằng lệnh “chương trình zpool”;
  • Thư viện mới được triển khai pyzfs, cung cấp API ổn định để quản trị ZFS từ các ứng dụng Python. Thư viện này là một trình bao bọc trên libzfs_core và cung cấp một tập hợp các hàm giống hệt nhau, nhưng sử dụng các kiểu gần với Python hơn;
  • Các tiện ích arcstat, arcsummary và dbufstat hiện tương thích với Python 3. Các tiện ích arcstat.py, arc_summary.py và dbufstat.py đã được đổi tên thành các phiên bản không có phần mở rộng “.py”;
  • Đã thêm hỗ trợ cho giao diện hạt nhân Linux Direct IO (O_DIRECT), cho phép bạn truy cập dữ liệu mà không cần đệm và bỏ qua bộ đệm;
  • Tối ưu hóa hiệu suất được trình bày:
    • Công việc của lệnh “chà” và “phục hồi” đã được tăng tốc bằng cách chia thành hai giai đoạn (một giai đoạn riêng biệt được phân bổ để quét siêu dữ liệu và xác định vị trí của các khối dữ liệu trên đĩa, cho phép xác minh thêm bằng cách đọc dữ liệu tuần tự) ;
    • Đã thêm hỗ trợ cho các lớp Phân bổ,
      cho phép đưa các ổ SSD tương đối nhỏ vào một nhóm và chỉ được sử dụng để lưu trữ một số loại khối được sử dụng thường xuyên nhất định, chẳng hạn như siêu dữ liệu, dữ liệu DDT và các khối nhỏ có tệp;

    • Tăng hiệu suất của các lệnh quản trị, chẳng hạn như
      “danh sách zfs” và “zfs get”, do bộ đệm siêu dữ liệu cần thiết cho hoạt động của chúng;

    • Đã thêm hỗ trợ để song song hóa các hoạt động phân bổ khối bằng cách khởi chạy các quy trình “phân bổ” riêng biệt cho từng nhóm metaslab. Trên các hệ thống thông thường, hiệu suất tăng từ 5-10%, nhưng trên các hệ thống lớn (SSD 8 GB, NUMA lõi 128, RAM 24 GB), mức tăng hoạt động phân bổ khối có thể đạt tới 256%;
    • Đã thêm khả năng trì hoãn việc thực thi lệnh "resilver" (xây dựng lại phân phối dữ liệu có tính đến những thay đổi trong cấu hình của ổ đĩa) - nếu khi bắt đầu một thao tác mới, thao tác trước đó chưa hoàn thành thì trình xử lý mới sẽ chỉ bắt đầu thực thi sau khi cái trước đã kết thúc;
    • Nhật ký ZIL (ZFS Intent Log) đã tối ưu hóa để cho phép tạo và xử lý các khối khi có các khối vẫn đang được bộ lưu trữ xử lý;
    • Thời gian đăng ký phân vùng (zvol) trong hệ thống đã được giảm bớt. Khi một nhóm chứa một số lượng lớn phân vùng, chúng hiện có sẵn ngay sau khi thực hiện “nhập zpool”;
    • Đã thêm hỗ trợ tăng tốc phần cứng cho phép tính băm SHA256 và hoạt động mã hóa AES-GSM bằng cách sử dụng chip hỗ trợ Intel QAT (Công nghệ hỗ trợ nhanh). Đã thêm hỗ trợ cho các công cụ tăng tốc phần cứng cho chipset Intel C62x và CPU Atom C3000.

Nguồn: opennet.ru

Thêm một lời nhận xét