Hôm qua tôi ngồi nghe bạn bè than thở về ZFS là "con quái vật ăn RAM" và bắt đầu nhớ lại ngày mình lần đầu cài đặt nó. Thú thật, hồi đó tôi cũng nghĩ giống vậy: "Tại sao phải phức tạp như thế khi chỉ cần vài cái đĩa HDD gắn vào RAID controller là chạy vèo vèo?".
Tuy nhiên, một sự cố nhỏ đã làm thay đổi hoàn toàn suy nghĩ của tôi về storage. Tôi từng dùng RAID 5 với card cứng trên server cũ. Mọi thứ chạy mượt mà, cho đến khi một ổ đĩa chết. Tôi nghĩ, "Dễ mà, thay ổ mới, để RAID tự rebuild là xong". Nhưng rồi thảm kịch xảy ra: quá trình rebuild kéo dài vài ngày, và trong lúc đó, một ổ thứ hai cũng phát sinh lỗi bad sector. Hệ thống sập, và quan trọng hơn, dữ liệu của tôi biến mất hoàn toàn vì tính toán parity lỗi thời. Lúc đó tôi mới thấm thía câu nói nổi tiếng: "RAID is not backup".
Từ ngày đó, tôi chuyển sang ZFS. Ban đầu, việc cài đặt hơi "nhức đầu" vì nó đòi hỏi kiến thức về pool, vdev và snapshot. Nhưng cái giá trị nhất ZFS mang lại là tính toàn vẹn dữ liệu (data integrity). Thay vì tin tưởng mù quáng vào hardware controller, ZFS tự tính checksum cho từng block dữ liệu. Nếu phát hiện lỗi bit flip (lỗi bit ngẫu nhiên mà mắt thường không thấy), nó tự sửa dựa trên replica trong mirror. Cảm giác yên tâm khi biết dữ liệu an toàn là không gì sánh bằng.
Về phần backup, tôi không dùng ZFS snapshot thay thế hoàn toàn cho quy trình sao lưu truyền thống, nhưng kết hợp chúng lại cực kỳ hiệu quả. Tôi dùng rsync để đồng bộ dữ liệu quan trọng ra một máy chủ khác hàng ngày, và dùng zfs send/recv để tạo ra các bản sao lưu trọn vẹn (incremental) nhanh hơn gấp nhiều lần so với rsync thông thường. Ví dụ, một lệnh đơn giản như:
zfs send pool/data@snapshot1 | zfs recv pool/backup
có thể thực hiện trong vài giây, trong khi rsync với hàng triệu file nhỏ sẽ mất hàng giờ. Tất nhiên, ZFS có nhược điểm là tiêu tốn RAM, nhưng với giá RAM hiện nay, việc hy sinh 16GB RAM để đổi lấy sự an toàn cho cả hệ thống dữ liệu là một "deal" rất hời.
Tóm lại, nếu bạn chỉ lưu file hình ảnh gia đình hay tài liệu văn phòng nhỏ, RAID 1 đơn giản là đủ. Nhưng nếu đó là môi trường dev, server quan trọng, hay dữ liệu không thể đánh đổi được, hãy nghĩ đến ZFS. Đừng chờ đến khi mất dữ liệu mới hối tiếc. Công nghệ thay đổi nhanh, nhưng nguyên tắc "3-2-1" trong backup vẫn là chân lý vĩnh cửu.