Bản sao lưu ZFS: Cách tạo, khôi phục và tự động hóa

10 phút đọc - 5 tháng 5, 2026

hero section cover
Mục lục
  • Bản sao ZFS: Cách tạo, khôi phục và tự động hóa
  • Cách thức hoạt động của ảnh chụp nhanh ZFS
  • Tạo ảnh chụp nhanh
  • Khôi phục từ ảnh chụp nhanh
  • Quản lý và xóa các bản sao lưu
  • Tự động hóa việc lưu trữ với Sanoid
  • Sao chép ngoài trang web bằng zfs send
  • Lưu ý về bảo vệ chống ransomware
  • Đề xuất video
  • Những suy nghĩ cuối cùng
Chia sẻ

Tìm hiểu cách tạo, khôi phục và tự động hóa các bản sao lưu ZFS trên Linux. Bao gồm các lệnh, khôi phục, chính sách lưu trữ và sao chép ngoài site với Sanoid

Bản sao ZFS: Cách tạo, khôi phục và tự động hóa

Bản sao lưu ZFS là bản sao chỉ đọc, tại một thời điểm cụ thể của hệ thống tệp của bạn. Nó được tạo ngay lập tức, không chiếm dung lượng cho đến khi dữ liệu thay đổi và cho phép bạn khôi phục hoặc phục hồi tệp trong vài giây. Nếu bạn quản lý máy chủ, các bản sao VPS hoặc bất kỳ thứ gì có dữ liệu mà bạn không thể để mất, bản sao lưu nên là một phần trong quy trình làm việc của bạn.

Bài đăng này trình bày cách thức hoạt động của ảnh chụp nhanh ZFS, cách sử dụng chúng và cách tự động hóa việc lưu giữ để chúng không bị chồng chất.

Cách thức hoạt động của ảnh chụp nhanh ZFS

ZFS sử dụng mô hình ghi khi sao chép (CoW). Khi bạn tạo bản sao lưu, ZFS không sao chép bất kỳ dữ liệu nào. Nó chỉ ghi lại trạng thái hiện tại của cây trỏ khối. Các thao tác ghi mới được thực hiện vào các khối trống, trong khi bản sao lưu vẫn tham chiếu đến các khối gốc.

Điều đó có nghĩa là các bản sao lưu được tạo ra trong vài micro giây bất kể kích thước của tập dữ liệu, và chúng không tiêu tốn thêm không gian nào khi được tạo ra. Chúng chỉ bắt đầu sử dụng không gian khi tập dữ liệu đang hoạt động thay đổi, vì bản sao lưu giữ lại các khối gốc mà nếu không sẽ được giải phóng.

Điều này hoàn toàn khác biệt so với các công cụ sao lưu cấp tệp như rsync hoặc tar, vốn quét và sao chép toàn bộ tệp. Nếu bạn thay đổi 4KB trong một tệp 10GB, rsync sẽ sao chép toàn bộ tệp. ZFS chỉ lưu trữ khối 4KB đó.

Các bản chụp nhanh cũng không thể thay đổi. Chúng được áp dụng ở chế độ chỉ đọc ở cấp độ nhân hệ điều hành, do đó các quy trình không gian người dùng (bao gồm cả ransomware) không thể sửa đổi chúng. Kết hợp với tính năng kiểm tra tổng kiểm tra tích hợp sẵn của ZFS, điều này có nghĩa là bạn có thể xác minh tính toàn vẹn của dữ liệu khi khôi phục.

Tạo ảnh chụp nhanh

Yêu cầu

Bạn cần cài đặt ZFS và thiết lập một pool. Trên Ubuntu 20.04+:

sudo apt update && sudo apt upgrade -y
sudo apt install zfsutils-linux -y
sudo modprobe zfs

Tạo một pool. Đối với một đĩa đơn (thường thấy trên VPS):

sudo zpool create tank /dev/sdb

Đối với cấu hình gương trên máy chủ chuyên dụng, hãy sử dụng ID đĩa thay vì tên thiết bị để tránh các vấn đề sau khi khởi động lại:

sudo zpool create tank mirror /dev/disk/by-id/ata-DISK1 /dev/disk/by-id/ata-DISK2

Bật tính năng nén (LZ4 nhanh và hiệu quả):

sudo zfs set compression=lz4 tank

Sau đó, tạo các bộ dữ liệu cho các tác vụ của bạn:

