Importação do ZFS incapaz de encontrar conjuntos

11

Eu tinha um pool ZFS - um espelho contendo 2 vdevs - rodando em um servidor FreeBSD. Agora tenho apenas um dos discos do espelho e estou tentando recuperar arquivos dele.

Os dados do ZFS ficam em uma partição GPT no disco.

Quando tento importar o pool, não há sinal de que ele exista. Eu tentei várias abordagens, mas nada acontece.

Eu corri zdb -luna partição, e parece encontrar os rótulos muito bem.

# 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

Informações da partição:

# 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

Etiqueta 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

(Outras etiquetas são cópias exatas)

Há uma discussão sobre um problema de som semelhante nesse tópico antigo . Tentei executar a labelfixferramenta de Jeff Bonwick (com atualizações deste post ), mas isso não pareceu resolver o problema.

Alguma ideia?

squidpickles
fonte
2
A unidade foi separada do espelho, em vez de ser dividida. Parece que foi a causa do problema. O resto do espelho não existe, infelizmente.
Squidpickles
1
Não sei se este é o fórum adequado para isso, porque a 'resposta' à pergunta envolve muitas tentativas e erros. Por enquanto, tente 'zpool import -d </ dev / caminho / para / disco>'. -D lista os pools destruídos, -d usa um argumento da localização de um disco para examinar e pode ser especificado várias vezes na linha de comando (mas no seu caso, apenas uma vez será necessária, pois você possui apenas um disco) . Veja o que isso faz.
Nex7 28/03
1
Você pode estar certo sobre este não ser o fórum certo. E sim, eu tentei com as opções -de -D, sem sucesso.
Squidpickles 28/03
1
Se você tentou com -d <caminho de desenvolvimento do disco, incluindo a partição> e ele não apareceu, tente tudo novamente, exceto em um sistema operacional illumos. Se isso ainda não pode ser visto, estou sem ideias. Pode ser necessário contratar um especialista em recuperação de dados se os dados tiverem valor monetário ou começar a examinar o código (src.illumos.org) enquanto estiver no derivativo illumos e rastrear o comando zpool import para ver qual caminho ele leva e tentar para descobrir por que ele não pode ver sua piscina.
Nex7 30/03
2
@GrahamPerrin Acabei fazendo isso funcionar. Editei as fontes do ZFS na minha instalação do FreeBSD e as fiz passar por todas as verificações de integridade. Depois de desativar várias delas, consegui importar o pool. Alguém deve ter ultrapassado os meus próprios checagens ...
squidpickles

Respostas:

6

para referência futura, simplesmente fazer zpool import -a (procurará por todos), geralmente ajuda também quando um zpool / zfs fs não é reconhecido.

Mal
fonte
Eu até vejo o meu no cache, mas tentar isso não funcionou. Estou fazendo backup do meu arquivo de cache, tentando com e sem ele e forçá-lo, etc. também, indo verificar o que Graham sugeriu acima.
Brian Thomas
4

Do comentário (do pôster de abertura):

Editei as fontes do ZFS na minha instalação do FreeBSD e as fiz passar por todas as verificações de integridade. Depois de desativar várias delas, consegui importar o pool.

Graham Perrin
fonte
1

De alguma forma, estraguei minha configuração do ZFS. Infelizmente, não me lembro exatamente do que fiz (troquei algum hardware, por isso errei; não seja como eu!), Mas isso funcionou para mim. Estou usando o XigmaNAS (nas4free) e todos os comandos abaixo são emitidos via terminal.

Alguma memória vaga sobre o que eu fiz (e não fiz):

  • Não exportou nenhum pool
  • Pode ter excluído (destruído) a piscina

Sintomas:

  1. Na GUI da Web, o disco pode ser importado e reconhecido automaticamente como um zpool (não formatado ou UFS etc.)
  2. No entanto, a seção ZFS da GUI não pode detectar o zpool. Portanto, não posso importar o pool simplesmente pressionando os botões. A importação forçada também não funcionou.
  3. As informações SMART sobre este disco ficam bem na GUI. Não acho que o disco esteja fisicamente danificado.
  4. Na seção Informações da GUI, mostra o disco como da1. Isso é informação suficiente que eu preciso antes de ir para o terminal.
  5. Aviso para outros usuários: Se você tiver problemas com a GUI, pare imediatamente quaisquer operações destrutivas. Como criar um novo vdev ou tentar com outros formatos de disco. Vá para o terminal.
  6. No terminal, aqui estão algumas tentativas de comandos e resultados.

    • zpool import -a diz no pool available to import
    • zpool statusdiz no pools available(idioma quebrado? lol.)
    • gpart list -a Não mostra da1
    • gpart list da1 diz gpart: no such geom: da1
    • zpool list diz no pools available
    • glabel list -a não mostra nenhuma piscina em da1
    • zdb -l /dev/da1é capaz de imprimir as duas etiquetas da1, para que meu disco não esteja morto
    • zpool import -Ddiz que o pool da1está destruído e pode ser importado

Solução:

Run zpool import -D -f (poolname)resolveu o problema.

Yvon
fonte