ZFS su FreeBSD: recupero dalla corruzione dei dati


44

Ho diversi TB di dati personali molto preziosi in uno zpool a cui non posso accedere a causa della corruzione dei dati. Il pool è stato originariamente creato nel 2009 circa su un sistema FreeBSD 7.2 in esecuzione all'interno di una macchina virtuale VMWare su un sistema Ubuntu 8.04. La VM di FreeBSD è ancora disponibile e funziona correttamente, solo il sistema operativo host è ora cambiato in Debian 6. I dischi rigidi sono resi accessibili alla VM guest tramite dispositivi SCSI generici VMWare, 12 in totale.

Ci sono 2 piscine:

  • zpool01: 2x 4x 500 GB
  • zpool02: 1x 4x 160 GB

Quello che funziona è vuoto, quello rotto contiene tutti i dati importanti:

[user@host~]$ uname -a
FreeBSD host.domain 7.2-RELEASE FreeBSD 7.2-RELEASE #0: \
  Fri May  1 07:18:07 UTC 2009                          \
  root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

[user@host ~]$ dmesg | grep ZFS
WARNING: ZFS is considered to be an experimental feature in FreeBSD.
ZFS filesystem version 6
ZFS storage pool version 6

[user@host ~]$ sudo zpool status
  pool: zpool01
 state: UNAVAIL
 scrub: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    zpool01     UNAVAIL      0     0     0  insufficient replicas
      raidz1    UNAVAIL      0     0     0  corrupted data
        da5     ONLINE       0     0     0
        da6     ONLINE       0     0     0
        da7     ONLINE       0     0     0
        da8     ONLINE       0     0     0
      raidz1    ONLINE       0     0     0
        da1     ONLINE       0     0     0
        da2     ONLINE       0     0     0
        da3     ONLINE       0     0     0
        da4     ONLINE       0     0     0

  pool: zpool02
 state: ONLINE
 scrub: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    zpool02     ONLINE       0     0     0
      raidz1    ONLINE       0     0     0
        da9     ONLINE       0     0     0
        da10    ONLINE       0     0     0
        da11    ONLINE       0     0     0
        da12    ONLINE       0     0     0

errors: No known data errors

Sono stato in grado di accedere alla piscina un paio di settimane fa. Da allora, ho dovuto sostituire praticamente tutto l'hardware del computer host e installare diversi sistemi operativi host.

Il mio sospetto è che una di queste installazioni del sistema operativo abbia scritto un bootloader (o qualsiasi altra cosa) su una (la prima?) Delle unità da 500 GB e abbia distrutto alcuni metadati di zpool (o qualunque altra cosa) - "o qualunque cosa", il che significa che questa è solo un'idea molto vaga e quel soggetto non è esattamente il mio lato forte ...


Ci sono molti siti Web, blog, mailing list, ecc. Su ZFS. Pubblico questa domanda qui nella speranza che mi aiuti a raccogliere informazioni sufficienti per un approccio sano, strutturato, controllato, informato e ben informato per recuperare i miei dati e, si spera, aiutare qualcun altro nella stessa situazione.


Il primo risultato della ricerca quando si cerca su Google "zfs recovery " è il capitolo Risoluzione dei problemi e recupero dati di ZFS dalla Guida all'amministrazione di Solaris ZFS. Nella prima sezione Modalità di errore ZFS , nel paragrafo "Dati ZFS danneggiati" è indicato:

Il danneggiamento dei dati è sempre permanente e richiede un'attenzione particolare durante la riparazione. Anche se i dispositivi sottostanti vengono riparati o sostituiti, i dati originali vengono persi per sempre.

Un po 'scoraggiante.

Tuttavia, il secondo risultato della ricerca su Google è il blog di Max Bruning e lì ho letto

Di recente, mi è stata inviata un'e-mail da qualcuno che aveva 15 anni di video e musica archiviati in un pool ZFS da 10 TB che, dopo un'interruzione di corrente, è diventato difettoso. Sfortunatamente non aveva un backup. Stava usando ZFS versione 6 su FreeBSD 7 [...] Dopo aver trascorso circa 1 settimana a esaminare i dati sul disco, sono stato in grado di ripristinare praticamente tutto.

