ZFS: Ajude a importar um zpool após o upgrade do Ubuntu de 13.04 para 13.10, os IDs dos dispositivos foram alterados

1

Eu atualizei o Ubuntu da versão 13.04 para a versão 13.10, apenas para descobrir que os IDs dos discos SATA foram alterados e meu pool do ZFS agora falha.

No novo Ubuntu 13.10, os IDs dos discos estão agora ata- * em vez de scsi-SATA _ *.

Este é o status do pool após a atualização:

  pool: nestpool
 state: UNAVAIL
status: One or more devices could not be used because the label is missing 
    or invalid.  There are insufficient replicas for the pool to continue
    functioning.
action: Destroy and re-create the pool from
    a backup source.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
  scan: none requested
config:

    NAME                                                STATE     READ WRITE CKSUM
    nestpool                                            UNAVAIL      0     0     0  insufficient replicas
      raidz2-0                                          UNAVAIL      0     0     0  insufficient replicas
        scsi-SATA_WDC_WD4000F9YZ-_WD-WCC1F0046946       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WCC4A0026423       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0011145       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0049294       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0051143       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0051756       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0056625       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0200560       UNAVAIL      0     0     0
    logs
      mirror-1                                          UNAVAIL      0     0     0  insufficient replicas
        scsi-SATA_Samsung_SSD_840S1ATNEAD707062H-part2  UNAVAIL      0     0     0
        scsi-SATA_Samsung_SSD_840S1ATNEAD707066K-part3  UNAVAIL      0     0     0

Após uma pesquisa muito longa na Internet, comecei a seguir o procedimento:

Primeiro, exportou o pool usando: zpool export nestpool

Em seguida, tentou importar de volta o pool usando: zpool import -m -f -d / dev / disk / by-id nestpool

(Eu também tentei com e sem todas as combinações de -m, -f e -d, assim como usind o ID em vez do nome do zpool)

Mas a importação falha com a mensagem: não é possível importar o 'aninhamento': um ou mais dispositivos estão indisponíveis no momento

Esta é a saída atual de zpool import

   pool: nestpool
     id: 3947768928242827823
  state: DEGRADED
 status: One or more devices contains corrupted data.
 action: The pool can be imported despite missing or damaged devices.  The
    fault tolerance of the pool may be compromised if imported.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
 config:

    nestpool                                                DEGRADED
      raidz2-0                                              ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WCC1F0046946          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WCC4A0026423          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0011145          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0049294          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0051143          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0051756          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0056625          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0200560          ONLINE
    cache
      ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707062H-part1
    logs
      mirror-1                                              UNAVAIL  insufficient replicas
        ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707062H      UNAVAIL  corrupted data
        ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707066K      UNAVAIL

As partições de log não foram identificadas corretamente, elas devem ser ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707062H-part2 e ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707066K-part3 . E o argumento -m durante a importação não está ajudando.

Não consigo encontrar uma maneira de dizer zpool import para usar um caminho / id diferente para os dispositivos de log. Qualquer ajuda e idéia para consertar este problema será muito apreciada. O que mais posso fazer para recuperar esse pool?

(Aqui está a saída atual do gdisk -l para todos os discos: link )

    
por Manolo 05.01.2014 / 21:38

1 resposta

1

Como tudo ainda estava intacto e o único problema que impedia a importação do pool era o reconhecimento errado das partições usadas para os dispositivos de log, a solução é criar links simbólicos temporários em / dev / disk / by-id para os desaparecidos partições.

No meu caso assim:

ln -sf ../../sda2 ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707062H
ln -sf ../../sdb3 ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707066K

Depois disso, no meu caso zpool import alterou os antigos IDs errados para novos que estão presentes agora no Ubuntu 13.10 (cada disco e partição tem 2 IDs agora), e eu tive que criar símbolos simbólicos links para estes também, assim:

ln -sf ../../sda2 wwn-0x50025385503e8531
ln -sf ../../sdb3 wwn-0x50025385503e8535

Depois disso, zpool import começou a reconhecer automaticamente as partições corretas.

Para a importação, eu corri o comando:

zpool import -f nestpool

E o pool foi importado. NÃO se esqueça de corrigir os links temporários! Além disso, após a reinicialização do servidor, os links serão recriados e corrigidos.

No meu caso, zpool reconheceu as partições corretas durante a importação e nenhuma ação adicional foi necessária. Caso contrário, é necessário remover os dispositivos ZIL e adicioná-los novamente, antes de qualquer outra coisa!

Não se esqueça de executar o scrub e tudo deve estar de volta no lugar.

Uma lição aprendida para o futuro é que o ZFS reconhece a partição se ela for a primeira partição no disco, por exemplo, quando usar discos cheios para o ZFS. Portanto, tente usar discos completos ou, quando possível, apenas a primeira partição em discos.

    
por Manolo 07.01.2014 / 16:36