Como posso mover um pool ZFS para um pool filho?

Como posso mover um pool ZFS para um pool filho?

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 posso criar 'dados', pois não parece ser significativo criar um pool sem dispositivos.

Responder1

Tenho certeza que você quis 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 fornecerá seu pool de "dados", mais o sistema de arquivos /data, e o segundo comando criará o sistema de arquivos /data/001.

Responder2

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

zfs create data/001

Este é o conjunto de comandos que eu deveria ter executado, ou ainda posso, preservando os dados? A primeira linha parece que criaria um novo pool sobre o existente.

Isso é o que você deveria ter feito. Fazer isso 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 raidz em vez de espelhos). Também pode ser uma boa ideia pensar sobre sua estratégia de backup, caso você não tenha uma.


Sou novo no zfs e acho que a divisão de funcionalidade entre zfs e zpool parece arbitrária, provavelmente devido a algum mal-entendido sobre a tecnologia

A Oráculo tem umguia detalhadosobre como você usa pools e sistemas de arquivos, e também há alguns condensadosMelhores Práticas. Para resumir em termos bastante amplos, existem três camadas:

  1. Você constrói 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, espelhos 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 pool em si também é gravável, mas é recomendado não fazer isso devido ao gerenciamento mais fácil/herança de propriedade.

Minhas recomendações pessoais para essas camadas:

  1. Use discos do mesmo tamanho, velocidade e qualidade para cada vdev. Prefira espelhos, pois são mais flexíveis e rápidos que o raidz. Evite vdevs básicos porque eles podem matar todo o seu pool se um deles 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, portanto não é uma boa ideia.
  3. Crie quantos sistemas de arquivos desejar e use herança para gerenciá-los facilmente (propriedades como compartilhamento SMB ou NFS podem ser herdadas da mesma forma que cotas ou configurações gerais de ACL). Seu design depende de 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 sistemas de arquivos se o conteúdo interno for essencialmente sobre o mesmo tópico, mas a movimentação for frequente, pois a movimentação entre sistemas de arquivos é sempre uma operação completa e cara, mesmo no mesmo pool. Você precisa de zvols apenas se exportar armazenamento em bloco ou com KVM, então comece de forma simples (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.).

informação relacionada