Создание управляемой файловой системы Lustre Azure с помощью шаблонов Azure Resource Manager

Вы можете автоматизировать создание управляемой файловой системы Lustre Azure с помощью шаблонов Azure Resource Manager (ARM). В этой статье описана базовая процедура и приведены примеры необходимых файлов.

В этой статье приведены примеры двух различных методов создания шаблонов ARM:

  • Используйте JSON для непосредственного создания шаблонов ARM. Дополнительные сведения см. в разделе «Синтаксис шаблона JSON».
  • Используйте Bicep, который использует более простой синтаксис для предоставления сведений о конфигурации. При развертывании шаблона файлы Bicep преобразуются в файлы шаблонов ARM. Дополнительные сведения см. в документации по Bicep.

Дополнительные сведения об этих параметрах см. в статье "Сравнение JSON и Bicep" для шаблонов.

Выбор типа файловой системы и размера

Прежде чем писать шаблон, необходимо принять некоторые решения об управляемой файловой системе Lustre Azure. Дополнительные сведения о параметрах конфигурации см. в статье "Создание управляемой файловой системы Lustre Azure".

При использовании шаблона укажите номер SKU для определения базового типа создаваемой файловой системы Управляемая Azure система Lustre. Номер SKU представляет уровень продукта. Он задает системные качества, такие как тип дисков, поддерживаемый объем хранилища и максимальная пропускная способность. Если вы используете портал Azure для создания файловой системы Управляемая Azure система Lustre, укажите тип системы косвенно, выбрав его возможности.

В следующей таблице показаны значения пропускной способности и емкости хранилища для каждого поддерживаемого номера SKU. Эти номера SKU создают файловую систему, которая использует устойчивое хранилище SSD. Максимальное значение по умолчанию — это ограничение емкости, доступное для подписки по умолчанию. Вы можете запросить увеличение до максимальной поддерживаемой емкости, открыв запрос в службу поддержки.

Номер SKU Уровень пропускной способности Минимальный объем хранилища Максимальное значение по умолчанию Максимальная поддерживаемая емкость Приращение
AMLFS-Durable-Premium-20 20 МБИТ/с 96 ТиБ 3072 ТиБ 25 632 ТиБ 96 ТиБ
AMLFS-Durable-Premium-40 40 Мбит/с 48 ТиБ 1536 ТиБ 12 816 ТиБ 48 ТиБ
AMLFS-Durable-Premium-125 125 Мбит/с 16 ТиБ 512 ТиБ 4096 ТиБ 16 ТиБ
AMLFS-Durable-Premium-250 250 Мбит/с 8 ТиБ 256 ТиБ 2048 ТиБ 8 ТиБ
AMLFS-Durable-Premium-500 500 Мбит/с 4 ТиБ 128 ТиБ 1024 ТиБ 4 ТиБ

Чтобы включить подписку для развертывания файловой системы с емкостью, превышающей максимальное значение по умолчанию, откройте запрос в службу поддержки.

Чтобы проверить возможности SKU, можно использовать инструкцию по созданию файловой системы Managed Lustre с помощью портала Azure. Параметры SKU находятся на вкладке "Основные сведения о файловой системе".

Создание файла шаблона

После выбора параметров конфигурации можно создать файл шаблона. Файл шаблона — это JSON или Bicep-файл, содержащий сведения о конфигурации для файловой системы Управляемая Azure система Lustre.

Значения свойств шаблона

Чтобы создать управляемую файловую систему Lustre Azure с помощью шаблона ARM, необходимо включить в файл шаблона следующие сведения. Точный синтаксис отличается от Bicep и JSON, поэтому ознакомьтесь с примерами для литеральных значений.

Файловая система

Имя Описание Значение
тип Тип создаваемого ресурса. Microsoft.StorageCache/amlFileSystems
apiVersion Версия API Управляемая Azure система Lustre, которую следует использовать. Используйте текущую версию API, например 2024-03-01
имя Уникальное имя файловой системы Управляемая Azure система Lustre. строка (обязательно)
расположение Географическое расположение, в котором находится ресурс. Используйте короткое имя, а не отображаемое имя, например, используйте eastus вместо East US. строка (обязательно)
теги Теги ресурсов для файловой системы. Словарь имен и значений тегов; см . теги в шаблонах
sku Номер SKU производительности для ресурса. См. имя SKU
идентичность Управляемая идентификация, используемая для файловой системы, если она настроена. См. раздел "Удостоверение"
свойства Свойства файловой системы. См. статью "Свойства"
зоны Зоны доступности для ресурсов. Это поле должно содержать только один элемент в массиве. string[]

