分享方式:


設定 Blob 的存取層

您可以使用下列任何一種方式來設定 Blob 的存取層:

  • 透過將預設的線上存取層設定為使用儲存體帳戶。 除非您明確覆寫個別 Blob 的設定,否則帳戶中的 Blob 會繼承此存取層。
  • 透過在上傳時明確設定 Blob 階層。 您可以在經常性存取、非經常性存取、極非經常性存取或封存層中建立 Blob。
  • 使用 Set Blob Tier 作業變更現有的 Blob 階層。 一般而言,您會使用此作業,從較常存取層變更為較少存取層。
  • 使用 Copy Blob 作業來複製 Blob。 一般而言,您會使用此作業,從較少存取層變更為較常存取層。

本文說明如何管理線上存取層中的 Blob。 如需關於如何將 Blob 移至封存層的詳細資訊,請參閱封存 Blob (部分機器翻譯)。 如需關於如何從封存層解除凍結 Blob 的詳細資訊,請參閱將封存的 Blob 解除凍結至線上層 (部分機器翻譯)。

如需 Blob 存取層的詳細資訊,請參閱 Blob 資料的存取層 (部分機器翻譯)。

管理儲存體帳戶的預設存取層

一般用途 v2 儲存體帳戶的預設存取層設定會決定依預設建立新 Blob 的線上層。 您可以在建立帳戶時,或藉由更新現有帳戶的設定,來設定一般用途 v2 儲存體帳戶的預設存取層。

當您變更現有一般用途 v2 儲存體帳戶的預設存取層設定時,變更會套用至帳戶中未明確設定存取層的所有 Blob。 變更預設存取層可能會對帳單產生影響。 如需詳細資訊,請參閱預設帳戶存取層設定

若要在 Azure 入口網站建立期間設定儲存體帳戶的預設存取層,請遵循下列步驟:

  1. 瀏覽至 [儲存體帳戶] 頁面,然後選取 [建立] 按鈕。

  2. 填寫 [基本] 索引標籤。

  3. 在 [進階] 索引標籤的 [Blob 儲存體] 下方,將 [存取層] 設定為 [經常性存取層]、[非經常性存取層] 或 [極非經常性存取]。 預設值為 [經常性存取層]

  4. 選取 [檢閱 + 建立] 以驗證您的設定,然後建立您的儲存體帳戶。

    螢幕擷取畫面,顯示建立儲存體帳戶時如何設定預設存取層。

若要更新 Azure 入口網站中現有儲存體帳戶的預設存取層,請遵循下列步驟:

  1. 瀏覽至 Azure 入口網站中的儲存體帳戶。

  2. 在 [設定] 底下,選取 [設定]

  3. 找出 [Blob 存取層 (預設值)] 設定,然後選取 [經常性存取層]、[非經常性存取層] 或 [極非經常性存取]。 如果您先前未設定此屬性,則預設設定為 [經常性存取層]

  4. 儲存您的變更。

在上傳時設定 Blob 的階層

當您將 Blob 上傳至 Azure 儲存體時,您有兩個選項可供您在上傳時設定 Blob 層:

  • 您可以明確指定將用來建立 Blob 的階層。 此設定會覆寫儲存體帳戶的預設存取層。 您可以在上傳至經常性存取、非經常性存取、極非經常性存取或封存層時,設定一個 Blob 或一組 Blob 的階層。
  • 您可以上傳 Blob 而不指定階層。 在此情況下,將會在針對儲存體帳戶指定的預設存取層中建立 Blob (經常性存取層或非經常性存取層)。

如果您要上傳使用加密範圍的新 Blob,則無法變更該 Blob 的存取層。

下列各節說明如何指定將 Blob 上傳至經常性存取層或非經常性存取層。 如需關於在上傳時封存 Blob 的詳細資訊,請參閱上傳時封存 Blob

將 Blob 上傳至特定的線上層

若要在經常性存取層、非經常性存取層或極非經常性存取層中建立 Blob,請在建立 Blob 時指定該階層。 上傳時指定的存取層會覆寫儲存體帳戶的預設存取層。

若要從 Azure 入口網站將一個 Blob 或一組 Blob 上傳至特定階層,請遵循下列步驟:

  1. 瀏覽至目標容器。

  2. 選取上傳按鈕。

  3. 選取要上傳的檔案。

  4. 展開 [進階] 區段,並將 [存取層] 設定為 [經常性存取層] 或 [非經常性存取層]

  5. 選取上傳按鈕。

    螢幕擷取畫面,顯示如何在 Azure 入口網站中將 Blob 上傳至線上層。

將 Blob 上傳至預設層

