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.
| Entidade | Endereçada por | Quem define o nome |
|---|---|---|
| Cadeia | caminho completo <pool>/.backup/<leaf> | quem faz a chamada define o nome da folha; o cluster seleciona o pool |
| Ponto de restauração | nome 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.
| Papel | O que faz |
|---|---|
| Origem | envia 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ção | recebe 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ção | Modo | O que faz | Resposta |
|---|---|---|---|
| Criar uma cadeia | síncrono | cria uma cadeia após selecionar um pool | caminho da cadeia, pool, endereço do nó |
| Abrir um receptor | síncrono | abre um receptor de fluxo para a cadeia | endereço do nó e porta de recepção |
| Enviar um ponto de restauração | assíncrono | envia um ponto de restauração a um receptor externo | confirmação de repasse; o resultado chega em um callback |
| Excluir um ponto de restauração | síncrono | exclui um ponto de restauração | confirmação |
| Excluir uma cadeia | síncrono | exclui a cadeia inteira | confirmaçã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
- Como gerenciar cadeias de backup — criação, recepção de fluxo, rotação e exclusão.
- Como enviar um ponto de restauração a partir de uma cadeia — transferência de um snapshot histórico para o cluster de restauração.
- Papéis e privilégios — privilégios e escopos.
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.