Práticas recomendadas para snapshots de disco do Compute Engine


Você pode criar snapshots de discos permanentes e de hiperdiscos do Google Cloud a qualquer momento, mas poderá criar snapshots mais rapidamente e com maior confiabilidade se usar as práticas recomendadas a seguir.

Considerações de segurança

Para evitar o escalonamento de privilégios não intencional, certifique-se de conceder permissões do IAM relacionadas ao snapshot somente a entidades principais em quem você confia para ler e restaurar dados de snapshots ou de snapshots instantâneos. As seguintes permissões permitem que os usuários leiam e restaurem dados de snapshots ou instantâneos:

  • compute.snapshots.useReadOnly
  • compute.instantSnapshots.useReadOnly

Qualquer entidade de segurança que tenha uma das permissões anteriores pode restaurar dados de snapshots ou snapshots instantâneos no seu projeto para um projeto que ele controla, incluindo um projeto que esteja em uma organização diferente. Por exemplo, se um agente mal-intencionado obtivesse uma função do IAM de snapshot em seu projeto, ele poderia restaurar o snapshot em seu projeto pessoal e acessar os dados contidos no snapshot.

Para saber como verificar as permissões que um principal possui, consulte Determinar quais principais têm determinadas funções ou permissões .

Preparando-se para instantâneos consistentes

Se você criar um instantâneo do disco permanente ou hiperdisco enquanto o aplicativo estiver em execução, o instantâneo poderá não capturar gravações pendentes que estão em trânsito da memória para o disco. Devido a essas inconsistências, o instantâneo pode não refletir o estado exato do seu aplicativo no momento em que você o capturou. Nesse cenário, o instantâneo é considerado consistente com falhas porque captura o estado do aplicativo como se a máquina tivesse travado no momento em que o instantâneo foi obtido.

Opcionalmente, você pode pausar o aplicativo para que todas as transações do aplicativo sejam concluídas e o sistema possa liberar todas as gravações pendentes da memória para o disco antes que o instantâneo seja capturado. Nesse cenário, o instantâneo é considerado consistente com o aplicativo .

Criando snapshots consistentes com falhas

Ao tirar um snapshot de um disco permanente ou hiperdisco, você não precisa realizar nenhuma etapa adicional para tornar o snapshot consistente com falhas. Em particular, você não precisa pausar sua carga de trabalho.

Se a sua carga de trabalho não puder tolerar uma pausa temporária, considere o seguinte processo para criar instantâneos consistentes com falhas:

  1. Capture um instantâneo enquanto os aplicativos estão em execução, presumindo que haverá algumas inconsistências nos dados do aplicativo.
  2. Verifique se você pode restaurar sua carga de trabalho para um estado de aplicativo aceitável a partir do snapshot.
  3. Com base na etapa anterior, retenha ou exclua o instantâneo.

Os snapshots consistentes com falhas provavelmente exigirão a repetição do sistema de arquivos e dos diários no nível do aplicativo antes do uso. Assim, a qualidade do seu instantâneo depende da capacidade do seu aplicativo de se recuperar rapidamente de um estado consistente com falhas e voltar a servir.

Criando snapshots consistentes de aplicativos

  • Usuários do Windows Server : para discos anexados a instâncias do Windows Server, use snapshots VSS .
  • Usuários do Linux : para obter consistência de aplicativo para snapshots de discos anexados a instâncias do Linux, crie scripts de shell pré e pós-instantâneo para preparar seu sistema para consistência de aplicativo. Em seguida, crie um instantâneo com a opção guest-flush habilitada. Isso executa os scripts anteriores e posteriores antes e depois da captura do instantâneo. Para obter instruções, consulte Criando snapshots consistentes de aplicativos Linux .

Criando manualmente snapshots consistentes de aplicativos

Em alguns cenários, talvez seja necessário pausar manualmente seus aplicativos para obter instantâneos consistentes com os aplicativos.

