Tại sao bạn nên quan tâm đến Btrfs Transparent Compression?
Sau hơn 2 năm dùng Fedora làm máy code chính, mình rất ưng tốc độ cập nhật package của nó. Tuy nhiên, một vấn đề muôn thuở là ổ SSD (thường chỉ 256GB hoặc 512GB) rất nhanh đầy. Chỉ cần vài project chứa node_modules, file log phình to hay các bản build Docker image là bộ nhớ sẽ báo đỏ ngay lập tức.
Đây là lúc Btrfs Transparent Compression phát huy tác dụng. Hãy tưởng tượng nó như một bộ lọc thông minh: mỗi khi bạn ghi dữ liệu, hệ thống tự động nén lại trước khi đẩy xuống chip nhớ. Khi cần dùng, nó lại tự giải nén tức thì. Toàn bộ quá trình diễn ra ở tầng filesystem. Phần mềm của bạn không hề hay biết và cũng không cần thay đổi bất kỳ dòng code nào.
Lợi ích lớn nhất là tiết kiệm dung lượng, thường từ 30% đến 50% với dữ liệu lập trình. Thú vị hơn, nó còn giúp tăng hiệu suất I/O. Nghe có vẻ vô lý vì CPU phải tốn công xử lý, nhưng thực tế tốc độ ghi của SSD thường chậm hơn nhiều so với tốc độ xử lý của CPU hiện đại. Bằng cách nén nhỏ file, CPU đẩy ít dữ liệu xuống ổ đĩa hơn. Việc này vừa giúp ghi file nhanh hơn, vừa giảm chỉ số TBW (Total Bytes Written), giúp kéo dài tuổi thọ SSD của bạn.
Zstd hay LZO: Thuật toán nào tối ưu nhất?
Btrfs hỗ trợ vài thuật toán nén, nhưng thực tế bạn chỉ cần cân nhắc hai cái tên:
- LZO: Tốc độ cực nhanh, tốn rất ít tài nguyên nhưng tỷ lệ nén thấp. Đây là lựa chọn cho các máy đời cũ hoặc CPU đời tống.
- ZSTD (Zstandard): Tiêu chuẩn hiện đại do Facebook phát triển. Nó cân bằng hoàn hảo giữa tốc độ và khả năng nén. Đây cũng là lựa chọn mặc định mà cộng đồng Fedora tin dùng.
Với các dòng laptop chip Intel Gen 10 hoặc AMD Ryzen trở lên, mình khuyên bạn nên dùng zstd. Mức nén 1 hoặc 3 là lý tưởng cho nhu cầu hàng ngày, đảm bảo máy vẫn mượt mà ngay cả khi bạn đang compile các project lớn.
Các bước cấu hình chi tiết trên Fedora
Fedora đã dùng Btrfs từ bản 33, nhưng tính năng nén thường chưa được bật ở mức tối ưu nhất. Chúng ta sẽ cùng tinh chỉnh lại cấu hình hệ thống qua 3 bước đơn giản.
Bước 1: Kiểm tra trạng thái mount
Trước tiên, hãy xem các phân vùng hiện tại đang chạy với tùy chọn gì:
mount | grep btrfs
Nếu kết quả chưa có dòng compress=zstd:1 hoặc tương tự, nghĩa là tính năng nén chưa được kích hoạt cho các dữ liệu mới.
Bước 2: Chỉnh sửa file /etc/fstab
Đây là file quản lý việc gắn ổ đĩa khi khởi động. Bạn cần dùng quyền root để chỉnh sửa:
sudo nano /etc/fstab
Hãy tìm dòng mount phân vùng root (/) và /home. Thêm tham số compress-force=zstd:3 vào cột tùy chọn. Cấu trúc sẽ trông như thế này:
# Trước khi sửa:
UUID=xxx-yyy / btrfs subvol=root,defaults 0 0
# Sau khi sửa:
UUID=xxx-yyy / btrfs subvol=root,defaults,compress-force=zstd:3 0 0
Giải thích nhỏ: Mình dùng compress-force thay vì compress thông thường. Mặc định, Btrfs sẽ ngừng nén nếu thấy file đó “khó nhằn”. Tùy chọn force sẽ ép hệ thống nén mọi thứ, giúp tối ưu tối đa cho các file text, source code và log.
Bước 3: Áp dụng thay đổi
Bạn không cần khởi động lại máy. Chỉ cần chạy lệnh remount để hệ thống nhận cấu hình mới:
sudo mount -o remount,compress-force=zstd:3 /
sudo mount -o remount,compress-force=zstd:3 /home
Nén toàn bộ dữ liệu cũ
Lưu ý rằng việc sửa fstab chỉ có tác dụng với các file tạo mới từ bây giờ. Để nén đống dữ liệu cũ đang chiếm chỗ, bạn cần chạy lệnh defragment:
# Nén lại toàn bộ phân vùng root
sudo btrfs filesystem defragment -r -v -czstd /
# Nén lại thư mục home
sudo btrfs filesystem defragment -r -v -czstd /home
Quá trình này sẽ đọc lại toàn bộ file và ghi chúng xuống đĩa dưới dạng nén. Tùy vào lượng code và file log bạn có mà việc này mất từ vài phút đến nửa tiếng.
Kiểm tra thành quả: Bạn tiết kiệm được bao nhiêu GB?
Lệnh df -h sẽ không cho bạn thấy dung lượng thực tế sau khi nén. Bạn cần cài một công cụ chuyên dụng là compsize:
sudo dnf install compsize
Thử kiểm tra thư mục /var/log hoặc folder project của bạn:
sudo compsize -x /var/log
Kết quả thực tế trên máy mình thường như sau:
Processed 1528 files, 212530 regular nodes
Data to compress: 1.2GB
Data actually stored: 180MB
Compression ratio: 15%
Dòng Compression ratio: 15% nghĩa là dữ liệu chỉ còn chiếm 15% dung lượng gốc. Thật ấn tượng đúng không?
Kinh nghiệm thực tế
Sau một thời gian dài sử dụng, mình có vài lời khuyên cho bạn:
- Về Database: Nếu bạn chạy PostgreSQL hoặc MySQL nặng, hãy cân nhắc tắt nén cho thư mục data của chúng để tránh lag khi ghi dữ liệu liên tục.
- File media: Các định dạng như .jpg, .mp4 hay .zip đã được nén sẵn. Btrfs sẽ không giúp ích gì nhiều cho các thư mục chứa phim ảnh.
- Điểm ngọt (Sweet spot): Zstd mức 3 là lựa chọn tốt nhất. Nâng lên mức 10-15 chỉ khiến CPU nóng thêm mà dung lượng tiết kiệm được không đáng bao nhiêu.
Bật Transparent Compression là việc đầu tiên mình làm sau khi cài Fedora. Nó giúp chiếc laptop 256GB của mình hoạt động thoải mái như một ổ 400GB. Chúc các bạn thực hiện thành công!

