Visão geral dos BLOBs de páginas do AzureOverview of Azure page blobs

O armazenamento do Azure oferece três tipos de armazenamento de BLOBs: Blobs de blocos, blobs de acréscimo e blobs de páginas.Azure Storage offers three types of blob storage: Block Blobs, Append Blobs and page blobs. Blobs de blocos são compostos de blocos e são ideais para armazenar arquivos de texto ou binários e para carregar arquivos grandes com eficiência.Block blobs are composed of blocks and are ideal for storing text or binary files, and for uploading large files efficiently. Os blobs de acréscimo também são compostos de blocos, mas são otimizados para operações de acréscimo, tornando-os ideais para cenários de registro em log.Append blobs are also made up of blocks, but they are optimized for append operations, making them ideal for logging scenarios. Os blobs de páginas são compostos de páginas de 512 bytes de até 8 TB no tamanho total e são projetados para operações de leitura/gravação aleatórias frequentes.Page blobs are made up of 512-byte pages up to 8 TB in total size and are designed for frequent random read/write operations. Os blobs de páginas são a base dos discos IaaS do Azure.Page blobs are the foundation of Azure IaaS Disks. Este artigo se concentra em explicar os recursos e os benefícios dos BLOBs de páginas.This article focuses on explaining the features and benefits of page blobs.

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.Page blobs are a collection of 512-byte pages, which provide the ability to read/write arbitrary ranges of bytes. Portanto, OS blobs de páginas são ideais para armazenar estruturas de dados esparsas e baseadas em índice, como o sistema operacional e discos de dados para máquinas virtuais e bancos de dados.Hence, page blobs are ideal for storing index-based and sparse data structures like OS and data disks for Virtual Machines and Databases. Por exemplo, o BD SQL do Azure usa blobs de página como o armazenamento persistente subjacente para seus bancos de dados.For example, Azure SQL DB uses page blobs as the underlying persistent storage for its databases. Além disso, os blobs de páginas também são geralmente usados para arquivos com atualizações baseadas em intervalos.Moreover, page blobs are also often used for files with Range-Based updates.

Os principais recursos dos BLOBs de páginas do Azure são sua interface REST, a durabilidade do armazenamento subjacente e os recursos de migração direta para o Azure.Key features of Azure page blobs are its REST interface, the durability of the underlying storage, and the seamless migration capabilities to Azure. Esses recursos serão discutidos mais detalhadamente na próxima seção.These features are discussed in more detail in the next section. Além disso, no momento, os blobs de páginas do Azure têm suporte em dois tipos de armazenamento: Armazenamento Premium e armazenamento Standard.In addition, Azure page blobs are currently supported on two types of storage: Premium Storage and Standard Storage. O armazenamento Premium é projetado 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.Premium Storage is designed specifically for workloads requiring consistent high performance and low latency making premium page blobs ideal for high performance storage scenarios. As contas de armazenamento standard são mais econômicas para executar cargas de trabalho que não fazem distinção de latência.Standard storage accounts are more cost effective for running latency-insensitive workloads.

Casos de uso de exemploSample use cases

Vamos discutir alguns casos de uso para BLOBs de páginas começando com discos IaaS do Azure.Let's discuss a couple of use cases for page blobs starting with Azure IaaS Disks. Os blobs de páginas do Azure são o backbone da plataforma de discos virtuais para o Azure IaaS.Azure page blobs are the backbone of the virtual disks platform for Azure IaaS. O sistema operacional do Azure e os discos de dados são implementados como discos virtuais onde os dados são permanentemente persistidos na plataforma de armazenamento do Azure e, em seguida, entregues às máquinas virtuais para obter o máximo de desempenho.Both Azure OS and data disks are implemented as virtual disks where data is durably persisted in the Azure Storage platform and then delivered to the virtual machines for maximum performance. 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.Azure Disks are persisted in Hyper-V VHD format and stored as a page blob in Azure Storage. Além de usar discos virtuais para VMs de IaaS do Azure, os blobs de páginas também habilitam cenários de PaaS e DBaaS, como o serviço de BD SQL do Azure, que atualmente usa blobs de página para armazenar dados SQL, permitindo operações rápidas de leitura/gravação aleatórias para o Database.In addition to using virtual disks for Azure IaaS VMs, page blobs also enable PaaS and DBaaS scenarios such as Azure SQL DB service, which currently uses page blobs for storing SQL data, enabling fast random read-write operations for the database. Outro exemplo seria se você tiver um serviço PaaS para acesso de mídia compartilhada para aplicativos de edição de vídeo colaborativo, blobs de página permitem acesso rápido a locais aleatórios na mídia.Another example would be if you have a PaaS service for shared media access for collaborative video editing applications, page blobs enable fast access to random locations in the media. Ele também permite a edição e a mesclagem rápidas e eficientes da mesma mídia por vários usuários.It also enables fast and efficient editing and merging of the same media by multiple users.

