Compartir a través de


Creación de un sistema de archivos de Azure Managed Lustre mediante plantillas de Azure Resource Manager

Puede automatizar la creación de un sistema de archivos de Azure Managed Lustre mediante plantillas de Azure Resource Manager (ARM). En este artículo se explica el procedimiento básico y se proporcionan ejemplos de los archivos que necesita.

En este artículo se proporcionan ejemplos de dos métodos diferentes para crear plantillas de ARM:

  • Use JSON para crear plantillas de ARM directamente. Para más información, consulte Sintaxis de plantilla JSON.
  • Use Bicep, que usa una sintaxis más sencilla para proporcionar los detalles de configuración. Al implementar la plantilla, los archivos de Bicep se convierten en archivos de plantilla de ARM. Para más información, consulte la documentación de Bicep.

Para más información sobre estas opciones, consulte Comparación de JSON y Bicep para plantillas.

Elegir el tipo y el tamaño del sistema de archivos

Antes de escribir una plantilla, debe tomar algunas decisiones sobre el sistema de archivos de Azure Managed Lustre. Para más información sobre las opciones de configuración, consulte los detalles de configuración en Creación de un sistema de archivos de Azure Managed Lustre.

Al usar una plantilla, especifique una SKU para definir el tipo básico de sistema de archivos de Azure Managed Lustre que se va a crear. La SKU representa un nivel de producto. Establece cualidades del sistema como el tipo de discos, la cantidad de almacenamiento admitida y la capacidad de rendimiento máxima. Si usa Azure Portal para crear el sistema de archivos de Azure Managed Lustre, especifique el tipo de sistema indirectamente seleccionando sus funcionalidades.

En la tabla siguiente se muestran los valores de rendimiento y tamaño de almacenamiento en cada SKU compatible. Estas SKU crean un sistema de archivos que usa almacenamiento SSD duradero.

SKU Rendimiento por almacenamiento de TiB Almacenamiento mínimo Almacenamiento máximo Increment
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

Si necesita valores de almacenamiento mayores que el máximo enumerado, puede abrir una incidencia de soporte técnico para explorar las opciones.

Para comprobar las funcionalidades de SKU, puede usar el flujo de trabajo para crear un sistema de archivos de Lustre administrado mediante Azure Portal. La configuración específica de la SKU se encuentra en la pestaña Aspectos básicos en Detalles del sistema de archivos.

Creación de un archivo de plantilla

Después de decidir las opciones de configuración, puede crear un archivo de plantilla. El archivo de plantilla es un archivo JSON o Bicep que contiene los detalles de configuración del sistema de archivos de Azure Managed Lustre.

Valores de propiedad de plantilla

Para crear un sistema de archivos de Azure Managed Lustre mediante una plantilla de ARM, debe incluir la siguiente información en el archivo de plantilla. La sintaxis exacta es diferente entre Bicep y JSON, por lo que consulte los ejemplos de los valores literales.

Sistema de archivos

Nombre Descripción Valor
type Tipo de recurso que se va a crear. Microsoft.StorageCache/amlFileSystems
apiVersion Versión de Azure Managed Lustre API que se va a usar. Use la versión actual de la API, por ejemplo, 2024-03-01
nombre Un nombre único para el sistema de archivos de Azure Managed Lustre. string (obligatorio)
ubicación Ubicación geográfica donde reside el recurso. Use el nombre corto en lugar del nombre para mostrar, por ejemplo, use eastus en lugar de East US. string (obligatorio)
etiquetas Etiquetas de recursos para el sistema de archivos. Diccionario de nombres y valores de etiqueta; consulte Etiquetas en plantillas
sku SKU de rendimiento para el recurso. Consulte el nombre de la SKU.
identity Identidad administrada que se va a usar para el sistema de archivos, si está configurada. Consulte Identidad.
properties Propiedades del sistema de archivos. Consulte Propiedades.
zones Zonas de disponibilidad para recursos. Este campo solo debe contener un solo elemento en la matriz. string[]

Identidad

Nombre Descripción Valor
type Tipo de identidad que se usa para el recurso. None, UserAssigned
userAssignedIdentities Diccionario en el que cada clave es un identificador de recurso de identidad asignado por el usuario y el valor de cada clave es un diccionario vacío. Consulte la documentación de plantilla.

Propiedades

Name Descripción Valor
encryptionSettings La configuración de cifrado del sistema de archivos. Consulte Configuración de cifrado.
filesystemSubnet Subred que usa el sistema de archivos. string (obligatorio)
Hsm Configuración del contenedor de Blob Storage para el sistema de archivos. Consulte configuración de HSM.
maintenanceWindow Especifica el día y la hora en que se pueden producir actualizaciones del sistema. Consulte ventana Mantenimiento (obligatorio)
rootSquashSettings Especifica la configuración de squash raíz para el sistema de archivos. Consulte Configuración de squash raíz.
storageCapacityTiB Tamaño del sistema de archivos, en TiB. Para obtener más información sobre los valores permitidos para este campo en función de la SKU, consulte Elegir el tipo y el tamaño del sistema de archivos. int (obligatorio)

