Übersicht über Azure-SeitenblobsOverview of Azure page blobs

Azure Storage bietet drei Typen von Blobs: Blockblobs, Seitenblobs und Anfügeblobs.Azure Storage offers three types of blob storage: Block Blobs, Append Blobs and page blobs. Blockblobs bestehen aus Blöcken und eignen sich ideal für das Speichern von Text- oder Binärdateien und zum effizienten Hochladen großer Dateien.Block blobs are composed of blocks and are ideal for storing text or binary files, and for uploading large files efficiently. Anfügeblobs bestehen auch aus Blöcken, sind aber für Anfügevorgänge optimiert und damit ideal für Protokollierungsszenarien.Append blobs are also made up of blocks, but they are optimized for append operations, making them ideal for logging scenarios. Seitenblobs bestehen aus 512-Byte-Seiten, können insgesamt 8 TB groß sein und sind für häufige wahlfreie Lese-/Schreibzugriffe vorgesehen.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. Seitenblobs sind die Grundlage von Azure-IaaS-Datenträgern.Page blobs are the foundation of Azure IaaS Disks. In diesem Artikel werden die Features und Vorteile von Seitenblobs erläutert.This article focuses on explaining the features and benefits of page blobs.

Seitenblobs sind eine Sammlung von 512-Byte-Seiten, die Lese-/Schreibzugriff auf beliebige Bytebereiche ermöglichen.Page blobs are a collection of 512-byte pages, which provide the ability to read/write arbitrary ranges of bytes. Dadurch eignen sich Seitenblobs perfekt zum Speichern indexbasierter und platzsparender Datenstrukturen wie Betriebssystemdatenträger und sonstiger Datenträger für VMs und Datenbanken.Hence, page blobs are ideal for storing index-based and sparse data structures like OS and data disks for Virtual Machines and Databases. Azure SQL-Datenbank verwendet Seitenblobs beispielsweise als zugrunde liegenden permanenten Speicher für seine Datenbanken.For example, Azure SQL DB uses page blobs as the underlying persistent storage for its databases. Darüber hinaus werden Seitenblobs auch häufig für Dateien mit bereichsbasierten Updates verwendet.Moreover, page blobs are also often used for files with Range-Based updates.

Schlüsselfeatures von Azure-Seitenblobs sind die REST-Schnittstelle, die Dauerhaftigkeit des zugrunde liegenden Speichers und die Fähigkeit zur nahtlosen Migration zu Azure.Key features of Azure page blobs are its REST interface, the durability of the underlying storage, and the seamless migration capabilities to Azure. Diese Features werden im nächsten Abschnitt ausführlicher besprochen.These features are discussed in more detail in the next section. Darüber hinaus werden Azure-Seitenblobs derzeit von zwei Speichertypen unterstützt: Storage Premium und Storage Standard.In addition, Azure page blobs are currently supported on two types of storage: Premium Storage and Standard Storage. Storage Premium wurde speziell für Workloads konzipiert, die konsistent hohe Leistung und geringe Wartezeit erfordern, sodass Premium-Seitenblobs für Hochleistungsspeicher-Szenarien ideal sind.Premium Storage is designed specifically for workloads requiring consistent high performance and low latency making premium page blobs ideal for high performance storage scenarios. Standardspeicherkonten sind kostengünstiger zur Ausführung von Workloads, bei denen Wartezeiten eine untergeordnete Rolle spielen.Standard storage accounts are more cost effective for running latency-insensitive workloads.

Beispiele für AnwendungsfälleSample use cases

