ZFS sonsuz resilvering


29

Debian'da iki sürücüyü kaybeden büyük (> 100TB) ZFS (FUSE) havuzum var. Sürücüler arızalandığında, bir kesinti zamanlayabilene ve fiziksel olarak hatalı diskleri değiştirene kadar yedek parçalarla değiştirdim.

Sistemi aldığımda ve sürücüleri değiştirdiğimde, havuz beklendiği gibi geri tepmeye başladı, ancak yaklaşık% 80'i tamamlandığında (bu genellikle yaklaşık 100 saat sürüyor) yeniden başlatılıyor.

İki sürücünün bir kerede değiştirilmesinin bir yarış koşulu yarattığını veya havuzun büyüklüğü nedeniyle, çözümleyicinin o kadar uzun sürdüğünü, diğer sistem işlemlerinin kesintiye uğradığı ve yeniden başlatılmasına neden olduğundan emin değilim, ancak 'zpool status' sonuçları veya sistem bir soruna işaret eden günlüğe kaydeder.

Resilvering performansını artırmak için bu havuzları nasıl düzenleyeceğimi değiştirdim, ancak bu sistemi tekrar üretime sokma konusunda herhangi bir ipucu ya da tavsiye aldım.

zpool durum çıkışı (son kontrol ettiğimden beri hatalar yeni):

  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

Lütfen çıktısını verinzpool status
longneck 15:13

Peki kullanırsanız hangi hataları bildirir -v?
Bobby

"error: Aşağıdaki dosyalarda kalıcı hatalar algılandı:" ve ardından hataları olan yaklaşık 12 dosyanın listesi.
jasongullickson

Yanıtlar:


56

Tebrikler ve ah-ah. ZFS ile ilgili daha iyi şeylerden birine rastladınız, ancak aynı zamanda bir yapılandırma günahı işlediniz.

Öncelikle, raidz1 kullandığınız için, sadece bir eşlik değerine sahip diskiniz var. Ancak, iki sürücünüz eşzamanlı olarak arıza yaptı. Buradaki tek olası sonuç veri kaybı . Hiçbir çözme miktarı bunu düzeltemez.

Yedekleriniz burada size biraz yardımcı oldu ve sizi tamamen yıkıcı bir başarısızlıktan kurtardı. Burada bir uzuvdan dışarı çıkacağım ve başarısız olan iki sürücünün aynı anda başarısız olamayacağını ve ilk yedek parçanın, ikinci sürücünün başarısızlığından önce kısmen geri çekildiğini söyleyeceğim.

Takip etmesi zor görünüyor. İşte bir resim:

olayların sırası

Bu aslında iyi bir şey, çünkü eğer bu geleneksel bir RAID dizisi olsaydı, dizinin tamamı ikinci sürücü başarısız olur olmaz derhal çevrimdışı olacaktı ve yerinde kurtarma için hiçbir şansınız olmayacaktı. Ancak, bu ZFS olduğundan, hala sahip olduğu parçaları kullanarak çalışabilir ve bulunmadığı parçalar için blok veya dosya düzeyinde hatalar döndürür.

İşte bunu nasıl düzeltirsiniz: Kısa vadeli, hasarlı dosyaların bir listesini alın zpool status -vve bu dosyaları yedekten orijinal konumlarına kopyalayın. Veya dosyaları silin. Bu, çözümleyicinin devam etmesini ve tamamlanmasını sağlar.

İşte konfigürasyon günahınız: Bir raidz grubunda çok fazla sürücü var.

Uzun vadede: sürücülerinizi yeniden yapılandırmanız gerekir. Daha uygun bir konfigürasyon, sürücüleri, 5 sürücüden oluşan küçük gruplara veya raidz1'e yerleştirmek olacaktır. ZFS otomatik olarak bu küçük gruplar arasında çizgi çizer. Bu, bir sürücü arızalandığında karşılama süresini önemli ölçüde azaltır, çünkü hepsinin yerine sadece 5 sürücünün katılması gerekir. Bunu yapmak için komut gibi bir şey olurdu:

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

Ayrıntılı ve bilgilendirici bir cevap için teşekkür ederiz! Olayların dizilişini önemsiyorsunuz ve cihaz yapılandırmasıyla ilgili tavsiyenizi çoktan aldım (oluşturduğum ikinci cihaz, neredeyse her şeyi tanımladığınız gibi yapılandırıldı; donanımdaki her baskının yayılmasını sağlamak için bazı ek düşünceler arka panel arızası, vb. nedeniyle bir baskın düşme ihtimalini azaltır.).
jasongullickson

Bozuk dosyaları sildikten sonra, "zfs status" artık dosya adları yerine onaltılık değerleri döndürür; Fırçalama bittiğinde bunun ortadan kalkacağını varsayıyorum?
jasongullickson

@ jasongullickson yalnızca dosya sisteminin meta verileri de sağlamsa. ZFS, meta verileri korumak söz konusu olduğunda oldukça agresif, bu nedenle muhtemelen iyi olacaksınız. Sadece zaman gösterecek.
longneck

şahsen daha önce bir meta veri bozulma olayına girmedim, bu yüzden hata olayları açısından nasıl görüneceğini bilmiyorum.
longneck

1
@longneck Gotcha, o zaman anlaştık - kesinlikle bir RAID-Z grubunu bir alıcıya tıkanıklık çekip yavaşlatan yeterince büyük bir fikir. Ve daha büyük grupların diğer büyük riski, resilver sırasında başarısız olan ikinci bir cihazın artma olasılığıdır - artan sayıda eşlik diski (RAID-Z2 veya 3 ile) güvenilirlik problemlerinde yardımcı olabilir, ancak resilver'ın hızıyla .
Shane Madden
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.