e

Per quanto riguarda ZFS che perde i tuoi dati, ne dubito. Ho il sospetto che i tuoi dati siano lì, ma devi trovare il modo giusto per ottenerli.

(sembra molto più simile a qualcosa che voglio sentire ...)

Primo passo : qual è esattamente il problema?

Come posso diagnosticare perché esattamente lo zpool viene segnalato come corrotto? Vedo che c'è zdb che non sembra essere ufficialmente documentato da Sun o Oracle da nessuna parte sul web. Dalla sua pagina man:

NAME
       zdb - ZFS debugger

SYNOPSIS
       zdb pool

DESCRIPTION
       The  zdb  command is used by support engineers to diagnose failures and
       gather statistics. Since the ZFS file system is  always  consistent  on
       disk  and is self-repairing, zdb should only be run under the direction
       by a support engineer.

       If no arguments are specified, zdb, performs basic  consistency  checks
       on  the pool and associated datasets, and report any problems detected.

       Any options supported by this command are internal to Sun  and  subject
       to change at any time.

Inoltre, Ben Rockwood ha pubblicato un articolo dettagliato e c'è un video di Max Bruning che ne parla (e mdb) all'Open Solaris Developer Conference di Praga il 28 giugno 2008.

L'esecuzione di zdb come root su zpool rotto fornisce il seguente output:

[user@host ~]$ sudo zdb zpool01
    version=6
    name='zpool01'
    state=0
    txg=83216
    pool_guid=16471197341102820829
    hostid=3885370542
    hostname='host.domain'
    vdev_tree
        type='root'
        id=0
        guid=16471197341102820829
        children[0]
                type='raidz'
                id=0
                guid=48739167677596410
                nparity=1
                metaslab_array=14
                metaslab_shift=34
                ashift=9
                asize=2000412475392
                children[0]
                        type='disk'
                        id=0
                        guid=4795262086800816238
                        path='/dev/da5'
                        whole_disk=0
                        DTL=202
                children[1]
                        type='disk'
                        id=1
                        guid=16218262712375173260
                        path='/dev/da6'
                        whole_disk=0
                        DTL=201
                children[2]
                        type='disk'
                        id=2
                        guid=15597847700365748450
                        path='/dev/da7'
                        whole_disk=0
                        DTL=200
                children[3]
                        type='disk'
                        id=3
                        guid=9839399967725049819
                        path='/dev/da8'
                        whole_disk=0
                        DTL=199
        children[1]
                type='raidz'
                id=1
                guid=8910308849729789724
                nparity=1
                metaslab_array=119
                metaslab_shift=34
                ashift=9
                asize=2000412475392
                children[0]
                        type='disk'
                        id=0
                        guid=5438331695267373463
                        path='/dev/da1'
                        whole_disk=0
                        DTL=198
                children[1]
                        type='disk'
                        id=1
                        guid=2722163893739409369
                        path='/dev/da2'
                        whole_disk=0
                        DTL=197
                children[2]
                        type='disk'
                        id=2
                        guid=11729319950433483953
                        path='/dev/da3'
                        whole_disk=0
                        DTL=196
                children[3]
                        type='disk'
                        id=3
                        guid=7885201945644860203
                        path='/dev/da4'
                        whole_disk=0
                        DTL=195
zdb: can't open zpool01: Invalid argument

Suppongo che l'errore "argomento non valido" alla fine si verifichi perché in realtà zpool01 non esiste: non si verifica su zpool02 funzionante, ma non sembra esserci alcun ulteriore output ...

OK, in questa fase, è probabilmente meglio pubblicarlo prima che l'articolo diventi troppo lungo.

Forse qualcuno può darmi qualche consiglio su come andare avanti da qui e mentre aspetto una risposta, guarderò il video, passerò attraverso i dettagli dell'output zdb sopra, leggo l'articolo di Bens e cerco di capire cosa c'è che cosa...