In diesem Abschnitt werden einige Anwendungsfälle für Seitenblobs erläutert. Den Anfang machen Azure-IaaS-Datenträger.Let's discuss a couple of use cases for page blobs starting with Azure IaaS Disks. Azure-Seitenblobs bilden das Rückgrat der Plattform für virtuelle Datenträger für Azure-IaaS.Azure page blobs are the backbone of the virtual disks platform for Azure IaaS. Sowohl Azure-Datenträger für das Betriebssystem als auch für die zu speichernden Daten werden als virtuelle Datenträger implementiert, wo Daten auf der Azure Storage-Plattform persistent gespeichert und anschließend für optimale Leistung an die virtuellen Computer übermittelt werden.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. Azure-Datenträger liegen im VHD-Format von Hyper-V vor und werden als Seitenblob in Azure Storage gespeichert.Azure Disks are persisted in Hyper-V VHD format and stored as a page blob in Azure Storage. Zusätzlich zur Verwendung virtueller Datenträger für Azure-IaaS-VMs ermöglichen Seitenblobs auch PaaS- und DBaaS-Szenarien. Ein Beispiel wäre etwa der Azure SQL-DB-Dienst, der derzeit Seitenblobs zum Speichern von SQL-Daten verwendet, um schnelle wahlfreie Lese-/Schreibzugriffe für die Datenbank zu ermöglichen.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. Ein weiteres Beispiel: Bei einem PaaS-Dienst für den Zugriff auf freigegebene Medien für Anwendungen für gemeinsame Videobearbeitung ermöglichen Seitenblobs schnellen Zugriff auf zufällige Positionen in den Medien.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. Außerdem ermöglichen sie schnelles und effizientes Bearbeiten und Zusammenführen derselben Medien durch mehrere Benutzer.It also enables fast and efficient editing and merging of the same media by multiple users.

Für Microsoft-Erstanbieterdienste wie Azure Site Recovery und Azure Backup sowie von vielen Drittanbieterentwicklern wurden branchenführende Innovationen mithilfe der REST-Schnittstelle des Seitenblobs implementiert.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. Zu den einzigartigen in Azure implementierten Szenarien zählen:Following are some of the unique scenarios implemented on Azure:

  • Anwendungsorientierte inkrementelle Momentaufnahmeverwaltung: Anwendungen können Momentaufnahmen von Seitenblobs und REST-APIs nutzen, um die Anwendungsprüfpunkte ohne kostspielige Datenduplizierung zu speichern.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. Azure Storage unterstützt lokale Momentaufnahmen für Seitenblobs, für die nicht das Kopieren des gesamten Blobs erforderlich ist.Azure Storage supports local snapshots for page blobs, which don't require copying the entire blob. Diese öffentlichen Momentaufnahmen-APIs ermöglichen auch das Zugreifen auf und Kopieren von Deltas zwischen Momentaufnahmen.These public snapshot APIs also enable accessing and copying of deltas between snapshots.
  • Livemigration der Anwendung und Daten aus der lokalen Umgebung zur Cloud: Kopieren Sie die lokalen Daten, und schreiben Sie mithilfe von REST-APIs direkt in ein Azure-Seitenblob, während die lokale VM weiterhin ausgeführt wird.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. Sobald das Ziel erreicht ist, können Sie schnell ein Failover zu der Azure-VM ausführen, die die Daten verwendet.Once the target has caught up, you can quickly failover to Azure VM using that data. Dies ermöglicht die Migration Ihrer virtuellen Computer und virtuellen Datenträger vom lokalen Standort zur Cloud mit minimaler Ausfallzeit, da die Datenmigration im Hintergrund durchgeführt wird, während Sie weiterhin den virtuellen Computer verwenden. Die für das Failover erforderliche Ausfallzeit ist kurz (wenige Minuten).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).
  • SAS-basierter freigegebener Zugriff, der Szenarien wie z.B. mehrere Lese- und einzelne Schreibvorgänge mit Unterstützung für Gleichzeitigkeitssteuerung ermöglicht.SAS-based shared access, which enables scenarios like multiple-readers and single-writer with support for concurrency control.

Features für SeitenblobsPage blob features

REST-APIREST API

Machen Sie sich anhand des folgenden Dokuments mit der Entwicklung mithilfe von Seitenblobs vertraut.Refer to the following document to get started with developing using page blobs. Sehen Sie sich als Beispiel den Zugriff auf Seitenblobs mit der Storage-Clientbibliothek für .NET an.As an example, look at how to access page blobs using Storage Client Library for .NET.

Das folgende Diagramm beschreibt die allgemeinen Beziehungen zwischen Konto, Containern und Seitenblobs.The following diagram describes the overall relationships between account, containers, and page blobs.

