ZFS resilvering ไม่มีที่สิ้นสุด


29

ฉันมีพูล ZFS (FUSE) ขนาดใหญ่ (> 100TB) บน Debian ที่เสียสองไดรฟ์ ในขณะที่ไดรฟ์ล้มเหลวฉันจึงแทนที่พวกเขาด้วยอะไหล่จนกว่าฉันจะสามารถกำหนดเวลาไฟฟ้าดับและแทนที่ดิสก์ที่ไม่ดีได้

เมื่อฉันนำระบบลงและแทนที่ไดรฟ์กลุ่มเริ่ม resilvering ตามที่คาดไว้ แต่เมื่อมันมาถึงประมาณ 80% เสร็จสมบูรณ์ (โดยปกติจะใช้เวลาประมาณ 100 ชั่วโมง) รีสตาร์ทอีกครั้ง

ฉันไม่แน่ใจว่าการเปลี่ยนไดรฟ์สองตัวพร้อมกันสร้างเงื่อนไขการแย่งชิงหรือเนื่องจากขนาดของพูลที่ผู้กู้ใช้เวลานานว่ากระบวนการของระบบอื่นจะขัดจังหวะและทำให้รีสตาร์ท แต่ไม่มีข้อบ่งชี้ที่ชัดเจนใน ผลลัพธ์ของ 'สถานะ zpool' หรือบันทึกระบบที่ชี้ไปที่ปัญหา

ฉันได้ปรับเปลี่ยนวิธีที่ฉันวางโครงสร้างกลุ่มเหล่านี้เพื่อปรับปรุงประสิทธิภาพการกู้คืน แต่โอกาสในการขายหรือคำแนะนำใด ๆ ในการทำให้ระบบนี้กลับสู่การผลิตได้รับการชื่นชม

เอาต์พุตสถานะ zpool (ข้อผิดพลาดเป็นสิ่งใหม่นับตั้งแต่ฉันตรวจสอบครั้งล่าสุด):

  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

โปรดระบุผลลัพธ์ของzpool status
longneck

ดังนั้นมันจะรายงานข้อผิดพลาดอะไรถ้าคุณใช้-v?
Bobby

"ข้อผิดพลาด: ตรวจพบข้อผิดพลาดถาวรในไฟล์ต่อไปนี้:" แล้วรายการของไฟล์ประมาณ 12 ไฟล์ที่มีข้อผิดพลาด
jasongullickson

สำหรับส่วน 'ดู:' คุณสามารถอ่านคำอธิบายโดยละเอียดเพิ่มเติมได้ที่นี่: illumos.org/msg/ZFS-8000-8A
Raymond Tau

คำตอบ:


56

ขอแสดงความยินดีและเอ่อ คุณได้พบกับหนึ่งในสิ่งที่ดีกว่าเกี่ยวกับ ZFS แต่ยังทำบาปการกำหนดค่า

ข้อแรกเนื่องจากคุณใช้ raidz1 คุณจะมีข้อมูลพาริตี้เพียงดิสก์เดียว อย่างไรก็ตามคุณมีสองไดรฟ์ล้มเหลวพร้อมกัน ผลลัพธ์ที่เป็นไปได้เพียงอย่างเดียวที่นี่คือการสูญเสียข้อมูลการสูญเสียข้อมูลไม่มีการกู้คืนจำนวนใดที่จะแก้ไขได้

อะไหล่ของคุณช่วยคุณออกมาเล็กน้อยและช่วยคุณให้รอดพ้นจากความล้มเหลวอย่างสิ้นเชิง ฉันจะออกไปข้างนอกที่นี่และบอกว่าทั้งสองไดรฟ์ที่ล้มเหลวไม่ได้ล้มเหลวในเวลาเดียวกันและอะไหล่แรกเท่านั้นที่มีการ resilvered เพียงบางส่วนก่อนที่ไดรฟ์ที่สองจะล้มเหลว

ดูเหมือนยากที่จะติดตาม นี่คือภาพ:

ลำดับเหตุการณ์

