Panoramica dei BLOB di pagine di Azure

Archiviazione di Azure offre tre tipi di archivio BLOB: BLOB in blocchi, BLOB di accodamento e BLOB di pagine. I BLOB in blocchi sono costituiti da blocchi e sono ideali per l'archiviazione di file di testo o binari e per il caricamento di file di grandi dimensioni in modo efficiente. Anche i BLOB di accodamento sono costituiti da blocchi, ma sono ottimizzati per le operazioni di accodamento e per questo sono ideali per gli scenari di registrazione. I BLOB di pagine sono costituiti da pagine da 512 byte fino a 8 TB di dimensione totale e sono progettati per operazioni frequenti di lettura/scrittura casuali. I BLOB di pagine sono alla base dei dischi IaaS di Azure. Questo articolo descrive le funzionalità e i vantaggi dei BLOB di pagine.

I BLOB di pagine sono una raccolta di pagine da 512 byte, che offrono la possibilità di leggere/scrivere intervalli arbitrari di byte. I BLOB di pagine sono quindi ideali per l'archiviazione di strutture di dati di tipo sparse e basati sull'indice, ad esempio i dischi del sistema operativo e di dati per le macchine virtuali e i database. Il database SQL di Azure, ad esempio, usa i BLOB di pagine come risorsa di archiviazione permanente sottostante per i database. I BLOB di pagine vengono spesso usati anche per i file con aggiornamenti basati su intervalli.

Le funzionalità principali dei BLOB di pagine di Azure sono l'interfaccia REST, la durabilità della risorsa di archiviazione sottostante e le funzionalità di migrazione senza problemi in Azure. Queste funzionalità sono illustrate in modo più dettagliato nella sezione successiva. I BLOB di pagine di Azure sono inoltre attualmente supportati in due tipi di risorsa di archiviazione: Archiviazione Premium e Archiviazione Standard. Archiviazione Premium è progettato in modo specifico per i carichi di lavoro che richiedono prestazioni elevate coerenti e bassa latenza rendendo i BLOB di pagine Premium ideali per scenari di archiviazione a prestazioni elevate. Gli account di archiviazione standard sono più convenienti per l'esecuzione di carichi di lavoro insensibili per latenza.

Restrizioni

I BLOB di pagine possono usare solo il livello di accesso frequente, non possono usare i livelli Cool o Archive . Per altre informazioni sui livelli di accesso, vedere Livelli di accesso ad accesso frequente, sporadico e archivio per i dati BLOB.

Caso d'uso di esempio

Verrà ora esaminato qualche caso d'uso per i BLOB di pagine a partire dai dischi IaaS di Azure. I BLOB di pagine di Azure sono alla base della piattaforma di dischi virtuali per il servizio IaaS di Azure. Sia i dischi dati che quelli del sistema operativo di Azure vengono implementati come dischi virtuali in cui i dati vengono resi persistenti nella piattaforma di archiviazione di Azure e quindi recapitati alle macchine virtuali per ottenere prestazioni ottimali. I dischi di Azure vengono resi persistenti nel formato VHD di Hyper-V e archiviati come BLOB di pagine in Archiviazione di Azure. Oltre a usare i dischi virtuali per le VM IaaS di Azure, i BLOB di pagine abilitano anche scenari PaaS e DBaaS, ad esempio il servizio database SQL di Azure, che usa attualmente i BLOB di pagine per l'archiviazione dei dati SQL, consentendo operazioni casuali rapide di lettura/scrittura per il database. Un altro esempio è quello in cui si ha un servizio PaaS per l'accesso multimediale condiviso per applicazioni di collaborazione per la modifica di video e i BLOB di pagine consentono di accedere rapidamente a percorsi casuali nei file multimediali. Consente anche a più utenti di modificare e unire in modo rapido ed efficiente gli stessi file multimediali.