Screenshot der Beziehungen zwischen Konto, Containern und Seitenblobs

Erstellen eines leeren Seitenblobs mit einer bestimmten GrößeCreating an empty page blob of a specified size

Zur Erstellung eines Seitenblobs erstellen wir zunächst ein CloudBlobClient-Objekt mit dem Basis-URI für den Zugriff auf den Blobspeicher für Ihr Speicherkonto (pbaccount in Abbildung 1) sowie das StorageCredentialsAccountAndKey-Objekt, wie im folgenden Beispiel zu sehen.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. Das Beispiel zeigt anschließend das Erstellen eines Verweises auf ein CloudBlobContainer-Objekt und dann das Erstellen des Containers (testvhds), wenn dieser nicht bereits vorhanden ist.The example then shows creating a reference to a CloudBlobContainer object, and then creating the container (testvhds) if it doesn't already exist. Dann können Sie mit dem CloudBlobContainer-Objekt durch Angabe des Namens des Seitenblobs („os4.vhd“), auf das Sie zugreifen möchten, einen Verweis auf ein CloudPageBlob-Objekt erstellen.Then using the CloudBlobContainer object, create a reference to a CloudPageBlob object by specifying the page blob name (os4.vhd) to access. Zum Erstellen des Seitenblobs rufen Sie CloudPageBlob.Create auf und übergeben die maximale Größe für das Blob, das Sie erstellen möchten.To create the page blob, call CloudPageBlob.Create, passing in the max size for the blob to create. Der Wert von blobSize muss ein Vielfaches von 512 Byte sein.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);

Ändern der Größe eines SeitenblobsResizing a page blob

Verwenden Sie zum Ändern der Größe eines Seitenblobs nach der Erstellung die Resize-Methode.To resize a page blob after creation, use the Resize method. Die angeforderte Größe sollte ein Vielfaches von 512 Bytes sein.The requested size should be a multiple of 512 bytes.

pageBlob.Resize(32 * OneGigabyteAsBytes);

Schreiben von Seiten in ein SeitenblobWriting pages to a page blob

Verwenden Sie zum Schreiben von Seiten die CloudPageBlob.WritePages-Methode.To write pages, use the CloudPageBlob.WritePages method. So können Sie eine sequenzielle Reihe von Seiten bis zu 4 MB schreiben.This allows you to write a sequential set of pages up to 4MBs. Der Offset, in den geschrieben wird, muss an einer 512-Byte-Begrenzung beginnen (startingOffset % 512 == 0) und an einer 512-Begrenzung -1 enden.The offset being written to must start on a 512-byte boundary (startingOffset % 512 == 0), and end on a 512 boundary - 1. Im folgenden Codebeispiel wird das Aufrufen von WritePages für ein Blob veranschaulicht:The following code example shows how to call WritePages for a blob:

pageBlob.WritePages(dataStream, startingOffset); 

Sobald eine Schreibanforderung für eine sequenzielle Reihe von Seiten im Blobdienst erfolgreich ist und für Dauerhaftigkeit und Resilienz repliziert wird, wird der Schreibvorgang committet, und der Client erhält eine Erfolgsmeldung.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.

Das folgende Diagramm zeigt 2 separate Schreibvorgänge:The below diagram shows 2 separate write operations:

  1. Einen Schreibvorgang mit der Länge 1.024 Bytes, der am Offset 0 beginntA Write operation starting at offset 0 of length 1024 bytes
  2. Einen Schreibvorgang mit der Länge 1.024 Bytes, der am Offset 4096 beginntA Write operation starting at offset 4096 of length 1024

Lesen von Seiten aus einem SeitenblobReading pages from a page blob

Verwenden Sie zum Lesen von Seiten die CloudPageBlob.DownloadRangeToByteArray-Methode, um einen Bereich von Bytes aus dem Seitenblob zu lesen.To read pages, use the CloudPageBlob.DownloadRangeToByteArray method to read a range of bytes from the page blob. So können Sie das vollständige Blob oder einen Bereich von Bytes, der an einem beliebigen Offset im Blob beginnt, herunterladen.This allows you to download the full blob or range of bytes starting from any offset in the blob. Beim Lesen muss der Offset nicht bei einem Vielfachen von 512 beginnen.When reading, the offset does not have to start on a multiple of 512. Beim Lesen von Bytes aus einer NULL-Seite gibt der Dienst 0 (null) Bytes zurück.When reading bytes from a NUL page, the service returns zero bytes.

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