Os serviços da Microsoft de terceiros como Azure Site Recovery, o backup do Azure, bem como muitos desenvolvedores de terceiros implementaram as inovações líderes do setor usando a interface REST do blob de páginas.First party Microsoft services like Azure Site Recovery, Azure Backup, as well as many third-party developers have implemented industry-leading innovations using page blob's REST interface. A seguir estão alguns dos cenários exclusivos implementados no Azure:Following are some of the unique scenarios implemented on Azure:

  • Gerenciamento de instantâneo incremental direcionado ao aplicativo: Os aplicativos podem aproveitar instantâneos de blob de páginas e APIs REST para salvar os pontos de verificação do aplicativo sem incorrer em uma duplicação dispendiosa de dados.Application-directed incremental snapshot management: Applications can leverage page blob snapshots and REST APIs for saving the application checkpoints without incurring costly duplication of data. O armazenamento do Azure dá suporte a instantâneos locais para BLOBs de páginas, que não exigem a cópia de todo o blob.Azure Storage supports local snapshots for page blobs, which don't require copying the entire blob. Essas APIs de instantâneo público também permitem o acesso e a cópia de deltas entre instantâneos.These public snapshot APIs also enable accessing and copying of deltas between snapshots.
  • Migração dinâmica de aplicativos e dados do local para a nuvem: Copie os dados locais e use as APIs REST para gravar diretamente em um blob de páginas do Azure enquanto a VM local continua a ser executada.Live migration of application and data from on premises to cloud: Copy the on premises data and use REST APIs to write directly to an Azure page blob while the on premises VM continues to run. Depois que o destino for atualizado, você poderá fazer failover rapidamente para a VM do Azure usando esses dados.Once the target has caught up, you can quickly failover to Azure VM using that data. Dessa forma, você pode migrar suas VMs e discos virtuais do local para a nuvem com tempo de inatividade mínimo, 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 o failover será curto (em minutos).In this way, you can migrate your VMs and virtual disks from on premises to cloud with minimal downtime since the data migration occurs in the background while you continue to use the VM and the downtime needed for failover will be short (in minutes).
  • Acesso compartilhado baseado em SAS , que permite cenários como vários leitores e gravador único com suporte para controle de simultaneidade.SAS-based shared access, which enables scenarios like multiple-readers and single-writer with support for concurrency control.

Funcionalidades de blob de páginaPage blob features

API RESTREST API

Consulte o documento a seguir para começar a desenvolver usando blobs de página.Refer to the following document to get started with developing using page blobs. Por exemplo, veja como acessar os blobs de página usando a biblioteca de cliente de armazenamento para .NET.As an example, look at how to access page blobs using Storage Client Library for .NET.

O diagrama a seguir descreve as relações gerais entre a conta, os contêineres e os blobs de páginas.The following diagram describes the overall relationships between account, containers, and page blobs.

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

Criando um blob de páginas vazio de um tamanho especificadoCreating an empty page blob of a specified size