Configuración de cifrado

Nombre Descripción Valor
keyEncryptionKey Especifica la ubicación de la clave de cifrado en Key Vault. Consulte la documentación de plantilla.

Configuración de HSM

Nombre Descripción Valor
contenedor Identificador de recurso del contenedor de almacenamiento usado para hidratar el espacio de nombres y el archivado desde el espacio de nombres. El proveedor de recursos debe tener permiso para crear tokens de SAS en la cuenta de almacenamiento. string (obligatorio)
importPrefix Solo los blobs del contenedor que no son de registro que comienzan con esta ruta de acceso o prefijo se importan en el espacio de nombres del clúster. Esto solo se usa durante la creación inicial del sistema de archivos de Azure Managed Lustre. string
importPrefixesInitial Solo los blobs del contenedor que no son de registro que comienzan con una de las rutas de acceso o prefijos de esta matriz se importan en el espacio de nombres del clúster. Este valor solo se usa durante la creación inicial del sistema de archivos de Azure Managed Lustre y tiene "/" como valor predeterminado. string[]
loggingContainer Identificador de recurso del contenedor de almacenamiento usado para registrar eventos y errores. Debe ser un contenedor independiente en la misma cuenta de almacenamiento que el contenedor de hidratación y archivo. El proveedor de recursos debe tener permiso para crear tokens de SAS en la cuenta de almacenamiento. string (obligatorio)

Nota:

La importPrefixesInitial propiedad permite especificar varios prefijos para importar datos en el sistema de archivos, mientras importPrefix que permite especificar un único prefijo. El valor predeterminado de ambas propiedades es /. Si define una de las propiedades, no puede definir la otra. Si define ambas propiedades, se produce un error en la implementación.

Para más información, consulte Importar prefijo.

Ventana de mantenimiento

Nombre Descripción Valor
dayOfWeek Día de la semana en el que puede producirse la ventana de mantenimiento. Sunday, Monday, Tuesday, Wednesday, Thursday, , FridaySaturday
timeOfDayUTC Hora del día (en UTC) que puede producirse la ventana de mantenimiento. ejemplo de cadena
: 22:30

La timeOfDayUTC propiedad usa un formato de reloj de 24 horas. Por ejemplo, 22:30 representa las 10:30 p. m. El patrón es ^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$.

Configuración de la squash raíz

Nombre Descripción Valor
mode Modo de squash del sistema de archivos AML. 'All': los identificadores de usuario y grupo de los archivos se agrupan a los valores proporcionados para todos los usuarios de sistemas que no son de confianza. 'RootOnly': los identificadores de usuario y grupo de los archivos se aplastan para proporcionar valores únicamente para el usuario raíz en sistemas que no son de confianza. 'Ninguno': no se realiza ninguna aplicación de identificadores de usuario y grupo para los usuarios de ningún sistema. All, , None, RootOnly
noSquashNidLists Lista de direcciones IP de NID separadas por punto y coma que se agregarán a TrustedSystems. string
squashGID Id. de grupo al que se va a aplastar. int
squashUID Identificador de usuario al que se va a aplastar. int

Nombre de SKU

Nombre Descripción Valor
nombre Nombre de SKU del recurso. AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, , AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500

Implementación del sistema de archivos mediante la plantilla

En los pasos de ejemplo siguientes se usan comandos de la CLI de Azure para crear un nuevo grupo de recursos y crear un sistema de archivos de Azure Managed Lustre en él. En los pasos se da por hecho que ya ha elegido un tipo y tamaño del sistema de archivos y ha creado un archivo de plantilla, como se ha descrito anteriormente en este artículo. Asegúrese también de cumplir todos los requisitos previos.

  1. Establezca la suscripción predeterminada:

    az account set --subscription "<subscription-id>"
    az account show
    
  2. Opcionalmente, cree un nuevo grupo de recursos para el sistema de archivos de Azure Managed Lustre. Si desea usar un grupo de recursos existente, omita este paso y proporcione el nombre del grupo de recursos existente al ejecutar el comando de plantilla.

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

    El sistema de archivos puede usar recursos fuera de su propio grupo de recursos, siempre que estén en la misma suscripción.

  3. Implemente el sistema de archivos de Azure Managed Lustre mediante la plantilla. La sintaxis depende de si usa archivos JSON o Bicep, junto con el número de archivos.

    Puede implementar plantillas bicep y JSON como archivos únicos o varios archivos. Para obtener más información y ver la sintaxis exacta de cada opción, consulte la documentación de la plantilla de ARM.

    Comando JSON de ejemplo:

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

    Comando de Bicep de ejemplo:

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

Ejemplo de JSON

En esta sección se muestra el contenido de ejemplo de un archivo de plantilla JSON. Puede quitar parámetros opcionales al crear su propia plantilla de 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": {}
}

Ejemplo de Bicep

En esta sección se muestra el contenido de ejemplo de un archivo de Bicep. Puede quitar parámetros opcionales al crear los suyos propios.

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'
  ]
}