Por exemplo, use esta opção se precisar de consistência de aplicativo entre vários volumes de disco permanente ou hiperdisco. Nesse caso, você deve congelar todos os sistemas de arquivos em cada disco e concluir todos os instantâneos desses discos antes de retomar seus aplicativos.

Você não precisa parar suas VMs. A pausa do aplicativo pode envolver, por exemplo, o congelamento e a desmontagem do sistema de arquivos. Depois de pausar manualmente seus aplicativos, retome suas cargas de trabalho somente depois que o recurso de snapshot atingir o status UPLOADING .

Ao solicitar um instantâneo, verifique o status da operação chamando o método globalOperations.get . A tabela a seguir mostra o relacionamento entre o status da operação de captura instantânea e o status do recurso de captura instantânea.

Status da operação Status do recurso de instantâneo
PENDING Ainda não existe nenhum recurso de snapshot.
RUNNING CREATING ou UPLOADING

CREATING : A criação do instantâneo ainda não foi concluída.
UPLOADING : o instantâneo foi criado, mas ainda não foi salvo no Cloud Storage.
DONE FAILED ou READY .

Limites de frequência de instantâneo

Há limites para a frequência com que você pode tirar um instantâneo de um disco.

Criação de snapshots de disco permanente ou hiperdisco

Você pode capturar instantâneos de um disco individual no máximo 6 vezes a cada 60 minutos.

Se o limite for excedido, a operação falhará e retornará o seguinte erro:

"code": "RESOURCE_OPERATION_RATE_EXCEEDED",
"message": "Operation rate exceeded for resource 'projects/project-id/zones/zone-id/disks/disk-name'.
Too frequent operations from the source resource."

Este limite aplica-se às seguintes operações:

Este limite não se aplica às seguintes operações:

Como prática recomendada, tire um instantâneo do disco uma vez por hora. Evite tirar instantâneos com mais frequência do que isso. A maneira mais fácil de conseguir isso é configurar uma programação de snapshot.

Criando novos discos zonais a partir de snapshots

Você pode criar um novo disco permanente ou hiperdisco zonal a partir de um determinado snapshot por zona de destino no máximo seis vezes a cada 60 minutos. A zona de destino refere-se ao local de armazenamento do novo disco criado a partir do instantâneo.Google Cloud não garante que você será capaz de criar discos a partir de um instantâneo em uma taxa mais rápida do que isso, embora você possa criar discos com mais frequência se não tiver criado nenhum disco a partir do instantâneo na última hora.

Observe que vários instantâneos dos mesmos discos são considerados instantâneos distintos em relação a esse limite de frequência.

Se esse limite for excedido, a operação falhará e retornará o seguinte erro:

"code": "RESOURCE_OPERATION_RATE_EXCEEDED",
"message": "Operation rate exceeded for resource 'projects/project-id/global/snapshots/snapshot-name'.
Too frequent operations from the source resource."

Este limite aplica-se às seguintes operações:

Este limite não se aplica às seguintes operações:

  • Criação de novos discos permanentes regionais a partir de um snapshot.
  • Criação de novos discos permanentes zonais ou regionais usando uma imagem como origem.

Para criar vários discos a partir de um instantâneo, use o instantâneo para criar uma imagem e depois crie seus discos a partir da imagem:

  1. Crie uma imagem a partir do instantâneo .
  2. Crie discos a partir da imagem .

Para discos que não são de inicialização, siga as instruções para criar discos permanentes a partir da imagem e siga as etapas a seguir:

Use snapshots existentes como base para snapshots subsequentes