Para criar um blob de páginas, primeiro criamos um objeto CloudBlobClient , com o URI base para acessar o armazenamento de BLOBs da sua conta de armazenamento (pbaccount na Figura 1) junto com o objeto StorageCredentialsAccountAndKey , conforme mostrado no exemplo a seguir.To create a page blob, we first create a CloudBlobClient object, with the base URI for accessing the blob storage for your storage account (pbaccount in figure 1) along with the StorageCredentialsAccountAndKey object, as shown in the following example. Em seguida, o exemplo mostra a criação de uma referência a um objeto CloudBlobContainer e, em seguida, a criação do contêiner (testvhds), caso ele ainda não exista.The example then shows creating a reference to a CloudBlobContainer object, and then creating the container (testvhds) if it doesn't already exist. Em seguida, usando o objeto CloudBlobContainer , crie uma referência a um objeto CloudPageBlob especificando o nome do blob de páginas (OS4. vhd) a ser acessado.Then using the CloudBlobContainer object, create a reference to a CloudPageBlob object by specifying the page blob name (os4.vhd) to access. Para criar o blob de páginas, chame CloudPageBlob. Create, passando o tamanho máximo do blob a ser criado.To create the page blob, call CloudPageBlob.Create, passing in the max size for the blob to create. O blobSize deve ser um múltiplo de 512 bytes.The blobSize must be a multiple of 512 bytes.

using Microsoft.Azure;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;

long OneGigabyteAsBytes = 1024 * 1024 * 1024;
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference("testvhds");

// Create the container if it doesn't already exist.
container.CreateIfNotExists();

CloudPageBlob pageBlob = container.GetPageBlobReference("os4.vhd");
pageBlob.Create(16 * OneGigabyteAsBytes);

Redimensionando um blob de páginasResizing a page blob

Para redimensionar um blob de páginas após a criação , use o método redimensionar.To resize a page blob after creation, use the Resize method. O tamanho solicitado deve ser um múltiplo de 512 bytes.The requested size should be a multiple of 512 bytes.

pageBlob.Resize(32 * OneGigabyteAsBytes);

Gravando páginas em um blob de páginasWriting pages to a page blob

Para gravar páginas, use o método CloudPageBlob. WritePages .To write pages, use the CloudPageBlob.WritePages method. Isso permite que você grave um conjunto sequencial de páginas até 4 MB.This allows you to write a sequential set of pages up to 4MBs. O deslocamento que está sendo gravado deve iniciar em um limite de 512 bytes (startingOffset% 512 = = 0) e terminar em um limite de 512-1.The offset being written to must start on a 512-byte boundary (startingOffset % 512 == 0), and end on a 512 boundary - 1. O exemplo de código a seguir mostra como chamar WritePages para um blob:The following code example shows how to call WritePages for a blob:

pageBlob.WritePages(dataStream, startingOffset); 

Assim que uma solicitação de gravação para um conjunto sequencial de páginas for bem-sucedida no serviço BLOB e for replicada para durabilidade e resiliência, a gravação será confirmada e o sucesso retornará ao cliente.As soon as a write request for a sequential set of pages succeeds in the blob service and is replicated for durability and resiliency, the write has committed, and success is returned back to the client.

O diagrama abaixo mostra duas operações de gravação separadas:The below diagram shows 2 separate write operations:

  1. Uma operação de gravação começando no deslocamento 0 de comprimento de 1024 bytesA Write operation starting at offset 0 of length 1024 bytes
  2. Uma operação de gravação começando com o deslocamento 4096 de comprimento 1024A Write operation starting at offset 4096 of length 1024

Lendo páginas de um blob de páginasReading pages from a page blob

Para ler páginas, use o método CloudPageBlob. DownloadRangeToByteArray para ler um intervalo de bytes do blob de páginas.To read pages, use the CloudPageBlob.DownloadRangeToByteArray method to read a range of bytes from the page blob. Isso permite que você baixe o blob completo ou o intervalo de bytes a partir de qualquer deslocamento no BLOB.This allows you to download the full blob or range of bytes starting from any offset in the blob. Ao ler, o deslocamento não precisa iniciar em um múltiplo de 512.When reading, the offset does not have to start on a multiple of 512. Ao ler bytes de uma página NUL, o serviço retorna zero bytes.When reading bytes from a NUL page, the service returns zero bytes.

