Импорт ZFS не может найти пулы

11

У меня был пул ZFS - зеркало, содержащее 2 vdevs - работающее на сервере FreeBSD. Теперь у меня есть только один диск из зеркала, и я пытаюсь восстановить файлы с него.

Данные ZFS находятся в разделе GPT на диске.

Когда я пытаюсь импортировать пул, нет никаких признаков того, что он вообще существует. Я попробовал несколько подходов, но ничего не происходит.

Я запустил zdb -luраздел, и, кажется, он нашел ярлыки просто отлично.

# 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

Информация о разделах:

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

(Другие ярлыки являются точными копиями)

В этой старой теме обсуждается похожая проблема . Я попытался запустить labelfixинструмент Джеффа Бонвика (с обновлениями из этого поста ), но, похоже, он не решил проблему.

Есть идеи?

squidpickles
источник
2
Диск был отделен от зеркала, а не расколот. Похоже, что это было причиной проблемы. Остального зеркала не существует, к сожалению.
squidpickles
1
Я не знаю, что это правильный форум для этого, потому что «ответ» на вопрос включает в себя много проб и ошибок. А пока попробуйте 'zpool import -d </ dev / path / to / disk>'. -D выводит список уничтоженных пулов, -d принимает аргумент местоположения диска для просмотра и может быть указан несколько раз в командной строке (но в вашем случае потребуется только один раз, поскольку у вас есть только один диск) , Посмотрите, что это делает.
Nex7
1
Возможно, вы правы, что это не тот форум. И да, я попытался с -dи -Dвариантов, но безрезультатно.
squidpickles
1
Если вы попытались с помощью -d <путь к устройству диска, включая раздел>, но он не появился, попробуйте все снова, но на ОС Illumos. Если это все еще не видно, у меня нет идей. Вам может потребоваться нанять эксперта по восстановлению данных, если данные имеют денежное значение, или начать просматривать код (src.illumos.org), находясь в производной illumos, и dtrace'ing команду zpool import, чтобы увидеть, какой путь он использует, и попробовать выяснить, почему он не видит ваш бассейн.
Nex7
2
@ GrahamPerrin Я закончил тем, что заставил это работать. Я отредактировал исходники ZFS в своей установке FreeBSD и заставил их обойти все проверки работоспособности. После отключения достаточного количества из них мне удалось импортировать пул. Кто-то, должно быть, обошел мои собственные проверки вменяемости ...
squidpickles

Ответы:

6

для дальнейшего использования простое выполнение zpool import -a (будет искать все) также обычно помогает, когда zpool / zfs fs не распознается.

Мал
источник
я даже вижу мой в кэше, но попытка этого не сработала. Я создаю резервную копию файла кэша, пытаюсь использовать его и без него, форсировать его и т. Д., А также собираюсь проверить, что Грэм предложил выше.
Брайан Томас
4

Из комментария (со вступительного плаката):

Я отредактировал исходники ZFS в своей установке FreeBSD и заставил их обойти все проверки работоспособности. После отключения достаточного количества из них мне удалось импортировать пул.

Грэм Перрин
источник
1

Я как-то облажался с моей конфигурацией ZFS. К сожалению, я не помню, что именно я сделал (я менял некоторые аппаратные средства, поэтому я запутался; не будь таким, как я!), Но это сработало для меня. Я использую XigmaNAS (nas4free) и все команды ниже выдаются через терминал.

Немного смутного воспоминания о том, что я делал (и не делал):

  • Не экспортировать ни один пул
  • Возможно, удалили (уничтожили) бассейн

Симптомы:

  1. В веб-интерфейсе диск можно автоматически импортировать и распознать как zpool (не отформатированный или не UFS и т. Д.)
  2. Однако раздел ZFS с графическим интерфейсом не может обнаружить zpool. Поэтому я не могу импортировать пул, просто нажимая кнопки. Принудительный импорт тоже не сработал.
  3. SMART информация об этом диске выглядит хорошо в графическом интерфейсе. Я не думаю, что диск физически поврежден.
  4. В разделе Информация о графическом интерфейсе отображается диск как da1. Это достаточно информации мне нужно, прежде чем идти в терминал.
  5. Предупреждение для других пользователей: если вы столкнулись с проблемами с графическим интерфейсом, немедленно прекратите любые разрушительные операции. Например, создать новый vdev или попробовать другие форматы дисков. Перейти к терминалу.
  6. В терминале, вот некоторые попытки команды и результаты.

    • zpool import -a говорит no pool available to import
    • zpool statusговорит no pools available(ломаный язык? лол.)
    • gpart list -a не показывать da1
    • gpart list da1 говорит gpart: no such geom: da1
    • zpool list говорит no pools available
    • glabel list -a не показывает пул в da1
    • zdb -l /dev/da1может распечатать две этикетки da1, поэтому мой диск не умер
    • zpool import -Dговорит, что пул на da1уничтожен, и может быть в состоянии импортировать

Решение:

Бег zpool import -D -f (poolname)решил проблему.

Ивон
источник