Compreender blobs de blocos, blobs de acréscimo e blobs de páginas

O serviço de armazenamento oferece três tipos de blobs, blobs de blocos, blobs de acréscimo e blobs de páginas. Especifica o tipo de blob quando cria o blob. Uma vez criado o blob, o tipo não pode ser alterado e só pode ser atualizado utilizando operações adequadas para esse tipo de blob, ou seja, ao escrever um bloco ou lista de blocos num blob de blocos, anexando blocos a um blob de acréscimo e escrevendo páginas num blob de páginas.

Todos os blobs refletem as alterações consolidadas imediatamente. Cada versão do blob tem uma etiqueta exclusiva, denominada ETag, que pode utilizar com condições de acesso para garantir que apenas altera uma instância específica do blob.

Qualquer blob pode ser arrendado para acesso exclusivo de escrita. Quando um blob é arrendado, apenas as chamadas que incluem o ID de concessão atual podem modificar o blob ou (para blobs de blocos) os respetivos blocos.

Qualquer blob pode ser duplicado num instantâneo. Para obter informações sobre instantâneos, veja Criar um Instantâneo de um Blob.

Nota

Os blobs no emulador de armazenamento do Azure estão limitados a um tamanho máximo de 2 GiB.

Acerca dos blobs de blocos

Os blobs de blocos são otimizados para carregar grandes quantidades de dados de forma eficiente. Os blobs de blocos são compostos por blocos, cada um dos quais é identificado por um ID de bloco. Um blob de blocos pode incluir até 50 000 blocos. Cada bloco num blob de blocos pode ter um tamanho diferente, até ao tamanho máximo permitido para a versão do serviço em utilização. Para criar ou modificar um blob de blocos, escreva um conjunto de blocos através da operação Colocar Bloco e, em seguida, consolide os blocos num blob com a operação Colocar Lista de Blocos .

Os blobs com um tamanho inferior a um determinado tamanho (determinado pela versão do serviço) podem ser carregados na totalidade com uma única operação de escrita através de Put Blob.

A tabela seguinte descreve os tamanhos máximos de blocos e blobs permitidos pela versão do serviço.

Versão do serviço Tamanho máximo do bloco (via Put Block) Tamanho máximo do blob (através de Colocar Lista de Blocos) Tamanho máximo do blob através de uma operação de escrita única (através de Put Blob)
Versão 2019-12-12 e posterior 4000 MiB Aproximadamente 190,7 TiB (4000 MiB X 50 000 blocos) 5000 MiB
Versão 2016-05-31 até à versão 2019-07-07 100 MiB Aproximadamente 4,75 TiB (100 MiB X 50 000 blocos) 256 MiB
Versões anteriores a 2016-05-31 4 MiB Aproximadamente 195 GiB (4 MiB X 50.000 blocos) 64 MiB

Os clientes de armazenamento têm a predefinição para um carregamento de blobs único máximo de 128 MiB, settable na biblioteca de cliente do Armazenamento do Azure para a versão 11 do .NET através da propriedade SingleBlobUploadThresholdInBytes do objeto BlobRequestOptions . Quando um carregamento de blobs de blocos é maior do que o valor nesta propriedade, os clientes de armazenamento dividem o ficheiro em blocos. Pode definir o número de threads utilizados para carregar os blocos em paralelo numa base por pedido com a propriedade ParallelOperationThreadCount do objeto BlobRequestOptions .

Quando carrega um bloco para um blob na sua conta de armazenamento, este está associado ao blob de blocos especificado, mas não faz parte do blob até consolidar uma lista de blocos que inclua o ID do novo bloco. Os novos blocos permanecem num estado não comprometido até serem especificamente consolidados ou eliminados. Pode haver um máximo de 100 000 blocos não comprometidos. Escrever um bloco não atualiza a última hora modificada de um blob existente.