20110806-1600 + 1000

Aggiornamento 01:

Penso di aver trovato la causa principale: Max Bruning è stato così gentile da rispondere a una mia e-mail molto rapidamente, chiedendo l'output di zdb -lll. Su uno dei 4 hard disk nella "buona" raidz1 metà del pool, l'output è simile a quello che ho pubblicato sopra. Tuttavia, sulle prime 3 delle 4 unità nella metà "danneggiata", zdbriporta le failed to unpack labeletichette 2 e 3. La quarta unità nel pool sembra OK, zdbmostra tutte le etichette.

Cercare su Google quel messaggio di errore fa apparire questo post . Dalla prima risposta a quel post:

Con ZFS, che sono 4 etichette identiche su ogni vdev fisico, in questo caso un singolo disco rigido. L0 / L1 all'inizio del vdev e L2 / L3 alla fine del vdev.

Tutte le 8 unità del pool sono dello stesso modello, Seagate Barracuda da 500 GB . Tuttavia, ricordo di aver avviato il pool con 4 unità, quindi una è morta ed è stata sostituita in garanzia da Seagate. Più tardi, ho aggiunto altre 4 unità. Per tale motivo, gli identificatori di unità e firmware sono diversi:

[user@host ~]$ dmesg | egrep '^da.*?: <'
da0:  <VMware, VMware Virtual S 1.0> Fixed Direct Access SCSI-2 device 
da1:  <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device 
da2:  <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device 
da3:  <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device 
da4:  <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device 
da5:  <ATA ST3500320AS SD15> Fixed Direct Access SCSI-5 device 
da6:  <ATA ST3500320AS SD15> Fixed Direct Access SCSI-5 device 
da7:  <ATA ST3500320AS SD15> Fixed Direct Access SCSI-5 device 
da8:  <ATA ST3500418AS CC35> Fixed Direct Access SCSI-5 device 
da9:  <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device 
da10: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device 
da11: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device 
da12: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device 

Ricordo però che tutte le unità avevano le stesse dimensioni. Guardando le unità ora, mostra che la dimensione è cambiata per tre di loro, si sono ridotti di 2 MB:

[user@host ~]$ dmesg | egrep '^da.*?: .*?MB '
da0:   10240MB (20971520  512 byte sectors: 255H 63S/T 1305C)
da1:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da2:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da3:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da4:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da5:  476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) <--
da6:  476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) <--
da7:  476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) <--
da8:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da9:  152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da10: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da11: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da12: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)

Quindi, a quanto pare, non era una delle installazioni del sistema operativo che "scriveva un bootloader su una delle unità" (come avevo ipotizzato prima), era in realtà la nuova scheda madre (un ASUS P8P67 LE ) che creava un host da 2 MB area protetta alla fine di tre delle unità che hanno incasinato i miei metadati ZFS.

Perché non ha creato un HPA su tutte le unità? Credo che questo sia perché la creazione HPA è fatto solo su unità più grandi con un bug che è stato fissato in seguito da un aggiornamento del disco rigido Seagate BIOS: Quando questo intero incidente è iniziato un paio di settimane fa, mi sono imbattuto di Seagate SeaTools per verificare se v'è qualcosa di fisicamente sbagliato con le unità (ancora sul vecchio hardware) e ho ricevuto un messaggio che mi diceva che alcune delle mie unità hanno bisogno di un aggiornamento del BIOS. Poiché ora sto provando a riprodurre i dettagli esatti di quel messaggio e il link per il download dell'aggiornamento del firmware, sembra che da quando la scheda madre ha creato l'HPA, entrambe le versioni di SeaTools DOS non riescano a rilevare i dischi rigidi in questione - un veloce invalid partitiono qualcosa di simile lampeggia quando iniziano, tutto qui. Ironia della sorte, però, trovano un set di unità Samsung.

