Omówienie stronicowych obiektów blob platformy Azure

Usługa Azure Storage oferuje trzy typy magazynu obiektów blob: blokowe obiekty blob, uzupełnialne obiekty blob i stronicowe obiekty blob. Blokowe obiekty blob składają się z bloków i idealnie nadają się do przechowywania plików tekstowych lub binarnych oraz wydajnego przekazywania dużych plików. Uzupełnialne obiekty blob składają się również z bloków, ale są zoptymalizowane pod kątem operacji dołączania, co czyni je idealnym rozwiązaniem w scenariuszach rejestrowania. Stronicowe obiekty blob składają się z 512-bajtowych stron o całkowitym rozmiarze do 8 TB i są przeznaczone do częstych losowych operacji odczytu/zapisu. Stronicowe obiekty blob są podstawą dysków IaaS platformy Azure. W tym artykule opisano funkcje i zalety stronicowych obiektów blob.

Stronicowe obiekty blob to kolekcja 512-bajtowych stron, które zapewniają możliwość odczytu/zapisu dowolnych zakresów bajtów. W związku z tym stronicowe obiekty blob są idealne do przechowywania struktur danych opartych na indeksie i rozrzedzanych, takich jak systemy operacyjne i dyski danych na potrzeby Virtual Machines i baz danych. Na przykład Azure SQL DB używa stronicowych obiektów blob jako podstawowego magazynu trwałego dla baz danych. Ponadto stronicowe obiekty blob są również często używane w przypadku plików z aktualizacjami Range-Based.

Najważniejsze funkcje stronicowych obiektów blob platformy Azure to interfejs REST, trwałość bazowego magazynu oraz bezproblemowe możliwości migracji na platformę Azure. Te funkcje zostały szczegółowo omówione w następnej sekcji. Ponadto stronicowe obiekty blob platformy Azure są obecnie obsługiwane w dwóch typach magazynu: Premium Storage i Standard Storage. Premium Storage jest przeznaczony specjalnie dla obciążeń wymagających spójnej wysokiej wydajności i małych opóźnień, dzięki czemu stronicowe obiekty blob w warstwie Premium idealnie nadają się do obsługi scenariuszy magazynowania o wysokiej wydajności. Konta magazynu w warstwie Standardowa są bardziej ekonomiczne w przypadku uruchamiania obciążeń niewrażliwych na opóźnienia.

Ograniczenia

Stronicowe obiekty blob mogą używać tylko warstwy Dostępu Gorąca , nie mogą używać warstw Chłodna lub Archiwum . Aby uzyskać więcej informacji na temat warstw dostępu, zobacz Warstwy dostępu Gorąca, Chłodna i Archiwum dla danych obiektów blob.

Przykładowe przypadki użycia

Omówimy kilka przypadków użycia stronicowych obiektów blob rozpoczynających się od dysków IaaS platformy Azure. Stronicowe obiekty blob platformy Azure to szkielet platformy dysków wirtualnych dla usługi Azure IaaS. Zarówno systemy operacyjne platformy Azure, jak i dyski danych są implementowane jako dyski wirtualne, w których dane są trwale utrwalane na platformie Azure Storage, a następnie dostarczane do maszyn wirtualnych w celu uzyskania maksymalnej wydajności. Dyski platformy Azure są utrwalane w formacie VHD funkcji Hyper-V i przechowywane jako stronicowy obiekt blob w usłudze Azure Storage. Oprócz używania dysków wirtualnych usługi Azure IaaS stronicowe obiekty blob umożliwiają również scenariusze PaaS i DBaaS, takie jak usługa Azure SQL DB, która obecnie używa stronicowych obiektów blob do przechowywania danych SQL, umożliwiając szybkie losowe operacje odczytu i zapisu dla bazy danych. Innym przykładem byłoby posiadanie usługi PaaS na potrzeby dostępu do multimediów udostępnionych dla aplikacji do wspólnego edytowania wideo, stronicowe obiekty blob umożliwiają szybki dostęp do losowych lokalizacji na nośniku. Umożliwia również szybkie i wydajne edytowanie i scalanie tego samego nośnika przez wielu użytkowników.

