使用 Azure 资源管理器 模板创建 Azure 托管 Lustre 文件系统

可以使用 Azure 资源管理器 (ARM) 模板自动创建 Azure 托管 Lustre 文件系统。 本文介绍了基本过程,并提供了所需文件的示例。

本文提供了用于创建 ARM 模板的两种不同的方法的示例:

  • 使用 JSON 直接创建 ARM 模板。 若要了解详细信息,请参阅 JSON 模板语法
  • 使用 Bicep,它使用更简单的语法来提供配置详细信息。 部署模板时,Bicep 文件将转换为 ARM 模板文件。 若要了解详细信息,请参阅 Bicep 文档

若要了解有关这些选项的详细信息,请参阅 比较模板的 JSON 和 Bicep。

选择文件系统类型和大小

在编写模板之前,必须就 Azure 托管 Lustre 文件系统做出一些决策。 若要了解有关配置选项的详细信息,请参阅“创建 Azure 托管 Lustre 文件系统”中的设置详细信息。

使用模板时,请指定 SKU 以定义要创建的 Azure 托管 Lustre 文件系统的基本类型。 SKU 表示产品层。 它设置系统质量,例如磁盘类型、支持的存储量和最大吞吐量容量。 如果使用Azure 门户创建 Azure 托管 Lustre 文件系统,则通过选择其功能间接指定系统类型。

下表显示了每个受支持的 SKU 中吞吐量和存储大小的值。 这些 SKU 创建使用持久 SSD 存储的文件系统。

SKU 每 TiB 存储的吞吐量 存储最小值 存储最大值 增量
AMLFS-Durable-Premium-40 40 MBps 48 TB 768 TB 48 TB
AMLFS-Durable-Premium-125 125 MBps 16 TB 128 TB 16 TB
AMLFS-Durable-Premium-250 250 MBps 8 TB 128 TB 8 TB
AMLFS-Durable-Premium-500 500 MBps 4 TB 128 TB 4 TB

如果需要大于列出的最大值的存储值,可以 打开支持票证 来浏览选项。

若要检查 SKU 功能,可以使用工作流通过Azure 门户创建托管 Lustre 文件系统。 特定于 SKU 的设置位于文件系统详细信息下的“基本信息”选项卡上。

创建模板文件

确定配置选项后,可以创建模板文件。 模板文件是一个 JSON 或 Bicep 文件,其中包含 Azure 托管 Lustre 文件系统的配置详细信息。

模板属性值

若要使用 ARM 模板创建 Azure 托管 Lustre 文件系统,需要在模板文件中包括以下信息。 Bicep 和 JSON 之间的确切语法不同,因此请查阅文本值的示例。

文件系统

名称 描述
type 要创建的资源的类型。 Microsoft.StorageCache/amlFileSystems
apiVersion 要使用的 Azure 托管 Lustre API 的版本。 使用当前 API 版本,例如 2024-03-01
name Azure 托管 Lustre 文件系统的唯一名称。 string (必需)
location 资源所在的地理位置。 使用短名称而不是显示名称,例如,使用 eastus 而不是 East US显示名称。 string (必需)
标记 文件系统的资源标记。 标记名称和值的字典;请参阅 模板中的标记
sku 资源的性能 SKU。 请参阅 SKU 名称
标识 要用于文件系统的托管标识(如果已配置)。 请参阅 标识
properties 文件系统的属性。 请参阅 属性
zones 资源的可用性区域。 此字段应仅包含数组中的单个元素。 string[]

标识

名称 描述
type 用于资源的标识类型。 None, UserAssigned
userAssignedIdentities 一个字典,其中每个密钥是用户分配的标识资源 ID,并且每个密钥的值都是空字典。 请参阅 模板文档

属性

名称 描述
encryptionSettings 文件系统的加密设置。 请参阅 加密设置
filesystemSubnet 文件系统使用的子网。 string (必需)
hsm 文件系统的 Blob 存储容器设置。 请参阅 HSM 设置
maintenanceWindow 指定发生系统更新的日期和时间。 请参阅 维护时段 (必需)
rootSquashSettings 指定文件系统的根壁球设置。 请参阅 根壁球设置
storageCapacityTiB 文件系统的大小(以 TiB 为单位)。 若要详细了解基于 SKU 的此字段允许的值,请参阅 “选择文件系统类型和大小”。 int (必需)

加密设置

名称 描述
keyEncryptionKey 指定密钥库中加密密钥的位置。 请参阅 模板文档

HSM 设置

名称 描述
容器 用于从命名空间中解除命名空间和存档的存储容器的资源 ID。 资源提供程序必须有权在存储帐户上创建 SAS 令牌。 string (必需)
importPrefix 只有以此路径/前缀开头的非日志记录容器中的 blob 才会导入到群集命名空间中。 这仅在初始创建 Azure 托管 Lustre 文件系统期间使用。 string
importPrefixesInitial 仅此数组中以其中一个路径/前缀开头的非日志记录容器中的 Blob 导入到群集命名空间中。 此值仅在初始创建 Azure 托管 Lustre 文件系统期间使用,并将“/”用作默认值。 string[]
loggingContainer 用于记录事件和错误的存储容器的资源 ID。 必须是与冻结和存档容器位于同一存储帐户中的单独容器。 资源提供程序必须有权在存储帐户上创建 SAS 令牌。 string (必需)

注意

使用该 importPrefixesInitial 属性可以指定多个前缀,以便将数据导入文件系统,同时 importPrefix 允许指定单个前缀。 这两个属性的默认值为 /。 如果定义其中一个属性,则无法定义另一个属性。 如果定义这两个属性,部署将失败。