sudo zfs create tank/web
sudo zfs create tank/databases

Chụp ảnh nhanh

Lệnh cơ bản:

sudo zfs snapshot tank/web@before-update

Đối với tên có dấu thời gian (hữu ích khi sử dụng cron):

sudo zfs snapshot tank/db@$(date +%Y%m%d_%H%M%S)

Để chụp tất cả các tập dữ liệu con cùng một lúc, hãy sử dụng cờ tái nhập:

sudo zfs snapshot -r tank@daily_backup

Kiểm tra bằng:

sudo zfs list -t snapshot

Khôi phục từ ảnh chụp nhanh

Khôi phục các tệp riêng lẻ

Mỗi tập dữ liệu ZFS có một thư mục .zfs/snapshot ẩn tại điểm gắn kết của nó. Thư mục này sẽ không hiển thị trong ls, nhưng bạn có thể điều hướng trực tiếp đến nó:

ls /tank/web/.zfs/snapshot/before-update/

Để khôi phục một tệp riêng lẻ:

cp -p /tank/web/.zfs/snapshot/before-update/config/app.conf /tank/web/config/

Tham số -p giữ nguyên quyền truy cập và dấu thời gian.

Khôi phục toàn bộ tập dữ liệu

Nếu bạn cần khôi phục lại mọi thứ, ví dụ như sau khi nâng cấp không thành công:

sudo zfs rollback tank/web@before-update

Quá trình này diễn ra gần như ngay lập tức vì ZFS cập nhật các con trỏ khối thay vì sao chép dữ liệu. Tuy nhiên, đây là thao tác phá hủy: tất cả các thay đổi được thực hiện sau bản sao lưu sẽ bị mất vĩnh viễn.

Nếu có các bản sao lưu mới hơn giữa trạng thái mục tiêu và trạng thái hiện tại, ZFS sẽ chặn quá trình khôi phục. Sử dụng tùy chọn -r để ép buộc quá trình này và xóa các bản sao lưu trung gian đó:

sudo zfs rollback -r tank/db@20260426_090000

Một thói quen tốt: tạo ảnh chụp nhanh trạng thái hiện tại (bị hỏng) trước khi khôi phục, để bạn có phương án dự phòng nếu cần.

Phương pháp khôi phụcTốc độRủi ro mất dữ liệuPhù hợp nhất với
Khôi phục tệp qua .zfsTùy thuộc vào kích thước tệpKhôngXóa nhầm, khôi phục tệp đơn lẻ
Khôi phục hoàn toànNgay lập tứcCao (mất tất cả các thay đổi sau khi chụp ảnh nhanh)Nâng cấp thất bại, sự cố trên toàn hệ thống
Sao chép để thử nghiệmNgay lập tứcKhông (tạo một bộ dữ liệu song song)Xác minh trước khi thực hiện khôi phục

Quản lý và xóa các bản sao lưu

Bản chụp bắt đầu với kích thước bằng 0 nhưng sẽ tăng lên khi dữ liệu trực tiếp bên dưới thay đổi. Để kiểm tra mức sử dụng dung lượng:

zfs list -t snapshot -o name,used,refer,creation

Cột USED hiển thị dung lượng dành riêng cho bản chụp đó. REFER hiển thị tổng dung lượng của tập dữ liệu tại thời điểm chụp bản chụp.

Để xóa bản sao lưu:

sudo zfs destroy tank/web@before-update

Bạn cũng có thể xóa theo mẫu:

sudo zfs destroy tank/web@daily-2026-04-%

Luôn thực hiện chạy thử trước:

sudo zfs destroy -nv tank/web@daily-%

Về mặt kỹ thuật, ZFS có thể xử lý hàng triệu bản sao lưu, nhưng hiệu suất sẽ giảm đáng kể khi vượt quá vài nghìn bản sao lưu trên mỗi bộ dữ liệu. Các lệnh như zfs listzfs destroy sẽ chậm lại rõ rệt. Hãy duy trì thời gian lưu trữ ở mức tối thiểu.

Tự động hóa việc lưu trữ với Sanoid

Sanoid là công cụ tiêu chuẩn để tự động hóa việc tạo và xóa ảnh chụp nhanh ZFS. Bạn định nghĩa các chính sách lưu trữ trong sanoid.conf, và công cụ này sẽ xử lý phần còn lại.

Một cấu hình sản xuất điển hình có thể trông như sau:

