TrueNAS — Thay disk và resilver
DOC PATH runbooks/truenas/disk-replacement
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.
Điều kiện và tác động
Mục có tiêu đề “Điều kiện và tác động”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.
Điều kiện
Mục có tiêu đề “Điều kiện”- Đã 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.
Tác động
Mục có tiêu đề “Tác động”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, SMART và resilver
Mục có tiêu đề “Scrub, SMART và resilver”Kiểm tra và thay disk
Mục có tiêu đề “Kiểm tra và thay disk”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
Mục có tiêu đề “Resilver”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.
Disk replacement workflow
Mục có tiêu đề “Disk replacement workflow”Alert / degraded pool → xác định đúng disk → thay disk → attach/replace → resilver → zpool status → scrub/verify → đóng incidentGhi nhận trước thay đổi
Mục có tiêu đề “Ghi nhận trước thay đổi”Lệnh chỉ đọc trên TrueNAS:
zpool status -v tankzpool listzpool events -vlsblk -d -o NAME,SIZE,HCTL,MODEL,SERIALls -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 đủ |
Thay disk và theo dõi resilver
Mục có tiêu đề “Thay disk và theo dõi resilver”Thay disk lỗi
Mục có tiêu đề “Thay disk lỗi”- Ghi nhận topology và checksum file đại diện trước thay đổi, lưu baseline ngoài pool.
- Xác định member lỗi bằng cả định danh ổn định trong inventory và vị trí vật lý/virtual slot.
- 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.
- 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.
- 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-poolhay ZVOL. - 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.
- 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:
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.
Resilver và scrub
Mục có tiêu đề “Resilver và scrub”Trong lúc resilver:
zpool status tankCó 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:
sudo zpool scrub tankzpool status tankLệ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.
Xác minh dịch vụ và chuyển xử lý
Mục có tiêu đề “Xác minh dịch vụ và chuyển xử lý”Kiểm tra các dịch vụ
Mục có tiêu đề “Kiểm tra các dịch vụ”| 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.
Hoàn tác và chuyển xử lý
Mục có tiêu đề “Hoàn tác và chuyển xử lý”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.