Partilhar via


Visão geral dos blobs de página do Azure

O Armazenamento do Azure oferece três tipos de armazenamento de blobs: Blobs de bloco, Blobs de acréscimo e blobs de página. Os blobs de bloco são compostos por blocos e são ideais para armazenar arquivos de texto ou binários e para carregar arquivos grandes de forma eficiente. Os blobs de acréscimo também são compostos por blocos, mas são otimizados para operações de acréscimo, tornando-os ideais para cenários de registro. Os blobs de página são compostos por páginas de 512 bytes de até 8 TB de tamanho total e são projetados para operações aleatórias frequentes de leitura/gravação. Os blobs de página são a base dos Discos IaaS do Azure. Este artigo se concentra em explicar os recursos e benefícios dos blobs de página.

Os blobs de página são uma coleção de páginas de 512 bytes, que fornecem a capacidade de ler/gravar intervalos arbitrários de bytes. Assim, os blobs de página são ideais para armazenar estruturas de dados esparsas e baseadas em índice, como sistema operacional e discos de dados para máquinas virtuais e bancos de dados. Por exemplo, o Banco de Dados SQL do Azure usa blobs de página como o armazenamento persistente subjacente para seus bancos de dados. Além disso, os blobs de página também são frequentemente usados para arquivos com atualizações baseadas em intervalo.

Os principais recursos dos blobs de página do Azure são sua interface REST, a durabilidade do armazenamento subjacente e os recursos de migração contínua para o Azure. Esses recursos são discutidos em mais detalhes na próxima seção. Além disso, os blobs de página do Azure são atualmente suportados em dois tipos de armazenamento: Armazenamento Premium e Armazenamento Padrão. O Armazenamento Premium foi projetado especificamente para cargas de trabalho que exigem alto desempenho consistente e baixa latência, tornando os blobs de página premium ideais para cenários de armazenamento de alto desempenho. As contas de armazenamento padrão são mais econômicas para executar cargas de trabalho que não diferenciam latência.

Restrições

Os blobs de página só podem usar a camada Hot access, eles não podem usar as camadas Cool ou Archive . Para obter mais informações sobre as camadas de acesso, consulte Camadas de acesso Hot, Cool e Archive para dados de blob.

Casos de utilização de amostra

Vamos discutir alguns casos de uso para blobs de página começando com Discos IaaS do Azure. Os blobs de página do Azure são a espinha dorsal da plataforma de discos virtuais para IaaS do Azure. O SO Azure e os discos de dados são implementados como discos virtuais onde os dados são persistentes de forma duradoura na plataforma de Armazenamento do Azure e, em seguida, entregues às máquinas virtuais para obter o máximo desempenho. Os Discos do Azure são persistentes no formato VHD do Hyper-V e armazenados como um blob de página no Armazenamento do Azure. Além de usar discos virtuais para VMs IaaS do Azure, os blobs de página também habilitam cenários PaaS e DBaaS, como o serviço Banco de Dados SQL do Azure, que atualmente usa blobs de página para armazenar dados SQL, permitindo operações aleatórias rápidas de leitura e gravação para o banco de dados. Outro exemplo seria se você tiver um serviço PaaS para acesso compartilhado a mídia para aplicativos colaborativos de edição de vídeo, os blobs de página permitem o acesso rápido a locais aleatórios na mídia. Ele também permite a edição rápida e eficiente e fusão da mesma mídia por vários usuários.

Serviços originais da Microsoft, como o Azure Site Recovery, o Backup do Azure, bem como muitos desenvolvedores terceirizados, implementaram inovações líderes do setor usando a interface REST do blob de página. A seguir estão alguns dos cenários exclusivos implementados no Azure:

  • Gerenciamento de snapshots incrementais direcionado a aplicativos: os aplicativos podem aproveitar instantâneos de blob de página e APIs REST para salvar os pontos de verificação do aplicativo sem incorrer em duplicação dispendiosa de dados. O Armazenamento do Azure dá suporte a instantâneos locais para blobs de página, que não exigem a cópia de todo o blob. Essas APIs de snapshot público também permitem acessar e copiar deltas entre snapshots.
  • Migração ao vivo de aplicativos e dados do local para a nuvem: copie os dados locais e use APIs REST para gravar diretamente em um blob de página do Azure enquanto a VM local continua a ser executada. Depois que o destino for alcançado, você poderá fazer failover rapidamente para a VM do Azure usando esses dados. Dessa forma, você pode migrar suas VMs e discos virtuais do local para a nuvem com o mínimo de tempo de inatividade, já que a migração de dados ocorre em segundo plano enquanto você continua a usar a VM e o tempo de inatividade necessário para failover será curto (em minutos).
  • Acesso compartilhado baseado em SAS, que permite cenários como vários leitores e gravador único com suporte para controle de simultaneidade.

