Đến nội dung chính
Infra Notes
DOCS / UTF-8
Deployment // Triển khai hệ thốngtruenas

TrueNAS — Snapshot, replication và backup

DOC PATH deployments/truenas/replication-backup

Doc Type
Deployment
Technology
truenas
Status
Active
Version
25.10.6
Tags
truenasBackupreplication

RPO/RTO, snapshot, replication, retention và kiểm thử backup. Đọc theo thứ tự các chương hoặc chọn mục cần tra cứu trong mục lục.

Thiết lập local replication từ tank/replication-lab6 sang backup/replication-lab6, kiểm tra full replication, incremental replication, retention và khả năng tiếp tục đồng bộ sau restore.

  • Pool tank healthy, có dataset riêng để thử nghiệm.
  • Thêm disk trống khoảng 20 GiB cho pool backup; xác nhận không phải boot disk, disk của tank hoặc ZVOL zd0.
  • Create Pool có thể làm mất dữ liệu disk được chọn; cần xác nhận đúng thiết bị trước thao tác.
  • Có dung lượng cho snapshot, replica và restore; tạo lịch trong maintenance window.
  • Tên task và dataset dưới đây là inventory lab mẫu, không phải cấu hình production bắt buộc.

RPO (Recovery Point Objective) là lượng dữ liệu tối đa chấp nhận mất theo thời gian. RTO (Recovery Time Objective) là thời gian tối đa để khôi phục dịch vụ.

Ví dụ Diễn giải
RPO = 5 phút Recovery point nên không cũ hơn khoảng 5 phút.
RTO = 30 phút Dịch vụ phải phục hồi trong tối đa khoảng 30 phút.
Snapshot mỗi 5 phút Có thể hỗ trợ RPO nhỏ nhưng không tự tạo offsite backup.
Replication mỗi giờ Nếu source mất ngay trước lần replication kế tiếp, có thể mất gần 1 giờ dữ liệu.

Nguyên tắc 3-2-1 yêu cầu ít nhất 3 bản dữ liệu, gồm dữ liệu đang sử dụng và 2 bản backup; lưu trên 2 loại storage media khác nhau, trong đó ít nhất 1 bản backup ở offsite (địa điểm khác). Một pool mirror và snapshot trong chính pool đó chưa đáp ứng nguyên tắc này. Xem hướng dẫn 3-2-1 của Veeam.

  • Để backup tự động, cấu hình cả snapshot task và điều kiện kích hoạt replication theo RPO. Task Enabled nhưng không có lịch hoặc chỉ chạy Run Now vẫn là vận hành thủ công.
  • Giám sát tuổi recovery point, job error và chênh lệch source/destination.
  • Kiểm thử restore và lưu config/secret seed ngoài NAS.
  • readonly=on hạn chế ghi nhầm vào replica, không thay thế immutable backup hoặc việc phân tách quyền quản trị.

ZFS replication truyền snapshot từ source sang destination. Lần đầu thường cần gửi đầy đủ snapshot; các lần sau có thể incremental nếu hai bên còn common snapshot.

Snapshot A (common)
↓ source thay đổi
Snapshot B
↓ zfs send incremental A→B
Destination nhận chỉ phần thay đổi

Nếu source và destination không còn common snapshot phù hợp, incremental replication có thể thất bại hoặc phải bắt đầu lại từ đầu tùy policy. Vì vậy retention policy ở source và destination phải được thiết kế đồng bộ với RPO và dung lượng.

Đặt destination readonly giúp giảm rủi ro user hoặc ứng dụng ghi nhầm lên bản backup. Khi disaster recovery, có thể restore sang dataset mới hoặc promote/cutover theo quy trình đã kiểm thử.

Một task từng SUCCESS không chứng minh backup hiện tại còn mới. Quản trị viên phải kiểm tra tuổi snapshot, last successful run, source latest snapshot và destination latest snapshot.