Идентификация

Имя Описание Значение
тип Тип идентификатора, используемого ресурсом. None, UserAssigned
userAssignedIdentities Словарь, в котором каждый ключ является идентификатором ресурса удостоверения, назначенным пользователем, и значение каждого ключа является пустым словарем. См. документы по шаблону

Свойства

Имя Описание Значение
Параметры шифрования Параметры шифрования файловой системы. См. раздел "Параметры шифрования"
filesystemSubnet Подсеть, которую использует файловая система. строка (обязательно)
hsm Параметры контейнера Хранилище BLOB-объектов для файловой системы. См. раздел параметров HSM
окно обслуживания Указывает день и время возникновения обновлений системы. См. окно обслуживания (обязательно)
rootSquashSettings Задает параметры подмены прав суперпользователя (root squash) для файловой системы. См. параметры подмены прав суперпользователя
storageCapacityTiB Размер файловой системы в TiB. Дополнительные сведения о допустимых значениях этого поля на основе номера SKU см. в разделе "Выбор типа файловой системы" и размера. int (обязательно)

Параметры шифрования

Имя Описание Значение
ключ шифрования ключа Указывает расположение ключа шифрования в Key Vault. См. документы по шаблону

Параметры HSM

Имя Описание Значение
контейнер Идентификатор ресурса контейнера хранилища, используемого для заполнения пространства имен и архивирования данных из пространства имен. Поставщик ресурсов должен иметь разрешение на создание маркеров SAS в учетной записи хранения. строка (обязательно)
importPrefix В пространство имён кластера импортируются только BLOB-объекты в контейнере без журналирования, имя которых начинается с этого пути или префикса. Это используется только во время первоначального создания управляемой файловой системы Lustre Azure. строка
importPrefixesInitial В пространство имён кластера импортируются только те BLOB-объекты в контейнере без журналирования, которые начинаются с одного из путей или префиксов, указанных в этом массиве. Это значение используется только во время первоначального создания управляемой файловой системы Lustre Azure и имеет значение по умолчанию ./. string[]
loggingContainer Идентификатор ресурса контейнера хранилища, используемого для ведения журнала событий и ошибок. Должен быть отдельным контейнером в той же учетной записи хранения, что и контейнеры регидратации и архива. Поставщик ресурсов должен иметь разрешение на создание маркеров SAS в учетной записи хранения. строка (обязательно)

Примечание.

Свойство importPrefixesInitial позволяет указать несколько префиксов для импорта данных в файловую систему, а importPrefix также указать один префикс. Значением по умолчанию для обоих свойств является /. Если определить одно из свойств, вы не можете определить другое. Если определить оба свойства, развертывание завершается сбоем.

Дополнительные сведения см. в разделе Префикс импорта.

Окно обслуживания

Имя Описание Значение
dayOfWeek День недели, на которой может произойти период обслуживания. Sunday, Monday, TuesdayWednesdayThursdayFridaySaturday
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]$.

Настройки Root squash

Имя Описание Значение
режим Режим Squash файловой системы AML. «Все»: идентификаторы пользователей и групп для файлов заменяются указанными значениями для всех пользователей в недоверенных системах. 'RootOnly': идентификаторы пользователей и групп для файлов заменяются указанными значениями только для пользователя root в недоверенных системах. "Нет": для всех пользователей в любых системах не выполняется скваширование идентификаторов пользователей и групп. All, None, RootOnly
noSquashNidLists Разделенный точками с запятой список IP-адресов NID для добавления в TrustedSystems. строка
squashGID Идентификатор группы для объединения. INT
squashUID Идентификатор пользователя, к которому нужно выполнить объединение. INT

Номер SKU

Имя Описание Значение
имя Имя номера SKU для ресурса. AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500

Развертывание файловой системы с помощью шаблона

В следующем примере используются команды Azure CLI для создания новой группы ресурсов и создания в ней файловой системы Управляемая Azure система Lustre. В шагах предполагается, что вы уже выбрали тип файловой системы и размер и создали файл шаблона, как описано ранее в этой статье. Кроме того, убедитесь, что выполнены все предварительные требования.

  1. Задайте подписку по умолчанию:

    az account set --subscription "<subscription-id>"
    az account show
    
  2. При необходимости создайте новую группу ресурсов для управляемой файловой системы Lustre Azure. Если вы хотите использовать существующую группу ресурсов, пропустите этот шаг и укажите имя существующей группы ресурсов при выполнении команды шаблона.

    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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/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: 'eastus'
  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.net/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'
  ]
}