儲存體帳戶具有一個預設存取層設定,可指出建立新 Blob 的線上層位置。 預設存取層設定可以設定為經常性存取層或非經常性存取層。 這項設定的行為會因儲存體帳戶類型而略有不同:

  • 預設會將新一般用途 v2 儲存體帳戶的預設存取層設定為經常性存取層。 當您建立儲存體帳戶時,或在建立儲存體帳戶之後,您可以變更預設存取層設定。
  • 當您建立舊版 Blob 儲存體帳戶時,您必須在建立儲存體帳戶時,將預設存取層設定指定為經常性存取層或非經常性存取層。 您可以在建立儲存體帳戶之後,變更其預設存取層設定。

若 Blob 未明確獲指派任何階層,系統就會從預設帳戶存取層設定推斷其階層。 您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來判斷是否推斷 Blob 的存取層。

如果 Blob 的存取層是從預設帳戶存取層設定推斷而來,則 Azure 入口網站會將存取層顯示為 [經常性存取層 (推斷)]、[非經常性存取層 (推斷)] 或 [極非經常性存取 (推斷)]

螢幕擷取畫面,顯示 Azure 入口網站中使用預設存取層的 Blob。

將 Blob 移至不同的線上層

您可以使用下列其中一種方式,將 Blob 移至不同的線上層:

  • 透過變更存取層。
  • 透過將 Blob 複製到不同的線上層。

如需每個選項的詳細資訊,請參閱設定或變更 Blob 的階層

使用 PowerShell、Azure CLI、AzCopy v10 或其中一個 Azure 儲存體的用戶端程式庫,將 Blob 移至不同的階層。

變更 Blob 的階層

當您變更 Blob 的階層時,您可以呼叫 Set Blob Tier 作業 (直接或透過生命週期管理t原則) 或透過 AzCopy 使用 azcopy set-properties 命令,將該 Blob 和其所有資料移至目標層。 當您將 Blob 的階層從較常存取層變更為較少存取層時,此選項通常是最佳選項。

提示

您可以使用儲存體工作,根據定義的一組條件,跨多個儲存體帳戶大規模地變更存取層。 儲存體工作是 [Azure 儲存體動作] 中可用的資源;可用於跨多個儲存體帳戶對數百萬個物件執行一般資料作業的無伺服器架構。 若要深入了解,請參閱什麼是 Azure 儲存體動作?

若要在 Azure 入口網站中將 Blob 階層變更為較少存取層,請遵循下列步驟:

  1. 瀏覽至您要變更階層的 Blob。

  2. 選取 Blob,然後選取 [變更階層] 按鈕。

  3. 在 [變更階層] 對話方塊中,選取目標層。

  4. 選取儲存按鈕。

    螢幕擷取畫面,顯示如何在 Azure 入口網站變更 Blob 層

將 Blob 複製到不同的線上層

呼叫 Copy Blob 作業,將 Blob 從某個階層複製到另一個階層。 當您將 Blob 複製到不同的階層時,會將該 Blob 及其所有資料移至目標層。 來源 Blob 會保留在原始層中,並在目標層中建立新的 Blob。 針對將 Blob 移至較常存取層或從封存儲存層解除凍結 Blob 的案例,建議您使用呼叫 Copy Blob

N/A

大量階層處理

若要將 Blob 移至容器或資料夾中的另一個階層,請列舉 Blob,並對每個 Blob 呼叫 Set Blob Tier 作業。 下列範例示範如何執行這項作業:

N/A

將大量 Blob 移至其他階層時,請使用批次作業以獲得最佳效能。 批次作業會透過單一要求,將多個 API 呼叫傳送至服務。 Blob 批次作業支援的子作業包括刪除 Blob設定 Blob 層

若要使用批次作業變更 Blob 的存取層,請使用其中一個 Azure 儲存體用戶端程式庫。 下列程式碼範例示範如何使用 .NET 用戶端程式庫來執行基本批次作業:

static async Task BulkArchiveContainerContents(string accountName, string containerName)
{
    string containerUri = string.Format("https://{0}.blob.core.windows.net/{1}",
                                    accountName,
                                    containerName);

    // Get container client, using Azure AD credentials.
    BlobUriBuilder containerUriBuilder = new BlobUriBuilder(new Uri(containerUri));
    BlobContainerClient blobContainerClient = new BlobContainerClient(containerUriBuilder.ToUri(), 
                                                                      new DefaultAzureCredential());

    // Get URIs for blobs in this container and add to stack.
    var uris = new Stack<Uri>();
    await foreach (var item in blobContainerClient.GetBlobsAsync())
    {
        uris.Push(blobContainerClient.GetBlobClient(item.Name).Uri);
    }

    // Get the blob batch client.
    BlobBatchClient blobBatchClient = blobContainerClient.GetBlobBatchClient();

    try
    {
        // Perform the bulk operation to archive blobs.
        await blobBatchClient.SetBlobsAccessTierAsync(blobUris: uris, accessTier: AccessTier.Archive);
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
    }
}

如需深入解析的範例應用程式示範如何使用批次作業變更階層,請參閱 AzBulkSetBlobTier

下一步