
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.

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.

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

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.