(Ho saltato i dettagli dolorosi, dispendiosi in termini di tempo e in ultima analisi infruttuosi di frugare in una shell FreeDOS su un sistema non in rete.) Alla fine, ho installato Windows 7 su un computer separato per eseguire SeaTools Windows versione 1.2.0.5. Solo un'ultima osservazione su DOS SeaTools: non preoccuparti di provare ad avviarli autonomamente - invece, investi un paio di minuti e crea una chiavetta USB avviabile con il fantastico Ultimate Boot CD - che oltre a DOS SeaTools ti porta anche molti altri strumenti utili.

All'avvio, SeaTools per Windows visualizza questa finestra di dialogo:

Finestra di dialogo Aggiornamento firmware SeaTools

I collegamenti portano al Controllo numeri di serie (che per qualche motivo è protetto da un captcha - il mio era "Utenti invasivi") e un articolo della knowledge base sull'aggiornamento del firmware. Probabilmente ci sono ulteriori collegamenti specifici al modello del disco rigido e alcuni download e cosa no, ma per il momento non seguirò quel percorso:

Non mi affretterò ad aggiornare il firmware di tre unità alla volta che hanno troncato le partizioni e fanno parte di un pool di archiviazione rotto. Chiede problemi. Per i principianti, l'aggiornamento del firmware molto probabilmente non può essere annullato e ciò potrebbe irrevocabilmente rovinare le mie possibilità di recuperare i miei dati.

Pertanto, la prima cosa che farò dopo è l'immagine delle unità e il lavoro con le copie, quindi c'è un originale a cui tornare se qualcosa va storto. Ciò potrebbe introdurre un'ulteriore complessità, poiché ZFS noterà probabilmente che le unità sono state scambiate (tramite il numero di serie dell'unità o ancora un altro UUID o qualsiasi altra cosa), anche se è copie dd bit-esatte sullo stesso modello di disco rigido. Inoltre, lo zpool non è nemmeno in diretta. Ragazzo, potrebbe essere complicato.

L'altra opzione sarebbe comunque quella di lavorare con gli originali e mantenere le unità con mirroring come backup, ma probabilmente mi imbatterò in una complessità superiore quando qualcosa andasse storto con gli originali. Naa, non va bene.

Al fine di cancellare i tre dischi rigidi che serviranno come sostituti delle immagini per le tre unità con il BIOS difettoso nel pool rotto, ho bisogno di creare un po 'di spazio di archiviazione per le cose che sono lì ora, quindi scaverò in profondità la scatola dell'hardware e assemblare uno zpool temporaneo da alcune vecchie unità - che posso anche usare per testare come ZFS gestisce lo scambio di unità dd'd.

Questo potrebbe richiedere del tempo ...


20111213-1930 + 1100

Aggiornamento 02:

Ci è voluto del tempo. Ho trascorso mesi con diverse custodie per computer aperte sulla mia scrivania con varie quantità di pile di dischi rigidi in sospensione e ho anche dormito un paio di notti con tappi per le orecchie, perché non potevo spegnere la macchina prima di andare a letto perché stava eseguendo una lunga operazione critica . Tuttavia, alla fine ho prevalso! :-) Ho anche imparato molto nel processo e vorrei condividere queste conoscenze qui per chiunque si trovi in ​​una situazione simile.

Questo articolo è già molto più lungo di quanto chiunque abbia un file server ZFS fuori azione abbia il tempo di leggere, quindi entrerò nei dettagli qui e creerò una risposta con i risultati essenziali più avanti.

Ho scavato in profondità nella scatola hardware obsoleta per assemblare abbastanza spazio di archiviazione per spostare il materiale dalle singole unità da 500 GB su cui erano speculari le unità difettose. Ho anche dovuto estrarre alcuni dischi rigidi dalle loro custodie USB, in modo da poterli collegare direttamente tramite SATA. Ci sono stati alcuni altri problemi non correlati coinvolti e alcune delle vecchie unità hanno iniziato a fallire quando le ho rimesse in azione richiedendo una sostituzione di Zpool, ma salterò su quello.

Suggerimento: a un certo punto, c'erano circa 30 dischi rigidi coinvolti in questo. Con così tanto hardware, è di grande aiuto impilarli correttamente; i cavi che si allentano o il disco rigido che cade dalla scrivania sicuramente non aiuterà nel processo e potrebbe causare ulteriori danni all'integrità dei dati.