I servizi forniti da Microsoft, ad esempio Azure Site Recovery e Backup di Azure, e molti sviluppatori di terze parti hanno implementato le innovazioni leader del settore usando l'interfaccia REST del BLOB di pagine. Di seguito sono elencati alcuni degli scenari univoci implementati in Azure:

  • Gestione degli snapshot incrementali controllata dell'applicazione: le applicazioni possono sfruttare gli snapshot dei BLOB di pagine e le API REST per il salvataggio dei checkpoint dell'applicazione senza dover sostenere la costosa duplicazione dei dati. Archiviazione di Azure supporta gli snapshot locali per i BLOB di pagine, che non richiedono la copia dell'intero BLOB. Queste API snapshot pubbliche consentono anche l'accesso e la copia dei valori differenziali tra gli snapshot.
  • Migrazione dinamica di applicazioni e dati da locale a cloud: copiare i dati locali e usare le API REST per scrivere direttamente in un BLOB di pagine di Azure mentre la macchina virtuale locale continua a essere eseguita. Dopo l'aggiornamento della destinazione, è possibile effettuare rapidamente il failover nella VM di Azure usando tali dati. In questo modo, è possibile eseguire la migrazione delle macchine virtuali e dei dischi virtuali da locale al cloud con tempi di inattività minimi poiché la migrazione dei dati si verifica in background mentre si continua a usare la macchina virtuale e i tempi di inattività necessari per il failover saranno brevi (in minuti).
  • Accesso condiviso basato sulla firma di accesso condiviso, che consente scenari come quelli con più lettori e un singolo writer con il supporto per il controllo della concorrenza.

I dischi non gestiti vengono ritirati, per informazioni dettagliate, vedere Eseguire la migrazione dei dischi non gestiti di Azure entro il 30 settembre 2025.

Prezzi

Entrambi i tipi di archiviazione offerti con BLOB di pagine hanno il proprio modello tariffario. I BLOB di pagine Premium seguono il modello di prezzo dei dischi gestiti, mentre i BLOB di pagine standard vengono fatturati sulle dimensioni usate e con ogni transazione. Per altre informazioni, vedere la pagina dei prezzi dei BLOB di pagine di Azure.

Funzionalità dei BLOB di pagine

API REST

Per un'introduzione, vedere il documento relativo allo sviluppo con i BLOB di pagine. Come esempio, verrà esaminato l'accesso ai BLOB di pagine tramite la libreria client di archiviazione per .NET.

Il diagramma seguente illustra le relazioni generali tra account, contenitori e BLOB di pagine.

Screenshot che mostra le relazioni tra account, contenitori e BLOB di pagine

Creazione di un BLOB di pagine vuoto di una dimensione specificata

Prima di tutto, ottenere un riferimento a un contenitore. Per creare un BLOB di pagine, chiamare il metodo GetPageBlobClient e quindi chiamare il metodo PageBlobClient.Create . Passare le dimensioni massime per il BLOB da creare. Tale dimensione deve essere un multiplo di 512 byte.

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);

Ridimensionamento di un BLOB di pagine

Per ridimensionare un BLOB di pagine dopo la creazione, usare il metodo Resize . Le dimensioni richieste devono essere un multiplo di 512 byte.

pageBlobClient.Resize(32 * OneGigabyteAsBytes);

Scrittura di pagine in un BLOB di pagine

Per scrivere pagine, usare il metodo PageBlobClient.UploadPages .

pageBlobClient.UploadPages(dataStream, startingOffset);

In questo modo è possibile scrivere un set sequenziale di pagine con dimensioni massime pari a 4 MB. L'offset in cui si scrive deve iniziare da un limite di 512 byte (startingOffset % 512 == 0) e terminare con un limite di 512 - 1.

Non appena una richiesta di scrittura per un set sequenziale di pagine ha esito positivo nel servizio BLOB e viene replicata per la durabilità e la resilienza, viene effettuato il commit della scrittura e l'esito positivo viene restituito al client.

Il diagramma seguente mostra 2 operazioni di scrittura separate:

Diagramma che mostra le due opzioni di scrittura separate.

  1. Un'operazione di scrittura che inizia dall'offset 0 di lunghezza pari a 1024 byte
  2. Un'operazione di scrittura che inizia dall'offset 4096 di lunghezza pari a 1024 byte

Lettura di pagine da un BLOB di pagine

Per leggere le pagine, usare il metodo PageBlobClient.Download per leggere un intervallo di byte dal BLOB di pagine.

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

In questo modo è possibile scaricare l'intero BLOB o un intervallo di byte a partire da un offset nel BLOB. Durante la lettura, non è necessario che l'offset inizi da un multiplo di 512. Quando si leggono byte da una pagina NUL, il servizio restituisce zero byte.

La figura seguente mostra un'operazione di lettura con un offset pari a 256 e una dimensione di intervallo pari a 4352. I dati restituiti sono evidenziati in arancione. Gli zero vengono restituiti per le pagine NUL.

Diagramma che mostra un'operazione di lettura con un offset pari a 256 e una dimensione di intervallo pari a 4352

Se si ha un BLOB scarsamente popolato, potrebbe essere necessario scaricare solo le aree della pagina valide per evitare addebiti per l'uscita di zero byte e per ridurre la latenza di download.

