Instantâneos de BLOB

Um instantâneo é uma versão somente leitura de um blob capturada em um momento no tempo.

Observação

O controle de versão de blob oferece uma maneira superior de manter versões anteriores de um blob. Para obter mais informações, consulte controle de blob.

Sobre instantâneos de BLOB

Importante

Os instantâneos em contas que têm o recurso de namespace hierárquico habilitado estão atualmente em VERSÃO PRÉVIA. Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Para se inscrever na versão prévia, confira este formulário.

O instantâneo de um blob é idêntico ao respectivo blob de base, exceto pelo fato de que o URI do blob tem um valor DateTime para indicar a hora em que o instantâneo foi criado. Por exemplo, se um URI de blob de páginas for http://storagesample.core.blob.windows.net/mydrives/myvhd, o URI do instantâneo será semelhante a http://storagesample.core.blob.windows.net/mydrives/myvhd?snapshot=2011-03-09T01:42:34.9360000Z.

Observação

Todos os instantâneos compartilham o URI do blob de base. A única diferença entre o blob de base e o instantâneo é o acréscimo do valor DateTime .

Um blob pode ter qualquer número de instantâneos. Os instantâneos persistem até serem explicitamente excluídos, independentemente ou como parte de uma operação de exclusão de blob para o blob de base. Você pode enumerar os instantâneos associados ao blob de base para acompanhar seus instantâneos atuais.

Quando você cria um instantâneo de um blob, as propriedades do sistema são copiadas para o instantâneo com os mesmos valores. Os metadados do blob de base também são copiados no instantâneo, a menos que você especifique metadados separados para o instantâneo ao criá-lo. Depois de criar um instantâneo, você pode lê-lo, copiá-lo ou excluí-lo, mas não é possível modificá-lo.

Quaisquer concessões associadas ao blob básico não afetam o instantâneo. Não é possível adquirir uma concessão em um instantâneo.

Um arquivo VHD é usado para armazenar as informações atuais e o status de um disco da VM. Você pode desanexar um disco de dentro da VM ou desligar a VM e, em seguida, tirar um instantâneo de seu arquivo VHD. É possível usar esse arquivo de instantâneo posteriormente para recuperar o arquivo VHD nesse ponto no tempo e recriar a VM.

Entender como instantâneos acumulam cobranças

Considerações importantes sobre cobrança

A lista a seguir inclui os principais pontos a considerar ao criar um instantâneo.

  • Sua conta de armazenamento é cobrada por páginas ou blocos exclusivos, estejam eles no blob ou no instantâneo. Sua conta não incorre em cobranças adicionais para instantâneos associados a um blob até que você atualize o blob no qual eles se baseiam. Depois de atualizar o blob de base, ele divergirá dos respectivos instantâneos. Quando isso acontece, você é cobrado por páginas ou blocos exclusivos em cada blob ou instantâneo.
  • Quando você substituir um bloco em um blob de blocos, esse bloco será cobrado subsequentemente como um único bloco. Isso é verdadeiro mesmo se o bloco tiver a mesma ID de bloco e os mesmos dados que tem no instantâneo. Depois que o bloco for confirmado novamente, ele divergirá de sua contraparte em qualquer instantâneo e você será cobrado por seus dados. O mesmo se aplica para uma página em um blob de páginas é atualizada com os dados idênticos.
  • Atualizar um blob de blocos pela chamada de um método que substitui todo o conteúdo do blob, substituirá todos os blocos no blob. Se você tiver um instantâneo associado a esse blob, todos os blocos no blob de base e o instantâneo agora divergirão e você será cobrado por todos os blocos em ambos os blobs. Isso é verdadeiro mesmo se os dados no blob de base e o instantâneo permanecerem idênticos.
  • O serviço Blob do Azure não tem um meio para determinar se dois blocos contêm dados idênticos. Cada bloco que é carregado e confirmado é tratado como exclusivo, mesmo se tiver os mesmos dados e a mesma ID de bloco. Já que as cobranças se acumulam para blocos exclusivos, é importante considerar que a atualização de um blob que tenha um instantâneo resulta em blocos exclusivos adicionais e cobranças adicionais.

Minimizar os custos com gerenciamento de instantâneos

É recomendável gerenciar seus instantâneos com cuidado para evitar cobranças extras. Você pode seguir estas práticas recomendadas para ajudar a minimizar os custos incorridos pelo armazenamento de seus instantâneos:

  • Exclua e recrie instantâneos associados a um blob sempre que você atualiza o blob, mesmo se você estiver atualizando com dados idênticos, a menos que o design do seu aplicativo requer que você mantenha os instantâneos. Ao excluir e recriar os instantâneos do blob, você pode garantir que o blob e os instantâneos não divirjam.
  • Se você estiver mantendo instantâneos para um blob, evite a chamada de métodos que substituem todo o blob ao atualizar o blob. Em vez disso, atualize o menor número possível de blocos para manter os custos baixos.