Os discos não gerenciados estão sendo desativados, para obter detalhes, consulte Migrar seus discos não gerenciados do Azure até 30 de setembro de 2025.

Preços

Ambos os tipos de armazenamento oferecidos com blobs de página têm seu próprio modelo de preços. Os blobs de página premium seguem o modelo de preços de discos gerenciados, enquanto os blobs de página padrão são cobrados pelo tamanho usado e com cada transação. Para obter mais informações, consulte a página de preços de Blobs de Página do Azure.

Funcionalidades de blob de página

API REST

Consulte o documento a seguir para começar a desenvolver usando blobs de página. Como exemplo, veja como acessar blobs de página usando a Biblioteca de Cliente de Armazenamento para .NET.

O diagrama a seguir descreve as relações gerais entre conta, contêineres e blobs de página.

Captura de tela mostrando relações entre conta, contêineres e blobs de página

Criando um blob de página vazia de um tamanho especificado

Primeiro, obtenha uma referência a um contêiner. Para criar um blob de página, chame o método GetPageBlobClient e, em seguida, chame o método PageBlobClient.Create . Passe o tamanho máximo para o blob criar. Esse tamanho deve ser um múltiplo de 512 bytes.

long OneGigabyteAsBytes = 1024 * 1024 * 1024;

BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

var blobContainerClient =
    blobServiceClient.GetBlobContainerClient(Constants.containerName);

var pageBlobClient = blobContainerClient.GetPageBlobClient("0s4.vhd");

pageBlobClient.Create(16 * OneGigabyteAsBytes);

Redimensionamento de um blob de página

Para redimensionar um blob de página após a criação, use o método Resize . O tamanho solicitado deve ser um múltiplo de 512 bytes.

pageBlobClient.Resize(32 * OneGigabyteAsBytes);

Escrever páginas para um blob de página

Para escrever páginas, use o método PageBlobClient.UploadPages .

pageBlobClient.UploadPages(dataStream, startingOffset);

Isso permite que você escreva um conjunto sequencial de páginas de até 4MBs. O deslocamento que está sendo gravado deve começar em um limite de 512 bytes (startingOffset % 512 == 0) e terminar em um limite de 512 - 1.

Assim que uma solicitação de gravação para um conjunto sequencial de páginas é bem-sucedida no serviço de blob e é replicada para durabilidade e resiliência, a gravação é confirmada e o sucesso é devolvido ao cliente.

O diagrama abaixo mostra 2 operações de gravação separadas:

Um diagrama mostrando as duas opções de gravação separadas.

  1. Uma operação de gravação a partir do deslocamento 0 do comprimento de 1024 bytes
  2. Uma operação de gravação a partir do deslocamento 4096 do comprimento 1024

Lendo páginas de um blob de página

Para ler páginas, use o método PageBlobClient.Download para ler um intervalo de bytes do blob de página.

var pageBlob = pageBlobClient.Download(new HttpRange(bufferOffset, rangeSize));

Isso permite que você baixe o blob completo ou o intervalo de bytes a partir de qualquer deslocamento no blob. Durante a leitura, o deslocamento não precisa começar em um múltiplo de 512. Ao ler bytes de uma página NUL, o serviço retorna zero bytes.

A figura a seguir mostra uma operação de leitura com um deslocamento de 256 e um tamanho de intervalo de 4352. Os dados retornados são realçados em laranja. Os zeros são retornados para páginas NUL.

Um diagrama mostrando uma operação de leitura com um deslocamento de 256 e um tamanho de intervalo de 4352

Se você tiver um blob escassamente preenchido, convém apenas baixar as regiões de página válidas para evitar pagar pela saída de zero bytes e reduzir a latência de download.

Para determinar quais páginas são apoiadas por dados, use PageBlobClient.GetPageRanges. Em seguida, você pode enumerar os intervalos retornados e baixar os dados em cada intervalo.

