Como posso mover um pool do ZFS para um pool filho?

1

Eu criei um pool no zfs usando:

zpool create data001 mirror /dev/sda /dev/sdb

mas pensando bem, eu queria criar

zpool create data/001 mirror /dev/sda /dev/sdb

Nenhuma das opções de renomear / mover que encontrei funciona porque 'dados' não existem, mas não consigo criar 'dados', pois não parece ser significativo criar um pool sem dispositivos .

    
por J Collins 05.11.2016 / 16:41

2 respostas

1

Tenho certeza que você quer dizer "zpool create" e não "zfs create" para o primeiro. Então, aqui está o que você deve fazer:

# zpool create data mirror /dev/sda /dev/sdb
# zfs create data/001

O primeiro comando lhe dará seu pool de "dados", mais o sistema de arquivos / data, e o segundo comando criará o sistema de arquivos / data / 001.

    
por 07.11.2016 / 19:22
1

zpool create data mirror /dev/sda /dev/sdb

zfs create data/001

Is this the set of commands I should have run, or can still, while preserving data? The first line looks like it would make a new pool over the top of the existing.

Isso é o que você deveria ter feito. Fazê-lo agora apenas lhe dirá que não é possível usar discos que já fazem parte de um pool para um novo pool sem destruir o antigo ou remover os discos dele (exceto o último, não é possível se usar o raidz em vez de espelhos). Também pode ser um bom ponto para pensar sobre sua estratégia de backup, se você não tiver uma.

I am new to zfs and find the split of functionality between zfs and zpool seems arbitrary, likely because of some misunderstanding of the technology

A Oracle tem um guia detalhado sobre como você usa pools e sistemas de arquivos, e há também algumas práticas recomendadas condensadas. Para resumir em termos muito amplos, existem três camadas:

  1. Você cria dispositivos virtuais (vdevs) a partir de dispositivos normais (normalmente discos, também podem ser arquivos ou partições) com um determinado recurso de redundância (básico, espelhado ou raidz).
  2. Você cria pools de armazenamento (zpools) a partir de vários vdevs, que são sempre distribuídos (concatenados) e oferecem o tamanho somado desses vdevs como armazenamento contínuo.
  3. Você cria sistemas de arquivos ou zvols dentro desses pools. Os sistemas de arquivos podem ser aninhados uns dentro dos outros. Em teoria, o próprio pool também é gravável, mas é recomendável não fazer isso por causa da herança mais fácil de gerenciamento / propriedade.

Minhas recomendações pessoais para essas camadas:

  1. Use discos do mesmo tamanho, velocidade e qualidade para cada vdev. Prefira os espelhos, pois eles são mais flexíveis e mais rápidos que o raidz. Evite vdevs básicos porque eles podem matar todo o seu pool se um falhar.
  2. Crie pools de armazenamento para vdevs semelhantes, por exemplo, um pool com SSD vdevs (espelhos) para armazenamento de VM e um pool com HDD vdevs (raidz2) para armazenamento de backup mais lento, porém maior. Combiná-los tornaria o pool tão lento quanto o HDD e tão perigoso quanto o espelho único para todos os dados, por isso não é uma boa ideia.
  3. Crie quantos sistemas de arquivos você desejar e use a herança para gerenciá-los facilmente (propriedades como compartilhamento SMB ou NFS podem ser herdadas da mesma maneira que as cotas ou as configurações gerais da ACL). Seu design depende da sua organização e estrutura, mas as regras comuns são "um sistema de arquivos para cada diretório inicial do usuário" e "um sistema de arquivos para cada compartilhamento de rede independente". Evite dividir os sistemas de arquivos se o conteúdo dentro for basicamente o mesmo tópico, mas a movimentação é freqüente, já que a movimentação entre sistemas é sempre uma operação completa e cara, mesmo no mesmo pool. Você só precisa de zvols se exportar o armazenamento em bloco ou com o KVM, por isso comece com um sistema simples (os sistemas de arquivos também podem ser usados como armazenamento em bloco).
  4. Use diretórios dentro dos sistemas de arquivos como faria normalmente (definir ACLs, segregar dados, etc.).
por 08.11.2016 / 10:57

Tags