posso consolidar um zpool zfs de vários discos em um único disco (maior)?

5

Eu tenho este zpool:

    bash-3.2# zpool status dpool
  pool: dpool
 state: ONLINE
 scan: none requested
 config:
        NAME                                     STATE     READ WRITE CKSUM
        dpool                                    ONLINE       0     0     0
          c3t600601604F021A009E1F867A3E24E211d0  ONLINE       0     0     0
          c3t600601604F021A00141D843A3F24E211d0  ONLINE       0     0     0

Eu gostaria de substituir esses dois discos por um único (disco maior). Isso pode ser feito? O zpool attach permite-me substituir um disco físico, mas não me permitirá substituir ambos de uma só vez.

    
por rmeden 07.11.2012 / 16:35

2 respostas

7

Não, não acho que isso seja possível da maneira que você está descrevendo.

Você pode , no entanto, criar um novo pool com o disco único e copiar seus sistemas de arquivos ZFS para o novo pool usando um simples processo enviar / receber zfs .

    
por 07.11.2012 / 16:42
1

Você deve ser capaz de zpool attach da unidade nova e maior, aguardar a conclusão do espelhamento e, em seguida, zpool detach das unidades antigas.

Editar : Eu interpretei mal sua pergunta e tive certeza de que você a estava exibindo como um espelho.

Concordo que o melhor curso de ação é criar um novo pool e enviar recursivamente todos os conjuntos de dados para o novo pool, mas se você realmente não puder fazer isso, poderá seguir as etapas que estou delineando, desde que você particione o novo disco maior em duas partições, cada uma com pelo menos o tamanho do disco que ele pretende substituir.

Recomendo contra isso, principalmente porque (1) o gerenciamento se torna mais complexo e (2) você não poderá tirar proveito do cache de gravação da unidade.

Vou colar aqui a sequência como foi realizada em uma caixa recente da Illumos. Observe que estou criando arquivos vazios para mostrar isso, em vez de usar discos inteiros e fatias / partições, pois não posso manipular dispositivos físicos nessa caixa. Os arquivos são denominados aa1 , aa2 e aa3 .

  1. Prepare os dispositivos. aa3 é 200M grande, enquanto aa1 e aa2 são apenas 100M:

    # dd if=/dev/zero of=/opt/local/aa1 bs=1M count=100
    # dd if=/dev/zero of=/opt/local/aa2 bs=1M count=100
    # dd if=/dev/zero of=/opt/local/aa3 bs=1M count=200
    
  2. Crie o nosso pool de testes:

    # zpool create test mirror /opt/local/aa1 /opt/local/aa2
    

    Verifique se tudo correu bem:

    # zpool list -v test
    NAME                 SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
    test                95,5M   106K  95,4M         -     0%  1.00x  ONLINE  -
      mirror            95,5M   106K  95,4M         -
        /opt/local/aa1      -      -      -         -
        /opt/local/aa2      -      -      -         -
    
  3. Defina a propriedade autoexpand :

    # zpool set autoexpand=on test
    
  4. Anexe o novo dispositivo:

    # zpool attach test /opt/local/aa2 /opt/local/aa3
    

    Tudo ainda está bem?

    # zpool list -v test
    NAME                 SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
    test                95,5M   120K  95,4M         -     0%  1.00x  ONLINE  -
      mirror            95,5M   120K  95,4M         -
        /opt/local/aa1      -      -      -         -
        /opt/local/aa2      -      -      -         -
        /opt/local/aa3      -      -      -         -
    

    Sim, é.

  5. Destaque os dois primeiros desenvolvedores:

    # zpool detach test /opt/local/aa1
    # zpool detach test /opt/local/aa2
    

Por fim, vamos verificar o pool novamente:

# zpool list -v test
NAME               SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
test               196M   124K   195M         -     0%  1.00x  ONLINE  -
  /opt/local/aa3   196M   124K   195M         -

Ele cresceu corretamente para 200 MB.

    
por 07.11.2012 / 16:49