byte[] buffer = new byte[rangeSize];
pageBlob.DownloadRangeToByteArray(buffer, bufferOffset, pageBlobOffset, rangeSize); 

A figura a seguir mostra uma operação de leitura com um deslocamento de 256 e um tamanho de intervalo de 4352.The following figure shows a Read operation with an offset of 256 and a range size of 4352. Os dados retornados são realçados em laranja.Data returned is highlighted in orange. Zeros são retornados para páginas NUL.Zeros are returned for NUL pages.

Se você tiver um blob populado de forma grosseira, convém apenas baixar as regiões de página válidas para evitar pagar pela saída de zero bytes e para reduzir a latência de download.If you have a sparsely populated blob, you may want to just download the valid page regions to avoid paying for egressing of zero bytes and to reduce download latency. Para determinar quais páginas são apoiadas pelos dados, use CloudPageBlob. GetPageRanges.To determine which pages are backed by data, use CloudPageBlob.GetPageRanges. Em seguida, você pode enumerar os intervalos retornados e baixar os dados em cada intervalo.You can then enumerate the returned ranges and download the data in each range.

IEnumerable<PageRange> pageRanges = pageBlob.GetPageRanges();

foreach (PageRange range in pageRanges)
{
    // Calculate the range size
    int rangeSize = (int)(range.EndOffset + 1 - range.StartOffset);

    byte[] buffer = new byte[rangeSize];

    // Read from the correct starting offset in the page blob and
    // place the data in the bufferOffset of the buffer byte array
    pageBlob.DownloadRangeToByteArray(buffer, bufferOffset, range.StartOffset, rangeSize); 

    // Then use the buffer for the page range just read
}

Leasing de um blob de páginasLeasing a page blob

A operação de blob de concessão estabelece e gerencia um bloqueio em um blob para operações de gravação e exclusão.The Lease Blob operation establishes and manages a lock on a blob for write and delete operations. Essa operação é útil em cenários em que um blob de páginas está sendo acessado de vários clientes para garantir que apenas um cliente possa gravar no blob de cada vez.This operation is useful in scenarios where a page blob is being accessed from multiple clients to ensure only one client can write to the blob at a time. Os discos do Azure, por exemplo, aproveitam esse mecanismo de concessão para garantir que o disco seja gerenciado apenas por uma única VM.Azure Disks, for example, leverages this leasing mechanism to ensure the disk is only managed by a single VM. A duração do bloqueio pode ser de 15 a 60 segundos ou pode ser infinita.The lock duration can be 15 to 60 seconds, or can be infinite. Consulte a documentação aqui para obter mais detalhes.See the documentation here for more details.

Além das APIs REST avançadas, os blobs de páginas também fornecem acesso compartilhado, durabilidade e segurança aprimorada.In addition to rich REST APIs, page blobs also provide shared access, durability, and enhanced security. Abordaremos esses benefícios mais detalhadamente nos próximos parágrafos.We will cover those benefits in more detail in the next paragraphs.

Acesso simultâneoConcurrent access

A API REST de blobs de páginas e seu mecanismo de concessão permitem que os aplicativos acessem o blob de páginas de vários clientes.The page blobs REST API and its leasing mechanism allows applications to access the page blob from multiple clients. Por exemplo, digamos que você precise criar um serviço de nuvem distribuído que compartilhe objetos de armazenamento com vários usuários.For example, let's say you need to build a distributed cloud service that shares storage objects with multiple users. Pode ser um aplicativo Web que serve uma grande coleção de imagens para vários usuários.It could be a web application serving a large collection of images to several users. Uma opção para implementar isso é usar uma VM com discos anexados.One option for implementing this is to use a VM with attached disks. As desvantagens disso incluem, (i) a restrição de que um disco só pode ser anexado a uma única VM, limitando, assim, a escalabilidade, a flexibilidade e o aumento de riscos.Downsides of this include, (i) the constraint that a disk can only be attached to a single VM thus limiting the scalability, flexibility, and increasing risks. 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.If there is a problem with the VM or the service running on the VM, then due to the lease, the image is inaccessible until the lease expires or is broken; and (ii) Additional cost of having an IaaS VM.

