zpool import com dispositivo de cache ausente

3

Eu ia tentar o SmartOS, parcialmente porque eu não estava satisfeito com o FreeNAS para meu uso. Criado o novo zpool na unidade de cache antiga para zonas SmartOS. Isso foi tudo apenas backstory. O ponto é que agora não é possível importar o antigo conjunto FreeNAS no Ubuntu 15.04.

  pool: pool5                                                            
    id: 14850262647910895720                                              
 state: UNAVAIL                                                           
status: The pool was last accessed by another system.                     
action: The pool cannot be imported due to damaged devices or data.       
  see: http://zfsonlinux.org/msg/ZFS-8000-EY                              
config:                                                                   

    pool5                               UNAVAIL  missing device        
      raidz2-0                          ONLINE                         
        ata-WL3000GSA6472_WOL240282406  ONLINE                         
        ata-WL3000GSA6472_WOL240282471  ONLINE                         
        ata-WL3000GSA6472_WOL240282504  ONLINE                         
        ata-WL3000GSA6472_WOL240282506  ONLINE                         
        ata-WL3000GSA6472_WOL240282472  ONLINE                         
    cache                                                              
      ata-ST31500341AS_6VS073SA                                        

  pool: zones                                                             
    id: 513536768382594111                                                
 state: ONLINE                                                            
status: The pool was last accessed by another system.                     
action: The pool can be imported using its name or numeric identifier and 
       the '-f' flag.                                                     
  see: http://zfsonlinux.org/msg/ZFS-8000-EY                              
config:                                                                   

       zones                        ONLINE                                
         ata-ST31500341AS_6VS073SA  ONLINE                                   

Eu destruí zonas desde então.

Tentei a maioria das opções de força e combinações, resultados semelhantes:

$ sudo zpool import pool5
cannot import 'pool5': pool may be in use from other system, it was last accessed by freenas.local (hostid: 0x8120288a) on Tue Oct 27 16:24:56 2015
$ sudo zpool import -f pool5
cannot import 'pool5': one or more devices is currently unavailable
$ sudo zpool import -Ff pool5
cannot import 'pool5': one or more devices is currently unavailable
$ sudo zpool import -fm pool5
cannot import 'pool5': one or more devices is currently unavailable
$ sudo zpool import -FfmX pool5
cannot import 'pool5': one or more devices is currently unavailable
$ sudo zpool import -fD pool5
cannot import 'pool5': no such pool available
$ sudo zpool import -nF pool5
cannot import 'pool5': pool may be in use from other system, it was last accessed by freenas.local (hostid: 0x8120288a) on Tue Oct 27 16:24:56 2015
use '-f' to import anyway
$ sudo zpool import -m pool5
cannot import 'pool5': pool may be in use from other system, it was last accessed by freenas.local (hostid: 0x8120288a) on Tue Oct 27 16:24:56 2015
use '-f' to import anyway

$ sudo zdb -e pool5 diz:

Configuration for import:
        vdev_children: 2
        version: 5000
        pool_guid: 14850262647910895720
        name: 'pool5'
        state: 0
        hostid: 2166368394
        hostname: 'freenas.local'
        vdev_tree:
            type: 'root'
            id: 0
            guid: 14850262647910895720
            children[0]:
                type: 'raidz'
                id: 0
                guid: 142933150631883837
                nparity: 2
                metaslab_array: 33
                metaslab_shift: 37
                ashift: 12
                asize: 15002891714560
                is_log: 0
                create_txg: 4
                children[0]:
                    type: 'disk'
                    id: 0
                    guid: 79266291072794538
                    whole_disk: 1
                    DTL: 356
                    create_txg: 4
                    path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282406-part1'
                children[1]:
                    type: 'disk'
                    id: 1
                    guid: 1087294782673888508
                    whole_disk: 1
                    DTL: 258
                    create_txg: 4
                    path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282471-part1'
                children[2]:
                    type: 'disk'
                    id: 2
                    guid: 2219503574895013140
                    whole_disk: 1
                    DTL: 257
                    create_txg: 4
                    path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282504-part1'
                children[3]:
                    type: 'disk'
                    id: 3
                    guid: 6460403329296563235
                    whole_disk: 1
                    DTL: 202
                    create_txg: 4
                    path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282506-part1'
                children[4]:
                    type: 'disk'
                    id: 4
                    guid: 9844978706073275260
                    whole_disk: 1
                    DTL: 167
                    create_txg: 4
                    path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282472-part1'
            children[1]:
                type: 'missing'
                id: 1
                guid: 0
zdb: can't open 'pool5': No such device or address

versões:

libzfs2    0.6.5.3-1~vivid amd64 Native OpenZFS filesystem library for Linux
ubuntu-zfs 9~vivid         amd64 Native ZFS filesystem metapackage for Ubuntu.
zfs-dkms   0.6.5.3-1~vivid amd64 Native OpenZFS filesystem kernel modules for Linux
zfsutils   0.6.5.3-1~vivid amd64 Native OpenZFS management utilities for Linux

Tentativa de importação de devnodes:

