Informatie over blok-blobs, toevoeg-blobs en pagina-blobs
De opslagservice biedt drie typen blobs: blok-blobs, toevoeg-blobs en pagina-blobs. U geeft het blobtype op wanneer u de blob maakt. Nadat de blob is gemaakt, kan het type niet meer worden gewijzigd en kan de blob alleen worden bijgewerkt met bewerkingen die geschikt zijn voor dat blobtype, d.w.z. het schrijven van een blok of lijst met blokken naar een blok-blob, het toevoegen van blokken aan een toevoeg-blob en het schrijven van pagina's naar een pagina-blob.
Alle blobs worden onmiddellijk doorgevoerde wijzigingen weergegeven. Elke versie van de blob heeft een unieke tag, een ETag genaamd, die u kunt gebruiken met toegangsvoorwaarden om ervoor te zorgen dat u alleen een specifiek exemplaar van de blob wijzigt.
Elke blob kan worden geleased voor exclusieve schrijftoegang. Wanneer een blob wordt geleased, kunnen alleen aanroepen met de huidige lease-id de blob of (voor blok-blobs) de blokken wijzigen.
Elke blob kan worden gedupliceerd in een momentopname. Zie Een momentopname van een blob maken voor meer informatie over momentopnamen.
Notitie
Blobs in de Azure-opslagemulator zijn beperkt tot een maximale grootte van 2 GiB.
Over blok-blobs
Blok-blobs zijn geoptimaliseerd voor het efficiënt uploaden van grote hoeveelheden gegevens. Blok-blobs bestaan uit blokken, die elk worden geïdentificeerd door een blok-id. Een blok-blob kan maximaal 50.000 blokken bevatten. Elk blok in een blok-blob kan een andere grootte hebben, tot de maximale grootte die is toegestaan voor de serviceversie die in gebruik is. Als u een blok-blob wilt maken of wijzigen, schrijft u een set blokken via de bewerking Blok plaatsen en voert u de blokken vervolgens door naar een blob met de bewerking Lijst met blokkeringen plaatsen.
Blobs die kleiner zijn dan een bepaalde grootte (bepaald door de serviceversie) kunnen in hun geheel worden geüpload met één schrijfbewerking via Put Blob.
In de volgende tabel staan de maximale blok- en blobgroottes die per serviceversie zijn toegestaan.
Serviceversie | Maximale blokgrootte (via Put Block) | Maximale blobgrootte (via Put Block List) | Maximale blobgrootte via enkele schrijfbewerking (via Put Blob) |
---|---|---|---|
Versie 2019-12-12 en hoger | 4000 MiB | Ongeveer 190,7 TiB (4000 MiB X 50.000 blokken) | 5000 miB |
Versie 2016-05-31 t/m versie 2019-07-07 | 100 MiB | Ongeveer 4,75 TiB (100 MiB x 50.000 blokken) | 256 MiB |
Versies vóór 2016-05-31 | 4 MiB | Ongeveer 195 GiB (4 MiB x 50.000 blokken) | 64 MiB |
Opslagclients hebben standaard een maximale upload van 128 MiB voor één blob, ingesteld in de Azure Storage-clientbibliotheek voor .NET versie 11 met behulp van de eigenschap SingleBlobUploadThresholdInBytes van het object BlobRequestOptions . Wanneer het uploaden van een blok-blob groter is dan de waarde in deze eigenschap, splitsen opslagclients het bestand in blokken. U kunt per aanvraag het aantal threads instellen dat wordt gebruikt om de blokken parallel te uploaden met behulp van de eigenschap ParallelOperationThreadCount van het object BlobRequestOptions .
Wanneer u een blok uploadt naar een blob in uw opslagaccount, wordt het gekoppeld aan de opgegeven blok-blob, maar wordt het pas onderdeel van de blob nadat u een lijst met blokken hebt doorgevoerd die de id van het nieuwe blok bevat. Nieuwe blokken blijven in een niet-doorgevoerde status totdat ze specifiek zijn doorgevoerd of verwijderd. Er kunnen maximaal 100.000 niet-verzonden blokken zijn. Als u een blok schrijft, wordt de laatste wijzigingstijd van een bestaande blob niet bijgewerkt.
Blok-blobs bevatten functies waarmee u grote bestanden via netwerken kunt beheren. Met een blok-blob kunt u meerdere blokken parallel uploaden om de uploadtijd te verkorten. Elk blok kan een MD5-hash bevatten om de overdracht te controleren, zodat u de voortgang van het uploaden kunt bijhouden en indien nodig blokken opnieuw kunt verzenden. U kunt blokken in elke gewenste volgorde uploaden en de volgorde bepalen in de laatste stap voor de toezegging van de blokkeringslijst. U kunt ook een nieuw blok uploaden om een bestaand niet-doorgevoerd blok van dezelfde blok-id te vervangen. U hebt één week de tijd om blokken door te voeren in een blob voordat ze worden verwijderd. Alle niet-doorgevoerde blokken worden ook verwijderd wanneer een toezeggingsbewerking voor een bloklijst plaatsvindt, maar bevat deze niet.
U kunt een bestaande blok-blob wijzigen door bestaande blokken in te voegen, te vervangen of te verwijderen. Nadat u het blok of de blokken hebt geüpload die zijn gewijzigd, kunt u een nieuwe versie van de blob doorvoeren door de nieuwe blokken door te voeren met de bestaande blokken die u wilt blijven gebruiken met behulp van één doorvoerbewerking. Als u hetzelfde bereik van bytes wilt invoegen op twee verschillende locaties van de vastgelegde blob, kunt u hetzelfde blok op twee plaatsen binnen dezelfde doorvoerbewerking doorvoeren. Als er voor een doorvoerbewerking geen blok wordt gevonden, mislukt de volledige toezeggingsbewerking met een fout en wordt de blob niet gewijzigd. Elke bloktoewijzing overschrijft de bestaande eigenschappen en metagegevens van de blob en verwijdert alle niet-doorgevoerde blokken.
Blok-id's zijn tekenreeksen van gelijke lengte binnen een blob. Blokclientcode maakt meestal gebruik van base-64-codering om tekenreeksen te normaliseren in gelijke lengten. Wanneer u base-64-codering gebruikt, moet de vooraf gecodeerde tekenreeks 64 bytes of minder zijn. Blok-id-waarden kunnen in verschillende blobs worden gedupliceerd.
Als u een blok schrijft voor een blob die niet bestaat, wordt er een nieuwe blok-blob gemaakt met een lengte van nul bytes. Deze blob wordt weergegeven in bloblijsten die niet-doorgevoerde blobs bevatten. Als u geen blok in deze blob doorvoert, worden deze en de niet-doorgevoerde blokken één week na de laatste geslaagde blokupload verwijderd. Alle niet-doorgevoerde blokken worden ook verwijderd wanneer een nieuwe blob met dezelfde naam wordt gemaakt met behulp van één stap (in plaats van het proces voor het uploaden en vervolgens doorvoeren in twee stappen).
Over pagina-blobs
Pagina-blobs zijn een verzameling pagina's van 512 bytes die zijn geoptimaliseerd voor willekeurige lees- en schrijfbewerkingen. Als u een pagina-blob wilt maken, initialiseert u de pagina-blob en geeft u de maximale grootte op voor de pagina-blob. Als u de inhoud van een pagina-blob wilt toevoegen of bijwerken, schrijft u een pagina of pagina's door een verschuiving en een bereik op te geven die beide zijn uitgelijnd op paginagrenzen van 512 bytes. Een schrijfbewerking naar een pagina-blob kan slechts één pagina, sommige pagina's of maximaal 4 MiB van de pagina-blob overschrijven. Schrijfbewerkingen naar pagina-blobs worden ter plaatse uitgevoerd en worden onmiddellijk doorgevoerd in de blob. De maximale grootte voor een pagina-blob is 8 TiB.
Schijven van virtuele Azure-machines worden ondersteund door pagina-blobs. Azure biedt twee typen duurzame schijfopslag: Premium en Standard. Premium-opslag voor pagina-blobs is ontworpen voor workloads van virtuele Azure-machines waarvoor consistente hoge prestaties en lage latentie zijn vereist. Zie de sectie Premium SSD (Solid-State Drives) van het artikel Selecteer een schijftype voor IaaS-VM's voor gedetailleerde informatie. Zie Schaalbaarheids- en prestatiedoelen voor Azure Storage voor informatie over de schaalbaarheidsdoelen voor Premium Storage voor pagina-blobs.
Informatie over toevoeg-blobs
Een toevoeg-blob bestaat uit blokken en is geoptimaliseerd voor toevoegbewerkingen. Wanneer u een toevoeg-blob wijzigt, worden blokken alleen toegevoegd aan het einde van de blob, via de bewerking Toevoegblok . Het bijwerken of verwijderen van bestaande blokken wordt niet ondersteund. In tegenstelling tot een blok-blob geeft een toevoeg-blob de blok-id's niet weer.
Elk blok in een toevoeg-blob kan een andere grootte hebben, maximaal 4 MiB, en een toevoeg-blob kan maximaal 50.000 blokken bevatten. De maximale grootte van een toevoeg-blob is daarom iets meer dan 195 GiB (4 MiB X 50.000 blokken).