Visão geral de blobs de páginas do Azure
O Armazenamento do Azure oferece três tipos de armazenamento de blobs: Blobs de Blocos, Blobs de Acréscimo e blobs de páginas. Blobs de blocos são compostos por blocos e são ideais para armazenar arquivos de texto ou binários e carregar arquivos grandes com eficiência. 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 log. Blobs de páginas são compostos por páginas de 512 bytes até um tamanho total de 8 TB e são projetados para operações de leitura/gravação aleatórias frequentes. Os blobs de páginas são a base dos Discos IaaS do Azure. Este artigo ressalta a explicação dos recursos e benefícios de blobs de páginas.
Blobs de páginas são uma coleção de páginas de 512 bytes, que fornecem a capacidade de ler/gravar intervalos arbitrários de bytes. Portanto, os blobs de páginas são ideais para armazenar estruturas de dados esparsos e baseados em índice como discos do sistema operacional e de dados para Máquinas Virtuais e Bancos de Dados. Por exemplo, o BD SQL do Azure usa blobs de páginas como o armazenamento persistente subjacente para seus bancos de dados. Além disso, os blobs de páginas também costumam ser usados para arquivos com atualizações Baseadas em Intervalo.
Os principais recursos dos blobs de páginas do Azure são sua interface REST, a durabilidade do armazenamento subjacente e as funcionalidades de migração direta para o Azure. Esses recursos são discutidos mais detalhadamente na próxima seção. Além disso, no momento, os blobs de páginas do Azure são compatíveis com dois tipos de armazenamento: Armazenamento Premium e Armazenamento Standard. O Armazenamento Premium foi criado especificamente para cargas de trabalho que exigem alto desempenho e baixa latência consistentes, tornando os blobs de páginas premium ideais para cenários de armazenamento de alto desempenho. As contas de armazenamento Standard são mais econômicas para executar cargas de trabalho que não levam em conta a latência.
Restrições
Os blobs de páginas só podem usar a camada de armazenamento frequente, eles não podem usar as camadas de armazenamento esporádicas nem as de arquivos. Para saber mais sobre as camadas de acesso, confira Camadas de acesso frequente, esporádico e de arquivos para dados de blobs.
Casos de uso de exemplo
Vamos discutir alguns casos de uso para blobs de página, começando com os discos de IaaS do Azure. Os blobs de páginas do azure são a base da plataforma de discos virtuais do IaaS do Azure. Os discos do sistema operacional e de discos do Azure são implementados como discos virtuais em que os dados são persistidos de forma duradoura na plataforma de Armazenamento do Azure e, em seguida, entregues para as máquinas virtuais para desempenho máximo. Os Discos do Azure são persistidos no formato VHD do Hyper-V e armazenados como um blob de páginas no Armazenamento do Azure. Além de usar discos virtuais para VMs IaaS do Azure, os blobs de páginas também possibilitam cenários de PaaS e DBaaS como o serviço BD SQL do Azure, que atualmente usa blobs de páginas para armazenar dados do SQL, permitindo operações de leitura/gravação aleatórias rápidas para o banco de dados. Outro exemplo é se você tem um serviço de PaaS para o acesso de mídia compartilhada em aplicativos de edição colaborativa de vídeos: os blobs de páginas permitem um acesso rápido aos locais aleatórios na mídia. Também permite edição e mesclagem rápidas e eficientes da mesma mídia por vários usuários.
Os serviços da Microsoft de primeira ordem, como o Azure Site Recovery, o Azure Backup, bem como muitos desenvolvedores de terceiros, implementaram inovações líderes do setor usando a interface REST do blob da página. Estes são alguns dos cenários exclusivos implementados no Azure:
- Gerenciamento de instantâneos incrementais direcionados ao aplicativo: os aplicativos podem aproveitar os instantâneos e as APIs REST do blob de páginas para salvar os pontos de verificação do aplicativo sem incorrer em custos elevados de duplicação de dados. O Armazenamento do Azure oferece suporte a instantâneos locais para blobs de páginas, que não exigem a cópia do blob inteiro. Essas APIs públicas de instantâneos também permitem o acesso e a cópia de deltas entre instantâneos.
- Migração dinâmica de aplicativos e dados do local para a nuvem: copie os dados no local e use as APIs REST para gravá-los diretamente em um blob de páginas do Azure, enquanto a VM local continua sendo executada. Depois que o destino for atualizado, faça failover rapidamente para a VM do Azure usando esses dados. Dessa forma, é possível migrar das VMs e dos discos virtuais do local para a nuvem com tempo de inatividade mínimo, pois a migração de dados ocorre em segundo plano enquanto você continua usando a VM e o tempo de inatividade necessário para fazer failover será diminuído (em minutos).
- Acesso compartilhado baseado em SAS, que permite cenários como vários leitores e um único gravador com suporte para o controle de simultaneidade.
Os discos não gerenciados estão sendo desativados. Para obter detalhes, confira 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áginas têm seu próprio modelo de preços. Os blobs de páginas Premium seguem o modelo de preços de discos gerenciados, enquanto os blobs de páginas padrão são cobrados no tamanho usado e em cada transação. Para obter mais informações, veja a página de preços dos Blobs de páginas.
Recursos do blob de páginas
API REST
Veja o documento a seguir para começar a desenvolver o uso de blobs de páginas. Por exemplo, observe como acessar os blobs de páginas usando a Biblioteca de Clientes de Armazenamento para .NET.
O diagrama a seguir descreve as relações gerais entre a conta, os contêineres e os blobs de páginas.
Criando um blob de páginas vazio de um tamanho específico
Primeiro, obtenha uma referência a um contêiner. Para criar um blob de páginas, chame o método GetPageBlobClien e, em seguida, chame o método PageBlobClient.Create. Passe o tamanho máximo para que o blob seja criado. 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);
Redimensionando um blob de páginas
Para redimensionar um blob de páginas após sua criação, use o método Redimensionar. O tamanho solicitado deve ser um múltiplo de 512 bytes.
pageBlobClient.Resize(32 * OneGigabyteAsBytes);
Gravando páginas em um blob de páginas
Para gravar páginas, use o método PageBlobClient.UploadPages.
pageBlobClient.UploadPages(dataStream, startingOffset);
Isso permite que você grave um conjunto sequencial de páginas de até 4 MB. 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 em um conjunto sequencial de páginas tiver êxito no serviço blob e for replicada para durabilidade e resiliência, a gravação será confirmada e o êxito será retornado para o cliente.
O diagrama abaixo mostra duas operações de gravação separadas:
- Uma operação de Gravação começando no deslocamento 0 com um tamanho de 1.024 bytes
- Uma operação de Gravação começando no deslocamento 4.096 com um tamanho de 1.024
Lendo páginas de um blob de páginas
Para ler páginas, use o método PageBlobClient.Download para ler um intervalo de bytes do blob de páginas.
var pageBlob = pageBlobClient.Download(new HttpRange(bufferOffset, rangeSize));
Isso permite que você baixe o blob ou o intervalo de bytes completo, começando em 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 NULL, 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. Zeros são retornados para páginas NULL.
Se você tiver um blob populado de modo disperso, baixe apenas 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 têm suporte de 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);
}
Arrendando um blob de páginas
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áginas está sendo acessado em vários clientes, para garantir que apenas um cliente possa gravar no blob por vez. Os Discos do Azure, por exemplo, aproveitam este mecanismo de concessã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áginas também fornecem acesso compartilhado, durabilidade e segurança aprimorada. Abordaremos esses benefícios mais detalhadamente nos próximos parágrafos.
Acesso simultâneo
A API REST dos blobs de páginas e seu mecanismo de concessão permitem que os aplicativos acessem o blob de páginas em vários clientes. Por exemplo, digamos que você precise criar um serviço de nuvem distribuída que compartilhe objetos de armazenamento com vários usuários. Ele pode ser um aplicativo Web que disponibiliza uma coleção grande de imagens para vários usuários. Uma opção para implementar isso é usar uma VM com discos anexados. As desvantagens dessa abordagem incluem: (i) a restrição de que um disco pode ser anexado apenas a uma única VM, limitando a escalabilidade e a flexibilidade, e aumentando os riscos. 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) o custo adicional de ter uma VM da IaaS.
Uma opção alternativa é usar os blobs de páginas diretamente por meio das APIs REST do Armazenamento do Azure. Esta opção elimina a necessidade de VMs da IaaS de alto custo, oferece flexibilidade total 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, ele fornece o mesmo nível de desempenho para operações de leitura/gravação aleatórias como um disco
Durabilidade e alta disponibilidade
Tanto o armazenamento padrão quanto o premium são duráveis, em que os dados do blob da página são sempre replicados para garantir durabilidade e alta disponibilidade. O Azure tem proporcionado consistentemente durabilidade de nível empresarial para discos e blobs de página de IaaS, 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 Microsoft Azure para contas de armazenamento padrão e premium, confira Redundância do Armazenamento do Azure e estas duas seções especificamente:
Migração direta para o Azure
Para os clientes e desenvolvedores interessados em implementar sua própria solução personalizada de backup, 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 com eficiência, essa é outra funcionalidade avançada que possibilita ainda mais inovações dos desenvolvedores, levando a uma melhor experiência de backup e DR (recuperação de desastre) no Azure. Configure sua própria solução de backup ou DR para suas VMs no Azure usando o Instantâneo de Blobs, juntamente com a API Obter Intervalos de Página e a API Cópia Incremental de Blob, que você pode usar para copiar dados incrementais com facilidade para DR.
Além disso, muitas empresas têm cargas de trabalho críticas já em execução em datacenters locais. Para migrar a carga de trabalho para a nuvem, uma das principais preocupações é o tempo de inatividade necessário para copiar os dados e o risco de problemas imprevistos após a mudança. Em muitos casos, o tempo de inatividade pode ser um impedimento para a migração para a nuvem. Usando a API REST dos blobs de páginas, o Azure resolve esse problema permitindo a migração na nuvem com o mínimo de interrupção para cargas de trabalho críticas.
Para obter exemplos de como criar um instantâneo e de como restaurar um blob de páginas com base em um instantâneo, veja o artigo Configurar um processo de backup usando instantâneos incrementais.