TrueNAS — Kiến trúc và nền tảng ZFS
DOC PATH reference/truenas/theory
Topology TrueNAS, ZFS, pool, VDEV, dataset, ZVOL và lựa chọn thiết kế. Đọc theo thứ tự các chương hoặc chọn mục cần tra cứu trong mục lục.
Phạm vi và kiến trúc
Mục có tiêu đề “Phạm vi và kiến trúc”Phạm vi và quy ước
Mục có tiêu đề “Phạm vi và quy ước”Phạm vi: TrueNAS SCALE và ZFS, từ tổ chức lưu trữ đến chia sẻ dữ liệu, bảo vệ dữ liệu và vận hành. Các ví dụ giải thích cơ chế, không xác nhận trạng thái hoặc kết quả kiểm thử trên hệ thống của bạn.
TrueNAS là gì?
Mục có tiêu đề “TrueNAS là gì?”TrueNAS là nền tảng Network Attached Storage (NAS) xây dựng trên filesystem ZFS. TrueNAS cung cấp giao diện quản trị, dịch vụ chia sẻ file và block, quản lý user và quyền truy cập, snapshot, replication, cảnh báo và nhiều cơ chế vận hành khác trên cùng một hệ thống.
TrueNAS SCALE sử dụng nền Linux và ZFS. Khi quản trị storage, cần hiểu đầy đủ các lớp bên dưới giao diện web: disk → VDEV → pool → dataset/ZVOL → protocol → client.
| Khái niệm | Vai trò |
|---|---|
| NAS | Cung cấp dữ liệu qua mạng, thường ở mức file như SMB/NFS. |
| SAN / Block Storage | Cung cấp block device qua mạng, điển hình iSCSI. |
| ZFS | Filesystem + volume manager tích hợp, quản lý cả dữ liệu lẫn cấu trúc lưu trữ. |
| TrueNAS | Nền tảng quản trị và cung cấp dịch vụ dựa trên ZFS. |
TrueNAS cung cấp SMB, NFS và iSCSI trên cùng một pool ZFS, đồng thời giữ replica ở pool thứ hai. Mô hình này dùng để kiểm tra data path, phân quyền và khả năng phục hồi; chưa cung cấp HA hoặc backup off-site.
Architecture Diagram
System Flow
Sơ đồ dùng nas-host, linux-client và management-network làm tên đại diện. Chọn Open Diagram để mở riêng toàn trình duyệt; sơ đồ nhận chế độ sáng/tối từ trang tài liệu. Các điểm sáng biểu diễn luồng kết nối; sơ đồ không kết nối tới monitoring.
Đọc sơ đồ
Mục có tiêu đề “Đọc sơ đồ”| Flow | Ý nghĩa |
|---|---|
| 1 — Quản trị | Admin truy cập Web UI/SSH qua mạng quản lý |
| 2 — Client I/O | Ubuntu đọc/ghi qua SMB, NFS hoặc iSCSI; mỗi giao thức có quyền và data path riêng |
| 3 — Snapshot / Clone | Điểm phục hồi trong tank; rollback cần đánh giá dữ liệu mới sẽ bị ảnh hưởng |
| 4 — Replication | Truyền snapshot từ tank sang backup; lần đầu full, các lần sau có thể incremental khi có common snapshot |
| 5 — Restore | Khôi phục vào dataset mới trong tank, kiểm tra trước khi chuyển ứng dụng sang bản phục hồi |
| 6 — Disk Recovery | Thay đúng member lỗi, resilver rồi kiểm tra toàn vẹn; không phải luồng backup |
| 7 — Operations | Theo dõi pool, dịch vụ, cảnh báo, dung lượng và độ mới của replica |
Số thứ tự dùng để chọn từng nhóm luồng, không biểu thị thứ tự bắt buộc thực hiện. Các panel storage và recovery thể hiện quan hệ logic, không phải sơ đồ đi dây vật lý.
Môi trường
Mục có tiêu đề “Môi trường”| Thành phần | Cấu hình trong bài |
|---|---|
| TrueNAS | Community Edition 25.10.6 — Goldeye, nền Linux/ZFS |
| Hypervisor | VMware Workstation / VMware Virtual Platform |
| VM storage | 2 vCPU, 8 GiB RAM, 1 NIC, boot disk 32 GiB |
| Data disk | 4 × 10 GiB; thêm disk khoảng 20 GiB cho backup |
| Client | Windows cho SMB cơ bản; Ubuntu 22.04.5 LTS cho NFS/SMB/iSCSI |
| Endpoint mẫu | nas-host, linux-client; thay bằng DNS/IP thực tế |
Cấu hình này mô tả cách tổ chức storage và dịch vụ trên TrueNAS 25.10.6. Khi thiết kế production, cần sizing lại CPU, RAM, dung lượng và khả năng chịu lỗi theo workload.
Các lớp storage
Mục có tiêu đề “Các lớp storage”| Lớp | Vai trò | Ranh giới cần giữ |
|---|---|---|
| Boot pool | Chứa hệ điều hành TrueNAS | Không chọn boot disk khi tạo data pool |
Data pool tank |
Hai top-level Mirror VDEV, mỗi Mirror hai disk | Mất cả hai member cùng Mirror có thể làm mất pool |
Pool backup |
Một disk riêng, chứa replica | Không có redundancy; vẫn cùng VM/host |
| Dataset | File storage, ACL, snapshot, quota | Tách theo workload, không share root pool |
| ZVOL | Block storage cho iSCSI | Filesystem ext4 nằm ở client |
| System Dataset | Dữ liệu nội bộ phục vụ hệ thống | Không đồng nhất với dữ liệu ứng dụng |
| Middleware | Điều phối Web UI/API và cấu hình | Ưu tiên quản trị qua UI/API phù hợp phiên bản |
Với bốn disk 10 GiB chia thành hai Mirror, tổng dung lượng raw là 40 GiB nhưng phần dành cho dữ liệu chỉ xấp xỉ một nửa trước metadata và phần dự phòng của ZFS. Phân biệt dung lượng vật lý, dung lượng pool và dung lượng dataset có thể sử dụng.
Sơ đồ dataset
Mục có tiêu đề “Sơ đồ dataset”| Tài nguyên | Mục đích | Quyền / đặc điểm |
|---|---|---|
tank/documents |
SMB cơ bản | NFSv4 ACL, group lab-users có Modify |
tank/nfs-data |
NFS | POSIX 2001:2001, mode 770 |
tank/iscsi-lab3 |
ZVOL iSCSI 5 GiB | Sparse OFF, volblocksize 16K |
tank/smb-lab4 |
SMB phân vai trò | Một user Modify, một user Read |
tank/zfs-lab5 |
Thử snapshot/clone/rollback | Dataset Generic riêng |
tank/replication-lab6 |
Dữ liệu cần replication | Writable |
backup/replication-lab6 |
Replica | Readonly |
tank/lab7-recovery |
Integrity khi thay disk | File trước lỗi và file ghi khi degraded |
Tên dataset có hậu tố lab giúp nhận diện tài nguyên kiểm thử. Không tái sử dụng trên production nếu chưa xác nhận inventory.
Nguyên lý ZFS
Mục có tiêu đề “Nguyên lý ZFS”Các lớp storage
Mục có tiêu đề “Các lớp storage”DISKS ↓VDEV(s) ↓ZFS POOL ↓DATASET / ZVOL ↓SMB / NFS / iSCSI ↓CLIENT / APPLICATIONVDEV là đơn vị cấu thành pool. Pool phân phối dữ liệu lên các VDEV. Dataset và ZVOL lấy dung lượng từ pool. Các protocol như SMB, NFS và iSCSI chỉ là lớp cung cấp dữ liệu cho client; chúng không thay thế cơ chế bảo vệ dữ liệu của ZFS.
Nguyên lý ZFS
Mục có tiêu đề “Nguyên lý ZFS”Copy-on-Write (CoW)
Mục có tiêu đề “Copy-on-Write (CoW)”ZFS không ghi đè trực tiếp block cũ khi dữ liệu thay đổi. Nó ghi block mới, cập nhật metadata mới, rồi chuyển tham chiếu sang cấu trúc mới. Block cũ vẫn có thể được snapshot giữ lại. Cơ chế này là nền tảng của snapshot nhanh, clone và tính nhất quán cao.
End-to-end checksum
Mục có tiêu đề “End-to-end checksum”ZFS lưu checksum cho dữ liệu và metadata. Khi đọc, ZFS kiểm tra checksum để phát hiện data corruption. Nếu pool có redundancy và còn bản sao hợp lệ, ZFS có thể dùng bản sao đó để sửa block lỗi.
Transaction Group (TXG)
Mục có tiêu đề “Transaction Group (TXG)”Các thay đổi được gom thành transaction group và commit theo chu kỳ. Điều này giúp ZFS duy trì tính nhất quán khi có crash hoặc mất điện, đồng thời giải thích vì sao một số lệnh sync/flush có ý nghĩa trong kiểm thử storage.
Metadata là dữ liệu quan trọng
Mục có tiêu đề “Metadata là dữ liệu quan trọng”Metadata trong ZFS mô tả cấu trúc dataset, block pointer, checksum, snapshot và nhiều thông tin khác. Metadata hỏng có thể gây hậu quả nghiêm trọng, vì vậy redundancy, scrub và backup không chỉ dành cho file của user.
Pool, VDEV và redundancy
Mục có tiêu đề “Pool, VDEV và redundancy”Pool và VDEV
Mục có tiêu đề “Pool và VDEV”Pool là không gian lưu trữ logic được tạo từ một hoặc nhiều VDEV. ZFS stripe dữ liệu giữa các top-level VDEV, vì vậy khả năng chịu lỗi của pool phụ thuộc vào từng VDEV.
| Mô hình | Ưu điểm | Nhược điểm / rủi ro |
|---|---|---|
| Single disk | Đơn giản, dùng toàn bộ dung lượng | Không có redundancy. |
| Mirror | IOPS đọc tốt, rebuild đơn giản, chịu lỗi 1 disk mỗi mirror | Hiệu suất dung lượng ~50% với 2-way mirror. |
| RAIDZ1 | Dung lượng tốt hơn mirror | Chỉ chịu lỗi 1 disk/vdev; rebuild lớn rủi ro hơn. |
| RAIDZ2 | Chịu lỗi 2 disk/vdev, phù hợp dữ liệu quan trọng | Mất nhiều capacity hơn RAIDZ1. |
| RAIDZ3 | Chịu lỗi 3 disk/vdev | Chi phí capacity cao; thường dành cho vdev lớn. |
Mirror và RAIDZ
Mục có tiêu đề “Mirror và RAIDZ”Mirror lưu nhiều bản sao của cùng block trên các disk trong VDEV. RAIDZ dùng parity để tái tạo dữ liệu khi một hoặc nhiều disk hỏng. Khả năng chịu lỗi phải được đánh giá ở cấp VDEV, không phải chỉ đếm tổng số disk trong pool.
Khi mở rộng pool bằng cách thêm top-level VDEV, pool bắt đầu phân bổ dữ liệu mới trên VDEV mới. Thiết kế VDEV ngay từ đầu ảnh hưởng lâu dài đến performance, capacity và failure domain.
Redundancy không phải backup
Mục có tiêu đề “Redundancy không phải backup”Mirror/RAIDZ bảo vệ khỏi hỏng disk. Chúng không bảo vệ khỏi xóa nhầm file, ransomware, lỗi ứng dụng, rollback sai, phá hủy dataset hoặc sự cố toàn hệ thống. Snapshot và backup/replication giải quyết các lớp rủi ro khác.
Dataset, ZVOL và cache
Mục có tiêu đề “Dataset, ZVOL và cache”Dataset và ZVOL
Mục có tiêu đề “Dataset và ZVOL”Dataset
Mục có tiêu đề “Dataset”Dataset là filesystem con bên trong pool. Mỗi dataset có thể có property riêng như compression, quota, recordsize, ACL, snapshot policy và mountpoint. Thiết kế dataset theo workload giúp dễ quản lý quyền, snapshot, backup và giới hạn dung lượng.
ZVOL là block device do ZFS cung cấp. Nó thường được dùng cho iSCSI, VM disk hoặc workload cần block storage. ZVOL không phải filesystem cho đến khi client tạo filesystem bên trên nó.
| Thuộc tính | Ý nghĩa thực tế |
|---|---|
| recordsize | Kích thước record logic của dataset; ảnh hưởng workload file/database. |
| volblocksize | Block size logic của ZVOL; nên cân nhắc trước khi ghi dữ liệu. |
| compression | Nén dữ liệu trong ZFS; thường có lợi nếu dữ liệu nén được. |
| quota / refquota | Giới hạn dung lượng dataset hoặc phần dữ liệu trực tiếp tham chiếu. |
| reservation / refreservation | Đặt trước dung lượng; ZVOL có thể chiếm dung lượng đáng kể dù dữ liệu thực tế ít. |
| readonly | Bảo vệ dataset khỏi ghi; hữu ích cho replica backup. |
| sync | Điều khiển xử lý synchronous writes; không nên thay đổi tùy tiện để “tăng tốc”. |
USED, REFER và snapshot usage
Mục có tiêu đề “USED, REFER và snapshot usage”ZFS có nhiều cách biểu diễn dung lượng. USED của dataset có thể bao gồm dữ liệu con, snapshot, reservation hoặc refreservation. REFER là lượng dữ liệu dataset hiện tại tham chiếu. Vì vậy zpool ALLOC và zfs USED không nhất thiết bằng nhau.
zpool listzfs list -S usedzfs get used,usedbydataset,usedbysnapshots,usedbychildren,usedbyrefreservation <dataset>Đối chiếu kết quả với quota, reservation và dung lượng snapshot trước khi đưa ra thay đổi.
Cache và Special VDEV
Mục có tiêu đề “Cache và Special VDEV”ARC là cache chính của ZFS trong RAM. L2ARC mở rộng read cache trên device có tốc độ cao. SLOG là device riêng lưu ZIL cho synchronous write; SLOG không phải write cache chung cho mọi dữ liệu. Special VDEV có thể chứa metadata và small block tùy cấu hình.
| Thành phần | Mục tiêu | Lưu ý |
|---|---|---|
| ARC | Read cache trong RAM | RAM thường là tài nguyên cache quan trọng nhất của ZFS. |
| L2ARC | Mở rộng read cache | Không thay thế RAM; cần workload phù hợp. |
| ZIL / SLOG | Bảo đảm synchronous write semantics | SLOG nên có latency thấp và power-loss protection nếu dùng production. |
| Special VDEV | Metadata/small blocks | Nếu special vdev mất và không redundant, pool có thể bị ảnh hưởng nghiêm trọng. |
Network, luồng truy cập và thiết kế
Mục có tiêu đề “Network, luồng truy cập và thiết kế”Luồng truy cập
Mục có tiêu đề “Luồng truy cập”| Luồng | Đường truy cập | Identity / kiểm soát |
|---|---|---|
| SMB | Client → TCP/445 → Samba → dataset | Tài khoản SMB, group membership, NFSv4 ACL |
| NFS | Linux → TCP/2049 → NFS export → dataset | AUTH_SYS numeric UID/GID, host restriction, root squash |
| iSCSI | Initiator → TCP/3260 → Target/LUN → Extent → ZVOL | IQN, authorized network, CHAP |
| Replication | Snapshot ở tank → LOCAL PUSH → backup |
Snapshot selection, common snapshot, retention |
| Quản trị | Web UI/API → middleware → cấu hình dịch vụ | Tài khoản quản trị và mạng quản lý |
SMB/NFS cung cấp filesystem ở server. iSCSI cung cấp block device để client tự partition, format và mount. Không cho nhiều client ghi đồng thời lên cùng ext4 LUN như một shared filesystem.
Thiết kế mạng
Mục có tiêu đề “Thiết kế mạng”Cấu hình trong bài dùng một NIC chung cho management và storage. nas-host và linux-client cần địa chỉ ổn định; xác nhận DNS, gateway, routing và thời gian trước khi cấu hình mount/export.
- NFS chỉ cho phép client được xác định, không mở toàn subnet khi chỉ cần một host.
- iSCSI giới hạn Initiator IQN và địa chỉ client
/32; CHAP không mã hóa payload. - Listener có thể bind wildcard dù logical Portal chọn một IP. Kiểm tra listener, access control và firewall.
- VLAN, LACP, MTU lớn, multipath và mạng dự phòng nằm ngoài phạm vi cấu hình này; cần thiết kế và kiểm thử riêng.
Giới hạn backup
Mục có tiêu đề “Giới hạn backup”Snapshot mỗi 5 phút là lịch thử nghiệm, không tự đảm bảo RPO 5 phút ở backup. Dữ liệu chỉ có trong replica sau khi snapshot chứa thay đổi đã được truyền thành công.
Lựa chọn thiết kế
Mục có tiêu đề “Lựa chọn thiết kế”- Mirror để thực hành mất một member và resilver; không suy ra thời gian phục hồi production từ disk lab nhỏ.
- Dataset riêng cho từng protocol để không trộn POSIX permission với SMB ACL.
- Restore vào tên dataset mới để kiểm tra trước cutover.
- Tách kiểm tra storage, service, client I/O và backup freshness; không kết luận hệ thống hoạt động tốt chỉ từ trạng thái ONLINE.
- Backup cấu hình và dữ liệu là hai lớp độc lập; cần giữ cả hai ngoài hệ thống cần phục hồi.
Thuật ngữ và lộ trình thực hành
Mục có tiêu đề “Thuật ngữ và lộ trình thực hành”Thuật ngữ
Mục có tiêu đề “Thuật ngữ”| Thuật ngữ | Giải thích |
|---|---|
| ARC | Adaptive Replacement Cache – cache đọc chính trong RAM của ZFS. |
| Checksum | Giá trị kiểm tra integrity dữ liệu/metadata. |
| CoW | Copy-on-Write – ghi block mới thay vì overwrite block cũ. |
| Dataset | Filesystem logic trong ZFS pool. |
| Extent | Backing storage được export qua iSCSI. |
| Initiator | Máy/client kết nối tới iSCSI target. |
| LUN | Logical Unit Number – ánh xạ block device trong target. |
| Pool | Không gian lưu trữ ZFS tạo từ một hoặc nhiều VDEV. |
| RAIDZ | Cơ chế parity RAID của ZFS. |
| Refreservation | Dung lượng dành riêng cho dữ liệu dataset/ZVOL được tham chiếu trực tiếp. |
| Replication | Sao chép snapshot ZFS giữa source và destination. |
| Resilver | Tái tạo dữ liệu/redundancy lên disk sau replace/reconnect. |
| RPO | Mức mất dữ liệu tối đa chấp nhận được tính theo thời gian. |
| RTO | Thời gian tối đa chấp nhận để phục hồi dịch vụ. |
| Scrub | Quét pool, kiểm tra checksum và sửa dữ liệu khi có redundancy. |
| Snapshot | Trạng thái read-only của dataset/ZVOL tại thời điểm tạo. |
| SLOG | Thiết bị riêng cho ZIL nhằm cải thiện synchronous write latency trong workload phù hợp. |
| Target | Endpoint iSCSI cung cấp LUN cho initiator. |
| VDEV | Virtual Device – đơn vị cấu thành ZFS pool. |
| ZVOL | Block volume do ZFS cung cấp. |
Kết luận
Mục có tiêu đề “Kết luận”TrueNAS nên được hiểu như một hệ thống storage nhiều lớp thay vì chỉ là “một NAS có giao diện web”. Kiến thức quan trọng nhất là hiểu cách ZFS tổ chức disk và dữ liệu, phân biệt redundancy với backup, hiểu identity/permission của từng protocol, và xây dựng khả năng recovery có thể kiểm chứng.
Trạng thái ONLINE chỉ là một phần của đánh giá vận hành. Cần xác nhận dữ liệu toàn vẹn, recovery point đáp ứng RPO, service sẵn sàng, client truy cập được, còn headroom, alert được xử lý và quy trình restore đã được kiểm thử.
Lộ trình thực hành
Mục có tiêu đề “Lộ trình thực hành”- Thiết lập storage — tạo pool, dataset và chia sẻ SMB cơ bản.
- SMB, NFS & iSCSI — cấu hình dịch vụ, quyền và kết nối từ client.
- Backup và replication — kiểm tra replica và điểm phục hồi.
- Khôi phục dữ liệu và thay disk — thực hành phục hồi có kiểm soát.