Ripristinare il pool ZFS dopo aver creato sopra

Ho reinstallato il mio sistema Ubuntu 14.04 e ho provato a montare l'unità zfs esistente. È una singola unità con tutti i dati su di esso. Il sistema operativo è su un'unità diversa, l'unità zfs contiene solo i dati.

Il nome della piscina è crystal .

Nella mia fretta (sì.) Ho fatto zpool create crystal /dev/disk-by-id/...etc...

La piscina è ora vuota.

C'è un modo per ripristinare la piscina originale e / o recuperare i dati?

Purtroppo: No, non proprio.

Ci sono, in qualche modo unintuitive, principalmente due operazioni distruttive in ZFS: zfs destroy e zpool create . In particolare, il command zpool destroy non è distruttivo, e in effetti è abbastanza facilmente reversibile se solo realizzare il tuo errore in fretta; semplicemente imposta una bandiera, nel qual caso l' zpool import -D è il tuo amico.

Questi comandi sono distruttivi per motivi simili, ma leggermente diversi:

  • zfs destroy è distruttivo perché rimuove i riferimenti al dataset che viene distrutto, quindi non c'è modo di trovare su disco utilizzando strumenti standard. (Ma vedi anche questa domanda .)
  • zpool create è distruttiva perché sovrascrive tutti gli überblocks della piscina, il che significa che non c'è modo per il codice ZFS per trovare gli inizi della struttura dei dati di tree sul disco Tagle. Una volta che la radice dell'tree non può essere trovata, il resto dei dati diventa inaccessibile.

Entrambe sono esacerbate dal formato complesso su disco di ZFS, che complicano ulteriormente i tentativi di recupero. Con la maggior parte dei file di altri file system sarà generalmente contiguo, o in un piccolo numero di posizioni distinte. Con ZFS, è perfettamente ansible che i dati vengano diffusi letteralmente su tutto il disco, senza che nulla rimanga dopo uno dei comandi sopra indicati per indicare quali parti appartengono. Per rendere ancor più peggiori, cerchi certamente i blocchi di dati compressi e, possibilmente, anche le cose come i dati deduplicati. (Deduplicazione non è probabile nel tuo scenario, ma è certamente una possibilità nel caso generale.)

Potrebbe essere ansible iscriversi ad alcuni esperti di ZFS nel recupero dei dati, ma i servizi di recupero dati ordinari non sono probabili essere in grado di aiutarti a questo punto, e il software di recupero di file system comunemente disponibile non comprende nemless lo ZFS. Supponendo di poter trovare persone disposte a lavorare con te, sarà anche molto costoso; Ho visto citazioni di prezzi che cominciano nella gamma di dollari a cinque cifre per scenari simili.

La scelta migliore a questo punto è probabilmente per ripristinare un backup recente dei tuoi dati e andare avanti con la vita.

Sono sinceramente un po 'perplesso perché sei riuscito a sovrascrivere la piscina con un command simile a quello indicato nella tua domanda. Sul mio sistema, con ZFS On Linux 0.6.4, dopo aver costruito un simile scenario, zpool rifiuta l'operazione di create con un errore "specifico non valido vdev" che indica che il dispositivo di backup is part of exported pool '...' . Dovresti avere un errore simile, a less che tu non abbia esplicitamente passato -f a zpool per forzare l'operazione, nel qual caso stai dicendo a ZFS che sì, tu veramente veramente vuoi farlo. Quello che specialmente nel caso di ZFS non è di solito quello che vuoi fare.