Uma opção alternativa é usar os blobs de página diretamente por meio de APIs REST do armazenamento do Azure.An alternative option is to use the page blobs directly via Azure Storage REST APIs. Essa opção elimina a necessidade de VMs de IaaS dispendiosas, 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.This option eliminates the need for costly IaaS VMs, offers full flexibility of direct access from multiple clients, simplifies the classic deployment model by eliminating the need to attach/detach disks, and eliminates the risk of issues on the VM. E fornece o mesmo nível de desempenho para operações de leitura/gravação aleatórias como um discoAnd, it provides the same level of performance for random read/write operations as a disk

Durabilidade e alta disponibilidadeDurability and high availability

O armazenamento Standard e Premium é um armazenamento durável em que os dados de blob de páginas sempre são replicados para garantir durabilidade e alta disponibilidade.Both Standard and premium storage are durable storage where the page blob data is always replicated to ensure durability and high availability. Para obter mais informações sobre a redundância de armazenamento do Azure, consulte esta documentação.For more information about Azure Storage Redundancy, see this documentation. O Azure fornece consistentemente a durabilidade de nível empresarial para discos de IaaS e blobs de páginas, com uma taxa de falha anualde porcentagem de zero por cento no setor.Azure has consistently delivered enterprise-grade durability for IaaS disks and page blobs, with an industry-leading zero percent Annualized Failure Rate.

Migração direta para o AzureSeamless migration to Azure

Para clientes e desenvolvedores interessados em implementar sua própria solução de backup personalizada, o Azure também oferece instantâneos incrementais que só mantêm os deltas.For the customers and developers who are interested in implementing their own customized backup solution, Azure also offers incremental snapshots that only hold the deltas. Esse recurso evita o custo da cópia inicial completa, o que reduz muito o custo de backup.This feature avoids the cost of the initial full copy, which greatly lowers the backup cost. Junto com a capacidade de ler e copiar dados diferenciais de maneira eficiente, esse é outro recurso poderoso que permite ainda mais inovações de desenvolvedores, levando a uma experiência de DR (recuperação de desastres) e de backup de melhor qualidade no Azure.Along with the ability to efficiently read and copy differential data, this is another powerful capability that enables even more innovations from developers, leading to a best-in-class backup and disaster recovery (DR) experience on Azure. Você pode configurar sua própria solução de backup ou recuperação de desastre 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 pode ser usada para copiar facilmente os dados incrementais para Dr.You can set up your own backup or DR solution for your VMs on Azure using Blob Snapshot along with the Get Page Ranges API and the Incremental Copy Blob API, which you can use for easily copying the incremental data for DR.

Além disso, muitas empresas têm cargas de trabalho críticas já em execução em data centers locais.Moreover, many enterprises have critical workloads already running in on-premises datacenters. 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 alternância.For migrating the workload to the cloud, one of the main concerns would be the amount of downtime needed for copying the data, and the risk of unforeseen issues after the switchover. Em muitos casos, o tempo de inatividade pode ser um impedimento para a migração para a nuvem.In many cases, the downtime can be a showstopper for migration to the cloud. Usando a API REST de blobs de páginas, o Azure resolve esse problema habilitando a migração de nuvem com o mínimo de interrupção para cargas de trabalho críticas.Using the page blobs REST API, Azure addresses this problem by enabling cloud migration with minimal disruption to critical workloads.

Para obter exemplos de como tirar um instantâneo e como restaurar um blob de páginas de um instantâneo, consulte o artigo configurar um processo de backup usando instantâneos incrementais .For examples on how to take a snapshot and how to restore a page blob from a snapshot, please refer to the setup a backup process using incremental snapshots article.