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 excluídos explicitamente, independentemente ou como parte de uma operação de exclusão de bob 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.
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 armazenamento de arquivos.
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.
Preços e cobrança
Criar um instantâneo, que é uma cópia somente leitura de um blob, pode resultar em encargos extras de armazenamento de dados 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 obter mais informações sobre camadas de blob, confira Camadas de acesso para dados de blob.
Se você não tiver alterado uma camada de blob ou instantâneo, 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 tiver sido definida explicitamente.
Se você tiver alterado a camada de um blob ou instantâneo, será cobrado por todo o objeto, independentemente de o blob e o instantâneo estarem 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.
Minimizar os custos com gerenciamento de instantâneos
A Microsoft recomenda 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ê 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 todo o blob ao 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 definiu explicitamente a camada de blob para um blob de base ou qualquer um de seus instantâneos, você 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ê substitui um bloco dentro de um blob de blocos, esse bloco é carregado posteriormente como um bloco exclusivo. 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 seu equivalente 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 os encargos 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 exclusivos extras e encargos extras.
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 levar a encargos extras.
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 após a tomada do instantâneo, portanto, os encargos são incorridos apenas para os blocos exclusivos 1, 2 e 3.
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, embora contenha os mesmos dados e a mesma ID, ele não é o mesmo que o bloco 3 no instantâneo. Como resultado, a conta é cobrada por quatro blocos.
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.
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.
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 para um blob ou instantâneo (ou versão), será cobrado pelo comprimento de conteúdo completo do objeto na nova camada, independentemente de ele 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 possam compartilhar, conforme descrito em Cobrança quando a camada de blob não tiver sido 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… | Então você é cobrado... |
---|---|
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 tenham sido movidos de sua camada original, essas versões ou instantâneos serão cobrados com base no número de blocos exclusivos que 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.
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, em seguida, retorná-lo para a camada original, será cobrado pelo comprimento total do conteúdo do objeto, mesmo se ele compartilhar blocos com outros objetos na camada original.
As operações que definem explicitamente a camada de um blob, versão ou instantâneo incluem:
- Definir camada do blob
- Put Blob com a camada especificada
- Put Block List com a camada especificada
- Copy Blob com a camada especificada
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… | Então você é cobrado... |
---|---|
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
O suporte para esse recurso pode ser afetado ao habilitar o Data Lake Storage Gen2, o protocolo NFS (Sistema de Arquivos de Rede) 3.0 ou o protocolo SFTP (Protocolo de Transferência de Arquivo SSH). Se você tiver habilitado qualquer um desses recursos, consulte o Suporte a recursos de Armazenamento de Blobs nas contas de Armazenamento do Azure para avaliar o suporte para esse recurso.