Usługi firmy Microsoft innych firm, takie jak Azure Site Recovery, Azure Backup, a także wielu deweloperów innych firm wdrożyło wiodące w branży innowacje przy użyciu interfejsu REST stronicowego obiektu blob. Poniżej przedstawiono niektóre z unikatowych scenariuszy zaimplementowanych na platformie Azure:

  • Zarządzanie migawkami przyrostowymi skierowanymi do aplikacji: aplikacje mogą korzystać z migawek stronicowych obiektów blob i interfejsów API REST do zapisywania punktów kontrolnych aplikacji bez ponoszenia kosztowych duplikacji danych. Usługa Azure Storage obsługuje lokalne migawki stronicowych obiektów blob, które nie wymagają kopiowania całego obiektu blob. Te publiczne interfejsy API migawek umożliwiają również dostęp i kopiowanie różnic między migawkami.
  • Migracja na żywo aplikacji i danych z lokalnej do chmury: skopiuj dane lokalne i użyj interfejsów API REST do zapisu bezpośrednio do stronicowego obiektu blob platformy Azure, podczas gdy lokalna maszyna wirtualna będzie nadal działać. Gdy element docelowy dogonił, możesz szybko przejść w tryb failover na maszynę wirtualną platformy Azure przy użyciu tych danych. W ten sposób można migrować maszyny wirtualne i dyski wirtualne z lokalnego do chmury z minimalnym przestojem, ponieważ migracja danych odbywa się w tle, podczas gdy nadal używasz maszyny wirtualnej, a przestoje wymagane do przejścia w tryb failover będą krótkie (w minutach).
  • Dostęp współużytkowany oparty na sygnaturze dostępu współdzielonego, który umożliwia scenariusze, takie jak wiele czytników i pojedynczy moduł zapisywania z obsługą kontroli współbieżności.

Dyski niezarządzane są wycofywane, aby uzyskać szczegółowe informacje, zobacz Migrowanie dysków niezarządzanych platformy Azure do 30 września 2025 r.

Cennik

Oba typy magazynów oferowane za pomocą stronicowych obiektów blob mają własny model cen. Stronicowe obiekty blob w warstwie Premium są zgodne z modelem cenowym dysków zarządzanych, podczas gdy standardowe stronicowe obiekty blob są rozliczane według używanego rozmiaru i z każdą transakcją. Aby uzyskać więcej informacji, zobacz stronę cennika stronicowych obiektów blob platformy Azure.

Cechy stronicowego obiektu blob

Interfejs API REST

Zapoznaj się z poniższym dokumentem, aby rozpocząć tworzenie przy użyciu stronicowych obiektów blob. Na przykład przyjrzyj się sposobom uzyskiwania dostępu do stronicowych obiektów blob przy użyciu biblioteki klienta usługi Storage dla platformy .NET.

Na poniższym diagramie opisano ogólne relacje między kontami, kontenerami i stronicowymi obiektami blob.

Zrzut ekranu przedstawiający relacje między kontami, kontenerami i stronicowymi obiektami blob

Tworzenie pustego stronicowego obiektu blob o określonym rozmiarze

Najpierw uzyskaj odwołanie do kontenera. Aby utworzyć stronicowy obiekt blob, wywołaj metodę GetPageBlobClient, a następnie wywołaj metodę PageBlobClient.Create . Przekaż maksymalny rozmiar obiektu blob do utworzenia. Ten rozmiar musi mieć wielokrotność 512 bajtów.

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

Zmiana rozmiaru stronicowego obiektu blob

Aby zmienić rozmiar stronicowego obiektu blob po utworzeniu, użyj metody Resize . Żądany rozmiar powinien mieć wielokrotność 512 bajtów.

