Visão geral dos snapshots

Nesta página, descrevemos o que é um snapshot, como ele funciona, alguns casos de uso comuns e práticas recomendadas para criar e usar snapshots. Para saber como criar e gerenciar snapshots e como restaurar dados do Filestore de um snapshot, consulte Preservar o estado dos dados com snapshots.

O que é um snapshot?

Um snapshot do Filestore é o estado preservado dos dados de compartilhamento de arquivos no momento em que o snapshot é criado. A instância mantém o estado dos arquivos que são modificados após a criação do snapshot. Se você quiser restaurar um arquivo para o estado preservado no snapshot, poderá substituir o arquivo atual pelo arquivo do diretório de snapshot relevante.

Os snapshots são armazenados na instância do Filestore e são recursos filhos da instância. Eles não replicam os dados nem consomem a capacidade até que os dados na instância sejam modificados. Todos os snapshots de uma instância compartilham dados em comum, o que significa que a instância preserva apenas as diferenças entre os snapshots.

Criação de snapshot

Cada diretório de um compartilhamento de arquivos contém um diretório .snapshot oculto. Cada diretório .snapshot contém os snapshots do diretório pai criados, por exemplo:

foo/
│   bar.txt
│
└───.snapshot
    │
    ├───snap1/
    │        bar.txt
    │
    ├───snap2/
    │        bar.txt
    │
    └───snap3/
             bar.txt

Os snapshots contêm uma visualização somente leitura de todos os arquivos e subdiretórios que existem no diretório pai no momento da criação do snapshot. Todos os atributos de arquivo, como atime, ownership e permissões de leitura/gravação, são preservados.

Geralmente, a criação de snapshots não leva mais de dois minutos para ser concluída porque não envolve a cópia dos dados e não afeta o desempenho da instância.

É possível ter até 240 snapshots por instância por vez. Os nomes do compartilhamento de arquivos e do snapshot podem ter até 78 caracteres combinados.

Consistência de snapshots

Os snapshots do Filestore têm semântica de consistência NFSv3. Antes de um snapshot ser iniciado, qualquer gravação que a instância do Filestore reconhece como gravada no armazenamento estável ou que é seguida por um COMMIT confirmado é incluída no snapshot. Para mais detalhes, consulte a seção 3.3.7 do NFSv3 RFC-1813.

Preparar seu compartilhamento de arquivos para a melhor consistência de snapshots

A qualidade de um snapshot depende da capacidade do aplicativo de se recuperar dos snapshots criados durante cargas de trabalho de gravação pesadas. Na maioria das situações, é possível criar snapshots com boa consistência, mesmo que os aplicativos gravem dados no compartilhamento de arquivos. No entanto, se os aplicativos exigirem consistência rigorosa, recomendamos executar uma ou mais das seguintes opções:

  • Use a opção de ativação sync ou abra os arquivos com o O_DIRECT|O_SYNC. Qualquer um desses métodos melhora a consistência, mas não garante isso.
  • Pause os aplicativos ou processos do sistema operacional que gravam dados no compartilhamento de arquivos e faça com que eles limpem as alterações no compartilhamento de arquivos antes de iniciar o o snapshot. Para ver mais informações, consulte fsync(2).
  • Se os aplicativos exigirem consistência entre vários compartilhamentos, pause todos os aplicativos em todas as instâncias que estiverem gravando nos compartilhamentos de arquivos e crie snapshots de todos os compartilhamentos de arquivos antes de retomar os aplicativos.
  • Se você precisar de consistência no nível do aplicativo, interrompa seus aplicativos e desative o compartilhamento de arquivos antes de criar um snapshot.

Semântica NFS do diretório .snapshot

Os diretórios .snapshot são diretórios ocultos especiais que contêm os snapshots capturados do respectivo diretório pai. Todos os comandos NFS e bash funcionam para esses diretórios com as seguintes exceções:

  • Não é possível criar um arquivo ou diretório chamado .snapshot porque ele está reservado para snapshots.
  • O diretório .snapshot não está listado nas saídas dos comandos READDIR ou READDIRPLUS e não está listado no comando bash ls -a.
  • Para mudar para um diretório .snapshot, você precisa digitar explicitamente a string .snapshot. Exemplo: cd somedir/.snapshot/
  • O preenchimento automático de comandos do shell não listará o .snapshot como uma opção.

Excluir arquivos capturados em um snapshot

Quando um arquivo é capturado em um snapshot, a exclusão dele não aumenta o espaço livre em disco na instância.

Como reverter para um estado de snapshot

A reversão de uma instância para um estado de snapshot está disponível como um recurso de Prévia apenas para instâncias empresariais e SSD de grande escala.

Quando uma instância é revertida para o estado capturado em um snapshot, todos os novos dados gravados desde a criação do snapshot de destino são excluídos e não podem ser recuperados. Os snapshots criados após o snapshot de destino também são excluídos pelo processo de reversão.

Limitações do recurso

  • O recurso de reversão de snapshot é uma operação destrutiva, tanto para o sistema de arquivos ativo quanto para os snapshots mais recentes na cadeia. Portanto, ele tem um risco maior de perda de dados acidental. Esse comportamento é significativamente diferente quando comparado com a restauração de um backup, em que o backup permanece no estado atual após o uso, permitindo que você tente restaurar de vários backups para encontrar o melhor. Use o recurso de reversão com cuidado.

  • Todos os dados gravados após a criação do snapshot de destino são excluídos no início do processo de reversão e não podem ser recuperados. Todos os snapshots mais recentes do que o de destino também serão excluídos. Por exemplo, snapshot1, snapshot2 e snapshot3 são criados em sequência. Reverter a instância para o estado capturado no snapshot2 significa que snapshot3 e todas as alterações após o snapshot3 serão excluídos no processo de reversão.

    A limpeza desses dados excluídos pode levar até três dias. A capacidade e o desempenho da instância podem ser afetados durante esse período.

  • Reverter uma instância para um estado de snapshot atualiza o ID do sistema de arquivos NFS (fsid). Como resultado, as tentativas de acessar clientes usando montagens existentes retornarão erros de processamento de arquivo desatualizado. Como prática recomendada, desconecte todos os clientes da instância antes da operação de reversão e reative-os após a conclusão.

  • Uma operação de reversão pode levar várias horas para ser concluída, dependendo do número de arquivos envolvidos. Aguarde a conclusão da operação de reversão antes de iniciar outra operação de reversão.

  • Nenhuma outra operação, para a instância ou o snapshot, pode ser executada enquanto a operação de reversão é concluída. Todas as outras operações são rejeitadas ou colocadas em fila, dependendo da configuração da operação.

  • Atualmente, apenas instâncias com um único compartilhamento podem reverter para um estado de snapshot. O recurso de reversão de snapshot não pode ser combinado com compartilhamentos múltiplos do Filestore para o GKE.

A seguir