ZFS ausversehen neuen Pool drübererstellt...Wiederherstellung möglich?

sellerie

Arch Linux//MicroBSD/pfSense
Hallo,

ich habe vor nicht allzu langer Zeit einen ZFS pool auf einer Arch Linux Installation verwendet, es lief alles einwandfrei...bis ich eine Festplatte durch eine andere ersetzen wollte...
Nun ist der aktuelle Fall wie folgend:
Ich habe einen leeren ZFS storage pool und zwei jetzt angeblich leere Pool Partitionen auf verschiedenen Festplatten, da ich einen neuen erstellt habe, anstatt ihn zu importen und ich würde mich gerade an Liebsten dafür schlagen.
Gibt es Möglichkeiten, IRGENDWIE wieder an diese Daten zu kommen? ;'(
Ich bin mittlerweile ziemlich verzweifelt und würde mittlerweile nichtmal mehr vor kommerziellen Anbietern zurückschrecken und auch bis zu einer bestimmten Grenze Geld für die Wiedererlangung bezahlen (Was nicht heißt, dass bei mir viel zu holen wäre...).
 
Hallo und willkommen hier im Forum

Speziell zu dem Tool kann ich nichts sagen aber TestDisk [1] kannst du mal versuchen. Auf der Webseite steht folgendes:
TestDisk can find lost partitions for all of these file systems:
...
Sun ZFS
...
Wichtig ist, dass du nichts mehr auf diesen Festplatten machst! Zumindest schreiben ist absolut tabu! Man erstellt meist zuerst mit dd eine Kopie des Inhaltes der Festplatte und arbeitet danach nur noch mit diesem Image. Wie genau kann ich dir aber nicht sagen. Ich kenne das Tool nicht wirklich.

[1] http://www.cgsecurity.org/wiki/TestDisk
 
Einmal zum Verständnis: Du hattest zwei Festplatten, auf jeder jeweils eine Partition und über die beiden Partitionen einen Pool. Also eine der beiden Festplatten kaputt war, hast du sie gegen eine neue Platte getauscht und sie partitioniert. Anschließend hast du versehentlich ein "zpool create poolname /dev/device1 /dev/device2" gemacht. Er hätte an dieser Stelle warnen müssen, dass eine der beiden Partitionen Teil eines vorhandenen Pools ist. Wenn du trotz der Warnung weitergemacht hast, hast du den Pool überschrieben.

Wenn das so war, ist das ziemlich Kacke. Denn durch das Erstellen des neuen Pools über den alten Pool sind ein Teil der Metadaten und Nutzdaten im alten Pool überschrieben worden. Nun ist ZFS kein lineares Dateisystem, d.h. man kann nicht einfach die Dateisystem-Parameter raten und mit ihrer Hilfe die Daten stumpf auslesen. Stattdessen braucht man zumindest einen Satz Metadaten. Da ZFS von jedem Metadaten-Eintrag bis zu 100 Kopien hält, sind die Chancen einen zu finden zwar theoretisch relativ groß, aber praktisch wird das einiges an Hirnschmalz und Code brauchen. Mal schnell aus der Hüfte geschossen sehe ich 3 Möglichkeiten:

  1. Listet "zpool import -D" den Pool noch? Wenn ja hast du vielleicht Chancen ihn zumindest read-only importiert zu bekommen. Dann könnte man im nächsten Schritt die Konsistenzprüfungen aus dem Kernel patchen (*hust*) und versuchen ihn ausgelesen zu bekommen. Das wird ein paar Dateien schreddern, aber es ist besser als Nichts.
  2. Es gibt gibt zu testdisk ein zweites Tool, was die Platte scannt und Dateien herauskratzt. Das ist Teil des gleichen Pakets und hieß photorec oder so. Damit habe ich schon öfter gute Erfahrungen gemacht. Wunder darf man allerdings nicht erwarten, gerade bei größeren Dateien sind die Chancen auf eine vollständige Wiederherstellung schlecht.
  3. Einen professionellen Datenrettungsservice. Ich empfehle immer Kroll Ontrack. Sie erstellen dir kostenlos eine Liste der wiederherstellbaren Dateien, anschließend entscheidest du, welche du gerettet haben möchtest. Bezahlt wird pro Megabyte, wobei die Preise stark vom Aufwand abhängig sind. Wenn man eine verbrannte Festplatte hat, ist es es logischerweise wesentlich teurer als bei einem heilen und nur logisch zerstörten Medium. Rufe sie einfach mal an. Sie können dir auch sagen, ob es nicht eventuell besser wäre, über die defekte ausgetauschte Platte zu gehen.
Und egal was du tust: Höre auf foxit und erstelle erst einmal ein komplettes Image der Platte!
 
Vielen Dank für die Antworten... ich habe leider 600GB an Daten verloren (Heißt nicht, dass die alle unentbehrlich sind, aber der Verlust ist nunmal da).
Testdisk hat leider nicht wirklich geholfen, da er keine bad partitions findet, aber ich habe gestern Abend mal einen photorec recovery von der ganzen großen Platte gemacht und der hat einiges an Dateien gefunden, durchforsten tue ich das allerdings erst heute Abend nach der Arbeit.

Wenn dort auch nur Spaghetti rauskommt, werde ich höchstwarscheinlich deinen Tipp annehmen und eine Firma beauftragen, die Daten für mich zu retten, das wäre es mir definitiv wert...
 
Hallo,

kurzer Tipp zu phtorec. Die namen sind weg. Du kannst nach Größe und Dateiart selektieren, das vereinfacht die Suche etwas.

Gruß ré
 
@Yamagi Ich habe ja klugerweise den neuen Pooi genauso genannt wie den Vorherigen. Der wird natürlich jetzt als destroyed angezeigt...
Kann man irgendwas aus der zpool.cache holen? Die ist bei mir größtenteils Müll im vim, bisauf ein paar lose Begriffe.
 
Ich glaube, damit kommst du nicht weit. Der Cache ist eben nur ein Cache und muss nicht mal vollständig sein. Unter FreeBSD wird er auch gar nicht so wirklich genutzt, er ist mehr für die Kompatibilität mir Illumos da, als wirklich notwendig. Ein "zpool -D -f $zerstoerter_pool $neuer_name" müsste den zerstörten Pool importieren, obwohl es einen zweiten Pool mit gleichem Namen gibt. Zumindest solange da noch was zu retten ist.

Ansonsten könntest du dich auch noch mal an freebsd-fs@ wenden. Dort erreichst du ein ganz anderes Publikum. Vor allem Entwickler, die viel tiefer in ZFS drin stecken, als ich es je könnte. Vielleicht kann man da dir eher helfen.
 
Leider bekomme ich mit dem Befehl nur genau den gleichen, leeren Pool importiert, aber ich habe mal an die genannte Mailinglist geschrieben.
Bei Erfolg werde ich relativ präzise dokumentieren, was ich dafür angestellt habe, vielen Dank trotzdem bis hierhin!
 
Zurück
Oben