Como remover o dispositivo da piscina

4

Eu cometi um erro quando adicionei um novo dispositivo em meu pool raidz, achando que o ZFS deveria fazer isso automaticamente.

 :~# zpool status
  pool: data
 state: ONLINE

 scan: resilvered 78,3G in 2h4m with 0 errors on Tue May 10 18:12:31 2016
config:

    NAME         STATE     READ WRITE CKSUM
    data         ONLINE       0     0     0
      raidz2-0   ONLINE       0     0     0
        c2t2d0   ONLINE       0     0     0
        c2t3d0   ONLINE       0     0     0
        c2t4d0   ONLINE       0     0     0
        c2t5d0   ONLINE       0     0     0
        c2t6d0   ONLINE       0     0     0
        c2t7d0   ONLINE       0     0     0
        c2t8d0   ONLINE       0     0     0
        c2t9d0   ONLINE       0     0     0
        c2t10d0  ONLINE       0     0     0
        c2t11d0  ONLINE       0     0     0
      c2t13d0    ONLINE       0     0     0
    spares
      c2t12d0    AVAIL   
      c2t14d0    AVAIL 

Eu estou pensando que c2t13d0 não está no pool de raidz, é? Como removê-lo do pool de dados?

Obrigado por qualquer ajuda.

    
por dubis 14.06.2016 / 10:42

2 respostas

7

Você não pode. Agora ele está no pool como um vdev de unidade única. vdevs não pode ser removido de um pool.

Essa é a má notícia.

A pior notícia é que você agora efetivamente obteve um RAID 0 com seu raidz2-0 vdev e c2t13d0 vdev. Isto não é bom. É doubleplusungood.

Suas opções são:

  • para viver com o pool que você criou
  • backup, destruir e recriar o pool e restaurar.

Nenhuma das opções é boa. backup / recriar / restaurar é a opção right a longo prazo, mas requer tempo de inatividade significativo (a única maneira de evitar isso é criar um SECOND pool do mesmo tamanho ou maior e zfs send para esse ).

BTW, uma coisa que podemos fazer para corrigir a falta de redundância é anexar um espelho ao c2t13d0 vdev. Talvez use uma das peças de reposição se elas forem do mesmo tamanho.

Use algo como:

zpool attach data c2t13d0 anotherdisk

Está longe de ser ideal, mas um vdev RAIDZ2 com um vdev espelhado tem redundância (ainda uma abominação, mas não uma que vai comer seus dados), enquanto o RAIDZ2 com uma unidade única não tem redundância confiável (alguns Os seus dados serão APENAS no vdev de unidade única. Estes serão invariavelmente os seus dados mais valiosos e insubstituíveis).

Isso faz com que a primeira opção ("viva com isso") seja muito menor ... pelo menos por enquanto. A longo prazo, você vai querer reconstruir seu pool.

Eu não tenho acesso à página man do Solaris, mas aqui está um extrato relevante do ZFS Na versão Linux da página zpool man (negrito adicionado por mim para ênfase). A versão do Solaris deve ser a mesma ou muito semelhante:

zpool attach [-f] [-o property=value] pool device new_device

Attaches new_device to an existing zpool device. The existing device cannot be part of a raidz configuration. If device is not currently part of a mirrored configuration, device automatically transforms into a two-way mirror of device and new_device. If device is part of a two-way mirror, attaching new_device creates a three-way mirror, and so on. In either case, new_device begins to resilver immediately.

    
por 14.06.2016 / 11:46
0

Você está certo, o seu pool é composto por dois vdevs, o disco c2t13d0 e o raidz2-0, que são distribuídos.

Infelizmente, o ZFS ainda não oferece a possibilidade de remover um vdev de um pool. Portanto, sua única opção é destruir o pool, recriá-lo e restaurá-lo a partir do backup.

    
por 14.06.2016 / 11:46

Tags