Ubuntu atualizado, todas as unidades em um zpool marcado como indisponível

8

Acabei de atualizar o Ubuntu 14.04 e tinha dois pools do ZFS no servidor. Houve um pequeno problema comigo lutando com o driver do ZFS e a versão do kernel, mas isso está funcionando agora. Uma piscina entrou online e montou bem. O outro não. A principal diferença entre a ferramenta é um conjunto de discos (armazenamento de vídeo / música), e o outro era um conjunto de raidz (documentos, etc)

Eu já tentei exportar e reimportar o pool, sem sucesso. A tentativa de importar me leva a isso:

root@kyou:/home/matt# zpool import -fFX -d /dev/disk/by-id/
   pool: storage
     id: 15855792916570596778
  state: UNAVAIL
 status: One or more devices contains corrupted data.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
 config:

        storage                                      UNAVAIL  insufficient replicas
          raidz1-0                                   UNAVAIL  insufficient replicas
            ata-SAMSUNG_HD103SJ_S246J90B134910       UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523  UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969  UNAVAIL

Os links simbólicos para aqueles em /dev/disk/by-id também existem:

root@kyou:/home/matt# ls -l /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910* /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51*
lrwxrwxrwx 1 root root  9 May 27 19:31 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910 -> ../../sdb
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part9 -> ../../sdb9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523 -> ../../sdd
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part9 -> ../../sdd9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969 -> ../../sde
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1 -> ../../sde1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part9 -> ../../sde9

Inspecionando os vários dispositivos /dev/sd* listados, eles parecem ser os corretos (os 3 drives de 1TB que estavam em um array raidz).

Eu executei zdb -l em cada unidade, despejando-a em um arquivo e executando um diff. A única diferença nos 3 são os campos guid (que eu suponho que é esperado). Todos os 3 rótulos em cada um são basicamente idênticos e são os seguintes:

version: 5000
name: 'storage'
state: 0
txg: 4
pool_guid: 15855792916570596778
hostname: 'kyou'
top_guid: 1683909657511667860
guid: 8815283814047599968
vdev_children: 1
vdev_tree:
    type: 'raidz'
    id: 0
    guid: 1683909657511667860
    nparity: 1
    metaslab_array: 33
    metaslab_shift: 34
    ashift: 9
    asize: 3000569954304
    is_log: 0
    create_txg: 4
    children[0]:
        type: 'disk'
        id: 0
        guid: 8815283814047599968
        path: '/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1'
        whole_disk: 1
        create_txg: 4
    children[1]:
        type: 'disk'
        id: 1
        guid: 18036424618735999728
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1'
        whole_disk: 1
        create_txg: 4
    children[2]:
        type: 'disk'
        id: 2
        guid: 10307555127976192266
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1'
        whole_disk: 1
        create_txg: 4
features_for_read:

Estupidamente, eu não tenho um backup recente deste pool. No entanto, o pool estava bem antes da reinicialização, e Linux vê os discos bem (eu tenho o smartctl rodando agora para checar)

Então, em resumo:

  • Eu atualizei o Ubuntu e perdi o acesso a um dos meus dois zpools.
  • A diferença entre os pools é a que surgiu foi JBOD, o outro foi zraid.
  • Todas as unidades no zpool não montável estão marcadas como UNAVAIL, sem anotações de dados corrompidos
  • Os pools foram criados com discos referenciados em /dev/disk/by-id/ .
  • Os links simbólicos de /dev/disk/by-id para os vários dispositivos /dev/sd parecem estar corretos
  • zdb pode ler os rótulos das unidades.
  • O pool já foi tentado a ser exportado / importado e não pode ser importado novamente.

Existe algum tipo de magia negra que eu possa invocar via zpool / zfs para trazer esses discos de volta a uma matriz razoável? Posso executar zpool create zraid ... sem perder meus dados? Meus dados foram de alguma forma?

    
por Matt Sieker 28.05.2014 / 02:49

3 respostas

4

Depois de muitos e muito mais pesquisando sobre essa mensagem de erro específica eu estava recebendo:

root@kyou:/home/matt# zpool import -f storage
cannot import 'storage': one or more devices are already in use

(Incluído aqui para a posteridade e os índices de pesquisa) Eu encontrei isto:

link

It was using the same partitions and was adding them to mdraid during any boot before ZFS was loaded.

Lembrei-me de ver algumas linhas mdadm em dmesg e com certeza:

root@kyou:/home/matt# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md126 : active raid5 sdd[2] sdb[0] sde[1]
      1953524992 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

Essas unidades eram, uma vez, parte de um array raid5 de software. Por algum motivo, durante a atualização, decidiu verificar novamente as unidades e descobrir que as unidades faziam parte de uma matriz md e decidiram recriá-la. Isso foi verificado com:

root@kyou:/storage# mdadm --examine /dev/sd[a-z]

Essas três unidades mostraram um monte de informações. Por enquanto, parando o array:

root@kyou:/home/matt# mdadm --stop /dev/md126
mdadm: stopped /dev/md126

E re-executando a importação:

root@kyou:/home/matt# zpool import -f storage

colocou o array novamente on-line.

Agora, faço um instantâneo desse pool para backup e execudo mdadm --zero-superblock neles.

    
por 28.05.2014 / 04:02
4

O Ubuntu parece ter algum problemas irritantes do udev que não vemos no lado do Red Hat / CentOS. Eu recomendo usar os nomes de dispositivos baseados em WWN se você puder, pois eles parecem menos suscetíveis a isso.

Você viu: Por que a reinicialização fez com que um lado do meu espelho do ZFS se tornasse UNAVAIL?

    
por 28.05.2014 / 03:18
2

Eu encontrei quase exatamente este problema tentando atualizar para os kernels da série 3.13 no Debian Wheezy. Você está certo em seu comentário; é um bug do udev. Eu nunca consegui classificá-lo infelizmente, mas vale a pena explorar outros kernels, especialmente a série 3.11, para compatibilidade com a versão 0.6.2 do ZOL. Basta usar o kernel antigo até o 0.6.3 ser lançado.

    
por 28.05.2014 / 04:00