~/tmp$ ln -s $(for link in /dev/disk/by-id/ata-WL3000GSA6472_WOL240282406* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282471* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282504* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282506* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282472* ; do readlink -f "${link}" ; done) ./
~/tmp$ ls
sdb  sdb1  sdb9  sdc  sdc1  sdc9  sdd  sdd1  sdd9  sde  sde1  sde9  sdf  sdf1  sdf9
~/tmp$ sudo zpool import -d ./ pool5
cannot import 'pool5': pool may be in use from other system, it was last accessed by freenas.local (hostid: 0x8120288a) on Tue Oct 27 16:24:56 2015
use '-f' to import anyway
~/tmp$ sudo zpool import -fd ./ pool5
cannot import 'pool5': one or more devices is currently unavailable

e a parte estranha (o que é ada1? oh. provavelmente um devnode freebsd):

$ sudo zpool import -d tmp
   pool: pool5
     id: 14850262647910895720
  state: UNAVAIL
 status: The pool was last accessed by another system.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-EY
 config:

        pool5        UNAVAIL  missing device
          raidz2-0   ONLINE
            sde      ONLINE
            sdc      ONLINE
            sdd      ONLINE
            sdb      ONLINE
            sdf      ONLINE
        cache
          ada1

Posso, talvez, reinicializar o dispositivo de cache para que ele possa encontrá-lo novamente? Quanta informação armazena um dispositivo de cache sobre o seu pool? Funcionaria apenas para fazer outro zpool e adicioná-lo como um cache para ele? O zdb não parece ter um GUID listado - será necessário apenas uma unidade de cache gratuita? Posso fazer uma unidade de cache e ligá-la simbolicamente à ada1 e fazer com que ela a capte?

    
por user148509 29.10.2015 / 23:23

2 respostas

1

Qual versão do ZFS no Linux? A importação com um dispositivo de cache ausente é um recurso "mais recente" (não tão novo assim, mas a ZoL estava um pouco atrasada no passado)

Além disso, se você não precisar dele, tente destruir o pool de 'zonas', para que o dispositivo de cache em seu 'pool5' não seja bloqueado. Você pode estar na situação estranha porque o dispositivo não está realmente ausente, é apenas inutilizável porque está bloqueado pelo outro pool.

Outras coisas para tentar: zpool import -m pool5 (só deve ser necessário para um dispositivo de log ausente, não para um dispositivo de cache ausente)

zpool import -nF pool5

    
por 06.11.2015 / 18:23
0

Eu não sei ao certo, mas depois do nosso pequeno debate nos comentários da questão, eu acho que o problema pode ser que o dispositivo exista , mas não é um > cache dispositivo por mais tempo, e que isso é de alguma forma confundindo o conjunto de ferramentas ZFS ao ponto de não conseguir importar o pool normalmente.

Se esta é a causa raiz de seus problemas, então você pode muito bem ser capaz de contornar o problema importando de um diretório diferente.

Para fazer isso, crie um diretório temporário e recrie os links simbólicos de dispositivo necessários. Por exemplo:

# mkdir /tmp/zfs
# cd /tmp/zfs
# ln -s $(for link in /dev/disk/by-id/ata-WL3000GSA6472_WOL240282406* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282471* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282504* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282506* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282472* ; do readlink -f "${link}" ; done) ./
# zpool import -d /tmp/zfs

(O comando ln longo recria os links ata-WL... e garante que eles apontem para o nó do dispositivo correto.)

Se tudo correr bem, o% final zpool import -d ... deverá produzir algo como o seguinte:

  pool: pool5
    id: 14850262647910895720
 state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

    pool5                               ONLINE
      raidz2-0                          ONLINE
        ata-WL3000GSA6472_WOL240282406  ONLINE
        ata-WL3000GSA6472_WOL240282471  ONLINE
        ata-WL3000GSA6472_WOL240282504  ONLINE
        ata-WL3000GSA6472_WOL240282506  ONLINE
        ata-WL3000GSA6472_WOL240282472  ONLINE
    cache
      ...something... MISSING (was ata-ST31500341AS_6VS073SA)

Eu não sei o formato exato na saída zpool import de um dispositivo de cache ausente (pode até nem ser mostrado), então pegue essa parte com um pouco de sal, e ela ainda pode reclamar sobre o pool sendo "em uso", mas esperançosamente isso dará ao ZFS a chance de procurar o pool e não ser confundido com o dispositivo de cache porque o ZFS estará procurando em um local onde o dispositivo de cache não existe mesmo.

Se isso funcionar, você poderá importar o pool usando -d /tmp/zfs -f (você precisará usar -f porque o pool não foi exportado anteriormente, mas eu recomendo tentar sem ele primeiro, porque usar -f com o ZFS é muitas vezes não o que você quer fazer e você não deve adquirir o hábito de usá-lo a menos que você saiba certos que você deseja usá-lo e por que você deseja usá-lo), remova o dispositivo de cache do pool usando algo como zpool detach pool5 ...something... , exporte o conjunto e, em seguida, -importe a piscina normalmente. Você pode adicionar novamente o dispositivo de cache se quiser (embora eu recomende strongmente contra o uso de um fuso para um dispositivo de cache).

Depois de ter conseguido reimportar o pool normalmente (sem usar -d ), você pode excluir com segurança o diretório / tmp / zfs (ou outro diretório temporário) que você criou acima.

Além disso, se isso funcionar, recomendo que você envie um relatório de bug com o rastreador de problemas do projeto . Esse tipo de solução alternativa não deve ser necessário para o que é, na verdade, armazenamentos de dados voláteis.

    
por 06.11.2015 / 20:38

Tags