Ho trascorso un paio di minuti a creare alcuni dispositivi per il disco rigido in cartone per il cambio di marcia che hanno davvero contribuito a mantenere le cose ordinate:

parte dello spazio di archiviazione di make-shift solo un mucchio di viti più un po 'di cartone il ventilatore non è esattamente richiesto, lo stack proviene da un progetto precedente i pezzi di distanza non sono richiesti neanche ...

Ironia della sorte, quando ho collegato le vecchie unità per la prima volta, ho capito che c'era un vecchio zpool lì che dovevo aver creato per il test con una versione precedente di alcuni, ma non tutti i dati personali sono andati persi, quindi mentre la perdita di dati era in qualche modo ridotto, questo significava ulteriori spostamenti avanti e indietro dei file.

Infine, ho rispecchiato le unità problematiche su unità di backup, ho usato quelle per zpool e ho lasciato quelle originali disconnesse. Le unità di backup hanno un firmware più recente, almeno SeaTools non segnala alcun aggiornamento del firmware richiesto. Ho fatto il mirroring con un semplice dd da un dispositivo all'altro, ad es

sudo dd if=/dev/sda of=/dev/sde

Credo che ZFS noti il ​​cambiamento dell'hardware (da un UUID del disco rigido o altro), ma non sembra importare.

Lo zpool tuttavia era ancora nello stesso stato, repliche insufficienti / dati danneggiati.

Come menzionato nell'articolo di HPA Wikipedia menzionato in precedenza, la presenza di un'area protetta dall'host viene segnalata all'avvio di Linux e può essere investigata usando hdparm . Per quanto ne so, non esiste uno strumento hdparm disponibile su FreeBSD, ma a quel punto avevo FreeBSD 8.2 e Debian 6.0 installati come sistema a doppio avvio, quindi ho avviato Linux:

user@host:~$ for i in {a..l}; do sudo hdparm -N /dev/sd$i; done

   ...
/dev/sdd:
 max sectors   = 976773168/976773168, HPA is disabled
/dev/sde:
 max sectors   = 976771055/976773168, HPA is enabled
/dev/sdf:
 max sectors   = 976771055/976773168, HPA is enabled
/dev/sdg:
 max sectors   = 976771055/976773168, HPA is enabled
/dev/sdh:
 max sectors   = 976773168/976773168, HPA is disabled
   ...

Quindi il problema ovviamente era che la nuova scheda madre ha creato un HPA di un paio di megabyte alla fine del disco che ha "nascosto" le due etichette ZFS superiori, impedendo così a ZFS di vederle.


Giocherellare con l'HPA sembra un affare pericoloso. Dalla pagina man di hdparm, parametro -N:

Get/set max visible number of sectors, also known as the Host Protected Area setting.
  ...
To change the current max (VERY DANGEROUS, DATA LOSS IS EXTREMELY LIKELY), a new value
should be provided (in base10) immediately following the -N option.
This value is specified as a count of sectors, rather than the "max sector address"
of the drive. Drives have the concept of a temporary (volatile) setting which is lost on
the next hardware reset, as well as a more permanent (non-volatile) value which survives
resets and power cycles.  By default, -N affects only the temporary (volatile) setting.
To change the permanent (non-volatile) value, prepend a leading p character immediately
before the first digit of the value. Drives are supposed to allow only a single permanent
change per session. A hardware reset (or power cycle) is required before another
permanent -N operation can succeed.
  ...

Nel mio caso, l'HPA è stato rimosso in questo modo:

user@host:~$ sudo hdparm -Np976773168 /dev/sde

/dev/sde:
 setting max visible sectors to 976773168 (permanent)
 max sectors   = 976773168/976773168, HPA is disabled

e allo stesso modo per le altre unità con un HPA. Se si ottiene l'unità sbagliata o qualcosa riguardo al parametro size specificato non è plausibile, hdparm è abbastanza intelligente da capire:

user@host:~$ sudo hdparm -Np976773168 /dev/sdx

/dev/sdx:
 setting max visible sectors to 976773168 (permanent)
Use of -Nnnnnn is VERY DANGEROUS.
You have requested reducing the apparent size of the drive.
This is a BAD idea, and can easily destroy all of the drive's contents.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.

Successivamente, ho riavviato la macchina virtuale FreeBSD 7.2 su cui era stato originariamente creato zpool e lo stato di zpool ha riportato di nuovo un pool funzionante. SÌÌ! :-)

Ho esportato il pool sul sistema virtuale e reimportato sul sistema FreeBSD 8.2 host.

Alcuni aggiornamenti hardware più importanti, un altro scambio della scheda madre, un aggiornamento del pool ZFS a ZFS 4/15, una pulizia approfondita e ora il mio zpool è composto da 8x1TB più 8x500GB di parti raidz2:

[user@host ~]$ sudo zpool status
  pool: zpool
 state: ONLINE
 scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
zpool       ONLINE       0     0     0
  raidz2    ONLINE       0     0     0
    ad0     ONLINE       0     0     0
    ad1     ONLINE       0     0     0
    ad2     ONLINE       0     0     0
    ad3     ONLINE       0     0     0
    ad8     ONLINE       0     0     0
    ad10    ONLINE       0     0     0
    ad14    ONLINE       0     0     0
    ad16    ONLINE       0     0     0
  raidz2    ONLINE       0     0     0
    da0     ONLINE       0     0     0
    da1     ONLINE       0     0     0
    da2     ONLINE       0     0     0
    da3     ONLINE       0     0     0
    da4     ONLINE       0     0     0
    da5     ONLINE       0     0     0
    da6     ONLINE       0     0     0
    da7     ONLINE       0     0     0

errors: No known data errors

[user@host ~]$ df -h
Filesystem         Size    Used   Avail Capacity  Mounted on
/dev/label/root     29G     13G     14G    49%    /
devfs              1.0K    1.0K      0B   100%    /dev
zpool              8.0T    3.6T    4.5T    44%    /mnt/zpool

Come ultima parola, mi sembra che i pool ZFS siano molto, molto difficili da uccidere. I ragazzi di Sun che hanno creato quel sistema hanno tutte le ragioni per chiamarlo l'ultima parola nei filesystem. Rispetto!


2
Prima di fare qualsiasi cosa, immagina quelle unità! Effettua una copia di backup dei tuoi dati "corrotti" nel caso peggiori.
MikeyB,

sì, è un ottimo punto! ed è anche il motivo per cui non ho ancora aggiornato questo articolo con i miei progressi - ancora occupato a cancellare i dischi rigidi sostitutivi ...
ssc

Risposte:


24

Il problema era che il BIOS della nuova scheda madre creava un'area protetta host (HPA) su alcune delle unità, una piccola sezione utilizzata dagli OEM per scopi di ripristino del sistema, solitamente situata alla fine del disco rigido.

ZFS mantiene 4 etichette con meta informazioni sulla partizione e HPA impedisce a ZFS di vedere le due superiori.

Soluzione: avviare Linux, utilizzare hdparm per ispezionare e rimuovere HPA. Fai molta attenzione, questo può facilmente distruggere i tuoi dati per sempre. Consultare l'articolo e la pagina man di hdparm (parametro -N) per i dettagli.

Il problema non si è verificato solo con la nuova scheda madre, ma ho riscontrato un problema simile anche quando si collegano le unità a una scheda controller SAS. La soluzione è la stessa


5

La prima cosa che ti consiglierei di fare è ottenere alcuni dischi rigidi e fare copie duplicate degli 8 dischi che hai con i tuoi dati su di essi, usando il ddcomando. In questo modo, se nei tuoi tentativi di recuperarli finisci per peggiorare le cose, puoi ancora tornare a questa base.

Ho fatto questo prima e ci sono stati momenti che non mi servivano, ma le volte che ho fatto bisogno ha reso del tutto vale la pena.

