Đến nội dung chính
Infra Notes
DOCS / UTF-8
Runbook // Quy trình vận hànhtruenas

TrueNAS — Thay disk và resilver

DOC PATH runbooks/truenas/disk-replacement

Doc Type
Runbook
Technology
truenas
Status
Active
Version
25.10.6
Tags
truenasRecoveryStorage

Xác định disk, replacement, resilver, scrub và xác nhận redundancy. Đọc theo thứ tự các chương hoặc chọn mục cần tra cứu trong mục lục.

Thay một disk member lỗi trong pool tank gồm hai Mirror VDEV, phục hồi redundancy bằng resilver rồi kiểm tra integrity bằng scrub và workload I/O.

  • Đã xác định disk lỗi, VDEV chứa nó và member còn hoạt động.
  • Có backup/recovery plan; dữ liệu quan trọng và cấu hình được lưu ngoài pool.
  • Disk thay thế phù hợp, đủ capacity, không chứa dữ liệu cần giữ và không thuộc pool khác.
  • Có quyền thay đổi, maintenance window và thông báo ảnh hưởng.
  • Kiểm tra nền tảng hỗ trợ hot-swap/hot-add; không mặc định mọi controller đều hỗ trợ.
  • Không có thao tác xóa/detach/replace khác đang chạy trên cùng VDEV.

I/O có thể tiếp tục khi còn replica tốt, nhưng khả năng chịu lỗi giảm. Resilver và scrub tăng tải; hạn chế workload nặng, theo dõi latency và dung lượng. Thời gian phục hồi phụ thuộc lượng dữ liệu, tốc độ disk và tải đang chạy.

Scrub đọc dữ liệu và kiểm tra checksum trên toàn pool. Nếu có redundancy và phát hiện block lỗi, ZFS có thể sửa từ bản sao tốt. Scrub là kiểm tra integrity chủ động, không phải defragment.

Resilver xảy ra khi ZFS cần tái tạo dữ liệu trên disk mới hoặc disk vừa kết nối lại trong cấu trúc có redundancy. Mục tiêu là khôi phục redundancy của VDEV. Trong quá trình resilver, pool có thể vẫn phục vụ I/O nhưng khả năng chịu lỗi giảm.

SMART theo dõi trạng thái device vật lý qua các chỉ số như lỗi đọc, reallocated sector và kết quả self-test. SMART và ZFS checksum bổ sung cho nhau: SMART phản ánh tình trạng device, còn checksum kiểm tra tính toàn vẹn dữ liệu.

Alert / degraded pool → xác định đúng disk → thay disk → attach/replace → resilver → zpool status → scrub/verify → đóng incident

Lệnh chỉ đọc trên TrueNAS:

Terminal window
zpool status -v tank
zpool list
zpool events -v
lsblk -d -o NAME,SIZE,HCTL,MODEL,SERIAL
ls -l /dev/disk/by-path/
ls -l /dev/disk/by-id/

Đối chiếu serial/WWN, SCSI path, PARTUUID/GUID và slot thực tế. /dev/sdX có thể đổi sau hot-plug/reboot; mapping cũ không còn đủ tin cậy.

Dấu hiệu Ý nghĩa
Member FAULTED, bộ đếm READ/WRITE tăng Có lỗi I/O hoặc thiết bị; cần đối chiếu CKSUM và data errors để đánh giá toàn vẹn
ereport.fs.zfs.probe_failure ZFS tự phát hiện lỗi probe
resource.fs.zfs.statechange Member từ ONLINE sang FAULTED
Pool hiển thị ONLINE Phải đọc trạng thái từng member, không chỉ dòng tổng
Sau khi offline member lỗi Pool/Mirror chuyển DEGRADED
No known data errors Chưa ghi nhận data errors, không có nghĩa redundancy đầy đủ
  1. Ghi nhận topology và checksum file đại diện trước thay đổi, lưu baseline ngoài pool.
  2. Xác định member lỗi bằng cả định danh ổn định trong inventory và vị trí vật lý/virtual slot.
  3. Qua Storage/VDEV view, Offline member lỗi đã xác nhận nếu quy trình yêu cầu; không chọn member còn hoạt động.
  4. Gắn disk thay thế theo quy trình của nền tảng. Chỉ hot-swap/hot-add khi nền tảng hỗ trợ; nếu không, lên kế hoạch dừng máy an toàn.
  5. Quét lại inventory và mapping sau thay đổi. Kiểm tra disk mới trống, đúng dung lượng, không thuộc backup, boot-pool hay ZVOL.
  6. Chọn Replace cho đúng member lỗi và disk mới; đọc xác nhận tác động trước khi chấp thuận.
  7. Theo dõi resilver đến khi mọi member ONLINE, không chỉ khi disk mới xuất hiện.

Kiểm tra chữ ký disk mới ở chế độ chỉ đọc:

Terminal window
sudo wipefs -n /dev/disk/by-id/<replacement-disk>

Không đổi -n sang tùy chọn xóa. Kết quả trống chỉ là một bước kiểm tra, không thay cho đối chiếu inventory.

Trong lúc resilver:

Terminal window
zpool status tank

Có thể thấy replacing-0, member cũ OFFLINE và member mới ONLINE (resilvering). Không rút disk hoặc reboot tùy tiện trong giai đoạn này.

Chờ scan hoàn tất, kiểm tra mọi member trở lại ONLINE và không có data errors. Phần trăm tiến trình hoặc disk mới xuất hiện chưa đủ chứng minh resilver xong.

Resilver tái tạo block cần thiết, không clone sector-by-sector toàn disk 10 GiB. Khi pool ổn định và được phép tăng tải, chạy scrub:

Terminal window
sudo zpool scrub tank
zpool status tank

Lệnh scrub khởi động kiểm tra integrity, có thể sửa block lỗi nếu có replica tốt. Chờ hoàn tất, kiểm tra scan result và READ/WRITE/CKSUM.

Lớp Kiểm tra
Data integrity Checksum file trước failure và file đã ghi khi degraded
NFS Đọc/ghi bằng nfsuser 2001:2001, không dùng root để kết luận lỗi
iSCSI Session, đúng LUN/UUID, ext4 mount và checksum
SMB Mount/session, account thực tế và file test
Replication Source/destination còn nguyên; kiểm tra riêng freshness
Pools tank và backup ONLINE, không known data errors

Đối chiếu dữ liệu có từ trước sự cố và dữ liệu được ghi khi pool mất dự phòng. Việc dataset backup tồn tại không chứng minh nó chứa mọi thay đổi mới.

Không có rollback chung an toàn cho mọi trường hợp thay disk. Nếu disk mới lỗi hoặc resilver không tiến triển:

  • Giữ nguyên member còn hoạt động, không tiếp tục tháo disk.
  • Thu thập event, scan state, disk health và controller/network storage errors.
  • Dừng các thay đổi ngoài quy trình và đánh giá restore từ backup nếu dữ liệu không còn an toàn.
  • Không ép detach, wipe hoặc reset counters để biến trạng thái thành ONLINE.
  • Chỉ đưa hệ thống về tải bình thường sau khi kiểm tra dự phòng, toàn vẹn dữ liệu và ứng dụng.