Yeniden başlatma neden ZFS aynamın bir tarafının UNAVAIL olmasına neden oldu?


13

Kısa bir süre önce bir toplu veri depolama havuzunu (ZFS Linux 0.6.2, Debian Wheezy) tek cihazlı vdev yapılandırmasından iki yönlü ayna vdev yapılandırmasına geçtim.

Önceki havuz yapılandırması:

    NAME                     STATE     READ WRITE CKSUM
    akita                    ONLINE       0     0     0
      ST4000NM0033-Z1Z1A0LQ  ONLINE       0     0     0

Resilver tamamlandıktan sonra her şey iyiydi (Resilver tamamlandıktan sonra bir fırça başlattım, sadece sistemin her şeyi bir kez daha gözden geçirmesi ve hepsinin iyi olduğundan emin olmak için):

  pool: akita
 state: ONLINE
  scan: scrub repaired 0 in 6h26m with 0 errors on Sat May 17 06:16:06 2014
config:

        NAME                       STATE     READ WRITE CKSUM
        akita                      ONLINE       0     0     0
          mirror-0                 ONLINE       0     0     0
            ST4000NM0033-Z1Z1A0LQ  ONLINE       0     0     0
            ST4000NM0033-Z1Z333ZA  ONLINE       0     0     0

errors: No known data errors

Ancak, yeniden başlattıktan sonra havuz güzel ve züppe değildi bana bildiren bir e-posta aldım. Bir göz attım ve gördüm:

   pool: akita
  state: DEGRADED
 status: One or more devices could not be used because the label is missing or
         invalid.  Sufficient replicas exist for the pool to continue
         functioning in a degraded state.
 action: Replace the device using 'zpool replace'.
    see: http://zfsonlinux.org/msg/ZFS-8000-4J
   scan: scrub in progress since Sat May 17 14:20:15 2014
     316G scanned out of 1,80T at 77,5M/s, 5h36m to go
     0 repaired, 17,17% done
 config:

         NAME                       STATE     READ WRITE CKSUM
         akita                      DEGRADED     0     0     0
           mirror-0                 DEGRADED     0     0     0
             ST4000NM0033-Z1Z1A0LQ  ONLINE       0     0     0
             ST4000NM0033-Z1Z333ZA  UNAVAIL      0     0     0

 errors: No known data errors

Ovma bekleniyor; yeniden başlatma sırasında tam bir sistem ovma başlatmak için bir cron işi kurulum var. Ancak, kesinlikle yeni HDD'nin aynadan düşmesini beklemiyordum.

/ Dev / disk / by-id / wwn- * adlarıyla eşlenen takma adlar tanımlarım ve her iki diskte de ZFS'yi boş disk kullanması için tam diski kullanması durumunda, disk bölümleme de dahil olmak üzere:

# zpool history akita | grep ST4000NM0033
2013-09-12.18:03:06 zpool create -f -o ashift=12 -o autoreplace=off -m none akita ST4000NM0033-Z1Z1A0LQ
2014-05-15.15:30:59 zpool attach -o ashift=12 -f akita ST4000NM0033-Z1Z1A0LQ ST4000NM0033-Z1Z333ZA
# 

Bunlar /etc/zfs/vdev_id.conf adresinden ilgili satırlardır (Z1Z333ZA'nın ayırma için bir sekme karakteri kullandığını ancak Z1Z1A0LQ satırında yalnızca boşluk kullandığını fark ediyorum, ancak dürüstçe bunun burada nasıl alakalı olabileceğini görmüyorum) :

alias ST4000NM0033-Z1Z1A0LQ             /dev/disk/by-id/wwn-0x5000c500645b0fec
alias ST4000NM0033-Z1Z333ZA     /dev/disk/by-id/wwn-0x5000c50065e8414a

Ben baktım, /dev/disk/by-id/wwn-0x5000c50065e8414a*beklendiği gibi /dev/disk/by-vdev/ST4000NM0033-Z1Z333ZA*vardı , ama değildi.

Düzenleyen sudo udevadm triggerneden sembolik / dev / disk / by-vdev göstermek için. Ancak, ZFS sadece orada olduklarını fark etmiyor gibi görünmüyor (Z1Z333ZA hala gösteriyor UNAVAIL). Sanırım bu kadarı beklenebilir.

İlgili cihazı değiştirmeyi denedim, ancak gerçek bir şansım yoktu:

# zpool replace akita ST4000NM0033-Z1Z333ZA
invalid vdev specification
use '-f' to override the following errors:
/dev/disk/by-vdev/ST4000NM0033-Z1Z333ZA-part1 is part of active pool 'akita'
# 

Her iki disk de önyükleme işlemi sırasında algılanır (ilgili sürücüleri gösteren dmesg günlük çıkışı):

[    2.936065] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    2.936137] ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    2.937446] ata4.00: ATA-9: ST4000NM0033-9ZM170, SN03, max UDMA/133
[    2.937453] ata4.00: 7814037168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    2.938516] ata4.00: configured for UDMA/133
[    2.992080] ata6: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    3.104533] ata6.00: ATA-9: ST4000NM0033-9ZM170, SN03, max UDMA/133
[    3.104540] ata6.00: 7814037168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    3.105584] ata6.00: configured for UDMA/133
[    3.105792] scsi 5:0:0:0: Direct-Access     ATA      ST4000NM0033-9ZM SN03 PQ: 0 ANSI: 5
[    3.121245] sd 3:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
[    3.121372] sd 3:0:0:0: [sdb] Write Protect is off
[    3.121379] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    3.121426] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    3.122070] sd 5:0:0:0: [sdc] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
[    3.122176] sd 5:0:0:0: [sdc] Write Protect is off
[    3.122183] sd 5:0:0:0: [sdc] Mode Sense: 00 3a 00 00
[    3.122235] sd 5:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