若要了解详细信息,请参阅 “导入前缀”。

维护时段

名称 描述
dayOfWeek 维护时段可能发生的一周中的一天。 Sunday、、MondayTuesdayWednesdayThursday、、 FridaySaturday
timeOfDayUTC 可能会发生维护时段(UTC)的时间。 字符串
示例: 22:30

timeOfDayUTC 属性使用 24 小时制格式。 例如, 22:30 表示下午 10:30。 模式为 ^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$.

根壁球设置

名称 描述
mode AML 文件系统的 Squash 模式。 “All”:文件上的用户和组 ID 被压缩为非受信任系统上所有用户提供的值。 “RootOnly”:文件上的用户和组 ID 被挤在一起,为非受信任的系统上的根用户提供值。 “无”:不会对任何系统上的任何用户执行用户和组 ID 的挤压。 AllNone、、 RootOnly
noSquashNidLists 要添加到 TrustedSystems 的分号分隔 NID IP 地址列表。 string
squashGID 要挤压到的组 ID。 int
squashUID 要挤压到的用户 ID。 int

SKU 名称

名称 描述
name 资源的 SKU 名称。 AMLFS-Durable-Premium-40、、AMLFS-Durable-Premium-125AMLFS-Durable-Premium-250、、AMLFS-Durable-Premium-500

使用模板部署文件系统

以下示例步骤使用 Azure CLI 命令创建新的资源组,并在其中创建 Azure 托管 Lustre 文件系统。 这些步骤假定你已 选择文件系统类型和大小创建了模板文件,如本文前面所述。 此外,请确保满足所有 先决条件

  1. 设置默认订阅:

    az account set --subscription "<subscription-id>"
    az account show
    
  2. (可选)为 Azure 托管 Lustre 文件系统创建新的资源组。 如果要使用现有资源组,请跳过此步骤,并在运行模板命令时提供现有资源组的名称。

    az group create --name <rg-name> --location <region-short-name>
    

    只要资源位于同一订阅中,文件系统就可以在其自己的资源组外部使用资源。

  3. 使用模板部署 Azure 托管 Lustre 文件系统。 语法取决于是使用 JSON 还是 Bicep 文件,以及文件数。

    可以将 Bicep 和 JSON 模板部署为单个文件或多个文件。 有关详细信息并查看每个选项的确切语法,请参阅 ARM 模板文档

    示例 JSON 命令:

    az deployment group create \
      --name <example-deployment> \
      --resource-group <resource-group-name> \
      --template-file azlustre-template.json
    

    示例 Bicep 命令:

    az deployment group create \
     --resource-group <ResourceGroupName> \
     --template-file azlustre.bicep
    

JSON 示例

本部分显示 JSON 模板文件的示例内容。 创建自己的 ARM 模板时,可以删除可选参数。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.StorageCache/amlFilesystems",
            "apiVersion": "2024-03-01",
            "name": "amlfs-example",
            "location": "eastus",
            "tags": {
              "Dept": "ContosoAds"
            },
            "sku": {
              "name": "AMLFS-Durable-Premium-250"
            },
            "identity": {
              "type": "UserAssigned",
              "userAssignedIdentities": {
                "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": {}
              }
            },
            "properties": {
              "encryptionSettings": {
                "keyEncryptionKey": {
                  "keyUrl": "https://<keyvault-name>.vault.azure.net/keys/kvk/<key>",
                  "sourceVault": {
                    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>"
                  }
                }
              },
              "filesystemSubnet": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
              "hsm": {
                "settings": {
                  "container": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>",
                  "loggingContainer": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<logging-container-name>",
                  "importPrefixesInitial": [
                    "/"
                  ]
                }
              },
              "maintenanceWindow": {
                "dayOfWeek": "Saturday",
                "timeOfDayUTC": "22:00"
              },
              "rootSquashSettings": {
                "mode": "All",
                "noSquashNidLists": "10.0.0.[5-6]@tcp;10.0.1.2@tcp",
                "squashGID": "99",
                "squashUID": "99"
              },
              "storageCapacityTiB": "16"
            },
            "zones": [
              "1"
            ],
        }
    ],
    "outputs": {}
}

Bicep 示例

本部分显示 Bicep 文件的示例内容。 创建自己的参数时,可以删除可选参数。

resource filesystem 'Microsoft.StorageCache/amlFilesystems@2024-03-01' = {
  name: 'amlfs-example'
  location: 'eastus'
  tags: {
    Dept: 'ContosoAds'
  }
  sku: {
    name: 'AMLFS-Durable-Premium-250'
  }
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>': {}
    }
  }
  properties: {
    encryptionSettings: {
      keyEncryptionKey: {
        keyUrl: 'https://<keyvault-name>.vault.azure.net/keys/kvk/<key>'
        sourceVault: {
          id: '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>'
        }
      }
    }
    filesystemSubnet: '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>'
    hsm: {
      settings: {
        container: '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>'
        importPrefixesInitial: [
          '/'
        ]
        loggingContainer: '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<logging-container-name>'
      }
    }
    maintenanceWindow: {
      dayOfWeek: 'Saturday'
      timeOfDayUTC: '22:00'
    }
    rootSquashSettings: {
      mode: 'All'
      noSquashNidLists: '10.0.0.[5-6]@tcp;10.0.1.2@tcp'
      squashGID: 99
      squashUID: 99
    }
    storageCapacityTiB: 16
  }
  zones: [
    '1'
  ]
}