นี่เป็นสิ่งที่ดีจริงๆเพราะถ้านี่เป็นอาร์เรย์ RAID แบบดั้งเดิมอาร์เรย์ทั้งหมดของคุณจะออฟไลน์ทันทีที่ไดรฟ์ที่สองล้มเหลวและคุณจะไม่มีโอกาสกู้คืนได้ แต่เนื่องจากนี่คือ ZFS จึงสามารถใช้งานชิ้นส่วนที่มีอยู่และส่งคืนข้อผิดพลาดระดับบล็อกหรือไฟล์สำหรับชิ้นส่วนที่ไม่มี

นี่คือวิธีที่คุณแก้ไข:ระยะสั้นรับรายการไฟล์ที่เสียหายzpool status -vและคัดลอกไฟล์เหล่านั้นจากข้อมูลสำรองไปยังตำแหน่งดั้งเดิม หรือลบไฟล์ สิ่งนี้จะช่วยให้ผู้กู้คืนและดำเนินการต่อได้

นี่คือบาปการกำหนดค่าของคุณ:คุณมีไดรฟ์มากเกินไปในกลุ่ม Raidz

ระยะยาว:คุณต้องกำหนดค่าไดรฟ์ของคุณใหม่ การกำหนดค่าที่เหมาะสมกว่านั้นก็คือการจัดเรียงไดรฟ์ไว้ในกลุ่มเล็ก ๆ ของไดรฟ์ 5 ตัวหรือมากกว่าใน Raidz1 ZFS จะทำการแถบในกลุ่มย่อยเหล่านั้นโดยอัตโนมัติ สิ่งนี้จะช่วยลดเวลาการกู้คืนอย่างมีนัยสำคัญเมื่อไดรฟ์ล้มเหลวเนื่องจากมีเพียง 5 ไดรฟ์เท่านั้นที่ต้องเข้าร่วมแทนที่จะเป็นไดรฟ์ทั้งหมด คำสั่งให้ทำเช่นนี้จะเป็นอย่างไร:

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

ขอบคุณ @longneck มากสำหรับคำตอบที่มีรายละเอียดและให้ข้อมูล! คุณทราบถึงลำดับเหตุการณ์และฉันได้รับคำแนะนำเกี่ยวกับการกำหนดค่าอุปกรณ์แล้ว (อุปกรณ์ตัวที่สองที่ฉันสร้างขึ้นนั้นมีการกำหนดค่าเกือบจะตรงตามที่คุณอธิบายด้วยข้อควรพิจารณาเพิ่มเติมบางประการเพื่อให้การโจมตีแต่ละครั้งกระจายไปทั่วฮาร์ดแวร์ ลดโอกาสในการสูญเสียการจู่โจมทั้งหมดเนื่องจากความล้มเหลวของแบ็คเพลน ฯลฯ )
jasongullickson

เมื่อลบไฟล์ที่เสียหายไปแล้ว "สถานะ zfs" จะส่งคืนค่าเลขฐานสิบหกแทนชื่อไฟล์ ฉันคิดว่ามันจะหายไปเมื่อการขัดผิวเสร็จสิ้นในที่สุด?
jasongullickson

@jasongullickson เฉพาะในกรณีที่ข้อมูลเมตาของระบบไฟล์ยังคงเหมือนเดิม ZFS ค่อนข้างก้าวร้าวเมื่อต้องปกป้องข้อมูลเมตาดังนั้นคุณน่าจะดี เวลาเท่านั้นที่จะบอก.
longneck

ฉันเองยังไม่ได้เข้าร่วมกิจกรรมเมตาดาต้าคอรัปชั่นมาก่อนดังนั้นฉันจึงไม่รู้ว่าจะมีลักษณะอย่างไรในแง่ของเหตุการณ์ข้อผิดพลาด
longneck

1
@ longneck Gotcha จากนั้นเราก็เห็นด้วย - เป็นความคิดที่ไม่ดีที่จะมีกลุ่ม RAID-Z ที่ใหญ่พอที่คุณจะมีปัญหากับคอขวดของผู้กู้และชะลอความเร็วลง และความเสี่ยงที่ยิ่งใหญ่ของกลุ่มที่ใหญ่กว่าคืออัตราต่อรองที่เพิ่มขึ้นของอุปกรณ์ตัวที่สองที่ล้มเหลวในระหว่างการกู้คืน - จำนวนพาริตี้ดิสก์ที่เพิ่มขึ้น (กับ RAID-Z2 หรือ 3) จะช่วยแก้ไขปัญหาความน่าเชื่อถือ .
เชนหัวเสีย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.