Tạo pool backup từ disk mới. Tạo dataset Generic tank/replication-lab6, LZ4, recordsize 128K, atime off, readonly off.

Trên TrueNAS, chỉ đọc:

Terminal window
zpool status tank
zpool status backup
zfs get compression,recordsize,atime,readonly tank/replication-lab6

Chuẩn bị một bộ dữ liệu thử đại diện, gồm file nhỏ và file nhị phân. Lưu manifest SHA-256 ngoài source dataset và giữ thêm bản sao ở nơi độc lập. File thử phải có tên riêng, không ghi đè dữ liệu đang dùng.

Trong Data Protection → Periodic Snapshot Tasks:

Trường Cấu hình thử nghiệm
Dataset tank/replication-lab6
Recursive False
Schedule Mỗi 5 phút
Lifetime 1 DAY
Naming schema lab6-auto-%Y-%m-%d_%H-%M
Enabled True để chạy theo lịch

Đợi snapshot thực tế xuất hiện và kiểm tra nội dung/checksum. Snapshot tạo trước khi ứng dụng ghi thay đổi không thể chứa dữ liệu mới đó.

Trong Data Protection → Replication Tasks:

Trường Cấu hình
Direction / Transport PUSH / LOCAL
Source / Destination tank/replication-lab6 → backup/replication-lab6
Recursive False
Snapshot selection Khớp naming schema của snapshot task
Readonly policy SET
Retention SOURCE
Replicate from scratch Không tự cho phép khi mất incremental base

Lần đầu Run Now phải truyền full snapshot; log có incremental_base=None. Sau khi job hoàn tất, kiểm tra destination, snapshot và checksum theo manifest. readonly=on ở replica là trạng thái mong đợi.

Terminal window
zfs get readonly,compression,recordsize backup/replication-lab6
zfs list -t snapshot -o name,creation,used,refer -r backup/replication-lab6
  1. Thêm hoặc sửa file thử trong source, lưu checksum mới ngoài dataset.
  2. Chờ hoặc tạo snapshot đúng schema sau thay đổi.
  3. Chạy replication; kiểm tra incremental_base trỏ common snapshot.
  4. Đối chiếu nội dung và checksum của các file đã thay đổi ở destination.
  5. Chạy lại khi không có snapshot mới có thể nhận No snapshots to send; không coi đó là lỗi nếu recovery point đã đúng.

Snapshot lưu trạng thái dữ liệu tại thời điểm tạo và không tự nhận các thay đổi tiếp theo. Vì vậy, thứ tự kiểm tra phải là: ghi dữ liệu → tạo snapshot → replication → kiểm tra bản đích.

Nếu lần truyền full dùng auto-* nhưng snapshot định kỳ đổi sang lab6-auto-*, bộ lọc chỉ nhận schema mới có thể loại common snapshot cũ và gây lỗi No incremental base.

Khi common snapshot cũ vẫn hợp lệ, cho phép cả hai schema trong giai đoạn chuyển đổi; kiểm tra lần truyền incremental thành công trước khi chỉ giữ schema mới. Không bật from-scratch hoặc xóa destination để vượt lỗi; xem Lỗi storage và dịch vụ.

Retention SOURCE áp dụng chính sách lưu giữ snapshot của nguồn cho đích backup. Việc dọn snapshot ở nguồn có thể ảnh hưởng lịch sử phục hồi ở đích; cần giữ common snapshot phù hợp để tiếp tục incremental replication.

Không cần xóa source để kiểm thử restore. Khôi phục replica sang dataset mới, đối chiếu dữ liệu/checksum, quyền và đường dẫn rồi mới cân nhắc chuyển workload. Xem Khôi phục dữ liệu.

Nếu dùng dataset phục hồi làm nguồn mới, kiểm tra common snapshot trước khi tiếp tục replication. Giữ replica chỉ đọc và kiểm tra bản đích sau lần truyền tiếp theo.