可以使用 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 | 吞吐量层级 | 存储最小值 | 默认最大值 | 支持的最大容量 | 递增 |
|---|---|---|---|---|---|
| AMLFS-Durable-Premium-20 | 20 MBps | 96 TiB | 3,072 TiB | 25,632 TiB | 96 TiB |
| AMLFS-Durable-Premium-40 | 40 MBps | 48 TiB | 1,536 TiB | 12,816 TiB | 48 TiB |
| AMLFS-Durable-Premium-125 | 125 MBps | 16 TiB | 512 TiB | 4,096 TiB | 16 TiB |
| AMLFS-Durable-Premium-250 | 250 MBps | 8 TiB | 256 TiB | 2,048 TiB | 8 TiB |
| AMLFS-Durable-Premium-500 | 500 MBps | 4 TiB | 128 TiB | 1,024 TiB | 4 TiB |
若要使订阅能够部署容量大于默认最大值的文件系统, 请开具支持票证。
若要检查 SKU 功能,可以使用工作流通过Azure 门户创建托管 Lustre 文件系统。 SKU 特定设置位于文件系统详细信息下的基本信息选项卡上。
创建模板文件
确定配置选项后,可以创建模板文件。 模板文件是一个 JSON 或 Bicep 文件,其中包含 Azure 托管 Lustre 文件系统的配置详细信息。
模板属性值
若要使用 ARM 模板创建 Azure 托管 Lustre 文件系统,需要在模板文件中包括以下信息。 Bicep 和 JSON 之间的确切语法不同,因此请查阅文本值的示例。
文件系统
| 名称 | Description | 价值 |
|---|---|---|
| 类型 | 要创建的资源的类型。 | Microsoft.StorageCache/amlFileSystems |
| apiVersion | 要使用的 Azure 托管 Lustre API 的版本。 | 使用当前 API 版本,例如 2024-03-01 |
| 名字 | Azure 托管 Lustre 文件系统的唯一名称。 | string (必需) |
| 位置 | 资源所在的地理位置。 使用短名称而非显示名称,例如,使用 chinanorth3 而非 China North 3。 |
string (必需) |
| tags | 文件系统的资源标记。 | 标记名称和值的字典;请参阅 模板中的标记 |
| SKU | 资源的性能 SKU。 | 请参阅 SKU 名称 |
| 标识 | 要用于文件系统的托管标识(如果已配置)。 | 请参阅身份 |
| properties | 文件系统的属性。 | 请参阅 属性 |
| 区域 | 资源的可用性区域。 此字段应仅包含数组中的单个元素。 | string[] |
Identity
| 名称 | Description | 价值 |
|---|---|---|
| 类型 | 资源所使用的标识类型。 |
None、UserAssigned |
| userAssignedIdentities | 一个字典,其中每个密钥是用户分配的标识资源 ID,并且每个密钥的值都是空字典。 | 请参阅 模板文档 |
属性
| 名称 | Description | 价值 |
|---|---|---|
| 加密设置 | 文件系统的加密设置。 | 请参阅 加密设置 |
| 文件系统子网 | 文件系统使用的子网。 | string (必需) |
| hsm | 文件系统的 Blob 存储容器设置。 | 请参阅 HSM 设置 |
| 维护窗口 | 指定发生系统更新的日期和时间。 | 请参阅维护时间窗口(必填) |
| rootSquashSettings | 指定文件系统的 root squash 设置。 | 请参阅Root squash 设置 |
| storageCapacityTiB | 文件系统的大小(以 TiB 为单位)。 若要详细了解基于 SKU 的此字段允许的值,请参阅 “选择文件系统类型和大小”。 | int (必需) |
加密设置
| 名称 | Description | 价值 |
|---|---|---|
| keyEncryptionKey | 指定密钥库中加密密钥的位置。 | 请参阅 模板文档 |
HSM 设置
| 名称 | Description | 价值 |
|---|---|---|
| 容器 | 用于水合命名空间和从命名空间存档的存储容器资源 ID。 资源提供程序必须有权在存储帐户上创建 SAS 令牌。 | string (必需) |
| importPrefix | 只有以此路径/前缀开头的非日志记录容器中的 blob 才会导入到群集命名空间中。 这仅在初始创建 Azure 托管 Lustre 文件系统期间使用。 | 字符串 |
| importPrefixesInitial | 只有非日志记录容器中以此数组内某一路径/前缀开头的 Blob 会被导入到集群命名空间。 此值仅在初始创建 Azure 托管 Lustre 文件系统期间使用,并将“/”用作默认值。 | string[] |
| loggingContainer | 用于记录事件和错误的存储容器的资源 ID。 必须是与冻结和存档容器位于同一存储帐户中的单独容器。 资源提供程序必须有权在存储帐户上创建 SAS 令牌。 | string (必需) |
Note
使用该 importPrefixesInitial 属性可以指定多个前缀,以便将数据导入文件系统,同时 importPrefix 允许指定单个前缀。 这两个属性的默认值为 /。 如果定义其中一个属性,则无法定义另一个属性。 如果定义这两个属性,部署将失败。
若要了解详细信息,请参阅 “导入前缀”。
维护时段
| 名称 | Description | 价值 |
|---|---|---|
| dayOfWeek | 维护时段可能发生的一周中的一天。 |
Sunday、Monday、Tuesday、Wednesday、Thursday、Friday、Saturday |
| 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]$.
根用户压缩设置
| 名称 | Description | 价值 |
|---|---|---|
| mode | AML 文件系统的 Squash 模式。 “All”:文件上的用户和组 ID 被压缩为非受信任系统上所有用户提供的值。 “RootOnly”:在不受信任的系统上,文件的用户和组 ID 仅针对 root 用户被映射为指定的值。 “无”:不会对任何系统上的任何用户执行用户和组 ID 的挤压。 |
All、None、RootOnly |
| noSquashNidLists | 要添加到 TrustedSystems 中的、以分号分隔的 NID IP 地址列表。 | 字符串 |
| squashGID | 要合并到的组 ID。 | int |
| squashUID | 要压缩到的用户 ID。 | int |
SKU 名称
| 名称 | Description | 价值 |
|---|---|---|
| 名字 | 资源的 SKU 名称。 |
AMLFS-Durable-Premium-40、AMLFS-Durable-Premium-125、AMLFS-Durable-Premium-250、AMLFS-Durable-Premium-500 |
使用模板部署文件系统
以下示例步骤使用 Azure CLI 命令创建新的资源组,并在其中创建 Azure 托管 Lustre 文件系统。 这些步骤假定你已 选择文件系统类型和大小 并 创建了模板文件,如本文前面所述。 此外,请确保满足所有 先决条件。
设置默认订阅:
az account set --subscription "<subscription-id>" az account show(可选)为 Azure 托管 Lustre 文件系统创建新的资源组。 如果要使用现有资源组,请跳过此步骤,并在运行模板命令时提供现有资源组的名称。
az group create --name <rg-name> --location <region-short-name>只要资源位于同一订阅中,文件系统就可以在其自己的资源组外部使用资源。
使用模板部署 Azure 托管 Lustre 文件系统。 语法取决于是使用 JSON 还是 Bicep 文件,以及文件数。
可以将 Bicep 和 JSON 模板部署为单个文件或多个文件。 有关详细信息并查看每个选项的确切语法,请参阅 ARM 模板文档。
示例 JSON 命令:
az deployment group create \ --name <example-deployment> \ --resource-group <resource-group-name> \ --template-file azlustre-template.jsonBicep 命令示例:
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": "chinanorth3",
"tags": {
"Dept": "ContosoAds"
},
"sku": {
"name": "AMLFS-Durable-Premium-250"
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": {}
}
},
"properties": {
"encryptionSettings": {
"keyEncryptionKey": {
"keyUrl": "https://<keyvault-name>.vault.azure.cn/keys/kvk/<key>",
"sourceVault": {
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>"
}
}
},
"filesystemSubnet": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
"hsm": {
"settings": {
"container": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>",
"loggingContainer": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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: 'chinanorth3'
tags: {
Dept: 'ContosoAds'
}
sku: {
name: 'AMLFS-Durable-Premium-250'
}
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>': {}
}
}
properties: {
encryptionSettings: {
keyEncryptionKey: {
keyUrl: 'https://<keyvault-name>.vault.azure.cn/keys/kvk/<key>'
sourceVault: {
id: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>'
}
}
}
filesystemSubnet: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>'
hsm: {
settings: {
container: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>'
importPrefixesInitial: [
'/'
]
loggingContainer: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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'
]
}