Xử lý lỗi FAULTED trong ZFS

🧭 Tổng quan

ZFS là một file system nổi tiếng với khả năng bảo vệ dữ liệu, quản lý pool linh hoạt và tính năng phát hiện/phục hồi lỗi tự động. Tuy nhiên, khi quản lý hệ thống lưu trữ sử dụng ZFS, bạn có thể gặp trạng thái ổ đĩa được đánh dấu là FAULTED. Đây là một cảnh báo nghiêm trọng.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu:

  • Trạng thái FAULTED trong ZFS có ý nghĩa gì.
  • Tình huống thực tế: ZFS báo lỗi nhưng không thấy gì trong dmesg.
  • Vì sao điều này xảy ra khi dùng RAID phần cứng (như HP Smart Array).
  • Khi nào bạn thực sự nên thay đĩa.
  • Hướng dẫn kiểm tra và xử lý đúng cách.

🔍 Lỗi FAULTED trong ZFS là gì?

ZFS thường sẽ đánh dấu một thiết bị là FAULTED khi:

  • Thiết bị gặp quá nhiều lỗi I/O khi đọc/ghi.
  • Dữ liệu trên thiết bị bị hỏng và không thể phục hồi được.
  • Thiết bị không còn phản hồi (timeout hoặc mất kết nối).
  • Trong quá trình resilver, thiết bị không thể tiếp tục do lỗi quá nặng.

Ví dụ output từ zpool status:

  pool: hdd
 state: DEGRADED
status: One or more devices is currently being resilvered.
  scan: resilver in progress
config:

        NAME             STATE     READ WRITE CKSUM
        hdd              DEGRADED     0     0     0
          raidz2-0       DEGRADED     0     0     0
            sdw          FAULTED    750     0     0  too many errors (resilvering)

Trong ví dụ trên, thiết bị sdw bị FAULTED do quá nhiều lỗi trong lúc resilver, dẫn đến bị loại khỏi pool.

🧪 Tình huống thực tế: ZFS lỗi, dmesg thì không thấy gì

Một số bạn có thể thắc mắc: “ZFS báo đĩa lỗi mà sao mình kiểm tra dmesg lại không thấy lỗi gì?”

Nguyên nhân thường nằm ở RAID phần cứng. Trong nhiều hệ thống server, các ổ đĩa vật lý được gộp lại bởi phần cứng RAID controller (như HP Smart Array) thành các logical volume (VD – virtual disk), ví dụ RAID0, RAID5, RAID10…

ZFS sẽ không thấy từng ổ đĩa vật lý mà chỉ thấy logical disk như /dev/sdw.

Sơ đồ:

[Physical Disk 1] \
[Physical Disk 2]  --> [RAID0] --> /dev/sdw --> ZFS
[Physical Disk 3] /
  • Nếu một trong các đĩa vật lý lỗi, controller sẽ cố giả vờ thiết bị vẫn ổn.
  • dmesg sẽ không log lỗi I/O rõ ràng, vì lỗi đã bị RAID controller giấu.
  • Nhưng ZFS vẫn phát hiện lỗi dữ liệu khi đọc hoặc kiểm tra checksum.

🛠 Cách kiểm tra thiết bị lỗi khi dùng RAID phần cứng

Dùng công cụ của nhà sản xuất — với HP Smart Array, đó là ssacli.

Kiểm tra trạng thái logical disk:

ssacli ctrl all show config

Kiểm tra tình trạng ổ đĩa vật lý:

ssacli ctrl slot=0 pd all show status

Nếu bạn thấy tình trạng như: Predictive Failure, Failed, Rebuilding, Missing thì khả năng cao đĩa đã lỗi thật.

🛠 Vậy khi thay disk, có nên offline thiết bị lỗi và xóa RAID trên controller ngày, hay là nên chờ đến gần lúc thay đĩa?

Câu trả lời là không nên vội offline thiết bị hoặc xóa RAID trước khi đĩa thay thế sẵn sàng, trừ khi bạn chắc chắn hệ thống sẽ không cần resilver nữa hoặc đang có vấn đề khẩn cấp (như gây treo hệ thống, timeout hàng loạt).

ZFS vẫn đang resilver, ví dụ ở output này.

scan: resilver in progress ... 53.29% done, 0 days 02:04:22 to go

→ Tức là ZFS đang cố cứu dữ liệu từ phần còn đọc được trên sdw. Nếu bạn:

  • zpool offline hdd sdw ngay bây giờ → ZFS sẽ ngừng đọc từ sdw, làm mất dữ liệu khả dĩ có thể còn cứu được.
  • Xóa logical RAID volume → thiết bị /dev/sdw mất hoàn toàn → ZFS coi là UNAVAIL thay vì FAULTED, có thể làm pool không mount được nếu mất quá nhiều thiết bị trong RAIDZ2.

