Pular para o conteúdo principal

Backup entre clusters

Problema e finalidade​

Um snapshot de disco reside no mesmo pool que a própria máquina virtual. Essa cópia protege contra um erro dentro da VM, mas não contra a perda do pool ou do seu nó proprietário: o original e a cópia são perdidos juntos. Para que uma cópia sobreviva a uma falha da camada de armazenamento, ela precisa ser movida para outro cluster.

O subsistema de backup entre clusters cuida disso. Um cluster envia o fluxo de dados da VM; o outro o recebe e armazena o seu histórico. Ambas as pontas são clusters vStack Center comuns; a configuração não tem um servidor de backup dedicado.

O vStack Center fornece um conjunto de primitivas para isso, e não um produto de backup completo. Um cluster pode criar uma cadeia, abrir um receptor de fluxo, enviar um ponto de restauração histórico e remover o que não é mais necessário. Quem faz a chamada — GI, a federação de clusters — mantém o agendamento, o catálogo de backups e a política de retenção. O próprio cluster não agenda nada nem acompanha o histórico de backups.

Modelo e entidades​

Uma cadeia de backup é um dataset de serviço no cluster de armazenamento de backup. O seu nome completo é formado pelo pool, um prefixo de serviço e um nome de folha: <pool>/.backup/<leaf>. Quem faz a chamada escolhe o nome da folha, e o cluster valida os seus caracteres: de 1 a 128 caracteres, compostos por letras latinas, dígitos e os símbolos _, ., -. Espaços, caracteres cirílicos, barras e @ são rejeitados com o código -25430. O cluster não interpreta o significado do nome. Uma cadeia não é uma VM: ela não pertence a nenhum VDC (data center virtual) e não aparece nas listas de VMs.

Um ponto de restauração é um snapshot dentro de uma cadeia. Ele é endereçado pelo seu nome curto, o sufixo após @, e não pelo seu caminho completo. Uma cadeia contém tantos pontos quantos forem adicionados a ela: o cluster não limita a sua quantidade nem remove os antigos automaticamente.

O próprio cluster seleciona o pool para a cadeia, sem envolver quem faz a chamada. Ele considera os pools consumidores cujos nós proprietários estão ativos e seleciona aquele com mais espaço livre. Uma estimativa do tamanho do backup, se fornecida na criação, funciona como pré-filtro. O cluster adiciona uma margem de 20 % à estimativa para o crescimento da cadeia e exclui os pools com menos espaço livre do que esse total. O filtro é ativado quando a estimativa é maior que zero.

EntidadeEndereçada porQuem define o nome
Cadeiacaminho completo <pool>/.backup/<leaf>quem faz a chamada define o nome da folha; o cluster seleciona o pool
Ponto de restauraçãonome curto do snapshot (o sufixo após @)a parte que gravou o fluxo

O caminho da cadeia é a única proteção contra acesso não intencional à camada de armazenamento: apenas caminhos no formato <pool>/.backup/<leaf> são repassados aos nós. O cluster rejeita qualquer outro caminho com o erro -25430 antes que a requisição chegue ao nó. Portanto, a tentativa de endereçar um dataset de VM por meio das operações de cadeia falha por design.

Papéis dos clusters​

Até três clusters participam de um procedimento, e um cluster pode desempenhar vários papéis ao mesmo tempo.

PapelO que faz
Origemenvia o fluxo de dados da sua VM ao receptor no cluster de armazenamento de backup
Armazenamento de backup (destino)mantém as cadeias, recebe fluxos, envia dados históricos, faz a rotação de snapshots e exclui cadeias
Restauraçãorecebe o fluxo de volta e implanta uma VM a partir dele

O papel de armazenamento de backup é o foco desta página. Ele é o único papel com cadeias: a origem mantém os dados no dataset da VM, e o cluster de restauração os mantém em um dataset de recepção em quarentena.

Como funciona​