Die folgende Abbildung zeigt einen Lesevorgang mit einem Offset von 256 und einer Bereichsgröße von 4352.The following figure shows a Read operation with an offset of 256 and a range size of 4352. Die zurückgegebenen Daten sind in Orange hervorgehoben.Data returned is highlighted in orange. Nullen werden für NULL-Seiten zurückgegeben.Zeros are returned for NUL pages.

Bei einem platzsparend gefüllten Blob sollten Sie nur die gültigen Seitenbereiche herunterladen, um nicht für ausgehende 0 (null) Bytes zu zahlen und die Downloadwartezeit zu verringern.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. Bestimmen Sie mit CloudPageBlob.GetPageRanges, welche Seiten Daten enthalten.To determine which pages are backed by data, use CloudPageBlob.GetPageRanges. Sie können dann die zurückgegebenen Bereiche aufzählen und die Daten in jedem Bereich herunterladen.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
}

Leasen eines SeitenblobsLeasing a page blob

Das Leasen eines Blobs richtet eine Sperre für Schreib- und Löschvorgänge für ein Blob ein und verwaltet sie.The Lease Blob operation establishes and manages a lock on a blob for write and delete operations. Dieser Vorgang ist nützlich in Szenarien, in denen mehrere Clients auf ein Seitenblob zugreifen, um sicherzustellen, dass jeweils nur ein einziger Client in das Blob schreiben kann.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. Azure-Datenträger nutzen diesen Leasemechanismus z.B., um sicherzustellen, dass der Datenträger nur von einem einzelnen virtuellen Computer verwaltet wird.Azure Disks, for example, leverages this leasing mechanism to ensure the disk is only managed by a single VM. Die Sperrdauer kann 15 bis 60 Sekunden betragen oder unendlich sein.The lock duration can be 15 to 60 seconds, or can be infinite. Weitere Informationen finden Sie hier.See the documentation here for more details.

Zusätzlich zu umfangreichen REST-APIs bieten Seitenblobs auch freigegebenen Zugriff, Dauerhaftigkeit und verbesserte Sicherheit.In addition to rich REST APIs, page blobs also provide shared access, durability, and enhanced security. Wir werden diese Vorteile ausführlicher in den nächsten Abschnitten behandeln.We will cover those benefits in more detail in the next paragraphs.

Paralleler ZugriffConcurrent access

Mit der Seitenblob-REST-API und ihrem Leasingmechanismus können Anwendungen von mehreren Clients aus auf das Seitenblob zugreifen.The page blobs REST API and its leasing mechanism allows applications to access the page blob from multiple clients. Stellen Sie sich beispielsweise vor, Sie müssten einen verteilten Clouddienst erstellen, der mehreren Benutzern die gemeinsame Nutzung von Speicherobjekten ermöglicht.For example, let's say you need to build a distributed cloud service that shares storage objects with multiple users. Dies könnte eine Webanwendung sein, die verschiedenen Benutzern eine umfangreiche Sammlung von Bildern zur Verfügung stellt.It could be a web application serving a large collection of images to several users. Eine Möglichkeit, dies zu implementieren, ist die Verwendung eines virtuellen Computers mit angefügten Datenträgern.One option for implementing this is to use a VM with attached disks. Dies hat folgende Nachteile: (i) Die Einschränkung, dass ein Datenträger nur einem einzelnen virtuellen Computer angehängt werden kann, was Skalierbarkeit und Flexibilität einschränkt und die Risiken steigert.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. Wenn ein Problem mit dem virtuellen Computer oder dem Dienst, der auf dem virtuellen Computer ausgeführt wird, auftritt, kann aufgrund der Lease nicht auf das Image zugegriffen werden, bis die Lease abläuft oder unterbrochen wird; und (ii) die zusätzlichen Kosten einer IaaS-VM.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.