ZFS chỉ đánh dấu sdw là FAULTED, nhưng vẫn đang cố resilver

  • Nghĩa là thiết bị vẫn còn thỉnh thoảng đọc được block, dù kém ổn định.
  • Nếu resilver tiếp được vài % nữa thì khi bạn thay đĩa mới, sẽ giảm lượng dữ liệu phải resilver lại từ đầu.

Vậy bạn nên offline và xóa RAID vào thời điểm sau:

  • Bạn chuẩn bị thay disk ngay (VD: kỹ thuật viên có mặt tại DC).
  • Resilver đã xong hoặc không cần nữa.
  • Disk lỗi gây treo hệ thống, mất I/O nghiêm trọng.

🛠 Quy trình đề xuất

Giả sử bạn thay disk sau 4-5 tiếng nữa, bạn có thể làm như sau:

Trước khi thay:

Giữ nguyên trạng thái. Theo dõi resilver tiếp tục. Ghi log lại tiến trình:

zpool status -v > /var/log/zfs_resilver_progress.log

Khi kỹ thuật viên sẵn sàng thay ổ:

  • offline disk hỏng (cho ZFS gỡ bỏ an toàn): zpool offline hdd sdw
  • Dùng ssacli để xóa RAID0 logical volume cũ.
  • Tạo RAID0 mới từ disk mới → tạo /dev/sdw mới.
  • Cho ZFS replace bằng đĩa mới: zpool replace hdd sdw

⚖️ So sánh: RAID phần cứng vs RAID qua ZFS

Tiêu chíRAID phần cứng (ssacli)RAID qua ZFS
Kiểm soát lỗiRAID controller xử lýZFS tự kiểm tra, tự sửa
Hiển thị lỗiThường ẩn lỗiRõ ràng từng lỗi/sector
Linh hoạt quản lýPhụ thuộc phần cứngRất linh hoạt
Đòi hỏi kiến thứcTrung bìnhCao hơn một chút
Tình huống lỗi khó bắtDễ giấu lỗi đĩa vật lýBắt lỗi checksum rất chi tiết

✅ Ưu điểm của ZFS khi phát hiện lỗi

  • Checksum toàn diện: mọi block dữ liệu đều được kiểm tra.
  • Tự động phát hiện lỗi “âm thầm” mà hệ điều hành không biết.
  • Cảnh báo kịp thời: như FAULTED, DEGRADED, UNAVAIL.

⚠️ Nhược điểm (hoặc thách thức)

  • Có thể gây nhầm lẫn khi dùng với RAID phần cứng: ZFS báo lỗi nhưng người dùng không thấy gì từ OS.
  • Cần hiểu rõ kiến trúc hệ thống để xử lý lỗi đúng nơi.

📌 Lời khuyên khi thấy ZFS báo FAULTED

  • Không vội thay đĩa ngay.
  • Kiểm tra lại thiết bị thông qua công cụ RAID (ví dụ ssacli).
  • Nếu thiết bị vật lý được xác nhận lỗi → thay ngay để bảo toàn dữ liệu.
  • Nếu lỗi tạm thời (timeout, loose cable) → thử zpool clear hoặc zpool replace và theo dõi.
  • Ưu tiên dùng ZFS trên JBOD hoặc HBA (Host Bus Adapter) thay vì RAID phần cứng nếu có thể → giúp ZFS kiểm soát toàn bộ đĩa vật lý.

💡 Ví dụ xử lý lỗi

Trường hợp bạn đã thay đĩa mới:

zpool replace hdd /dev/sdw

Sau đó, ZFS sẽ tự động resilver từ các đĩa còn lại.

Nếu bạn muốn kiểm tra lại thiết bị:

zpool clear hdd sdw

Lưu ý: Chỉ dùng khi bạn chắc chắn lỗi là tạm thời.

🧾 Kết luận

Khi quản lý hệ thống dùng ZFS, đặc biệt là trong môi trường có RAID phần cứng, hiểu rõ cách ZFS đánh dấu lỗi và cách RAID hoạt động là cực kỳ quan trọng. Trạng thái FAULTED là dấu hiệu thiết bị đã vượt quá ngưỡng lỗi và không còn đáng tin cậy.

Đừng để ZFS trở thành “cái hộp đen” mà bạn không hiểu – hãy để nó là công cụ bảo vệ dữ liệu mạnh mẽ nhất bạn có.

Nếu bạn thấy bài viết hữu ích, đừng ngần ngại chia sẻ với những ai đang quản lý hệ thống lưu trữ! Bạn có thể để lại bình luận hoặc hỏi thêm nếu gặp vấn đề tương tự.

Bài viết gần đây

spot_img

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here

Đăng ký nhận thông tin bài viết qua email