
ZFS Snapshots là gì?
ZFS Snapshot là tính năng chụp nhanh trạng thái hệ thống tập tin tại một thời điểm, cho phép quay lại bản sao dữ liệu cũ chỉ trong vài giây. Không phải bản sao toàn bộ — snapshot dùng kỹ thuật copy-on-write để chiếm gần như không thêm dung lượng nào. Một snapshot ZFS cho phép bạn phục hồi file bị xóa, hoàn tác thay đổi hệ thống, hay rollback thẳng về trạng thái ổn định khi cập nhật phần mềm thất bại.
ZFS (Zettabyte File System) ban đầu được phát triển bởi Sun Microsystems cho hệ điều hành Solaris, sau đó phổ biến rộng rãi qua OpenZFS — bản triển khai nguồn mở chạy trên Linux, FreeBSD và macOS. Snapshot là một trong những lý do chính khiến giới quản trị hệ thống chọn ZFS.
Copy-on-write: Nguyên lý cốt lõi

Thay vì ghi đè dữ liệu cũ, ZFS ghi block dữ liệu mới vào vị trí khác rồi cập nhật con trỏ. Block cũ vẫn còn nguyên trên đĩa. Snapshot chỉ đơn giản giữ lại các block cũ này — không hề sao chép dữ liệu.
Khi tạo snapshot, ZFS chỉ “khóa” con trỏ ở trạng thái hiện tại. Mọi thay đổi sau đó đều ghi vào block mới. Tổng chi phí cho snapshot đầu tiên chỉ vài KB metadata. Hệ quả thú vị: bạn có thể chụp hàng trăm snapshot, mỗi cái mỗi vài phút, mà dung lượng tăng không đáng kể — trừ khi dữ liệu thay đổi nhiều giữa các snapshot.
Tạo snapshot và rollback
Lệnh tạo snapshot cực kỳ đơn giản — gần như tức thời dù tập tin hệ thống lớn bao nhiêu:
sudo zfs snapshot rpool/data@backup-0310
Tên snapshot gồm tên dataset và tên snapshot ngăn cách bằng @. Danh sách snapshot hiện có:
sudo zfs list -t snapshot
Để quay về trạng thái snapshot (dữ liệu hiện tại bị thay thế bằng dữ liệu trong snapshot):
sudo zfs rollback rpool/data@backup-0310
Lưu ý: rollback chỉ hoạt động nếu không có snapshot con cháu nào được tạo sau snapshot bạn muốn quay lại. Nếu có, dùng zfs destroy các snapshot đó trước.
Khôi phục file riêng lẻ
Rollback toàn bộ dataset sẽ mất mọi thay đổi sau snapshot, kể cả những thay đổi bạn muốn giữ. Để lấy lại chỉ một file đã bị xóa, hãy clone snapshot thay vì rollback:
sudo zfs clone rpool/data@backup-0310 rpool/data-restore
Clone tạo dataset mới chia sẻ block dữ liệu với snapshot. Nó chiếm gần như không có thêm dung lượng ban đầu, và copy-on-write đảm bảo dữ liệu gốc không bị ảnh hưởng. Gắn dataset clone vào thư mục để truy cập file:
sudo zfs set mountpoint=/mnt/restore rpool/data-restore
Gửi snapshot sang máy khác
Snapshot không chỉ để phục hồi tại chỗ — chúng còn nền tảng của sao lưu từ xa qua lệnh zfs send. Sao lưu lần đầu:
sudo zfs send rpool/www@full | ssh backup@server "sudo zfs recv backup/www"
Lần sau, thay vì gửi lại toàn bộ, chỉ gửi phần khác biệt giữa hai snapshot — cực nhanh và tiết kiệm băng thông:
sudo zfs send -i rpool/www@full rpool/www@incr | ssh backup@server "sudo zfs recv backup/www"

