ZFS phục hồi vô tận


29

Tôi có một nhóm ZFS (FUSE) lớn (> 100TB) trên Debian bị mất hai ổ đĩa. Khi các ổ đĩa không thành công, tôi đã thay thế chúng bằng các phụ tùng cho đến khi tôi có thể lên lịch ngừng hoạt động và thay thế các ổ đĩa xấu.

Khi tôi gỡ hệ thống xuống và thay thế các ổ đĩa, hồ bơi bắt đầu phục hồi như mong đợi, nhưng khi nó hoàn thành khoảng 80% (điều này thường mất khoảng 100 giờ), nó sẽ khởi động lại.

Tôi không chắc việc thay thế hai ổ đĩa cùng một lúc có tạo ra điều kiện cuộc đua hay không, hoặc do kích thước của bể, trình phục hồi mất quá nhiều thời gian để các quá trình hệ thống khác làm gián đoạn và khiến nó khởi động lại, nhưng không có dấu hiệu rõ ràng trong kết quả của 'trạng thái zpool' hoặc hệ thống ghi lại sự cố.

Kể từ đó, tôi đã sửa đổi cách tôi bố trí các nhóm này để cải thiện hiệu suất phục hồi nhưng bất kỳ khách hàng tiềm năng hoặc lời khuyên nào về việc đưa hệ thống này trở lại sản xuất đều được đánh giá cao.

đầu ra trạng thái zpool (lỗi là mới kể từ lần cuối tôi kiểm tra):

  pool: pod
 state: ONLINE
status: One or more devices has experienced an error resulting in data
    corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
    entire pool from backup.
   see: http://www.sun.com/msg/ZFS-8000-8A
 scrub: resilver in progress for 85h47m, 62.41% done, 51h40m to go
config:

    NAME                                                 STATE     READ WRITE CKSUM
    pod                                                  ONLINE       0     0 2.79K
      raidz1-0                                           ONLINE       0     0 5.59K
        disk/by-id/wwn-0x5000c5003f216f9a                ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWPK    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQAM    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPVD    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ2Y    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CVA3    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQHC    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPWW    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09X3Z    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ87    ONLINE       0     0     0
        spare-10                                         ONLINE       0     0     0
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F20T1K  ONLINE       0     0     0  1.45T resilvered
          disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BJN  ONLINE       0     0     0  1.45T resilvered
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQG7    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQKM    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQEH    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09C7Y    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWRF    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ7Y    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C7LN    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQAD    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CBRC    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPZM    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPT9    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ0M    ONLINE       0     0     0
        spare-23                                         ONLINE       0     0     0
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F226B4  ONLINE       0     0     0  1.45T resilvered
          disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CCMV  ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6NL    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWA1    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CVL6    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6TT    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPVX    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BGJ    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C9YA    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09B50    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0AZ20    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BKJW    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F095Y2    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F08YLD    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQGQ    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0B2YJ    ONLINE       0     0    39  512 resilvered
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQBY    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C9WZ    ONLINE       0     0     0  67.3M resilvered
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQGE    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ5C    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWWH    ONLINE       0     0     0
    spares
      disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CCMV      INUSE     currently in use
      disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BJN      INUSE     currently in use

errors: 572 data errors, use '-v' for a list

vui lòng cung cấp đầu ra củazpool status
longneck

Vì vậy, những gì nó báo cáo nếu bạn sử dụng -v?
Bobby

"lỗi: Lỗi vĩnh viễn đã được phát hiện trong các tệp sau:" và sau đó là danh sách khoảng 12 tệp có lỗi.
jasongullickson

Đối với phần 'xem:', bạn có thể đọc phần giải thích chi tiết hơn tại đây: illumos.org/msg/ZFS-8000-8A
Raymond Tau

Câu trả lời:


56

Xin chúc mừng và uh-oh. Bạn đã tình cờ tìm thấy một trong những điều tốt hơn về ZFS, nhưng cũng phạm tội cấu hình.

Đầu tiên, vì bạn đang sử dụng raidz1, bạn chỉ có một dữ liệu chẵn lẻ. Tuy nhiên, bạn đã có hai ổ đĩa không cùng lúc. Kết quả duy nhất có thể ở đây là mất dữ liệu . Không có số lượng khả năng phục hồi sẽ khắc phục điều đó.