Eine andere Möglichkeit ist die direkte Verwendung der Seitenblobs über REST-APIs von Azure Storage.An alternative option is to use the page blobs directly via Azure Storage REST APIs. Bei dieser Option entfällt die Notwendigkeit teurer IaaS-VMs. Sie bietet die vollständige Flexibilität des direkten Zugriffs von mehreren Clients aus, sie vereinfacht die Bereitstellung mit dem klassischen Bereitstellungsmodell, da die Notwendigkeit entfällt, Datenträger anzuhängen/zu trennen, und sie eliminiert das Risiko des Auftretens von Problemen auf dem virtuellen Computer.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. Außerdem entspricht das Leistungsniveau bei wahlfreien Lese-/Schreibzugriffen dem bei gleichen Zugriffen auf einen Datenträger.And, it provides the same level of performance for random read/write operations as a disk

Dauerhaftigkeit und HochverfügbarkeitDurability and high availability

Sowohl Standardspeicher als auch Storage Premium sind permanente Speicher, in denen die Seitenblobdaten immer repliziert werden, um Dauerhaftigkeit und hohe Verfügbarkeit zu gewährleisten.Both Standard and premium storage are durable storage where the page blob data is always replicated to ensure durability and high availability. Weitere Informationen zur Azure Storage-Redundanz finden Sie in dieser Dokumentation.For more information about Azure Storage Redundancy, see this documentation. Azure konnte für IaaS-Datenträger und Seitenblobs durchgängig eine Dauerhaftigkeit auf Unternehmensniveau bereitstellen, mit einer branchenweit führenden auf das Jahr umgerechneten Fehlerrate von null Prozent.Azure has consistently delivered enterprise-grade durability for IaaS disks and page blobs, with an industry-leading zero percent Annualized Failure Rate.

Nahtlose Migration zu AzureSeamless migration to Azure

Für Kunden und Entwickler, die am Implementieren ihrer eigenen benutzerdefinierten Sicherungslösung interessiert sind, bietet Azure auch inkrementelle Momentaufnahmen, die nur die Deltas enthalten.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. Dieses Feature vermeidet die Kosten für die erste vollständige Kopie, was die Sicherungskosten erheblich reduziert.This feature avoids the cost of the initial full copy, which greatly lowers the backup cost. Zusammen mit der Fähigkeit, Differenzdaten effizient zu lesen und zu kopieren, ist dies eine weitere leistungsstarke Funktion, die Entwicklern ermöglicht, noch innovativer zu sein, und Sicherung und Notfallwiederherstellung (Disaster Recovery, DR) in Azure mit einer herausragenden Benutzererfahrung verbindet.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. Sie können Ihre eigene Sicherungs- oder DR-Lösung für Ihre virtuellen Computer in Azure mithilfe von Blobmomentaufnahmen zusammen mit der API zum Abrufen von Seitenbereichen und der API zum inkrementellen Kopieren von Blobs einrichten, die Sie zum mühelosen Kopieren der inkrementellen Daten für die Notfallwiederherstellung verwenden können.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.

Darüber hinaus werden kritische Workloads vieler Unternehmen bereits in lokalen Rechenzentren ausgeführt.Moreover, many enterprises have critical workloads already running in on-premises datacenters. Hauptaspekte bei der Migration der Workload zur Cloud sind die Länge der Ausfallzeit, die beim Kopieren der Daten anfällt, und das Risiko unvorhergesehener Probleme nach dem Wechsel.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. In vielen Fällen kann die Ausfallzeit für die Migration zur Cloud ein K.O.-Kriterium sein.In many cases, the downtime can be a showstopper for migration to the cloud. Die Seitenblob-REST-API von Azure löst dieses Problem, indem sie die Migration kritischer Workloads zur Cloud mit minimaler Unterbrechung ermöglicht.Using the page blobs REST API, Azure addresses this problem by enabling cloud migration with minimal disruption to critical workloads.

Beispiele zum Erstellen einer Momentaufnahme und Wiederherstellen eines Seitenblobs aus einer Momentaufnahme finden Sie im Artikel Sichern nicht verwalteter Azure-VM-Datenträger mithilfe inkrementeller Momentaufnahmen.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.