Om du vill läsa en blob som finns på arkivnivån måste du först återställa bloben till en online-nivå (varm, sval eller kall). Du kan återställa en blob på något av två sätt:
- Genom att kopiera den till en ny blob på den frekventa, lågfrekventa eller kalla nivån med åtgärden Kopiera blob .
- Genom att ändra nivån från arkiv till frekvent, lågfrekvent eller kall nivå med åtgärden Ange blobnivå .
När du återhydrerar en blob kan du ange åtgärdens prioritet till antingen standardprioritet eller högprioritet. En rehydreringsåtgärd med standardprioritet kan ta upp till 15 timmar att slutföra. En högprioriterad åtgärd prioriteras framför standardprioritetsbegäranden och kan slutföras på mindre än en timme för objekt under 10 GB i storlek. Du kan ändra rehydreringsprioriteten från Standard till Hög medan åtgärden väntar.
Du kan konfigurera Azure Event Grid att utlösa en händelse när återfuktningen är klar och köra programkoden som svar. För att lära sig hur man hanterar en händelse som kör en Azure-funktion när blobåterställningsoperationen är klar, se Köra en Azure-funktion som svar på en blobåterställningshändelse.
För mer information om hur du återhydrerar en blob, se Återhydrering av blob från arkivnivån.
Återskapa en blob med en kopieringsoperation
Om du vill extrahera en blob från arkivnivån genom att kopiera den till en onlinenivå använder du Azure-portalen, PowerShell, Azure CLI eller något av Azure Storage-klientbiblioteken. Tänk på att när du kopierar en arkiverad blob till en onlinenivå måste käll- och målblobbarna ha olika namn.
Kopiering av en arkiverad blob till en onlinelagringsnivå stöds inom samma lagringskonto. Från och med tjänstversion 2021-02-12 kan du kopiera en arkiverad blob till ett annat lagringskonto, så länge målkontot finns i samma region som källkontot.
När kopieringsåtgärden är klar visas målbloben på arkivnivån. Målbloben återställs sedan till den onlinenivå som du angav i kopieringsåtgärden. När målbloben är helt återhydratiserad blir den tillgänglig på det nya onlinelagret.
Extrahera en blob till samma lagringskonto
Följande exempel visar hur du kopierar en arkiverad blob till en blob på den frekventa nivån i samma lagringskonto.
Gå till källlagringskontot i Azure-portalen.
I navigeringsfönstret för lagringskontot väljer du Lagringswebbläsare.
I lagringswebbläsaren navigerar du till platsen för den arkiverade bloben, markerar kryssrutan som visas bredvid bloben och väljer sedan knappen Kopiera .
Navigera till containern där du vill placera den uttorkade bloben och välj sedan knappen Klistra in .
Dialogrutan Klistra in arkivblob visas.
Anmärkning
Om du väljer knappen Klistra in på samma plats som källbloben innehåller standardnamnet som visas i fältet Målblobnamn ett numeriskt suffix. Detta säkerställer att käll- och målblobbarna har olika namn. Du kan ändra det här namnet om du vill så länge namnet skiljer sig från namnet på källbloben.
I dialogrutan Klistra in arkivblob väljer du en åtkomstnivå och en återfuktningsprioritet. Välj sedan Klistra in för att återställa bloben.
Viktigt!
Radera inte källbloben medan den återställs.
Om du vill kopiera en arkiverad blob till en onlinenivå med PowerShell anropar du kommandot Start-AzStorageBlobCopy och anger målnivån och rehydreringsprioriteten. Kom ihåg att ersätta platshållare inom vinkelparenteser med dina egna värden:
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$srcContainerName = "<source-container>"
$destContainerName = "<dest-container>"
$srcBlobName = "<source-blob>"
$destBlobName = "<dest-blob>"
# Get the storage account context
$ctx = (Get-AzStorageAccount `
-ResourceGroupName $rgName `
-Name $accountName).Context
# Copy the source blob to a new destination blob in hot tier with Standard priority.
Start-AzStorageBlobCopy -SrcContainer $srcContainerName `
-SrcBlob $srcBlobName `
-DestContainer $destContainerName `
-DestBlob $destBlobName `
-StandardBlobTier Hot `
-RehydratePriority Standard `
-Context $ctx
Om du vill kopiera en arkiverad blob till en onlinenivå med Azure CLI anropar du kommandot az storage blob copy start och anger målnivån och återställningsprioriteten. Kom ihåg att ersätta platshållare inom vinkelparenteser med dina egna värden:
az storage blob copy start \
--source-container <source-container> \
--source-blob <source-blob> \
--destination-container <dest-container> \
--destination-blob <dest-blob> \
--account-name <storage-account> \
--tier hot \
--rehydrate-priority standard \
--auth-mode login
Återställ en blob till ett annat lagringskonto i samma region
I följande exempel visas hur du kopierar en arkiverad blob till en blob i det varma lagret i ett annat lagringskonto.
Anmärkning
Mål- och källkontot måste finnas i samma region.
Gå till källlagringskontot i Azure-portalen.
I navigeringsfönstret för lagringskontot väljer du Lagringswebbläsare.
I lagringswebbläsaren navigerar du till platsen för den arkiverade bloben, markerar kryssrutan som visas bredvid bloben och väljer sedan knappen Kopiera .
Gå till mållagringskontot och välj Lagringswebbläsare i navigeringsfönstret.
Navigera till containern där du vill placera den uttorkade bloben och välj sedan knappen Klistra in .
Dialogrutan Klistra in arkivblob visas.
I dialogrutan Klistra in arkivblob väljer du en åtkomstnivå och en återfuktningsprioritet. Välj sedan Klistra in för att återfukta bloben.
Viktigt!
Ta inte bort källbloben när den är uttorkande.
Om du vill kopiera en arkiverad blob till en blob på en onlinenivå i ett annat lagringskonto med PowerShell kontrollerar du att du har installerat Az.Storage-modulen version 4.4.0 eller senare. Anropa sedan kommandot Start-AzStorageBlobCopy och ange onlinenivån för mål och prioriteten för återfuktning. Du måste ange en signatur för delad åtkomst (SAS) med läsbehörighet för den arkiverade källbloben.
I följande exempel visas hur du kopierar en arkiverad blob till den frekventa nivån i ett annat lagringskonto. Kom ihåg att ersätta platshållare inom vinkelparenteser med dina egna värden:
$rgName = "<resource-group>"
$srcAccount = "<source-account>"
$destAccount = "<dest-account>"
$srcContainer = "<source-container>"
$destContainer = "<dest-container>"
$srcBlob = "<source-blob>"
$destBlob = "<destination-blob>"
# Get the destination account context
$destCtx = New-AzStorageContext -StorageAccountName $destAccount -UseConnectedAccount
# Get the source account context
$srcCtx = New-AzStorageContext -StorageAccountName $srcAccount -UseConnectedAccount
# Get the SAS URI for the source blob
$srcBlobUri = New-AzStorageBlobSASToken -Container $srcContainer `
-Blob $srcBlob `
-Permission rwd `
-ExpiryTime (Get-Date).AddDays(1) `
-FullUri `
-Context $srcCtx
# Start the cross-account copy operation
Start-AzStorageBlobCopy -AbsoluteUri $srcBlobUri `
-DestContainer $destContainer `
-DestBlob $destBlob `
-DestContext $destCtx `
-StandardBlobTier Hot `
-RehydratePriority Standard
Om du vill kopiera en arkiverad blob till en blob på en onlinenivå i ett annat lagringskonto med Azure CLI kontrollerar du att du har installerat version 2.35.0 eller senare. Anropa sedan kommandot az storage blob copy start och ange online-målnivån och återhydreringsprioriteten. Du måste ange en signatur för delad åtkomst (SAS) med läsbehörighet för den arkiverade källbloben.
Följande exempel visar hur du kopierar en arkiverad blob till den heta nivån i ett annat lagringskonto. Kom ihåg att ersätta platshållare inom vinkelparenteser med dina egna värden:
# Specify the expiry interval
end=`date -u -d "1 day" '+%Y-%m-%dT%H:%MZ'`
# Get a SAS for the source blob
srcBlobUri=$(az storage blob generate-sas \
--account-name <source-account> \
--container <source-container> \
--name <archived-source-blob> \
--permissions rwd \
--expiry $end \
--https-only \
--full-uri \
--as-user \
--auth-mode login | tr -d '"')
# Copy to the destination blob in the hot tier
az storage blob copy start \
--source-uri $srcBlobUri \
--account-name <dest-account> \
--destination-container <dest-container> \
--destination-blob <dest-blob> \
--tier Hot \
--rehydrate-priority Standard \
--auth-mode login
Rehydrera från en sekundär region
Om du har konfigurerat lagringskontot för att använda geo-redundant lagring med läsåtkomst (RA-GRS) kan du kopiera en arkiverad blob som finns i en sekundär region till en onlinenivå i ett annat lagringskonto som finns i samma sekundära region.
Om du vill extrahera från en sekundär region använder du samma vägledning som visas i föregående avsnitt (Extrahera en blob till ett annat lagringskonto i samma region. Lägg till suffixet -secondary i källslutpunktens kontonamn. Om din primära slutpunkt för Blob Storage till exempel är myaccount.blob.core.windows.netär myaccount-secondary.blob.core.windows.netden sekundära slutpunkten . Kontoåtkomstnycklarna för ditt lagringskonto är desamma för både de primära och sekundära slutpunkterna.
Mer information om hur du skaffar läsåtkomst till sekundära regioner finns i Läs åtkomst till data i den sekundära regionen.
Återställ en blob genom att ändra dess nivå
För att återuppliva en blob genom att ändra dess nivå från arkiv till varm eller kall, använd Azure-portalen, PowerShell eller Azure CLI.
Följ dessa steg om du vill ändra en blobnivå från arkiv till frekvent eller lågfrekvent i Azure-portalen:
Leta upp bloben som ska återställas i Azure-portalen.
Välj knappen Mer till höger på sidan.
Välj Ändra nivå.
Välj målåtkomstnivån från rullgardinsmenyn Åtkomstnivå.
I listrutan Rehydrate priority väljer du den önskade återställningsprioriteten. Tänk på att om du ställer in rehydreringsprioriteten på Hög resulterar det vanligtvis i snabbare uttorkning, men det medför också en högre kostnad.
Klicka på knappen Spara.
Om du vill ändra en blobnivå från arkiv till frekvent eller lågfrekvent med PowerShell använder du blobens BlobClient-egenskap för att returnera en .NET-referens till blobben och anropar sedan metoden SetAccessTier för den referensen. Kom ihåg att ersätta platshållare inom vinkelparenteser med dina egna värden:
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container>"
$blobName = "<archived-blob>"
# Get the storage account context
$ctx = (Get-AzStorageAccount `
-ResourceGroupName $rgName `
-Name $accountName).Context
# Change the blob's access tier to hot with Standard priority.
$blob = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$blob.BlobClient.SetAccessTier("Hot", $null, "Standard")
Om du vill ändra en blobnivå från arkiv till frekvent eller lågfrekvent med Azure CLI anropar du kommandot az storage blob set-tier . Kom ihåg att ersätta platshållare inom vinkelparenteser med dina egna värden:
az storage blob set-tier \
--account-name <storage-account> \
--container-name <container> \
--name <archived-blob> \
--tier Hot \
--rehydrate-priority Standard \
--auth-mode login
Om du vill ändra en blobnivå från arkiv till frekvent eller lågfrekvent med AzCopy använder du kommandot azcopy set-properties och anger parametern -block-blob-tier till önskad nivå och --rehydrate-priority till standard eller high. Som standard är den här parametern inställd på standard. Mer information om kompromisser för varje alternativ finns i Rehydreringsprioritet.
Anmärkning
Det här exemplet omger sökvägsargument med enkla citattecken ('''). Använd enkla citattecken i alla kommandogränssnitt förutom Windows Command Shell (cmd.exe). Om du använder ett Windows-kommandogränssnitt (cmd.exe) omger du sökvägsargument med dubbla citattecken ("") i stället för enkla citattecken ('').
Det här exemplet innehåller inte heller någon SAS-token eftersom det förutsätter att du har angett autentiseringsuppgifter för auktorisering med hjälp av Microsoft Entra-ID.
Se artikeln Kom igång med AzCopy om du vill veta mer om hur du kan ange autentiseringsuppgifter för auktorisering till lagringstjänsten.
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier=hot --rehydrate-priority=high
Massrehydrera en uppsättning blobbar
Om du vill extrahera arkiverade blobar i en container eller mapp till den frekventa eller lågfrekventa nivån räknar du upp genom blobarna och anropar åtgärden Ange blobnivå på var och en. I följande exempel visas hur du utför den här åtgärden:
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container>"
$folderName = "<folder>/"
$ctx = (Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName).Context
$blobCount = 0
$Token = $Null
$MaxReturn = 5000
do {
$Blobs = Get-AzStorageBlob -Context $ctx -Container $containerName -Prefix $folderName -MaxCount $MaxReturn -ContinuationToken $Token
if($Blobs -eq $Null) { break }
#Set-StrictMode will cause Get-AzureStorageBlob returns result in different data types when there is only one blob
if($Blobs.GetType().Name -eq "AzureStorageBlob")
{
$Token = $Null
}
else
{
$Token = $Blobs[$Blobs.Count - 1].ContinuationToken;
}
$Blobs | ForEach-Object {
if(($_.BlobType -eq "BlockBlob") -and ($_.AccessTier -eq "Archive") ) {
$_.BlobClient.SetAccessTier("Hot", $null, "Standard")
}
}
}
While ($Token -ne $Null)
az storage blob list --account-name $accountName --account-key $key \
--container-name $containerName --prefix $folderName \
--query "[?properties.blobTier == 'Archive'].name" --output tsv \
| xargs -I {} -P 10 \
az storage blob set-tier --account-name $accountName --account-key $key \
--container-name $containerName --tier Hot --name "{}"
För att re-hydrera ett stort antal blobar samtidigt, anropar du Blob Batch-operationen för att utföra Ange blobnivå som en massåtgärd.
Ett kodexempel som visar hur du utför batchåtgärden finns i AzBulkSetBlobTier.
Kontrollera statusen för en rehydreringsåtgärd
När bloben återställs kan du kontrollera dess status och rehydreringsprioritet med hjälp av Azure-portalen, PowerShell eller Azure CLI. Statusegenskapen kan returnera rehydrate-pending-to-hot eller rehydrate-pending-to-cool, beroende på målnivån för rehydreringsåtgärden. Egenskapen rehydreringsprioritet returnerar antingen Standard eller High.
Tänk på att återställning av en arkiverad blob kan ta upp till 15 timmar och att det är ineffektivt att kontinuerligt kontrollera blobens status för att avgöra om återställningen är klar. Att använda Azure Event Grid för att fånga den händelse som utlöses när rehydreringen är klar ger bättre prestanda och kostnadsoptimering. Information om hur du kör en Azure-funktion när en händelse utlöses vid blobåterställning finns i Köra en Azure-funktion som svar på en blobåterställningshändelse.
Om du vill kontrollera status och prioritet för en väntande återfuktningsåtgärd i Azure-portalen visar du dialogrutan Ändra nivå för bloben:
När återfuktningen är klar kan du se i Azure-portalen att den helt återfuktade bloben nu visas på den avsedda onlinenivån.
Om du vill kontrollera statusen och prioriteten för en väntande återhydreringsåtgärd med PowerShell anropar du kommandot Get-AzStorageBlob och kontrollerar egenskaperna ArchiveStatus och RehydratePriority för bloben. Om återfuktningen är en kopieringsåtgärd kontrollerar du dessa egenskaper i målbloben. Kom ihåg att ersätta platshållare inom vinkelparenteser med dina egna värden:
$rehydratingBlob = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$rehydratingBlob.BlobProperties.ArchiveStatus
$rehydratingBlob.BlobProperties.RehydratePriority
Om du vill kontrollera statusen och prioriteten för en väntande rehydreringsåtgärd med Azure CLI anropar du kommandot az storage blob show och kontrollerar egenskaperna rehydrationStatus och rehydratePriority för målbloben. Kom ihåg att ersätta platshållare inom vinkelparenteser med dina egna värden:
az storage blob show \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--query '[rehydratePriority, properties.rehydrationStatus]' \
--output tsv \
--auth-mode login
Ändra rehydreringsprioriteten för en väntande åtgärd
Medan en rehydreringsåtgärd med standardprioritet väntar kan du ändra inställningen för återfuktningsprioritet för en blob från Standard till Hög för att extrahera bloben snabbare.
Inställningen för rehydreringsprioritet kan inte sänkas från Hög till Standard för en väntande åtgärd. Tänk också på att en ändring av återfuktningsprioriteten kan ha en faktureringspåverkan. Mer information finns i Blob rehydrering från arkivnivån.
Ändra återfuktningsprioriteten för en väntande åtgärd för att ange blobnivå
Om du vill ändra återfuktningsprioriteten medan en standardprioritetsåtgärd för Set Blob Tier väntar använder du Azure-portalen, PowerShell, Azure CLI eller något av Azure Storage-klientbiblioteken.
Följ dessa steg om du vill ändra återfuktningsprioriteten för en väntande åtgärd med Azure-portalen:
Navigera till den blob som du vill ändra återhydreringsprioriteten för och välj bloben.
Välj knappen Ändra nivå .
I dialogrutan Ändra nivå anger du åtkomstnivån till mål-onlineåtkomstnivån för den reaktiverande blobben (het eller kall). Fältet Arkivstatus visar onlinenivån för mål.
I listrutan Återställ prioritet anger du prioriteten till Hög.
Välj Spara.
Om du vill ändra återfuktningsprioriteten för en väntande åtgärd med PowerShell kontrollerar du att du har installerat Az.Storage-modulen version 3.12.0 eller senare. Hämta sedan blobens egenskaper från tjänsten. Det här steget är nödvändigt för att säkerställa att du har ett objekt med de senaste egenskapsinställningarna. Använd slutligen blobens BlobClient-egenskap för att returnera en .NET-referens till bloben och anropa sedan metoden SetAccessTier för den referensen.
# Get the blob from the service.
$rehydratingBlob = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
# Verify that the current rehydration priority is Standard.
if ($rehydratingBlob.BlobProperties.RehydratePriority -eq "Standard")
{
# Change rehydration priority to High, using the same target tier.
if ($rehydratingBlob.BlobProperties.ArchiveStatus -eq "rehydrate-pending-to-hot")
{
$rehydratingBlob.BlobClient.SetAccessTier("Hot", $null, "High")
"Changing rehydration priority to High for blob moving to hot tier."
}
if ($rehydratingBlob.BlobProperties.ArchiveStatus -eq "rehydrate-pending-to-cool")
{
$rehydratingBlob.BlobClient.SetAccessTier("Cool", $null, "High")
"Changing rehydration priority to High for blob moving to cool tier."
}
}
Om du vill ändra återfuktningsprioriteten för en väntande åtgärd med Azure CLI kontrollerar du först att du har installerat Azure CLI, version 2.29.2 eller senare. Mer information om hur du installerar Azure CLI finns i Så här installerar du Azure CLI.
Anropa sedan kommandot az storage blob set-tier med parametern inställd på --rehydrate-priorityHög. Målnivån (varm eller kall) måste vara samma nivå som du ursprungligen angav för återställningsoperationen. Kom ihåg att ersätta platshållare inom vinkelparenteser med dina egna värden:
# Update the rehydration priority for a blob moving to the hot tier.
az storage blob set-tier \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--tier Hot \
--rehydrate-priority High \
--auth-mode login
# Show the updated property values.
az storage blob show \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--query '[rehydratePriority, properties.rehydrationStatus]' \
--output tsv \
--auth-mode login
Ändra rehydreringsprioriteten för en väntande kopieringsblobåtgärd
När du rehydrerar en blob genom att kopiera den arkiverade bloben till en onlinenivå skapar Azure Storage omedelbart målbloben på onlinenivån. Målbloben rehydreras sedan till den önskade nivån med den prioritet som specificerats för kopieringsåtgärden. Mer information om hur du återställer en arkiverad blob med en kopieringsåtgärd finns i Kopiera en arkiverad blob till en onlinenivå.
Om du vill utföra kopieringsåtgärden från arkivnivån till en onlinenivå med standardprioritet använder du PowerShell, Azure CLI eller något av Azure Storage-klientbiblioteken. Mer information finns i Rehydrate a blob with a copy operation (Återskapa en blob med en kopieringsåtgärd). Om du vill ändra rehydreringsprioriteten från Standard till Hög för den väntande rehydreringen anropar du Ange blobnivå på målbloben för att specificera målnivån.
När du har initierat kopieringsåtgärden ser du i Azure-portalen att både käll- och målbloben finns på arkivnivån. Målbloben rehydrerar med Standardprioritet.
Följ dessa steg om du vill ändra rehydreringsprioriteten för målbloben:
- Välj målbloben.
- Välj knappen Ändra nivå .
- I dialogrutan Ändra nivå ställer du in åtkomstnivån till den önskade online-åtkomstnivån för den återaktiverade bloben (hot eller cool). Fältet Arkivstatus visar onlinenivån för mål.
- I listrutan Rehydrate priority anger du prioriteten till Hög.
- Välj Spara.
Målblobens egenskapssida visar nu att den är uttorkande med hög prioritet.
När du har initierat kopieringsåtgärden kontrollerar du egenskaperna för målbloben. Du ser att målblobben finns på arkivnivån och håller på att återställas med standardprioritet.
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$destContainerName = "<container>"
$destBlobName = "<destination-blob>"
# Get the storage account context
$ctx = (Get-AzStorageAccount `
-ResourceGroupName $rgName `
-Name $accountName).Context
# Get properties for the destination blob.
$destinationBlob = Get-AzStorageBlob -Container $destContainerName `
-Blob $destBlobName `
-Context $ctx
$destinationBlob.BlobProperties.AccessTier
$destinationBlob.BlobProperties.ArchiveStatus
$destinationBlob.BlobProperties.RehydratePriority
Anropa sedan metoden SetAccessTier via PowerShell för att ändra rehydreringsprioriteten för målbloben till Hög, enligt beskrivningen i Ändra rehydreringsprioriteten för en väntande åtgärd på Set Blob Tier. Målnivån (frekvent eller lågfrekvent) måste vara samma nivå som du ursprungligen angav för återfuktningsåtgärden. Kontrollera egenskaperna igen för att kontrollera att bloben nu är uttorkad med hög prioritet.
När du har initierat kopieringsåtgärden kontrollerar du egenskaperna för målbloben. Du ser att målbloben finns på arkivnivån och håller på att extraheras med standardprioritet.
az storage blob show \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--query '[rehydratePriority, properties.rehydrationStatus]' \
--output tsv \
--auth-mode login
Nästa, anropa kommandot az storage blob set-tier med parametern --rehydrate-priority inställd på Hög, enligt Ändra rehydreringsprioriteten för en väntande Set Blob Tier åtgärd. Målnivån (het eller kall) måste vara samma nivå som du ursprungligen angav för återställningsoperationen. Kontrollera egenskaperna igen för att kontrollera att bloben nu är uttorkad med hög prioritet.
Se även