pageBlobClient.Resize(32 * OneGigabyteAsBytes);

Zapisywanie stron w stronicowym obiekcie blob

Aby napisać strony, użyj metody PageBlobClient.UploadPages .

pageBlobClient.UploadPages(dataStream, startingOffset);

Dzięki temu można napisać sekwencyjny zestaw stron do 4 MB. Przesunięcie, które ma zostać zapisane, musi zaczynać się od granicy 512 bajtów (startOffset % 512 == 0) i kończyć się granicą 512 - 1.

Gdy tylko żądanie zapisu dla sekwencyjnego zestawu stron zakończy się powodzeniem w usłudze obiektów blob i zostanie zreplikowane pod kątem trwałości i odporności, zapis został zatwierdzony, a powodzenie zostanie zwrócone z powrotem do klienta.

Na poniższym diagramie przedstawiono 2 oddzielne operacje zapisu:

Diagram przedstawiający dwie oddzielne opcje zapisu.

  1. Operacja zapisu rozpoczynająca się od przesunięcia 0 o długości 1024 bajtów
  2. Operacja zapisu rozpoczynająca się od przesunięcia 4096 o długości 1024

Odczytywanie stron ze stronicowego obiektu blob

Aby odczytać strony, użyj metody PageBlobClient.Download , aby odczytać zakres bajtów ze stronicowego obiektu blob.

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

Dzięki temu można pobrać pełny obiekt blob lub zakres bajtów rozpoczynający się od dowolnego przesunięcia w obiekcie blob. Podczas odczytywania przesunięcie nie musi rozpoczynać się od wielokrotności 512. Podczas odczytywania bajtów ze strony NUL usługa zwraca zero bajtów.

Na poniższej ilustracji przedstawiono operację Odczytu z przesunięciem 256 i rozmiarem zakresu 4352. Zwrócone dane są wyróżnione kolorem pomarańczowym. Zera są zwracane dla stron NUL.

Diagram przedstawiający operację odczytu z przesunięciem 256 i rozmiarem zakresu 4352

Jeśli masz rozrzedżony obiekt blob, możesz po prostu pobrać prawidłowe regiony strony, aby uniknąć płacenia za wychodzące bajty zerowe i zmniejszyć opóźnienie pobierania.

Aby określić, które strony są wspierane przez dane, użyj elementu PageBlobClient.GetPageRanges. Następnie można wyliczyć zwrócone zakresy i pobrać dane w każdym zakresie.

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

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

Dzierżawienie stronicowego obiektu blob

Operacja dzierżawy obiektu blob ustanawia blokadę obiektu blob i zarządza nią na potrzeby operacji zapisu i usuwania. Ta operacja jest przydatna w scenariuszach, w których jest uzyskiwany dostęp do stronicowego obiektu blob z wielu klientów w celu zapewnienia, że tylko jeden klient może zapisywać w obiekcie blob jednocześnie. Na przykład usługa Azure Disks korzysta z tego mechanizmu dzierżawy, aby upewnić się, że dysk jest zarządzany tylko przez jedną maszynę wirtualną. Czas trwania blokady może wynosić od 15 do 60 sekund lub może być nieskończony. Aby uzyskać więcej informacji, zobacz dokumentację tutaj .

Oprócz rozbudowanych interfejsów API REST stronicowe obiekty blob zapewniają również dostęp współużytkowany, trwałość i zwiększone zabezpieczenia. Omówimy te korzyści bardziej szczegółowo w następnych akapitach.

Równoczesny dostęp

