Tại sao Btrfs trên Fedora vẫn cần thêm Snapper?
Sau hơn 2 năm dùng Fedora làm máy code chính, mình cực kỳ thích tốc độ cập nhật package tại đây. Tuy nhiên, cái gì cũng có giá của nó. Đã có lần mình “ăn hành” vì bản cập nhật Kernel 6.x xung đột với driver NVIDIA khiến máy treo cứng ngay trước giờ demo. Dù Fedora dùng Btrfs làm mặc định, nhưng nó lại thiếu một cơ chế tự động bảo vệ người dùng.
Btrfs rất mạnh ở khả năng tạo snapshot (ảnh chụp trạng thái) trong tích tắc. Đáng tiếc là Fedora không tự động chụp ảnh hệ thống trước khi bạn gõ dnf update. Snapper sinh ra để giải quyết đúng lỗ hổng này.
Hãy coi Snapper như một chiếc máy ảnh tự động. Mỗi khi bạn cài phần mềm hay nâng cấp OS, nó sẽ lưu lại trạng thái hệ thống. Nếu bản update làm lỗi Wifi hoặc mất âm thanh, bạn chỉ cần một lệnh để “quay ngược thời gian” về lúc máy còn chạy ngon lành.
Bước 1: Cài đặt Snapper và Plugin DNF
Đầu tiên, chúng ta cần cài Snapper cùng một plugin để nó tự động kích hoạt mỗi khi DNF làm việc.
sudo dnf install snapper python3-dnf-plugin-snapper
Gói python3-dnf-plugin-snapper chính là linh hồn của combo này. Nó giúp hệ thống tự tạo một snapshot “Pre” (trước) và một snapshot “Post” (sau) mỗi khi bạn cài đặt bất kỳ thứ gì.
Bước 2: Cấu hình Snapper cho phân vùng Root
Mặc định Snapper chưa theo dõi phân vùng nào cả. Bạn cần chỉ định nó bảo vệ phân vùng root (/) – nơi chứa toàn bộ linh hồn của hệ điều hành.
Chạy lệnh sau để khởi tạo:
sudo snapper -c root create-config /
Lệnh này sẽ tạo file cấu hình tại /etc/snapper/configs/root. Đồng thời, một subvolume ẩn tại /.snapshots cũng được tạo ra để lưu trữ các bản chụp sau này.
Cấp quyền cho User thường
Thông thường chỉ root mới xem được snapshot. Để tiện sử dụng, bạn nên thêm user của mình vào file cấu hình:
sudo vi /etc/snapper/configs/root
Tìm dòng ALLOW_USERS="" và điền username của bạn vào, ví dụ: ALLOW_USERS="haoit".
Bước 3: Tối ưu dung lượng (Cleanup)
Snapshot Btrfs không tốn dung lượng ngay lập tức. Tuy nhiên, nếu bạn sửa đổi 10GB dữ liệu, bản snapshot cũ sẽ giữ lại 10GB đó để dự phòng. Nếu không dọn dẹp, ổ cứng của bạn sẽ đầy rất nhanh.
Hãy điều chỉnh các thông số trong file /etc/snapper/configs/root để cân bằng giữa an toàn và không gian lưu trữ:
# Chỉ giữ lại 5 snapshot theo giờ và 7 snapshot theo ngày
TIMELINE_LIMIT_HOURLY="5"
TIMELINE_LIMIT_DAILY="7"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="0"
# Giữ tối đa 10 snapshot do DNF tạo ra
NUMBER_LIMIT="10"
NUMBER_LIMIT_IMPORTANT="5"
Đừng quên kích hoạt service tự động dọn dẹp của hệ thống:
sudo systemctl enable --now snapper-cleanup.timer
Bước 4: Kiểm tra thành quả
Thử cài một gói nhẹ nhàng như htop để xem Snapper hoạt động ra sao:
sudo dnf install htop
Sau đó, kiểm tra danh sách snapshot:
snapper list
Bạn sẽ thấy hai dòng mới xuất hiện với mô tả “number”. Đây là bảo hiểm giúp bạn an tâm hơn trước mỗi lần vọc vạch hệ thống.
Bước 5: Cách Rollback khi gặp sự cố
Đây là lúc Snapper tỏa sáng. Giả sử driver mới làm máy bạn không vào được giao diện đồ họa.
Trường hợp 1: Vẫn vào được Terminal
Xác định ID của snapshot ổn định nhất (thường là cái “Pre” gần nhất) bằng lệnh snapper list. Nếu ID đó là 15, hãy gõ:
sudo snapper rollback 15
Lúc này, Snapper sẽ đặt snapshot 15 làm phân vùng root mặc định. Bạn chỉ cần reboot là máy sẽ quay về đúng trạng thái tại thời điểm đó.
Trường hợp 2: Máy không boot được
Nếu đen đủi đến mức không thấy màn hình đăng nhập, bạn nên cài thêm grub-btrfs. Công cụ này sẽ thêm danh sách snapshot vào ngay menu khởi động của GRUB.
sudo dnf install grub-btrfs
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Từ giờ, nếu máy lỗi, bạn chỉ cần chọn một bản snapshot cũ ngay từ lúc bật máy để cứu hộ.
Mẹo nhỏ khi quản lý Btrfs
- Đo dung lượng thực tế: Lệnh
df -hthường báo sai dung lượng Btrfs. Hãy dùngsudo btrfs filesystem du -s /để biết chính xác snapshot đang chiếm bao nhiêu GB. - Loại trừ thư mục: Đừng snapshot các thư mục như
/var/cachehay/var/tmp. Chúng thay đổi liên tục nhưng không có giá trị khi phục hồi hệ điều hành. - Xóa thủ công: Nếu vừa nâng cấp phiên bản Fedora (ví dụ từ 39 lên 40) và thấy ổn định, hãy dùng
snapper delete [ID]để giải phóng vài GB dung lượng cũ.
Thiết lập Snapper chỉ mất 5 phút nhưng giúp bạn tiết kiệm hàng giờ cài lại win (hoặc Linux). Từ nay, mỗi lần gõ sudo dnf upgrade, bạn có thể tự tin nhấn Enter mà không cần lo lắng về rủi ro hỏng hóc.