Loại khối lượng công việcHàng giờHàng ngàyHàng tuầnHàng tháng
Sản xuất tiêu chuẩn24-4830812
Cơ sở dữ liệu (tỷ lệ rời bỏ cao)72301224
Nhật ký / mức độ ưu tiên thấp12-24703
Phương tiện tĩnh0703

 

Sanoid cũng hỗ trợ tạo bản sao lưu dưới mỗi giờ thông qua tham số frequently. Thiết lập frequently = 96frequent_period = 15 sẽ tạo bản sao lưu mỗi 15 phút.

Lên lịch cho Sanoid qua cron để chạy mỗi phút hoặc mỗi 15 phút, và nó sẽ tự động tạo và xóa các bản sao lưu.

Sao chép ngoài trang web bằng zfs send

Các bản sao lưu trên một máy chủ duy nhất bảo vệ chống lại các thay đổi vô tình và sự cố phần mềm, nhưng không bảo vệ chống lại mất mát phần cứng. Để làm điều đó, hãy sao chép ngoài site bằng cách sử dụng zfs sendzfs receive qua SSH:

zfs send tank/web@backup | ssh user@remote zfs receive backup/web

Đối với truyền tải tăng dần (chỉ gửi những gì đã thay đổi kể từ bản chụp nhanh cuối cùng):

zfs send -i tank/web@old_snap tank/web@new_snap | ssh user@remote zfs receive backup/web

Công cụ đồng hành của Sanoid, syncoid, tự động hóa quy trình này và xử lý việc gửi dữ liệu theo từng phần, khắc phục lỗi và ghi nhật ký.

Lưu ý về bảo vệ chống ransomware

Các bản sao lưu ZFS là chỉ đọc ở cấp độ kernel, có nghĩa là phần mềm độc hại tiêu chuẩn không thể sửa đổi hoặc mã hóa chúng. Đó là một lớp bảo vệ mạnh mẽ. Nhưng nó không phải là bất khả xâm phạm: nếu kẻ tấn công có được quyền truy cập root, chúng có thể xóa các bản sao lưu trước khi mã hóa dữ liệu của bạn.

Bản chụp nhanh nên là một lớp trong chiến lược tổng thể. Hãy kết hợp chúng với sao chép ngoài trang web, quyền truy cập root bị hạn chế và bảo mật cấp mạng. Đừng chỉ dựa vào bản chụp nhanh.

Đề xuất video

Những suy nghĩ cuối cùng

Các bản sao lưu ZFS (ZFS snapshots) nhanh chóng, tiết kiệm không gian và dễ sử dụng một khi bạn nắm vững các kiến thức cơ bản. Chúng không phải là giải pháp thay thế cho các bản sao lưu ngoài site, nhưng chúng lấp đầy khoảng trống mà các công cụ sao lưu truyền thống không thể làm được: các điểm khôi phục tức thì, không tốn chi phí, mà bạn có thể tạo bất cứ khi nào cần.

Nếu bạn đang chạy ZFS trên VPS hoặc máy chủ chuyên dụng, hãy thiết lập Sanoid, xác định chính sách lưu giữ và tự động hóa quá trình sao chép. Việc cấu hình chỉ mất 30 phút nhưng sẽ tiết kiệm hàng giờ khi có sự cố xảy ra. Hãy thử nghiệm trên VPS hoặc máy chủ chuyên dụng của FDC.

Blog

Nổi bật trong tuần

Các bài viết khác
Bản sao lưu ZFS: Cách tạo, khôi phục và tự động hóa

Bản sao lưu ZFS: Cách tạo, khôi phục và tự động hóa

Tìm hiểu cách tạo, khôi phục và tự động hóa các bản sao lưu ZFS trên Linux. Bao gồm các lệnh, khôi phục, chính sách lưu trữ và sao chép ngoài site với Sanoid

10 phút đọc - 5 tháng 5, 2026

Colocation Hosting là gì? Hướng dẫn đầy đủ cho năm 2025

7 phút đọc - 11 tháng 9, 2025

Các bài viết khác
background image

Bạn có thắc mắc hoặc cần giải pháp tùy chỉnh?

icon

Các tùy chọn linh hoạt

icon

Phạm vi toàn cầu

icon

Triển khai ngay lập tức

icon

Các tùy chọn linh hoạt

icon

Phạm vi toàn cầu

icon

Triển khai ngay lập tức