Stronicowy interfejs API REST obiektów blob i jego mechanizm dzierżawy umożliwia aplikacjom dostęp do stronicowego obiektu blob od wielu klientów. Załóżmy na przykład, że musisz utworzyć rozproszoną usługę w chmurze, która udostępnia obiekty magazynu wielu użytkownikom. Może to być aplikacja internetowa obsługująca dużą kolekcję obrazów dla kilku użytkowników. Jedną z opcji implementacji tej opcji jest użycie maszyny wirtualnej z dołączonymi dyskami. Wady tej funkcji obejmują (i) ograniczenie, że dysk może być dołączony tylko do jednej maszyny wirtualnej, co ogranicza skalowalność, elastyczność i zwiększa ryzyko. Jeśli występuje problem z maszyną wirtualną lub usługą uruchomioną na maszynie wirtualnej, to z powodu dzierżawy obraz jest niedostępny do momentu wygaśnięcia lub uszkodzenia dzierżawy; i (ii) Dodatkowy koszt posiadania maszyny wirtualnej IaaS.

Alternatywną opcją jest użycie stronicowych obiektów blob bezpośrednio za pośrednictwem interfejsów API REST usługi Azure Storage. Ta opcja eliminuje potrzebę kosztowych maszyn wirtualnych IaaS, oferuje pełną elastyczność bezpośredniego dostępu od wielu klientów, upraszcza klasyczny model wdrażania, eliminując konieczność dołączania/odłączania dysków i eliminuje ryzyko problemów z maszyną wirtualną. Ponadto zapewnia ten sam poziom wydajności dla losowych operacji odczytu/zapisu co dysk

Trwałość i wysoka dostępność

Magazyn w warstwie Standardowa i Premium jest trwałym magazynem, w którym dane stronicowych obiektów blob są zawsze replikowane w celu zapewnienia trwałości i wysokiej dostępności. Platforma Azure stale zapewnia trwałość klasy korporacyjnej dla dysków IaaS i stronicowych obiektów blob z wiodącym w branży zerowym procentem rocznej awarii.

Aby uzyskać więcej informacji na temat nadmiarowości usługi Azure Storage dla kont magazynu w warstwie Standardowa i Premium, zobacz Nadmiarowość usługi Azure Storage, a w szczególności te dwie sekcje:

Bezproblemowa migracja na platformę Azure

Dla klientów i deweloperów, którzy chcą zaimplementować własne dostosowane rozwiązanie do tworzenia kopii zapasowych, platforma Azure oferuje również migawki przyrostowe, które przechowują tylko różnice. Ta funkcja pozwala uniknąć kosztów początkowej pełnej kopii, co znacznie obniża koszt tworzenia kopii zapasowej. Oprócz możliwości wydajnego odczytywania i kopiowania danych różnicowych jest to kolejna zaawansowana funkcja, która umożliwia jeszcze więcej innowacji od deweloperów, co prowadzi do najlepszego w klasie środowiska tworzenia kopii zapasowych i odzyskiwania po awarii na platformie Azure. Możesz skonfigurować własne rozwiązanie do tworzenia kopii zapasowych lub odzyskiwania po awarii dla maszyn wirtualnych na platformie Azure przy użyciu migawki obiektu blob oraz interfejsu API pobierania zakresów stron i interfejsu API kopiowania przyrostowego obiektu blob, którego można użyć do łatwego kopiowania danych przyrostowych na potrzeby odzyskiwania po awarii.

Ponadto wiele przedsiębiorstw ma już krytyczne obciążenia działające w lokalnych centrach danych. W przypadku migracji obciążenia do chmury jednym z głównych problemów jest czas przestoju wymagany do kopiowania danych oraz ryzyko nieprzewidzianych problemów po przełączeniu. W wielu przypadkach przestój może być showstopperem migracji do chmury. Korzystając ze stronicowego interfejsu API REST obiektów blob, platforma Azure rozwiązuje ten problem, włączając migrację do chmury z minimalnymi zakłóceniami w krytycznych obciążeniach.

Przykłady tworzenia migawki i przywracania stronicowego obiektu blob z migawki można znaleźć w artykule dotyczącym konfigurowania procesu tworzenia kopii zapasowej przy użyciu migawek przyrostowych .