Movendo um sistema de arquivos ZFS de um pool para outro


18

Estou estendendo um servidor Solaris 10 U8 com um pool de armazenamento extra, além do rpool raiz.

Qual é a maneira mais eficaz / simples / confiável de mover sistemas de arquivos ZFS específicos de rpool para esse novo pool de armazenamento?

Isso pode ser feito on-line ou devo encerrar os serviços usando esses pools primeiro?

Respostas:


15

A questão sobre a desativação de serviços depende essencialmente dos próprios serviços:

  • Eles estão gravando ativamente no sistema de arquivos que você planeja mover?
  • Eles estão armazenando dados persistentes que você deseja manter.

De qualquer forma, o envio de um sistema de arquivos ZFS pode demorar muito tempo. É possível minimizar a indisponibilidade do serviço, mantendo-os on-line a maior parte do tempo dessa maneira:

  • criar um instantâneo
  • envie esse instantâneo da maneira sugerida anteriormente, mas mantendo todos os serviços ativos
  • quando o fs for recebido no outro pool, desative os limites dos serviços críticos para esse sistema de arquivos. Verifique se o novo sistema de arquivos no pool de destino não está modificado, pois as alterações serão descartadas mais tarde.
  • crie um segundo instantâneo (por exemplo, instantâneo2)
  • envie esse segundo instantâneo de forma incremental, muito mais rápido que a transferência anterior. por exemplo:

    zfs envia -i rpool / sistema de arquivos @ snapshot rpool / sistema de arquivos @ snapshot2 | zfs recebe -F destino pool / sistema de arquivos

  • Quando terminar, mova o ponto de montagem do sistema de arquivos do conjunto de dados antigo para o novo. por exemplo:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs set mountpoint = / application / diretório de destino / sistema de arquivos

Você precisa garantir que nenhum processo esteja vinculado /application/filesystem(por exemplo: acessar arquivos ou tê-lo como seu diretório atual) para conseguir isso.

  • reative o (s) serviço (s) e pronto.

10

Não acho que isso possa ser realizado online, mas meu processo seria desligar os serviços necessários, tirar uma captura instantânea e usar o zfs send / receive para fazer a migração. Algo como:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

Editar:

Se você instalar o comando "pipe view" (pv), poderá monitorar o status da transferência com:

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem

10

Estou repetindo muito do que jlliagre disse, mas com adições para sistemas de arquivos descendentes. (Principalmente, tenho uma referência quando esqueço.)

Se você tiver sub-sistemas de arquivos, use a -rsinalização no comando zfs snapshot e a sinalização -rou -Rno zfs sendcomando. A maiúscula -Rmove todas as propriedades , instantâneos e clones.

Para mover um pool inteiro:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

para sincronizar as alterações por um período de migração mais curto, desligue os aplicativos, encerre o samba, nfs

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

Se você estiver criando várias capturas instantâneas intermediárias para a migração, leia a página de manual sobre o zfs send -Icomutador.


3
Nas minhas experiências, o comando exato parecia ser: zfs send -R Pool0 @ moving | zfs recebe -dF Pool1
TinkerTank 12/12/12

4

Você também encontrará alguns benefícios no uso de uma ferramenta como "mbuffer" no pipeline; aparentemente, o desempenho de envio / recuperação do ZFS melhora drasticamente se as duas extremidades puderem transmitir dados de maneira contínua e, sem o mbuffer (ou algo semelhante), você obtém um efeito de pingue-pongue onde um bloqueia continuamente no outro.


Observe que essa é uma pergunta muito antiga (acima de 5 anos) e é improvável que sua resposta adicione algo a uma pergunta antiga.
22615 Catherine MacInnes

1
Este é um ótimo conselho e também o uso para movimentos de piscina.
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.