Se você tiver instantâneos existentes de um disco (disco permanente ou hiperdisco), o sistema os usará automaticamente como linha de base para quaisquer instantâneos subsequentes criados a partir desse mesmo disco.

  • Crie um novo instantâneo de um disco antes de excluir o instantâneo anterior desse mesmo disco. O sistema poderá criar o novo instantâneo mais rapidamente se puder usar o instantâneo anterior e ler apenas os dados novos ou alterados do disco.
  • Aguarde a conclusão dos novos snapshots antes de tirar snapshots subsequentes do mesmo disco. Se você executar dois instantâneos simultaneamente no mesmo disco, ambos começarão na mesma linha de base e duplicarão o esforço. Se você aguardar a conclusão do novo instantâneo, todos os instantâneos subsequentes serão executados mais rapidamente porque eles obterão apenas os dados que foram alterados desde a conclusão do último instantâneo.

Programe snapshots fora dos horários de pico

Se você agendar snapshots regulares para seus discos (disco permanente ou hiperdisco), poderá reduzir o tempo necessário para concluir cada snapshot criando-os fora dos horários de pico, quando possível.

  • Agende snapshots automatizados durante o dia útil na zona onde seu disco está localizado. A criação de instantâneos normalmente atinge o pico no final do dia útil.
  • Agende instantâneos automatizados no início da manhã na zona onde seu disco está localizado, em vez de imediatamente à meia-noite. A criação de instantâneos normalmente atinge o pico à meia-noite.

Organize seus dados em discos separados

Se você criar um instantâneo de um disco (disco permanente ou hiperdisco), todos os dados armazenados no disco serão incluídos no instantâneo. Quantidades maiores de dados criam instantâneos maiores, que custam mais e demoram mais para serem criados. Para garantir que você crie um instantâneo apenas dos dados necessários, organize seus dados em discos separados.

  • Armazene dados críticos em um disco secundário ou de dados, em vez de no disco de inicialização. Isso permite criar um instantâneo dos discos de inicialização somente quando necessário ou em uma programação menos frequente.
  • Se você criar instantâneos de seus discos de inicialização, armazene partições swap, arquivos de paginação, arquivos de cache e logs não críticos em um disco separado. Esses arquivos e partições mudam frequentemente e o processo de snapshot provavelmente os identificará como dados alterados que devem ser incluídos em um snapshot incremental.
  • Reduza o número de instantâneos que você precisa criar mantendo dados semelhantes juntos em um disco. Mantenha o sistema operacional e os dados voláteis separados dos dados que você deseja capturar, mas não precisa distribuir seus dados críticos em vários discos como faria para uma máquina física. Um disco grande é capaz de atingir o mesmo desempenho que vários discos menores do mesmo tamanho total.

Habilite a opção discard ou execute fstrim em seu disco

Nas instâncias Linux, se você não formatou e montou seus discos (disco permanente ou hiperdisco) com a opção de descarte, execute o comando fstrim na instância antes de criar um snapshot. O comando remove blocos que o sistema de arquivos não necessita mais, para que o sistema possa criar o snapshot mais rapidamente e com tamanho menor. Para saber como configurar a opção de descarte em seus discos, consulte Formatar e montar um disco que não seja de inicialização em uma VM Linux .

Crie uma imagem de um instantâneo usado com frequência

Se você estiver usando repetidamente um snapshot na mesma zona para criar um disco (disco permanente ou hiperdisco), economize nos custos de rede usando o snapshot uma vez e criando uma imagem desse snapshot. Armazene esta imagem e use-a para criar seu disco e iniciar uma instância de VM. Para obter instruções, consulte Criando uma imagem personalizada .

Como prática recomendada, tire um instantâneo do disco uma vez por hora. Evite tirar instantâneos com mais frequência do que isso. A maneira mais fácil de conseguir isso é configurar uma programação de snapshots .

Outras práticas recomendadas

  • Use sistemas de arquivos com registro em diário, como ext4 para reduzir o risco de os dados serem armazenados em cache sem realmente serem gravados no disco permanente.
  • Crie um instantâneo de seus dados regularmente para minimizar a perda de dados devido a falhas inesperadas.

O que vem a seguir