Btrfs là gì? Hệ thống tệp copy-on-write cho Linux và snapshot

Btrfs là gì? Hệ thống tệp copy-on-write cho Linux

Btrfs là hệ thống tệp (filesystem) copy-on-write cho Linux, được xây dựng trên cấu trúc dữ liệu B-tree và cung cấp sẵn snapshot, tự sửa lỗi và quản lý volume. Bài viết này giải thích cơ chế hoạt động, các tính năng đáng chú ý và cách so sánh Btrfs với ext4 cùng XFS.

Danh sách subvolume Btrfs hiển thị cây thư mục phân cấp cùng các bản snapshot có ID và mức độ dữ liệu

Btrfs là gì và lịch sử ra đời

Btrfs là viết tắt của B-tree File System. Dự án bắt đầu năm 2007 tại Oracle nhằm thay thế cho những hạn chế của ext3 và ext4, rồi được hợp nhất vào nhánh chính của kernel Linux từ phiên bản 2.6.29. Từ đó Btrfs trở thành lựa chọn mặc định của nhiều bản phân phối như Fedora, openSUSE và Arch Linux.

Khác biệt nền tảng của Btrfs là toàn bộ dữ liệu người dùng và metadata đều nằm trong cùng một cây B-tree. Nhờ vậy, filesystem luôn ở trạng thái nhất quán kể cả khi hệ thống mất điện giữa chừng, thay vì phải chạy một thao tác sửa chữa dài nghỉ phục vụ như ext4.

Cơ chế copy-on-write hoạt động thế nào

Copy-on-write nghĩa là không ghi đè lên khối dữ liệu cũ. Khi bạn sửa một tệp, Btrfs ghi nội dung mới ra một khối trống mới rồi mới trỏ vùng dữ liệu cũ sang ổ khác. Dữ liệu gốc vẫn nguyên vẹn cho tới khi không còn khả năng tham chiếu tới nó.

  • Không bao giờ ghi đè dữ liệu đang dùng, nên không có hiện tượng dữ liệu nửa vời như ở hệ thống ghi trực tiếp.
  • Snapshot gần như miễn phí, vì bản sao chỉ là một con trỏ trỏ tới các khối dữ liệu không đổi.
  • Không cần chạy fsck dài, cấu trúc cây luôn hợp lệ ở mọi thời điểm.

Đổi lại, mỗi lần ghi dữ liệu người dùng thường phải cấp phát khối mới, khiến ứng dụng ghi tuần tự trên đĩa cơ có thể chậm hơn ext4.

Tính năng nổi bật

Subvolume và snapshot

Subvolume là một hệ thống tệp nhỏ nằm bên trong filesystem Btrfs, có không gian chỉ số riêng nhưng vẫn chia sẻ khối lưu trữ chung. Bạn có thể tạo snapshot read-only hoặc read-write cho một subvolume bất kỳ trong tích tắc, rồi dùng nó để thử nghiệm hoặc khôi phục.

Quota và tổng hợp dung lượng

Hệ thống tệp theo dõi mức sử dụng theo subvolume và theo thiết bị. Bạn giới hạn được bao nhiêu không gian cho từng thư mục con, hữu ích khi chia sẻ ổ cho nhiều dịch vụ hay container.

Quản lý volume tích hợp

Btrfs có sẵn khả năng nhóm nhiều ổ thành một filesystem duy nhất với các cấp hình RAID 0, 1, 5, 6, 10 và RAID10 với ba bản sao. Vì vậy bạn không cần cấp hình LVM cho những nhu cầu như mirror dữ liệu hoặc bóp nhóm nhiều đĩa.

Sửa lỗi và kiểm tra toàn vẹn

Tính năng scrub quét kiểm tra toàn bộ checksum của dữ liệu và báo cáo khối hỏng, kết hợp với nhiều bản sao để sửa tự động. Đây là lớp phòng vệ trước hiện tượng bit rot mà người dùng NAS gia đình rất cần.

Nén và chuyển đổi nơi chứa

Dữ liệu có thể nén bằng zstd hoặc lzo, và bạn chuyển file giữa các ổ khác nhau trong cùng pool bằng cơ chế balance mà không cần sao chép thủ công.

Deduplication và cấu hình linh hoạt

Các phiên bản mới hỗ trợ deduplication dựa trên khối khi bật qua tuỳ chọn cấu hình, phù hợp với môi trường ảo hoá nhiều máy ảo có dữ liệu trùng lặp. Ngoài ra bạn có thể đặt giới hạn ưu tiên I/O cho từng tiến trình thông qua ionice tích hợp, giúp giảm hiện tượng tiến trình sao lưu làm nghẽn ứng dụng đang chạy.