Her iki sürücü de doğrudan anakarta bağlanır; herhangi bir off-board kontrolörü yoktur.

Dürtü üzerine yaptım:

# zpool online akita ST4000NM0033-Z1Z333ZA

ki bu işe yaramış gibi görünüyor; Z1Z333ZA şimdi en azından ONLINEve yeniden canlandırıyor. Resilver'a yaklaşık bir saatte 180G tarandı ve% 9.77 yapıldığı için 24G'yi yeniden resilverdi, bu da tam bir resilver yapmayı değil, sadece veri kümesi deltasını aktardığını gösteriyor.

Ben emin bu konunun ZFS On Linux veya udev ile ilgili olup olmadığını dürüstçe değilim (o udev gibi biraz kokuyor ama o zaman neden kimse sadece iyi tespit ancak diğer edilmeyecektir sürücü olur), fakat benim sorum ben nasıl yapabilirim bir sonraki yeniden başlatmada aynı şeyin tekrar gerçekleşmeyeceğinden emin misiniz?

Gerekirse kurulum hakkında daha fazla veri sağlamaktan memnuniyet duyarız; neye ihtiyaç duyduğumu bilmeme izin ver.

Yanıtlar:


10

Bu, Debian ve Ubuntu varyantlarına özgü görünen bir udev sorunudur . Linux'taki ZFS'imin çoğu CentOS / RHEL ile.

ZFS tartışma listesindeki benzer konular bundan bahsetmiştir.

Bakınız:
/ dev / disk / by-id altında aynı sabit disk için scsi ve ata girişleri
ve
Linux / Ubuntu üzerinde ZFS: Ubuntu 13.04'ten 13.10'a yükseltildikten sonra bir zpool'un içe aktarılmasına yardımcı olun, cihaz kimlikleri değişti

Debian / Ubuntu sistemleri için en belirleyici havuz cihazı yaklaşımının ne olduğundan emin değilim. RHEL için, cihaz WWN'lerini genel havuz cihazlarında kullanmayı tercih ederim. Ancak diğer zamanlarda, cihaz adı / seri de yararlıdır. Ama Udev gereken kontrol altında tüm bu devam edebilmek.

# zpool status
  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 0h32m with 0 errors on Sun Feb 16 17:34:42 2014
config:

        NAME                        STATE     READ WRITE CKSUM
        vol1                        ONLINE       0     0     0
          mirror-0                  ONLINE       0     0     0
            wwn-0x500000e014609480  ONLINE       0     0     0
            wwn-0x500000e0146097d0  ONLINE       0     0     0
          mirror-1                  ONLINE       0     0     0
            wwn-0x500000e0146090c0  ONLINE       0     0     0
            wwn-0x500000e01460fd60  ONLINE       0     0     0

1
Çıplak wwn-*isimlere geçtikten sonra havuz sabit görünüyor.
CVn

1
@ MichaelKjörling wwn- * names'e nasıl göç ettiğinizi ayrıntılı olarak açıklayabilir misiniz?
codecowboy

1
@codecowboy Hiçbir şey fantezi değil. zpool detach akita ST4000NM0033-Z1Z333ZAdaha sonra zpool attach -o ashift=12 -f akita ST4000NM0033-Z1Z1A0LQ wwn-0x5000c50065e8414adaha sonra zpool detach akita ST4000NM0033-Z1Z1A0LQdaha sonra zpool attach akita wwn-0x5000c50065e8414a wwn-0x5000c500645b0fec, her bir adım arasında doğrulama havuz stabil olduğu. İlk önce kapsamlı bir ovma tavsiye ederim. Muhtemelen de kurtulabilirsin zpool replaceama takma adlar wwn isimlerini işaret ettiğinden ve artıklık artı yedeklemelere sahip olduğumdan, bu daha güvenli hissettim. Birkaç gün sürdü ama acele etmedim.
CVn
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.