Non lavorare senza rete.


A dire il vero, mi sento di raccomandare ddrescuesopra dd. In realtà non funziona in modo molto diverso quando le unità funzionano perfettamente (ma ti dà una buona indicazione di progresso) ma se ci sono settori problematici o qualcosa del genere, ddrescue gestisce questa situazione molto meglio di dd (o almeno io è stato detto).
un CVn

2

Sembra che tu sia sulla buona strada per risolvere questo. Se si desidera un altro, possibile punto di vista più recente, è possibile provare un CD live di Solaris 11 Express. Probabilmente c'è un codice molto più recente in esecuzione lì (zpool in Solaris è ora alla versione 31, mentre sei alla versione 6) e potrebbe offrire migliori possibilità di recupero. Non correre zpool upgradesotto Solaris però se vuoi mantenere il pool montabile su FreeBSD.


Grazie per quel suggerimento! :-) Stavo esaminando OpenSolaris nel 2009 o giù di lì quando ho iniziato tutta questa attività ZFS, ma sfortunatamente non supportava i controller che sto usando - dopo tutto è un hardware di livello consumer. Di recente ho anche guardato OpenIndiana, ma non sono sicuro che la situazione sia cambiata. Potrei aggiornare i controller a SAS ad un certo punto e prendere in considerazione la migrazione quindi.
ssc

Penso che OpenIndiana potrebbe valere un nuovo look. Se non altro, potrebbero essere più amichevoli con l'hardware "economico" di Oracle ... Ho consigliato il CD live perché è facile da provare - è possibile eseguirlo anche in una VM.
Jakob Borg,

1

Le mailing list di FreeBSD potrebbero essere un buon punto di partenza per la tua ricerca. Ricordo di aver visto richieste simili passare su FreeBSD-Stable e -Current. A seconda dell'importanza dei tuoi dati, potresti voler contattare un'azienda di recupero professionale, tuttavia, poiché manomettere i pool di archiviazione dei dati inaccessibili ha buone probabilità di peggiorare le cose.


1

Ho riscontrato un problema simile dopo l'aggiornamento da FreeBSD 10.3 a 11.1, dopo che lo zpool era in errore e non c'era modo di recuperare i dati, anche se zdb -lllrestituiva tutte e quattro le etichette valide.

Si scopre che in qualche modo l'aggiornamento ha innescato i driver di gestione dello storage Intel per creare un mirror soft dai dischi (forse è stato abilitato ma non supportato dal geomprovider Intel fino al post-aggiornamento?) E che ha impedito a ZFS di montare i dischi.

Collegandoli a un altro PC con il firmware Intel RST all'avvio abilitato e disabilitando il softraid ( molto importante: ci sono due modi per rompere il softraid, il cui default inizializza (ovvero i formati!) I dischi. Devi scegliere l'opzione per disabilitare senza toccare i dati invece) quindi lasciare che ZFS riconosca il primo disco nel mirror, anche se nulla di ciò che ho fatto gli consentirebbe di identificare i dischi rimanenti come gli stessi presenti nel pre-aggiornamento della macchina. Fortunatamente era uno zpool con mirroring e sono stato in grado di staccare e ricollegare i dischi al pool in questione e il resilver completato senza evento.

Nota a margine: nel mio caso hdparm(in esecuzione da un ISO di Ubuntu Server live) è stato riscontrato che l'HBA era disabilitato su tutti i dischi e non era in grado di aiutare.


-2

se fosse solo un problema di partizione di qualche tipo, farei le partizioni dell'unità + MBR e renderei la partizione della giusta dimensione ...

se non formatti una partizione, la creazione o la modifica della tabella delle partizioni non influisce su nulla (quindi puoi ripristinarlo!) fintanto che non esiste un formato, la maggior parte dei dati è ancora lì / accessibile se la nuova partizione è inserita alla fine del disco potresti avere file corrotti lì dove le nuove cose sono state scritte in modo difficile, ecco perché sei il solo valido per quel trucco fino alla formattazione (nuovo mbr, tabella dei file ecc ...)

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.