Cenários de cobrança de instantâneo

Os cenários a seguir demonstram como cobranças se acumulam para um blob de blocos e seus instantâneos.

Preços e cobrança

Criar um instantâneo, que é uma cópia somente leitura de um blob, pode resultar em cobranças de armazenamento de dados adicionais para sua conta. Ao projetar o aplicativo, é importante estar ciente de como essas cobranças podem aumentar para que você possa minimizar custos.

Instantâneos de BLOB, como versões de BLOB, são cobrados na mesma taxa que os dados ativos. A maneira como os instantâneo são cobrados depende da configuração explícita da camada para o blob de base ou para qualquer um de seus instantâneos (ou versões). Para saber mais sobre as camadas de blobs, confira Camadas de acesso frequente, esporádico e aos arquivos de dados de blob.

Se você não tiver alterado uma camada de blob ou de instantâneo, você será cobrado por blocos exclusivos de dados nesse blob, seus instantâneos e todas as versões que ele possa ter. Para obter mais informações, confira cobrança quando a camada de blob não foi definida explicitamente.

Se você alterou uma camada de blob ou instantâneo, será cobrado pelo objeto inteiro, independentemente de o blob e o instantâneo estarem eventualmente na mesma camada novamente. Para obter mais informações, consulte cobrança quando a camada de blob foi definida explicitamente.

Para obter mais informações sobre detalhes de cobrança para versões de blob, consultecontrole de versões de blob.

Cobrança quando a camada de blob não foi definida explicitamente

Se você não tiver definido explicitamente a camada de blob para um blob de base nem qualquer um de seus instantâneos, será cobrado por blocos ou páginas exclusivos no blob, seus instantâneos e quaisquer versões que ele possa ter. Os dados compartilhados em um blob e seus instantâneos são cobrados apenas uma vez. Quando um blob é atualizado, os dados em um blob de base divergem dos dados armazenados em seus instantâneos e os dados exclusivos são cobrados por bloco ou página.

Quando você substituir um bloco em um blob de blocos, esse bloco será cobrado subsequentemente como um único bloco. Isso é verdadeiro mesmo se o bloco tiver a mesma ID de bloco e os mesmos dados que tem no instantâneo. Depois que o bloco for confirmado novamente, ele divergirá de sua contraparte no instantâneo e você será cobrado por seus dados. O mesmo se aplica para uma página em um blob de páginas é atualizada com os dados idênticos.

O Armazenamento de Blobs não tem um meio para determinar se dois blocos contêm dados idênticos. Cada bloco que é carregado e confirmado é tratado como exclusivo, mesmo se tiver os mesmos dados e a mesma ID de bloco. Como as cobranças se acumulam para blocos exclusivos, é importante ter em mente que a atualização de um blob quando esse blob tem instantâneos ou versões, resultará em blocos exclusivos adicionais e cobranças adicionais.

Quando um blob tem instantâneos, chame operações de atualização em blob de blocos para que eles atualizem o menor número mínimo possível de blocos. As operações de gravação que permitem controle refinado sobre os blocos são Put Block e Put Block List. A operação Put Blob, por outro lado, substitui todo o conteúdo de um blob e, portanto, pode resultar em encargos adicionais.

Os cenários a seguir demonstram como os encargos se acumulam em um blob de blocos e seus instantâneos quando a camada de blob não é definida explicitamente.

Cenário 1

No cenário 1, o blob de base não foi atualizado depois que o instantâneo foi tirado, portanto, as cobranças incorrem apenas para os blocos exclusivos 1, 2 e 3.

Diagrama 1 mostrando a cobrança de blocos exclusivos no blob de base e instantâneo.

Cenário 2

No cenário 2, o blob de base foi atualizado, mas o instantâneo, não. O bloco 3 foi atualizado e mesmo que ele contenha os mesmos dados e a mesma ID, não é igual ao bloco 3 no instantâneo. Como resultado, a conta é cobrada por quatro blocos.

Diagrama 2 mostrando a cobrança de blocos exclusivos no blob de base e instantâneo.

Cenário 3

No cenário 3, o blob de base foi atualizado, mas o instantâneo, não. O bloco 3 foi substituído pelo bloco 4 no blob de base, mas o instantâneo ainda reflete o bloco 3. Como resultado, a conta é cobrada por quatro blocos.

