Instantâneos de Blob

Um instantâneo é uma versão somente leitura de um blob que é tirado em um determinado momento.

Nota

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 versão 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 visualização. Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Para se inscrever na visualização, consulte este formulário.

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

Nota

Todos os snapshots compartilham o URI do blob base. A única distinção entre o blob base e o snapshot é o valor DateTime anexado.

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 Excluir Blob para o blob base. Você pode enumerar os instantâneos associados ao blob base para controlar seus instantâneos atuais.

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

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

Você pode criar um instantâneo de um blob na camada quente ou fria. Não há suporte para instantâneos em blobs na camada de arquivamento.

Um arquivo VHD é usado para armazenar as informações atuais e o status de um disco 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. Você pode usar esse arquivo de instantâneo posteriormente para recuperar o arquivo VHD nesse momento e recriar a VM.

Preços e faturação

Criar um snapshot, que é uma cópia somente leitura de um blob, pode resultar em cobranças extras de armazenamento de dados para sua conta. Ao projetar seu aplicativo, é importante estar ciente de como esses encargos podem se acumular para que você possa minimizar os custos.

Os instantâneos de Blob, como as versões de blob, são cobrados na mesma taxa que os dados ativos. A forma como os snapshots são cobrados depende se você definiu explicitamente a camada para o blob base ou para qualquer um de seus snapshots (ou versões). Para obter mais informações sobre camadas de blob, consulte Camadas de acesso para dados de blob.

Se você não alterou a camada de blob ou snapshot, será cobrado por blocos exclusivos de dados nesse blob, seus snapshots e quaisquer versões que ele possa ter. Para obter mais informações, consulte Faturamento quando a camada de blob não foi definida explicitamente.

Se você tiver alterado a camada de um blob ou snapshot, será cobrado pelo objeto inteiro, independentemente de o blob e o snapshot estarem eventualmente na mesma camada novamente. Para obter mais informações, consulte Faturamento quando a camada de blob foi definida explicitamente.

Para obter mais informações sobre detalhes de cobrança para versões de blob, consulte Controle de versão de Blob.

Minimize os custos com o gerenciamento de snapshots

A Microsoft recomenda gerenciar seus instantâneos cuidadosamente para evitar cobranças extras. Você pode seguir estas práticas recomendadas para ajudar a minimizar os custos incorridos pelo armazenamento de seus snapshots:

  • Exclua e recrie instantâneos associados a um blob sempre que atualizar o blob, mesmo que esteja atualizando com dados idênticos, a menos que o design do aplicativo exija que você mantenha 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 chamar métodos que substituam o blob inteiro quando você atualizar o blob. Em vez disso, atualize o menor número possível de blocos para manter os custos baixos.

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 base ou qualquer um de seus snapshots, será cobrado por blocos ou páginas exclusivos no blob, seus snapshots e quaisquer versões que ele possa ter. Os dados que são compartilhados em um blob e seus instantâneos são cobrados apenas uma vez. Quando um blob é atualizado, os dados em um blob base divergem dos dados armazenados em seus instantâneos e os dados exclusivos são cobrados por bloco ou página.

Quando você substitui um bloco dentro de um blob de bloco, esse bloco é cobrado posteriormente como um bloco exclusivo. Isso é verdadeiro mesmo que o bloco tenha o mesmo ID de bloco e os mesmos dados que tem no instantâneo. Depois que o bloco é confirmado novamente, ele diverge de sua contraparte no instantâneo e você será cobrado por seus dados. O mesmo vale para uma página em um blob de página que é atualizado com dados idênticos.

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

Quando um blob tiver instantâneos, chame operações de atualização em blobs de bloco para que eles atualizem o menor número possível de blocos. As operações de gravação que permitem um controle refinado sobre 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 levar a cobranças extras.

Os cenários a seguir demonstram como as cobranças se acumulam para um blob de bloco e seus instantâneos quando a camada de blob não foi definida explicitamente.

Cenário 1

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

Diagrama 1 mostrando o faturamento de blocos exclusivos no blob base e instantâneo.

Cenário 2

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

Diagrama 2 mostrando o faturamento de blocos exclusivos no blob base e instantâneo.

Cenário 3

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

Diagrama 3 mostrando o faturamento de blocos exclusivos no blob base e instantâneo.

Cenário 4

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

Diagrama 4 mostrando o faturamento de blocos exclusivos em blob base e snapshot.

Gorjeta

Evite chamar métodos que substituam todo o blob e, em vez disso, atualize blocos individuais para manter os custos baixos.

Faturamento quando a camada de blob foi definida explicitamente

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

Movendo 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 é definida explicitamente em... Então você é 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 quaisquer blocos exclusivos em outros instantâneos.1
Um blob de base com uma versão anterior e um instantâneo O blob base na nova camada, a versão mais antiga na camada original e o instantâneo mais antigo na camada original, além de quaisquer blocos exclusivos em outras versões ou instantâneos1.
Um instantâneo O snapshot na nova camada e o blob base na camada original, além de quaisquer blocos exclusivos em outros snapshots.1

1 Se houver outras versões anteriores ou snapshots que não tenham sido movidos da camada original, essas versões ou snapshots serão cobrados com base no número de blocos exclusivos que contêm, conforme descrito em Faturamento 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 hierarquizado.

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

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

Excluindo um blob quando a exclusão suave está habilitada

Quando a exclusão suave de blob está habilitada, se você excluir ou substituir um blob base que teve sua camada explicitamente definida, todas as versões anteriores ou instantâneos do blob excluído suavemente serão cobrados em todo o comprimento do conteúdo. Para obter mais informações sobre como o controle de versão de blob e a exclusão suave funcionam juntos, consulte Controle de versão de blob e exclusão suave.

A tabela a seguir descreve o comportamento de cobrança de um blob excluído suavemente, dependendo se o controle de versão está habilitado ou desabilitado. Quando o controle de versão está habilitado, uma nova versão é criada quando um blob é excluído suavemente. Quando o controle de versão está desativado, a exclusão suave de um blob cria um instantâneo de exclusão suave.

Quando você substitui um blob base com sua camada explicitamente definida... Então você é cobrado por...
Se o blob, a exclusão suave e o controle de versão estiverem habilitados Todas as versões existentes em tamanho total de conteúdo, independentemente da camada.
Se o blob soft delete estiver habilitado, mas o controle de versão estiver desabilitado Todos os snapshots de exclusão suave existentes em todo o comprimento do conteúdo, independentemente da camada.

Suporte de funcionalidades

O suporte para esse recurso pode ser afetado pela habilitação do Data Lake Storage Gen2, do protocolo NFS (Network File System) 3.0 ou do SSH File Transfer Protocol (SFTP). Se você habilitou qualquer um desses recursos, consulte Suporte ao recurso de Armazenamento de Blob nas contas de Armazenamento do Azure para avaliar o suporte para esse recurso.

Próximos passos