Per determinare quali pagine sono supportate dai dati, usare PageBlobClient.GetPageRanges. È quindi possibile enumerare gli intervalli restituiti e scaricare i dati in ogni intervallo.

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

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

Leasing di un BLOB di pagine

L'operazione Lease BLOB stabilisce e gestisce un blocco su un BLOB per le operazioni di scrittura e di eliminazione. Questa operazione è utile negli scenari in cui più client accedono a un BLOB di pagine, per assicurarsi che un solo client per volta possa scrivere nel BLOB. I dischi di Azure, ad esempio, sfruttano questo meccanismo di leasing per garantire che il disco sia gestito solo da una singola macchina virtuale. La durata del blocco può variare da 15 a 60 secondi o può essere infinita. Per altri dettagli, vedere la documentazione qui.

Oltre alle API REST avanzate, i BLOB di pagine forniscono anche l'accesso condiviso, la durabilità e la sicurezza avanzata. Tali vantaggi verranno illustrati in modo più dettagliato nei paragrafi successivi.

Accesso simultaneo

L'API REST BLOB di pagine e il relativo meccanismo di leasing consentono alle applicazioni di accedere ai BLOB di pagine da più client. Si supponga, ad esempio, di dover compilare un servizio cloud distribuito che condivide gli oggetti di archiviazione con più utenti. Potrebbe trattarsi di un'applicazione Web che gestisce un raccolta di immagini di grandi dimensioni per più utenti. Un'opzione per l'implementarla consiste nell'usare una VM con dischi connessi. Tra gli svantaggi di tale opzione è incluso il vincolo che un disco possa essere connesso a una singola VM, limitando così la scalabilità e la flessibilità e aumentando i rischi. Se si verifica un problema con la VM o il servizio in esecuzione nella VM, dovuto quindi al lease, l'immagine non è accessibile fino a quando il lease scade o viene interrotto. Un altro svantaggio è il costo aggiuntivo di una VM IaaS.

Un'opzione alternativa consiste nell'usare i BLOB di pagine direttamente tramite le API REST di Archiviazione di Azure. Questa opzione elimina la necessità di costose VM IaaS, offre la flessibilità completa derivante dall'accesso diretto da più client, semplifica il modello di distribuzione classica non essendo più necessario connettere/disconnettere i dischi ed elimina il rischio di problemi nella VM. Offre anche lo stesso livello di prestazioni di un disco per le operazioni casuali di lettura/scrittura

Durabilità e disponibilità elevate

L'archiviazione standard e Premium è un'archiviazione durevole in cui i dati blob di pagina vengono sempre replicati per garantire la durabilità e la disponibilità elevata. Azure ha fornito in modo coerente durabilità di livello aziendale per i dischi E i BLOB di pagine IaaS, con un tasso di errore annuale del settore di primo livello.

Per altre informazioni sulla ridondanza di Archiviazione di Azure per gli account di archiviazione standard e Premium, vedere Ridondanza di Archiviazione di Azure e queste due sezioni in particolare:

Migrazione semplice ad Azure

Per i clienti e gli sviluppatori interessati a implementare la propria soluzione di backup personalizzata, Azure offre anche snapshot incrementali che includono solo valori differenziali. Questa funzionalità elimina il costo della copia iniziale completa, riducendo considerevolmente il costo del backup. Si tratta di un'altra caratteristica avanzata, che si aggiunge alla possibilità di leggere e copiare in modo efficiente i dati differenziali e che consente agli sviluppatori di realizzare sempre più innovazioni e offre un'esperienza all'avanguardia di backup e ripristino di emergenza in Azure. È possibile configurare la propria soluzione di backup o ripristino di emergenza per le VM in Azure usando Blob Snapshot con l'API Get Page Ranges e l'API Incremental Copy Blob, che è possibile usare per copiare facilmente i dati incrementali per il ripristino di emergenza.

Diverse aziende hanno inoltre carichi di lavoro critici già in esecuzione in data center locali. Per la migrazione del carico di lavoro al cloud, due delle principali preoccupazioni sono il tempo di inattività necessario per copiare i dati e il rischio che si verifichino problemi imprevisti dopo il cambio. In diversi casi, il tempo di inattività può essere un ostacolo per la migrazione al cloud. Usando l'API REST BLOB di pagine, Azure risolve questo problema consentendo la migrazione cloud con un'interruzione minima per i carichi di lavoro critici.

Per esempi di come creare uno snapshot e ripristinare un BLOB di pagine da uno snapshot, vedere l'articolo Configurare un processo di backup usando snapshot incrementali.