IEnumerable<HttpRange> pageRanges = pageBlobClient.GetPageRanges().Value.PageRanges;

foreach (var range in pageRanges)
{
    var pageBlob = pageBlobClient.Download(range);
}

Alugar um blob de página

A operação Lease Blob estabelece e gerencia um bloqueio em um blob para operações de gravação e exclusão. Essa operação é útil em cenários em que um blob de página está sendo acessado de vários clientes para garantir que apenas um cliente possa gravar no blob de cada vez. O Azure Disks, por exemplo, aproveita esse mecanismo de locação para garantir que o disco seja gerenciado apenas por uma única VM. A duração do bloqueio pode ser de 15 a 60 segundos, ou pode ser infinita. Consulte a documentação aqui para obter mais detalhes.

Além das APIs REST avançadas, os blobs de página também fornecem acesso compartilhado, durabilidade e segurança aprimorada. Abordaremos esses benefícios com mais detalhes nos próximos parágrafos.

Acesso simultâneo

A API REST de blobs de página e seu mecanismo de leasing permite que os aplicativos acessem o blob de página de vários clientes. Por exemplo, digamos que você precise criar um serviço de nuvem distribuído que compartilhe objetos de armazenamento com vários usuários. Pode ser uma aplicação web que serve uma grande coleção de imagens para vários usuários. Uma opção para implementar isso é usar uma VM com discos anexados. As desvantagens disso incluem: (i) a restrição de que um disco só pode ser conectado a uma única VM, limitando assim a escalabilidade, a flexibilidade e os riscos crescentes. Se houver um problema com a VM ou o serviço em execução na VM, devido à concessão, a imagem ficará inacessível até que a concessão expire ou seja interrompida; e (ii) custo adicional de ter uma VM IaaS.

Uma opção alternativa é usar os blobs de página diretamente por meio das APIs REST do Armazenamento do Azure. Essa opção elimina a necessidade de VMs IaaS dispendiosas, oferece total flexibilidade de acesso direto de vários clientes, simplifica o modelo de implantação clássico eliminando a necessidade de anexar/desanexar discos e elimina o risco de problemas na VM. Além disso, fornece o mesmo nível de desempenho para operações aleatórias de leitura/gravação que um disco

Durabilidade e alta disponibilidade

Tanto o armazenamento padrão quanto o premium são duráveis onde os dados de blob de página são sempre replicados para garantir durabilidade e alta disponibilidade. O Azure tem consistentemente fornecido durabilidade de nível empresarial para discos IaaS e blobs de página, com uma Taxa de Falha Anualizada de zero por cento líder do setor.

Para obter mais informações sobre a redundância do Armazenamento do Azure para contas de armazenamento padrão e premium, consulte Redundância do Armazenamento do Azure e estas duas seções especificamente:

Migração perfeita para o Azure

Para os clientes e desenvolvedores interessados em implementar sua própria solução de backup personalizada, o Azure também oferece instantâneos incrementais que contêm apenas os deltas. Esse recurso evita o custo da cópia completa inicial, o que reduz consideravelmente o custo de backup. Juntamente com a capacidade de ler e copiar dados diferenciais de forma eficiente, esse é outro recurso poderoso que permite ainda mais inovações dos desenvolvedores, levando a uma melhor experiência de backup e recuperação de desastres (DR) no Azure. Você pode configurar sua própria solução de backup ou DR para suas VMs no Azure usando o Instantâneo de Blob junto com a API Obter Intervalos de Página e a API de Blob de Cópia Incremental, que você pode usar para copiar facilmente os dados incrementais para DR.

Além disso, muitas empresas já têm cargas de trabalho críticas em execução em datacenters locais. Para migrar a carga de trabalho para a nuvem, uma das principais preocupações seria a quantidade de tempo de inatividade necessária para copiar os dados e o risco de problemas imprevistos após a transição. Em muitos casos, o tempo de inatividade pode ser um obstáculo para a migração para a nuvem. Usando a API REST de blobs de página, o Azure resolve esse problema habilitando a migração para a nuvem com o mínimo de interrupção para cargas de trabalho críticas.

Para obter exemplos sobre como tirar um instantâneo e como restaurar um blob de página a partir de um instantâneo, consulte o artigo Configurar um processo de backup usando instantâneos incrementais.