Diagrama 3 mostrando a cobrança de blocos exclusivos no blob de base e instantâneo.

Cenário 4

No cenário 4, o blob de base foi totalmente atualizado e não contém nenhum dos seus blocos originais. Como resultado, a conta é cobrada por todos os oito blocos exclusivos.

Diagrama 4 mostrando a cobrança de blocos exclusivos no blob de base e instantâneo.

Dica

Evite a chamada de métodos que substituem todo o blob e, em vez disso, atualize blocos individuais para manter os custos baixos.

Cobrança quando a camada de blob foi definida explicitamente

Se você definiu explicitamente a camada de blob de para um blob ou instantâneo (ou versão), você será cobrado pelo comprimento total do conteúdo do objeto na nova camada, independentemente de o objeto compartilhar blocos com um objeto na camada original. Você também é cobrado pelo comprimento total do conteúdo da versão mais antiga na camada original. Todas as versões ou instantâneos que permanecem na camada original são cobrados por blocos exclusivos que eles podem compartilhar, conforme descrito em cobrança quando a camada de blob não foi definida explicitamente.

Como mover um blob para uma nova camada

A tabela a seguir descreve o comportamento de cobrança de um blob ou instantâneo quando ele é movido para uma nova camada.

Quando a camada de blob estiver definida explicitamente em… Em seguida, você será cobrado por...
Um blob de base com um instantâneo O blob de base na nova camada e o instantâneo mais antigo na camada original, além de todos os blocos exclusivos em outros instantâneos.1
Um blob de base com uma versão anterior e um instantâneo O blob de base na nova camada, a versão mais antiga na camada original e o instantâneo mais antigo na camada original, além de todos os blocos exclusivos em outras versões ou instantâneos1.
Um instantâneo O instantâneo na nova camada e o blob de base na camada original, além de todos os blocos exclusivos em outros instantâneos.1

1Se houver outras versões ou instantâneos anteriores que não foram movidos da camada original, essas versões ou instantâneos serão cobrados com base no número de blocos exclusivos que eles contêm, conforme descrito em cobrança quando a camada de BLOB não tiver sido definida explicitamente.

O diagrama a seguir ilustra como os objetos são cobrados quando um blob com instantâneos é movido para uma camada diferente.

Diagrama mostrando como os objetos são cobrados quando um blob com instantâneos é explicitamente colocado em camadas.

A configuração explícita da camada de um blob, versão ou instantâneo não pode ser desfeita. Se você mover um blob para uma nova camada e retorná-lo para a camada original, será cobrado pelo comprimento total do conteúdo do objeto, mesmo que ele tenha compartilhado blocos com outros objetos na camada original.

As operações que definem explicitamente a camada de um blob, versão ou instantâneo incluem:

Como excluir um blob quando a exclusão temporária está habilitada

Quando a exclusão temporária de blob estiver habilitada, se você excluir ou substituir um blob de base que teve sua camada definida explicitamente, todas as versões anteriores ou instantâneos do blob excluído de modo temporário serão cobradas pelo comprimento total do conteúdo. Para obter mais informações sobre como o controle de versão de blobs e a exclusão temporária funcionam juntos, confira controle de versão de e exclusão temporária de blob.

A tabela a seguir descreve o comportamento de cobrança de um blob excluído de maneira temporária se o controle de versão estiver habilitado ou desabilitado. Quando o controle de versão estiver habilitado, uma nova versão será criada quando um blob for excluído de maneira temporária. Quando o controle de versão estiver desabilitado, a exclusão temporária de um blob criará um instantâneo de exclusão temporária.

Quando você substituir um blob de base pela camada definida explicitamente… Você será cobrado por...
Se a exclusão temporária de blob e o controle de versão estiverem habilitados Todas as versões existentes com comprimento total do conteúdo, independentemente da camada.
Se a exclusão temporária de blob estiver habilitada, mas o controle de versão estiver desabilitado Todos os instantâneos de exclusão temporária existentes com comprimento total do conteúdo, independentemente da camada.

Suporte a recursos

Esta tabela mostra como a sua conta dá suporte a esse recurso e o impacto no suporte quando você habilita determinadas funcionalidades.

Tipo de conta de armazenamento Armazenamento de Blobs (suporte padrão) Data Lake Storage Gen2 1 NFS 3.0 1
Uso geral v2 Standard Sim Sim 2 No
Blobs de blocos Premium Sim Sim 2 No

1 O Data Lake Storage Gen2 e o protocolo NFS (Network File System) 3.0 exigem uma conta de armazenamento com um namespace hierárquico habilitado.

2 Há suporte para o recurso no nível de versão prévia.

Próximas etapas