Ubuntu aggiornato, tutte le unità in uno zpool contrassegnate come non disponibili


8

Ho appena aggiornato Ubuntu 14.04 e avevo due pool ZFS sul server. C'è stato un piccolo problema con me che combattevo con il driver ZFS e la versione del kernel, ma ora ha funzionato. Un pool è stato online e montato bene. L'altro no. La differenza principale tra lo strumento è che uno era solo un pool di dischi (archiviazione video / musicale) e l'altro era un set raidz (documenti, ecc.)

Ho già provato a esportare e reimportare il pool, inutilmente, tentare di importare mi dà questo:

root@kyou:/home/matt# zpool import -fFX -d /dev/disk/by-id/
   pool: storage
     id: 15855792916570596778
  state: UNAVAIL
 status: One or more devices contains corrupted data.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
 config:

        storage                                      UNAVAIL  insufficient replicas
          raidz1-0                                   UNAVAIL  insufficient replicas
            ata-SAMSUNG_HD103SJ_S246J90B134910       UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523  UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969  UNAVAIL

/dev/disk/by-idEsistono anche i collegamenti simbolici per quelli in :

root@kyou:/home/matt# ls -l /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910* /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51*
lrwxrwxrwx 1 root root  9 May 27 19:31 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910 -> ../../sdb
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part9 -> ../../sdb9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523 -> ../../sdd
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part9 -> ../../sdd9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969 -> ../../sde
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1 -> ../../sde1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part9 -> ../../sde9

Ispezionando i vari /dev/sd*dispositivi elencati, sembrano essere quelli corretti (le 3 unità da 1 TB che erano in un array raidz).

Ho eseguito zdb -lsu ogni unità, scaricandolo su un file e eseguendo un diff. L'unica differenza sui 3 sono i campi guid (che presumo siano previsti). Tutte e 3 le etichette su ciascuna sono sostanzialmente identiche e sono le seguenti:

version: 5000
name: 'storage'
state: 0
txg: 4
pool_guid: 15855792916570596778
hostname: 'kyou'
top_guid: 1683909657511667860
guid: 8815283814047599968
vdev_children: 1
vdev_tree:
    type: 'raidz'
    id: 0
    guid: 1683909657511667860
    nparity: 1
    metaslab_array: 33
    metaslab_shift: 34
    ashift: 9
    asize: 3000569954304
    is_log: 0
    create_txg: 4
    children[0]:
        type: 'disk'
        id: 0
        guid: 8815283814047599968
        path: '/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1'
        whole_disk: 1
        create_txg: 4
    children[1]:
        type: 'disk'
        id: 1
        guid: 18036424618735999728
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1'
        whole_disk: 1
        create_txg: 4
    children[2]:
        type: 'disk'
        id: 2
        guid: 10307555127976192266
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1'
        whole_disk: 1
        create_txg: 4
features_for_read:

Stupidamente, non ho un backup recente di questo pool. Tuttavia, il pool andava bene prima del riavvio e Linux vede bene i dischi (ho smartctl in esecuzione ora per ricontrollare)

Quindi, in sintesi:

  • Ho aggiornato Ubuntu e ho perso l'accesso a uno dei miei due zpool.
  • La differenza tra le piscine è quella che è emersa era JBOD, l'altra aveva paura.
  • Tutte le unità nello zpool non montabile sono contrassegnate come UNAVAIL, senza note per i dati danneggiati
  • I pool sono stati entrambi creati con dischi a cui fa riferimento /dev/disk/by-id/.
  • I collegamenti simbolici /dev/disk/by-idai vari /dev/sddispositivi sembrano essere corretti
  • zdb può leggere le etichette dalle unità.
  • Il pool è già stato tentato di essere esportato / importato e non è in grado di importare nuovamente.

Esiste una sorta di magia nera che posso invocare tramite zpool / zfs per riportare questi dischi in un array ragionevole? Posso eseguire zpool create zraid ...senza perdere i miei dati? I miei dati sono andati comunque?

Risposte:


5

Dopo tante altre ricerche su Google su questo specifico messaggio di errore, stavo ricevendo:

root@kyou:/home/matt# zpool import -f storage
cannot import 'storage': one or more devices are already in use

(Incluso qui per i posteri e gli indici di ricerca) Ho trovato questo:

https://groups.google.com/a/zfsonlinux.org/forum/#!topic/zfs-discuss/VVEwd1VFDmc

Stava usando le stesse partizioni e le stava aggiungendo a mdraid durante qualsiasi avvio prima che ZFS fosse caricato.

Mi sono ricordato di aver visto alcune linee mdadm dmesge abbastanza sicuro:

root@kyou:/home/matt# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md126 : active raid5 sdd[2] sdb[0] sde[1]
      1953524992 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

Queste unità erano, una volta, parte di un array software raid5. Per qualche motivo, durante l'aggiornamento, ha deciso di ripetere la scansione delle unità e scoprire che le unità facevano parte di un array md e ha deciso di ricrearlo. Questo è stato verificato con:

root@kyou:/storage# mdadm --examine /dev/sd[a-z]

Quei tre dischi hanno mostrato un mucchio di informazioni. Per ora, arrestando l'array:

root@kyou:/home/matt# mdadm --stop /dev/md126
mdadm: stopped /dev/md126

E rieseguire l'importazione:

root@kyou:/home/matt# zpool import -f storage

ha riportato l'array online.

Ora faccio un'istantanea di quel pool per il backup ed eseguo mdadm --zero-superblocksu di essi.


4

Ubuntu sembra avere alcuni fastidiosi problemi di udev che non vediamo sul lato Red Hat / CentOS. Se possibile, consiglierei di utilizzare i nomi dei dispositivi basati su WWN, poiché sembrano meno sensibili a questo.

Hai visto: Perché il riavvio ha reso UNAVAIL un lato del mio mirror ZFS?


2
Ho visto quelli, e leggendo il thread collegato in uno, sembra che il problema sia udev non creare collegamenti simbolici per tutte le partizioni sul dispositivo. Ho appena controllato tutte e tre le unità. Ognuno di essi ha i numeri di partizione 1 e 9 e quelli hanno collegamenti simbolici /dev/disk/by-idper quelle unità e tutti i collegamenti simbolici per un dispositivo puntano alla stessa /dev/sd*unità. E la cosa più vicina che riesco a trovare in una soluzione (utilizzare Zpool Sostituisci), non posso fare poiché non riesco a reimportare il pool.
Matt Sieker,

2

Ho riscontrato quasi questo esatto problema nel tentativo di aggiornare i kernel della serie 3.13 su Debian Wheezy. Hai ragione nel tuo commento; è un bug udev. Purtroppo non l'ho mai fatto, ma vale la pena esplorare altri kernel, in particolare la serie 3.11, per la compatibilità con la versione 0.6.2 di ZOL. Usa il kernel più vecchio fino a quando non esce 0.6.3.


È abbastanza inaccettabile che udev si rompa in questo modo. Non uso Ubuntu, ma cose come questa sembrano davvero non lucidate rispetto alle offerte RHEL.
ewwhite,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.