Der ZFS-Import konnte keine Pools finden

11

Ich hatte einen ZFS-Pool - einen Spiegel mit 2 vdevs - auf einem FreeBSD-Server. Ich habe jetzt nur eine der Festplatten aus dem Spiegel und versuche, Dateien daraus wiederherzustellen.

Die ZFS-Daten befinden sich in einer GPT-Partition auf der Festplatte.

Wenn ich versuche, den Pool zu importieren, gibt es kein Anzeichen dafür, dass er überhaupt existiert. Ich habe verschiedene Ansätze ausprobiert, aber es passiert nichts.

Ich bin zdb -luauf der Partition gelaufen , und es scheint, dass die Beschriftungen in Ordnung sind.

# 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

Partitionsinformationen:

# 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

ZFS-Label:

--------------------------------------------
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

(Andere Etiketten sind exakte Kopien)

In diesem alten Thread wird ein ähnlich klingendes Problem diskutiert . Ich habe versucht, Jeff Bonwicks labelfixTool auszuführen (mit Updates aus diesem Beitrag ), aber es schien das Problem nicht zu lösen.

Irgendwelche Ideen?

Tintenfisch
quelle
2
Das Laufwerk wurde vom Spiegel getrennt, anstatt geteilt zu werden. Es scheint, dass dies die Ursache des Problems war. Der Rest des Spiegels existiert leider nicht.
Squidpickles
1
Ich weiß nicht, dass dies das richtige Forum dafür ist, da die 'Antwort' auf die Frage viel Versuch und Irrtum beinhaltet. Versuchen Sie zunächst 'zpool import -d </ dev / path / to / disk>'. -D listet zerstörte Pools auf, -d verwendet ein Argument für den Speicherort einer zu betrachtenden Festplatte und kann mehrmals in der Befehlszeile angegeben werden (in Ihrem Fall wird jedoch nur einmal benötigt, da Sie nur die eine Festplatte haben). . Sehen Sie, was das tut.
Nex7
1
Sie haben vielleicht Recht damit, dass dies nicht das richtige Forum ist. Und ja, ich habe es mit den -dund -DOptionen versucht, ohne Erfolg.
Squidpickles
1
Wenn Sie es mit -d <Plattenentwicklungspfad einschließlich Partition> versucht haben und es nicht angezeigt wurde, versuchen Sie alles erneut, außer auf einem illumos-Betriebssystem. Wenn das immer noch nicht zu sehen ist, habe ich keine Ideen mehr. Möglicherweise müssen Sie einen Datenwiederherstellungsexperten hinzuziehen, wenn die Daten einen Geldwert haben, oder den Code (src.illumos.org) überprüfen, während Sie sich auf der Illumos-Ableitung befinden, und den Befehl zpool importieren, um zu sehen, welchen Pfad er nimmt, und versuchen um herauszufinden, warum es Ihren Pool nicht sehen kann.
Nex7
2
@ AbrahamPerrin Ich habe es am Ende zum Laufen gebracht. Ich habe die ZFS-Quellen in meiner FreeBSD-Installation bearbeitet und alle Sicherheitsüberprüfungen umgangen. Nachdem ich genug davon deaktiviert hatte, gelang es mir, den Pool zu importieren. Jemand muss meine eigenen
Gesundheitsprüfungen

Antworten:

6

Zum späteren Nachschlagen hilft es normalerweise auch, einfach den zpool-Import -a durchzuführen (sucht nach allen), wenn ein zpool / zfs-fs nicht erkannt wird.

Mal
quelle
Ich sehe meine sogar im Cache, aber das zu versuchen hat nicht funktioniert. Ich sichere meine Cache-Datei, versuche es mit und ohne sie und erzwinge sie usw. Ich werde auch prüfen, was Graham oben vorgeschlagen hat.
Brian Thomas
4

Aus dem Kommentar (aus dem Eröffnungsplakat):

Ich habe die ZFS-Quellen in meiner FreeBSD-Installation bearbeitet und alle Sicherheitsüberprüfungen umgangen. Nachdem ich genug davon deaktiviert hatte, gelang es mir, den Pool zu importieren.

Graham Perrin
quelle
1

Ich habe meine ZFS-Konfiguration irgendwie vermasselt. Leider kann ich mich nicht erinnern, was genau ich getan habe (ich habe einige Hardware geändert, damit ich es vermasselt habe; sei nicht wie ich!), Aber das hat bei mir funktioniert. Ich verwende XigmaNAS (nas4free) und alle folgenden Befehle werden über das Terminal ausgegeben.

Eine vage Erinnerung an das, was ich getan habe (und was nicht):

  • Hat keinen Pool exportiert
  • Könnte den Pool gelöscht (zerstört) haben

Symptome:

  1. In der Web-GUI kann die Festplatte automatisch importiert und als Zpool erkannt werden (nicht unformatiert oder UFS usw.).
  2. Der GFS-ZFS-Abschnitt kann den Zpool jedoch nicht erkennen. Ich kann den Pool also nicht importieren, indem ich einfach auf die Schaltflächen drücke. Der Import erzwang auch nicht.
  3. SMART-Informationen zu dieser Festplatte sehen in der GUI in Ordnung aus. Ich glaube nicht, dass die Festplatte physisch beschädigt ist.
  4. Im Abschnitt GUI-Informationen wird die Festplatte als angezeigt da1. Dies sind genug Informationen, die ich brauche, bevor ich zum Terminal gehe.
  5. Warnung an andere Benutzer: Wenn Sie Probleme mit der Benutzeroberfläche haben, beenden Sie sofort alle destruktiven Vorgänge. B. ein neues vdev erstellen oder es mit anderen Festplattenformaten versuchen. Gehe zum Terminal.
  6. Im Terminal finden Sie einige versuchte Befehle und Ergebnisse.

    • zpool import -a sagt no pool available to import
    • zpool statussagt no pools available(gebrochene Sprache? lol.)
    • gpart list -a zeigt nicht da1
    • gpart list da1 sagt gpart: no such geom: da1
    • zpool list sagt no pools available
    • glabel list -a zeigt keinen Pool in da1
    • zdb -l /dev/da1kann die beiden Etiketten drucken da1, sodass meine Festplatte nicht tot ist
    • zpool import -Dsagt, dass der Pool auf da1zerstört ist und möglicherweise importiert werden kann

Lösung:

Run hat zpool import -D -f (poolname)das Problem behoben.

Yvon
quelle