Importazione ZFS impossibile trovare pool


11

Avevo un pool ZFS - un mirror contenente 2 vdevs - in esecuzione su un server FreeBSD. Ora ho solo uno dei dischi dal mirror e sto cercando di recuperare i file da esso.

I dati ZFS si trovano in una partizione GPT sul disco.

Quando provo a importare il pool, non c'è alcun segno che esista affatto. Ho provato diversi approcci, ma non succede nulla.

Ho eseguito zdb -lusulla partizione e sembra che le etichette siano perfette.

# zpool import
# zpool import -D
# zpool status
no pools available
# zpool import -f ztmp
cannot import 'ztmp': no such pool available
# zpool import 16827460747202824739
cannot import '16827460747202824739': no such pool available

Informazioni sulla partizione:

# gpart list da0
Geom name: da0
modified: false
state: OK
fwheads: 255
fwsectors: 63
last: 3907029134
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: da0p1
   Mediasize: 65536 (64K)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 17408
   Mode: r0w0e0
   rawuuid: d7a10230-8b0e-11e1-b750-f46d04227f12
   rawtype: 83bd6b9d-7f41-11dc-be0b-001560b84f0f
   label: (null)
   length: 65536
   offset: 17408
   type: freebsd-boot
   index: 1
   end: 161
   start: 34
2. Name: da0p2
   Mediasize: 17179869184 (16G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 82944
   Mode: r0w0e0
   rawuuid: d7aa40b7-8b0e-11e1-b750-f46d04227f12
   rawtype: 516e7cb5-6ecf-11d6-8ff8-00022d09712b
   label: (null)
   length: 17179869184
   offset: 82944
   type: freebsd-swap
   index: 2
   end: 33554593
   start: 162
3. Name: da0p3
   Mediasize: 1905891737600 (1.7T)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 82944
   Mode: r0w0e0
   rawuuid: d7b6a47e-8b0e-11e1-b750-f46d04227f12
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: (null)
   length: 1905891737600
   offset: 17179952128
   type: freebsd-zfs
   index: 3
   end: 3755999393
   start: 33554594
Consumers:
1. Name: da0
   Mediasize: 2000398934016 (1.8T)
   Sectorsize: 512
   Mode: r0w0e0

Etichetta ZFS:

--------------------------------------------
LABEL 0
--------------------------------------------
    version: 5000
    name: 'ztmp'
    state: 0
    txg: 0
    pool_guid: 16827460747202824739
    hostid: 740296715
    hostname: '#############'
    top_guid: 15350190479074972289
    guid: 3060075816835778669
    vdev_children: 1
    vdev_tree:
        type: 'mirror'
        id: 0
        guid: 15350190479074972289
        whole_disk: 0
        metaslab_array: 30
        metaslab_shift: 34
        ashift: 9
        asize: 1905887019008
        is_log: 0
        create_txg: 4
        children[0]:
            type: 'disk'
            id: 0
            guid: 3060075816835778669
            path: '/dev/gptid/d7b6a47e-8b0e-11e1-b750-f46d04227f12'
            phys_path: '/dev/gptid/d7b6a47e-8b0e-11e1-b750-f46d04227f12'
            whole_disk: 1
            DTL: 5511
            resilvering: 1
        children[1]:
            type: 'disk'
            id: 1
            guid: 3324029433529063540
            path: '/dev/gptid/396a2b11-cb16-11e1-83f4-f46d04227f12'
            phys_path: '/dev/gptid/396a2b11-cb16-11e1-83f4-f46d04227f12'
            whole_disk: 1
            DTL: 3543
            create_txg: 4
            resilvering: 1
    features_for_read:
    create_txg: 0
Uberblock[0]
    magic = 0000000000bab10c
    version = 5000
    txg = 0
    guid_sum = 1668268329223536005
    timestamp = 1361299185 UTC = Tue Feb 19 10:39:45 2013

(Le altre etichette sono copie esatte)

C'è una discussione su un problema simile in questo vecchio thread . Ho provato a eseguire lo labelfixstrumento di Jeff Bonwick (con aggiornamenti da questo post ), ma non sembrava risolvere il problema.

Qualche idea?


2
L'unità è stata staccata dallo specchio, anziché essere divisa. Sembra che sia stata la causa del problema. Il resto dello specchio non esiste, sfortunatamente.
squidpickles,

1
Non so che questo è il forum giusto per questo, perché la "risposta" alla domanda comporta molte prove ed errori. Per ora, prova 'zpool import -d </ dev / path / to / disk>'. -D elenca i pool distrutti, -d prende in considerazione l'ubicazione di un disco da guardare e può essere specificato più volte sulla riga di comando (ma nel tuo caso, sarà necessaria una sola volta come hai, ma l'unico disco) . Guarda cosa fa.
Nex7,