Os dados trafegam diretamente entre os clusters por TCP, e não por meio de quem faz a chamada. Isso determina a ordem: primeiro o receptor, depois o remetente. O cluster de armazenamento de backup abre um receptor para a cadeia: ele aloca uma porta e retorna os dados de conexão do receptor — o endereço do nó proprietário do pool e o número da porta. O remetente se conecta a esse endereço e porta e envia o fluxo. O tempo limite de recepção especifica por quanto tempo o receptor aguarda uma conexão antes de fechar a porta.

Essa resposta chega imediatamente e significa apenas que a requisição foi enviada ao nó. Ela confirma que a requisição foi repassada, e não informa o resultado da transferência.

As operações se dividem em dois grupos pelo modo de execução. As operações síncronas retornam o seu resultado imediatamente: uma cadeia é criada, uma porta é alocada ou um snapshot é excluído. Uma transferência assíncrona retorna uma confirmação de repasse, e o resultado da transferência chega em um callback do nó.

OperaçãoModoO que fazResposta
Criar uma cadeiasíncronocria uma cadeia após selecionar um poolcaminho da cadeia, pool, endereço do nó
Abrir um receptorsíncronoabre um receptor de fluxo para a cadeiaendereço do nó e porta de recepção
Enviar um ponto de restauraçãoassíncronoenvia um ponto de restauração a um receptor externoconfirmação de repasse; o resultado chega em um callback
Excluir um ponto de restauraçãosíncronoexclui um ponto de restauraçãoconfirmação
Excluir uma cadeiasíncronoexclui a cadeia inteiraconfirmação

Ambas as formas de exclusão são idempotentes: repetir uma requisição para um objeto que já foi excluído não perturba o estado nem exige tratamento especial por parte de quem faz a chamada.

Acesso e ativação​

Todas as cinco operações do subsistema exigem o mesmo privilégio — 14002, gerenciamento de cadeias de backup. O seu escopo é o cluster: uma cadeia não está vinculada a um VDC, então o papel de administrador de VDC não pode fazer essas requisições. O modelo de privilégios é descrito na referência de papéis e privilégios.

Além do privilégio, há uma chave no nível do cluster: o parâmetro feature.backup em cluster.options. O seu valor padrão é 0, caso em que qualquer uma das cinco operações retorna o erro -25420. Cada cluster tem a sua própria chave: o subsistema pode ser ativado no cluster de armazenamento de backup e permanecer desativado nos outros clusters.

Escopo​

O subsistema cuida da transferência e do armazenamento de dados, mas não do gerenciamento de backups. O que ele não faz:

  • Manter um catálogo. O subsistema não tem operações para listar as cadeias de um cluster nem os snapshots dentro de uma cadeia. Quem faz a chamada mantém os registros: salve o caminho da cadeia retornado na criação, ou você não poderá acessar a cadeia novamente. O pool e o endereço do nó na mesma resposta são informativos — eles mudam quando a localização do pool muda, então não dependa deles.
  • Agendar operações. Não há agendamentos nem políticas de retenção no nível do cluster. Um agendador externo cuida da rotação, excluindo os pontos de restauração desatualizados um de cada vez.
  • Enviar incrementos. As transferências a partir de uma cadeia na versão atual são sempre completas: as transferências incrementais estão reservadas e não funcionam.
  • Criar snapshots durante uma transferência. Uma transferência envia um ponto existente pelo nome. Se o ponto necessário não existir na cadeia, ele não será criado — a operação falha com um erro.
  • Exibir cadeias na interface. A interface web do cluster não tem telas para cadeias: quem faz a chamada gerencia as operações.

Veja também​

Métodos da API​

Operações de API abordadas nesta página: backup-dataset-create, backup-dataset-receive, backup-dataset-send, backup-snapshot-remove, backup-dataset-remove, vm-backup-send, vm-backup-restore — consulte a referência da API.