设置 blob 的访问层

可以通过以下任一方式设置 blob 的访问层:

  • 为存储帐户设置默认联机访问层(热访问层或冷访问层)。 除非显式重写单个 blob 的设置,否则帐户中的 blob 会继承此访问层。
  • 通过在上传时显式设置 blob 的层。 可以在热、冷、寒或存档层中创建 Blob。
  • 使用“设置 Blob 层”操作更改现有 blob 的层。 通常会使用此操作从较热的层移到较冷的层。
  • 使用“复制 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 操作(直接或通过生命周期管理策略调用),或将 azcopy Set -properties 命令与 AzCopy 配合使用,从而将该 blob 及其所有数据移动到目标层。 将 Blob 的层从较热的层更改为较冷的层时,此操作通常是最佳选择。

若要在 Azure 门户中将 blob 的层更改为较冷的层,请执行以下步骤:

  1. 导航到要更改其层的 blob。

  2. 选择该 blob,然后选择“更改层”按钮。

  3. 在“更改层”对话框中,选择目标层。

  4. 选择“保存”按钮。

    显示如何在 Azure 门户中更改 blob 的层的屏幕截图

将 blob 复制到不同的联机层

调用 Copy Blob 操作以将 Blob 从一个层复制到另一个层。 将 blob 复制到不同层时,会将该 blob 及其所有数据移动到目标层。 源 blob 将保留在原始层中,并在目标层中创建一个新的 blob。 对于将 blob 移到较暖的层或将其从存档层解除冻结的大多数情况,建议调用复制 Blob

空值

批量分层

若要将 Blob 移到容器或文件夹中的另一个层级,请枚举 Blob 并对每个 Blob 调用“设置 Blob 层”操作。 下面的示例展示了如何执行此操作:

空值

将大量 Blob 移动到另一个层级时,请使用批处理操作以获得最佳性能。 批处理操作通过单个请求向服务发送多个 API 调用。 Blob 批处理操作支持的子操作包括删除 Blob设置 Blob 层

注意

具有分层命名空间的帐户尚不支持“Blob 批处理”操作的“设置 Blob 层”子操作。

若要使用批处理操作更改 Blob 的访问层,请使用其中一个 Azure 存储客户端库。 以下代码示例显示了如何使用 .NET 客户端库执行基本的批处理操作:

static async Task BulkArchiveContainerContents(string accountName, string containerName)
{
    string containerUri = string.Format("https://{0}.blob.core.chinacloudapi.cn/{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

后续步骤