Import ZFS nie może znaleźć żadnych pul

11

Miałem pulę ZFS - kopię lustrzaną zawierającą 2 vdevy - działającą na serwerze FreeBSD. Mam teraz tylko jeden dysk z kopii lustrzanej i próbuję odzyskać z niego pliki.

Dane ZFS znajdują się na partycji GPT na dysku.

Kiedy próbuję zaimportować pulę, nie ma żadnego śladu, że ona istnieje. Próbowałem wielu podejść, ale nic się nie dzieje.

Uruchomiłem zdb -lupartycję i wydaje się, że etykiety w porządku.

# 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

Informacje o partycji:

# 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

Etykieta 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

(Inne etykiety to dokładne kopie)

W tym starym wątku jest dyskusja na temat podobnie brzmiącego problemu . Próbowałem uruchomić labelfixnarzędzie Jeffa Bonwicka (z aktualizacjami z tego postu ), ale nie wydawało się to rozwiązać problemu.

Jakieś pomysły?

kalmary
źródło
2
Dysk został odłączony od lustra, a nie podzielony. Wygląda na to, że to była przyczyna problemu. Reszta lustra niestety nie istnieje.
squidpickles
1
Nie wiem, czy jest to właściwe forum, ponieważ „odpowiedź” na to pytanie wymaga wielu prób i błędów. Na razie spróbuj „zpool import -d </ dev / path / to / disk>”. -D wyświetla listę zniszczonych pul, -d pobiera argument lokalizacji dysku do obejrzenia i może być podany wiele razy w wierszu poleceń (ale w twoim przypadku tylko raz będzie potrzebny, ponieważ masz tylko jeden dysk) . Zobacz, co to robi.
Nex7
1
Możesz mieć rację, że to nie jest właściwe forum. I tak, próbowałem z opcjami -di -D, ale bezskutecznie.
squidpickles
1
Jeśli próbowałeś z opcją -d <ścieżka tworzenia dysku łącznie z partycją> i nie pojawił się, spróbuj wszystkiego jeszcze raz, ale w systemie operacyjnym illumos. Jeśli nadal tego nie widać, nie mam pomysłów. Może być konieczne zaangażowanie eksperta ds. Odzyskiwania danych, jeśli dane mają wartość pieniężną, lub zacznij patrzeć na kod (src.illumos.org) podczas korzystania z pochodnej illumos i dtrace'ując komendę importowania zpool, aby zobaczyć, jaką ścieżkę to podąża i spróbuj dowiedzieć się, dlaczego nie widzi twojej puli.
Nex7
2
@GrahamPerrin Skończyło się na tym, że to zadziałało. Zredagowałem źródła ZFS w mojej instalacji FreeBSD i sprawiłem, że ominęły wszystkie testy poprawności. Po wyłączeniu wystarczającej ich liczby udało mi się zaimportować pulę. Ktoś musiał ominąć własne testy rozsądku ...
squidpickles

Odpowiedzi:

6

na przyszłość, po prostu importowanie zpool -a (wyszuka wszystko), zwykle pomaga również wtedy, gdy zpool / zfs fs nie jest rozpoznawany.

Mal
źródło
Nawet widzę moją w pamięci podręcznej, ale próba tego nie zadziałała. Tworzę kopię zapasową pliku pamięci podręcznej, próbuję z nim i bez niego, i zmuszam go itp., Aby sprawdzić, co sugerował Graham powyżej.
Brian Thomas
4

Z komentarza (z plakatu otwierającego):

Zredagowałem źródła ZFS w mojej instalacji FreeBSD i sprawiłem, że ominęły wszystkie testy poprawności. Po wyłączeniu wystarczającej ich liczby udało mi się zaimportować pulę.

Graham Perrin
źródło
1

Jakoś spieprzyłem konfigurację ZFS. Niestety nie pamiętam, co dokładnie zrobiłem (zmieniłem trochę sprzętu, więc popsułem; nie bądź taki jak ja!), Ale to zadziałało dla mnie. Używam XigmaNAS (nas4free) i wszystkie poniższe polecenia są wydawane przez terminal.

Jakaś niejasna pamięć o tym, co zrobiłem (a czego nie zrobiłem):

  • Nie wyeksportował żadnej puli
  • Mogłem usunąć (zniszczyć) pulę

Objawy:

  1. W internetowym interfejsie GUI dysk można automatycznie zaimportować i rozpoznać jako zpool (niesformatowany lub UFS itp.)
  2. Jednak sekcja GUI ZFS nie może wykryć zpool. Nie mogę więc zaimportować puli, po prostu naciskając przyciski. Wymuszone importowanie też nie działało.
  3. Informacje SMART o tym dysku wyglądają dobrze w GUI. Nie sądzę, aby dysk był fizycznie uszkodzony.
  4. W sekcji Informacje GUI pokazuje dysk jako da1. To wystarczająca ilość informacji, których potrzebuję, zanim pójdę do terminalu.
  5. Ostrzeżenie dla innych użytkowników: jeśli wystąpią problemy z GUI, natychmiast przerwij wszelkie destrukcyjne operacje. Takich jak tworzenie nowego vdev lub próbowanie z innymi formatami dysków. Idź do terminalu.
  6. W terminalu podano kilka próbnych poleceń i wyników.

    • zpool import -a mówi no pool available to import
    • zpool statusmówi no pools available(zepsuty język? lol.)
    • gpart list -a nie pokazuje da1
    • gpart list da1 mówi gpart: no such geom: da1
    • zpool list mówi no pools available
    • glabel list -a nie pokazuje żadnej puli w da1
    • zdb -l /dev/da1jest w stanie wydrukować dwie etykiety da1, więc mój dysk nie jest martwy
    • zpool import -Dmówi, że pula da1jest zniszczona i może być w stanie zaimportować

Rozwiązanie:

Uruchom zpool import -D -f (poolname)rozwiązał problem.

Yvon
źródło