Os blobs de blocos incluem funcionalidades que o ajudam a gerir ficheiros grandes através de redes. Com um blob de blocos, pode carregar vários blocos em paralelo para diminuir o tempo de carregamento. Cada bloco pode incluir um hash MD5 para verificar a transferência, para que possa controlar o progresso do carregamento e reenviar blocos conforme necessário. Pode carregar blocos por qualquer ordem e determinar a respetiva sequência no passo de alocação da lista de blocos final. Também pode carregar um novo bloco para substituir um bloco não comprometido existente do mesmo ID de bloco. Tem uma semana para consolidar blocos num blob antes de serem eliminados. Todos os blocos não comprometidos também são eliminados quando ocorre uma operação de alocação de lista de blocos, mas não os inclui.

Pode modificar um blob de blocos existente ao inserir, substituir ou eliminar blocos existentes. Depois de carregar o bloco ou blocos que foram alterados, pode consolidar uma nova versão do blob ao consolidar os novos blocos com os blocos existentes que pretende continuar a utilizar uma única operação de consolidação. Para inserir o mesmo intervalo de bytes em duas localizações diferentes do blob consolidado, pode consolidar o mesmo bloco em dois locais na mesma operação de consolidação. Para qualquer operação de consolidação, se não for encontrado nenhum bloco, toda a operação de alocação falha com um erro e o blob não é modificado. Qualquer alocação de bloco substitui as propriedades e metadados existentes do blob e elimina todos os blocos não comprometidos.

Os IDs de bloco são cadeias de comprimento igual num blob. Normalmente, o código de cliente de bloco utiliza codificação base 64 para normalizar cadeias em comprimentos iguais. Ao utilizar a codificação base 64, a cadeia pré-codificada tem de ter 64 bytes ou menos. Os valores de ID de Bloco podem ser duplicados em blobs diferentes.

Se escrever um bloco para um blob que não existe, é criado um novo blob de blocos com um comprimento de zero bytes. Este blob será apresentado em listas de blobs que incluem blobs não comprometidos. Se não consolidar nenhum bloco neste blob, este e os respetivos blocos não comprometidos serão eliminados uma semana após o último carregamento de blocos com êxito. Todos os blocos não comprometidos também são eliminados quando é criado um novo blob com o mesmo nome através de um único passo (em vez do processo de carregamento e consolidação de blocos de dois passos).

Acerca dos blobs de páginas

Os blobs de páginas são uma coleção de páginas de 512 bytes otimizadas para operações aleatórias de leitura e escrita. Para criar um blob de páginas, inicialize o blob de página e especifique o tamanho máximo que o blob de página irá aumentar. Para adicionar ou atualizar o conteúdo de um blob de página, escreva uma página ou páginas ao especificar um desvio e um intervalo que se alinham com limites de página de 512 bytes. Uma escrita num blob de páginas pode substituir apenas uma página, algumas páginas ou até 4 MiB do blob de páginas. As escritas em blobs de páginas ocorrem no local e são imediatamente consolidadas no blob. O tamanho máximo de um blob de página é 8 TiB.

Os discos da máquina virtual do Azure são suportados por blobs de páginas. O Azure oferece dois tipos de armazenamento em disco durável: premium e standard. O armazenamento Premium para blobs de páginas foi concebido para cargas de trabalho de máquinas virtuais do Azure que requerem um elevado desempenho consistente e baixa latência. Para obter informações detalhadas, veja a secção Unidades de estado sólido Premium (SSD) do artigo Selecionar um tipo de disco para VMs IaaS. Para obter informações sobre os destinos de escalabilidade do armazenamento premium para blobs de páginas, veja Metas de Escalabilidade e Desempenho do Armazenamento do Azure.

Acerca dos blobs de acréscimo

Um blob de acréscimo é composto por blocos e está otimizado para operações de acréscimo. Quando modifica um blob de acréscimo, os blocos são adicionados apenas ao fim do blob, através da operação Bloco de Acréscimo . A atualização ou eliminação de blocos existentes não é suportada. Ao contrário de um blob de blocos, um blob de acréscimo não expõe os respetivos IDs de bloco.

Cada bloco num blob de acréscimo pode ter um tamanho diferente, até um máximo de 4 MiB e um blob de acréscimo pode incluir até 50 000 blocos. Por conseguinte, o tamanho máximo de um blob de acréscimo é ligeiramente superior a 195 GiB (4 blocos miB X 50 000).

Consulte também