Phụ tùng của bạn đã giúp bạn ra ngoài một chút ở đây và cứu bạn khỏi một thất bại hoàn toàn thảm khốc. Tôi sẽ đi ra ngoài ở đây và nói rằng hai ổ đĩa bị hỏng không cùng một lúc và phụ tùng đầu tiên chỉ được phục hồi một phần trước khi ổ đĩa thứ hai thất bại.

Điều đó có vẻ khó theo dõi. Đây là một hình ảnh:

chuỗi các sự kiện

Đây thực sự là một điều tốt vì nếu đây là mảng RAID truyền thống, toàn bộ mảng của bạn sẽ đơn giản ngoại tuyến ngay khi ổ đĩa thứ hai không thành công và bạn sẽ KHÔNG có cơ hội phục hồi tại chỗ. Nhưng vì đây là ZFS, nên nó vẫn có thể chạy bằng cách sử dụng các phần mà nó có và chỉ đơn giản trả về lỗi khối hoặc cấp độ tệp cho các phần không có.

Đây là cách bạn khắc phục nó: Ngắn hạn, lấy danh sách các tệp bị hỏng từ zpool status -vvà sao chép các tệp đó từ bản sao lưu vào vị trí ban đầu của chúng. Hoặc xóa các tập tin. Điều này sẽ cho phép bộ phục hồi tiếp tục và hoàn thành.

Đây là cấu hình tội lỗi của bạn : bạn có quá nhiều ổ đĩa trong một nhóm raidz.

Lâu dài: bạn cần cấu hình lại các ổ đĩa của bạn. Một cấu hình phù hợp hơn sẽ là sắp xếp các ổ đĩa thành các nhóm nhỏ gồm 5 ổ đĩa hoặc trong raidz1. ZFS sẽ tự động sọc trên các nhóm nhỏ đó. Điều này làm giảm đáng kể thời gian phục hồi khi một ổ đĩa bị lỗi vì chỉ có 5 ổ đĩa cần tham gia thay vì tất cả chúng. Lệnh để làm điều này sẽ là một cái gì đó như:

zpool create tank raidz da0 da1 da2 da3 da4 \
                  raidz da5 da6 da7 da8 da9 \
                  raidz da10 da11 da12 da13 da14 \
                  spare da15 spare da16

Cảm ơn bạn rất nhiều @longneck cho câu trả lời chi tiết và nhiều thông tin! Bạn đang chú ý đến chuỗi sự kiện và tôi đã đưa ra lời khuyên về cấu hình thiết bị (thiết bị thứ hai tôi chế tạo được cấu hình gần như chính xác như bạn mô tả, với một số cân nhắc bổ sung để giữ cho mỗi cuộc đột kích lan rộng trên phần cứng giảm cơ hội mất toàn bộ cuộc đột kích do lỗi bảng nối đa năng, v.v.).
jasongullickson

Đã xóa các tệp bị hỏng, "trạng thái zfs" hiện trả về giá trị hex thay vì tên tệp; Tôi cho rằng điều này sẽ biến mất khi chà cuối cùng kết thúc?
jasongullickson

@jasongullickson chỉ khi siêu dữ liệu của hệ thống tập tin còn nguyên vẹn. ZFS khá tích cực khi bảo vệ siêu dữ liệu nên có thể bạn sẽ tốt. chỉ có thời gian mới trả lời.
longneck

Cá nhân tôi đã không tham gia vào một sự kiện tham nhũng siêu dữ liệu trước đây vì vậy tôi không biết điều đó sẽ như thế nào về các sự kiện lỗi.
longneck

1
@longneck Gotcha, sau đó chúng tôi đồng ý - chắc chắn là một ý tưởng tồi khi có một nhóm RAID-Z đủ lớn để bạn làm tắc nghẽn bộ phục hồi và làm chậm nó. Và rủi ro lớn khác của các nhóm lớn hơn là tỷ lệ tăng của thiết bị thứ hai bị lỗi trong quá trình phục hồi - số lượng đĩa chẵn lẻ tăng lên (với RAID-Z2 hoặc 3) sẽ giúp giải quyết các vấn đề về độ tin cậy, nhưng không phải với tốc độ của trình phục hồi .
Shane Madden
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.