1
Potresti avere ragione sul fatto che questo non è il forum giusto. E sì, ho provato con le opzioni -de -D, senza alcun risultato.
squidpickles,

1
Se hai provato con -d <percorso di sviluppo del disco inclusa la partizione> e non è stato visualizzato, riprova tutto ma su un sistema operativo illumos. Se ancora non riesco a vederlo, sono senza idee. Potrebbe essere necessario rivolgersi a un esperto di recupero dati se i dati hanno un valore monetario o iniziare a guardare il codice (src.illumos.org) mentre si è sul derivato illumos e tracciare il comando di importazione zpool per vedere quale percorso prende e provare per capire perché non riesce a vedere la tua piscina.
Nex7,

2
@GrahamPerrin Ho finito per farlo funzionare. Ho modificato i sorgenti ZFS sulla mia installazione di FreeBSD e li ho fatti bypassare tutti i controlli di integrità. Dopo aver disabilitato abbastanza di quelli, sono riuscito a importare il pool. Qualcuno deve aver ignorato i miei controlli di sanità mentale ...
squidpickles,

Risposte:


6

per riferimento futuro, semplicemente eseguendo zpool import -a (cercherà tutti), di solito aiuta anche quando un fs zpool / zfs non viene riconosciuto.


vedo anche il mio nella cache, ma provare questo non ha funzionato. Sto eseguendo il backup del mio file di cache, provando con e senza di esso, e per forzarlo, ecc., Andando anche a verificare ciò che Graham ha suggerito sopra.
Brian Thomas,

4

Dal commento (dal poster di apertura):

Ho modificato i sorgenti ZFS sulla mia installazione di FreeBSD e li ho fatti bypassare tutti i controlli di integrità. Dopo aver disabilitato abbastanza di quelli, sono riuscito a importare il pool.


1

In qualche modo ho rovinato la mia configurazione ZFS. Sfortunatamente non ricordo cosa ho fatto esattamente (ho cambiato hardware, quindi ho fatto un casino; non essere come me!), Ma ha funzionato per me. Sto usando XigmaNAS (nas4free) e tutti i comandi seguenti sono emessi tramite terminale.

Alcuni vaghi ricordi di ciò che ho fatto (e non fatto):

  • Non ha esportato alcun pool
  • Potrebbe aver eliminato (distrutto) il pool

Sintomi:

  1. Nella GUI Web, il disco può essere importato e riconosciuto automaticamente come zpool (non formattato, UFS ecc.)
  2. Tuttavia, la sezione ZFS della GUI non è in grado di rilevare zpool. Quindi non posso importare il pool semplicemente premendo i pulsanti. Neanche l'importazione forzata ha funzionato.
  3. Le informazioni SMART su questo disco sono perfette nella GUI. Non penso che il disco sia danneggiato fisicamente.
  4. Nella sezione Informazioni sulla GUI mostra il disco come da1. Questa è abbastanza informazione di cui ho bisogno prima di andare al terminal.
  5. Avviso agli altri utenti: se si verificano problemi con la GUI, interrompere immediatamente qualsiasi operazione distruttiva. Come creare un nuovo vdev o provare con altri formati di disco. Vai al terminale.
  6. Nel terminale, ecco alcuni tentativi di comandi e risultati.

    • zpool import -a dice no pool available to import
    • zpool statusdice no pools available(linguaggio rotto? lol.)
    • gpart list -a non mostra da1
    • gpart list da1 dice gpart: no such geom: da1
    • zpool list dice no pools available
    • glabel list -a non mostra alcun pool in da1
    • zdb -l /dev/da1è in grado di stampare le due etichette da1, quindi il mio disco non è morto
    • zpool import -Ddice che il pool on da1è stato distrutto e può essere importato

Soluzione:

Esegui zpool import -D -f (poolname)risolto il problema.

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.