Como substituir um disco em um pool ZFS não redundante?

8

Eu tenho lido um pouco e parece que o ZFS não gosta de discos serem removidos de matrizes não redundantes :

You can use the zpool detach command to detach a device from a mirrored storage pool. For example:

# zpool detach zeepool c2t1d0

However, this operation is refused if there are no other valid replicas of the data. For example:

# zpool detach newpool c1t2d0
cannot detach c1t2d0: only applicable to mirror and replacing vdevs

O problema básico é compreensível: remover a única cópia de um dado (se os metadados ou os dados de carga útil) de uma matriz tornaria esses dados indisponíveis.

Os exemplos de substituição de dispositivos em um pool de armazenamento do ZFS fornecem uma descrição passo a passo básica sobre como substituir um dispositivo em um pool de armazenamento: desconecte o disco, remova o disco, insira o disco de substituição, execute zpool replace para informar ao ZFS sobre a alteração e on-line o disco. Isso obviamente requer que a matriz não dependa do disco sendo substituído, portanto, a matriz deve ter redundância; se depender da unidade em questão, essa abordagem apresentará o mesmo problema acima.

Qual é a maneira recomendada de substituir um disco em uma matriz ZFS não redundante ?

Suponha que o disco existente esteja funcionando corretamente e presuma que o disco de substituição tenha pelo menos o mesmo tamanho do disco que está sendo substituído. (Se o disco existente falhou, tudo o que é possível fazer é adicionar um novo disco e restaurar todos os arquivos afetados pela falha do disco a partir do backup.)

    
por a CVn 31.07.2013 / 12:53

2 respostas

3

Não sei se as coisas eram diferentes em '13, mas 'zfs replace' funciona em pools não redundantes. Você acabou de executar o comando 1 em vez de desanexar primeiro.

d1 é 1G, d2 é 2G, ambos são arquivos vazios em / tmp:

/t/test #> zpool create test /tmp/test/d1
/t/test #> zpool set autoexpand=on test
/t/test #> zpool status
  pool: test
 state: ONLINE
  scan: none requested
config:

    NAME            STATE     READ WRITE CKSUM
    test            ONLINE       0     0     0
      /tmp/test/d1  ONLINE       0     0     0

errors: No known data errors
/t/test #> zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
test   1008M   258K  1008M         -     0%     0%  1.00x  ONLINE  -


/t/test #> zpool replace test /tmp/test/d1 /tmp/test/d2


/t/test #> zpool status
  pool: test
 state: ONLINE
  scan: resilvered 61K in 0h0m with 0 errors on Sun Sep 18 18:55:32 2016
config:

    NAME            STATE     READ WRITE CKSUM
    test            ONLINE       0     0     0
      /tmp/test/d2  ONLINE       0     0     0

errors: No known data errors
/t/test #> zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
test   1.98G   408K  1.98G         -     0%     0%  1.00x  ONLINE  -
    
por 19.09.2016 / 00:58
12
zpool attach pool old-disk new-disk

Isso converterá o disco antigo em um espelho com o disco antigo e o novo disco e iniciará o resilver, após o qual você poderá desanexar o disco antigo.

zpool detach pool old-disk

Testado com dispositivos de loop:

# truncate -s 1G a b
# truncate -s 1200M c
# losetup  /dev/loop0 a
# losetup  /dev/loop1 b
# losetup  /dev/loop2 c
# zpool create test loop{0,1}
# zpool attach test loop1 loop2
# zpool status
      pool: test
 state: ONLINE
  scan: resilvered 62K in 0h0m with 0 errors on Wed Jul 31 13:43:19 2013
config:

        NAME        STATE     READ WRITE CKSUM
        test        ONLINE       0     0     0
          loop0     ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            loop1   ONLINE       0     0     0
            loop2   ONLINE       0     0     0
# zpool detach test loop1
# zpool status
  pool: test
 state: ONLINE
  scan: resilvered 62K in 0h0m with 0 errors on Wed Jul 31 13:43:19 2013
config:

        NAME        STATE     READ WRITE CKSUM
        test        ONLINE       0     0     0
          loop0     ONLINE       0     0     0
          loop2     ONLINE       0     0     0
    
por 31.07.2013 / 13:12

Tags