Kỹ thuật zfs send -i (incremental) là cách người quản trị đồng bộ hàng terabyte dữ liệu lên máy sao lưu mỗi đêm chỉ với một phần nhỏ băng thông. Kết hợp với cron, bạn có chế độ sao lưu “differential backup” tự động, phục hồi point-in-time chính xác đến từng giờ.
Tự động hóa với ZFS Auto-Snapshot
Chụp tay snapshot mỗi ngày rất phiền. Công cụ zfs-auto-snapshot chạy qua cron thực hiện chiến lược phổ biến: snapshot mỗi 15 phút, hàng giờ, hàng ngày, hàng tuần, với chính sách giữ lại hợp lý:
zfs-auto-snapshot -d 15m -k 4
zfs-auto-snapshot -d 1d -k 14
Các distro như Ubuntu, Proxmox VE, TrueNAS đều có gói cài sẵn. Proxmox và TrueNAS thậm chí tích hợp snapshot vào giao diện web — tạo, giữ, khôi phục snapshot bằng vài cú click.
ZFS Snapshot trên các hệ thống phổ biến
| Hệ thống | Tích hợp | Rollback UI | Khuyến nghị |
|---|---|---|---|
| Proxmox VE | Sẵn có | Có (giao diện web) | Rất tốt cho VM/CT |
| TrueNAS | Sẵn có | Có (giao diện web) | Tốt cho NAS gia đình |
| Ubuntu/ZFS | Gói zfsutils-linux |
Dòng lệnh | Phù hợp desktop |
| Linux thường | Cài thêm OpenZFS | Dòng lệnh | Yêu cầu module kernel |
So sánh với Btrfs và Timeshift
Người dùng Linux thường cân nhắc ZFS với Btrfs và công cụ Timeshift. Cả ba đều dùng copy-on-write và hỗ trợ snapshot, nhưng khác nhau về điểm mạnh:
| Tiêu chí | ZFS | Btrfs | Timeshift |
|---|---|---|---|
| Trưởng thành | Rất cao (dòng Solaris) | Trung bình | Lớp bao trên rsync |
| Nén/checksum | Có, mạnh | Có | Không |
| Sao lưu từ xa | zfs send hiệu quả |
send/receive có giới hạn |
Phải dùng công cụ khác |
| Raid-Z | Tuyệt vời | RAID5 còn lỗi | Không |
ZFS nổi trội ở sao lưu từ xa và RAID phần mềm. Btrfs được tích hợp sẵn kernel Linux. Timeshift phù hợp người dùng desktop muốn rollback hệ thống đơn giản mà không muốn học dòng lệnh ZFS.
Lưu ý và hạn chế
- Chi phí trên mỗi snapshot phụ thuộc mức thay đổi dữ liệu: Snapshot giữ block cũ nên database thay đổi liên tục sẽ làm snapshot tốn dung lượng thật
- RAM: ZFS thường dùng ARC bộ nhớ cache, khuyến nghị dành 1GB RAM mỗi 1TB dữ liệu thô
- Không thay thế sao lưu offsite: Snapshot chết cùng đĩa. Luôn kết hợp
zfs sendtới máy khác hoặc dịch vụ cloud - Quản lý vòng đời: Snapshot cũ cần xóa định kỳ (
zfs destroy) để tránh đĩa đầy

Kết luận
ZFS Snapshot là một trong những cơ chế bảo vệ dữ liệu vượt trội nhất trong thế giới lưu trữ hiện đại. Tạo gần như tức thời, chiếm ít dung lượng nhờ copy-on-write, phục hồi linh hoạt từ file riêng lẻ đến rollback toàn bộ, và sao lưu từ xa cực hiệu quả với zfs send.
Nếu bạn đang chạy Proxmox, TrueNAS hoặc server Linux, dành thời gian thiết lập snapshot tự động hôm nay — khi hệ thống hỏng, bạn sẽ cảm ơn chính mình quá khứ đã làm điều đó.