Kinh nghiệm thực tế và những điều cần biết

Dù Btrfs đầy tính năng, vẫn có vài điểm cần lưu ý khi dùng trong sản xuất. Bộ nhớ đệm (page cache) ghi dồn tạo nhiều dữ liệu chưa ghi xuống đĩa, và Btrfs dùng tính năng này để tạo snapshot, nên khi chụp ảnh trạng thái thì cần cân nhắc thời điểm sync.

Việc khôi phục từ snapshot cũng không hoàn toàn tự động: để trở về trạng thái trước, bạn thường cần boot vào môi trường cứu hộ rồi gắn subvolume cần khôi phục thành thư mục gốc. Vì vậy nên luyện tập quy trình này ít nhất một lần trước khi cần đến nó trong tình huống khẩn cấp.

Cuối cùng, Btrfs không phải lựa chọn lý tưởng cho mọi workload. Các thư viện cơ sở dữ liệu thường hưởng lợi từ truy vấn ngẫu nhiên nhiều hơn là tốc độ tuần tự, vì vậy hãy đo lại trước khi chuyển đổi hệ thống đang chạy ổn định.

Kết quả lệnh btrfs filesystem usage cho thấy kích thước thiết bị, dung lượng đã phân bổ và tỷ lệ dữ liệu trên metadata

So sánh Btrfs với ext4 và XFS

Bảng dưới đây tóm tắt các khác biệt chính giữa ba hệ thống tệp phổ biến trên Linux.

Tiêu chí Btrfs ext4 XFS
Cấu trúc dữ liệu B-tree hợp nhất Cây extent truyền thống Cây B+ tree cho metadata
Snapshot Có, tức thời Không Chưa hỗ trợ mặc định
Quota Có, theo subvolume Project quota Có
Tự sửa lỗi Có, qua checksum và bản sao Không Có ở mức độ hạn chế
Quản lý RAID nhiều ổ Tích hợp sẵn Cần LVM hoặc mdadm Cần LVM hoặc mdadm

XFS vẫn thắng về throughput cho các tệp rất lớn như dữ liệu video hay ảnh khoa học. ext7 vẫn là lựa chọn an toàn cho hệ thống tối giản. Nhưng nếu bạn muốn chụp ảnh trạng thái hệ thống trước khi nâng cấp, giới hạn dung lượng theo thư mục và phát hiện lỗi ổ đĩa sớm thì Btrfs vượt trội rõ rệt.

Cách dùng Btrfs trên Ubuntu và Fedora

Danh sách ảnh chụp do snapper tạo trên filesystem Btrfs, mỗi dòng là một snapshot đã dùng bao nhiêu dung lượng

Trên Fedora, Btrfs là filesystem mặc định và cây lệnh quản lý đã có sẵn qua gói btrfs-progs. Bạn có thể xem danh sách subvolume, dung lượng và trạng thái các thiết bị với btrfs filesystem usage, btrfs subvolume list và btrfs device show.

Trên Ubuntu, Bạn cần tạo phân vùng riêng cho Btrfs vì trình cài đặt mặc định vẫn dùng ext4. Các thao tác tạo subvolume, gắn snapshot và chạy scrub cũng dùng đúng bộ lệnh đó, nên kiến thức từ Fedora áp dụng được nguyên vẹn.

Tài liệu chính thức nằm ở hướng dẫn giới thiệu trong wiki Btrfs và phần Btrfs trong tài liệu kernel Linux.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

TLS 1.3 là gì? Giao thức bảo mật kết nối Internet

TLS 1.3 là gì? Giao thức bảo mật kết nối Internet TLS 1.3 là phiên bản mới nhất của giao thức Transport Layer Security, chuẩn mã hóa được dùng phổ…

Xem thêm

Wavelet là gì? Phép biến đổi sóng xử lý tín hiệu và nén dữ liệu

Wavelet (sóng con) là một dạng dao động ngắn, bắt đầu ở biên độ bằng 0, tăng hoặc giảm rồi trở lại 0 một hay nhiều lần. Phép biến đổi…

Xem thêm

NFC là gì? Công nghệ giao tiếp không dây tầm ngắn và cách dùng

NFC là gì? Công nghệ giao tiếp không dây tầm ngắn và cách dùng Chip NFC cỡ nhỏ dán trên thẻ, kích thước tương đương một đồng tiền Nguyên lý…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất