Udostępnij za pośrednictwem


Tworzenie systemu plików Azure Managed Lustre przy użyciu szablonów usługi Azure Resource Manager

Tworzenie zarządzanego systemu plików Lustre platformy Azure można zautomatyzować przy użyciu szablonów usługi Azure Resource Manager (ARM). W tym artykule wyjaśniono podstawową procedurę i przedstawiono przykłady potrzebnych plików.

W tym artykule przedstawiono przykłady dwóch różnych metod tworzenia szablonów usługi ARM:

  • Użyj kodu JSON, aby bezpośrednio utworzyć szablony usługi ARM. Aby dowiedzieć się więcej, zobacz Składnia szablonu JSON.
  • Użyj metody Bicep, która używa prostszej składni, aby podać szczegóły konfiguracji. Podczas wdrażania szablonu pliki Bicep są konwertowane na pliki szablonów usługi ARM. Aby dowiedzieć się więcej, zobacz dokumentację aplikacji Bicep.

Aby dowiedzieć się więcej o tych opcjach, zobacz Porównanie plików JSON i Bicep dla szablonów.

Wybieranie typu i rozmiaru systemu plików

Przed napisaniem szablonu należy podjąć pewne decyzje dotyczące systemu plików Azure Managed Lustre. Aby dowiedzieć się więcej o opcjach konfiguracji, zobacz szczegóły konfiguracji w temacie Tworzenie zarządzanego systemu plików Lustre platformy Azure.

Jeśli używasz szablonu, określ jednostkę SKU, aby zdefiniować podstawowy typ systemu plików Azure Managed Lustre do utworzenia. Jednostka SKU reprezentuje warstwę produktu. Ustawia cechy systemowe, takie jak typ dysków, obsługiwana ilość miejsca do magazynowania i maksymalna pojemność przepływności. Jeśli używasz witryny Azure Portal do utworzenia systemu plików Azure Managed Lustre, określ typ systemu pośrednio, wybierając jego możliwości.

W poniższej tabeli przedstawiono wartości przepływności i rozmiaru magazynu w każdej obsługiwanej jednostce SKU. Te jednostki SKU tworzą system plików korzystający z trwałego magazynu SSD.

SKU Przepływność na magazyn TiB Minimalna ilość miejsca do magazynowania Maksymalna ilość miejsca do magazynowania Przyrost
AMLFS-Durable-Premium-40 40 MB/s 48 TB 768 TB 48 TB
AMLFS-Durable-Premium-125 125 MB/s 16 TB 128 TB 16 TB
AMLFS-Durable-Premium-250 250 MB/s 8 TB 128 TB 8 TB
AMLFS-Durable-Premium-500 500 MB/s 4 TB 128 TB 4 TB

Jeśli potrzebujesz wartości magazynu większych niż maksymalna na liście, możesz otworzyć bilet pomocy technicznej, aby zapoznać się z opcjami.

Aby sprawdzić możliwości jednostki SKU, możesz użyć przepływu pracy do utworzenia zarządzanego systemu plików Lustre przy użyciu witryny Azure Portal. Ustawienia specyficzne dla jednostki SKU znajdują się na karcie Podstawowe w obszarze Szczegóły systemu plików.

Tworzenie pliku szablonu

Po podjęciu decyzji o opcjach konfiguracji możesz utworzyć plik szablonu. Plik szablonu jest plikiem JSON lub Bicep zawierającym szczegóły konfiguracji systemu plików Azure Managed Lustre.

Wartości właściwości szablonu

Aby utworzyć system plików Azure Managed Lustre przy użyciu szablonu usługi ARM, należy dołączyć następujące informacje do pliku szablonu. Dokładna składnia różni się między wartościami Bicep i JSON, dlatego zapoznaj się z przykładami wartości literału.

System plików

Nazwa/nazwisko Opis Wartość
type Typ zasobu do utworzenia. Microsoft.StorageCache/amlFileSystems
apiVersion Wersja interfejsu API Azure Managed Lustre do użycia. Użyj bieżącej wersji interfejsu API, na przykład 2024-03-01
name Unikatowa nazwa systemu plików Azure Managed Lustre. ciąg (wymagany)
lokalizacja Lokalizacja geograficzna, w której znajduje się zasób. Użyj krótkiej nazwy, a nie nazwy wyświetlanej, na przykład użyj wartości eastus zamiast East US. ciąg (wymagany)
tags Tagi zasobów dla systemu plików. Słownik nazw tagów i wartości; zobacz Tagi w szablonach
sku Jednostka SKU wydajności zasobu. Zobacz nazwę jednostki SKU
tożsamości Tożsamość zarządzana do użycia w systemie plików, jeśli została skonfigurowana. Zobacz Tożsamość
właściwości Właściwości systemu plików. Zobacz właściwości
Stref Strefy dostępności dla zasobów. To pole powinno zawierać tylko jeden element w tablicy. string[]

Tożsamość

Nazwa/nazwisko Opis Wartość
type Typ tożsamości używany dla zasobu. None, UserAssigned
userAssignedIdentities Słownik, w którym każdy klucz jest identyfikatorem zasobu tożsamości przypisanej przez użytkownika, a wartość każdego klucza jest pustym słownikiem. Zobacz dokumentację szablonu

Właściwości

Nazwa/nazwisko Opis Wartość
encryptionSettings Ustawienia szyfrowania systemu plików. Zobacz Ustawienia szyfrowania
filesystemSubnet Podsieć używana przez system plików. ciąg (wymagany)
Hsm Ustawienia kontenera usługi Blob Storage dla systemu plików. Zobacz ustawienia modułu HSM
konserwacjaWindow Określa dzień i godzinę wystąpienia aktualizacji systemu. Zobacz Okno obsługi (wymagane)
rootSquashSettings Określa ustawienia głównego squasha dla systemu plików. Zobacz Ustawienia squasha głównego
storageCapacityTiB Rozmiar systemu plików w TiB. Aby dowiedzieć się więcej o dozwolonych wartościach dla tego pola na podstawie jednostki SKU, zobacz Wybieranie typu i rozmiaru systemu plików. int (wymagane)

Ustawienia szyfrowania

Nazwa/nazwisko Opis Wartość
keyEncryptionKey Określa lokalizację klucza szyfrowania w usłudze Key Vault. Zobacz dokumentację szablonu

Ustawienia modułu HSM

Nazwa/nazwisko Opis Wartość
kontener Identyfikator zasobu kontenera magazynu używanego do nawilżania przestrzeni nazw i archiwizowania z przestrzeni nazw. Dostawca zasobów musi mieć uprawnienia do tworzenia tokenów SAS na koncie magazynu. ciąg (wymagany)
importPrefix Tylko obiekty blob w kontenerze bez rejestrowania rozpoczynające się od tej ścieżki/prefiksu są importowane do przestrzeni nazw klastra. Jest to używane tylko podczas początkowego tworzenia systemu plików Azure Managed Lustre. string
importPrefixesInitial Tylko obiekty blob w kontenerze bez rejestrowania rozpoczynające się od jednej ze ścieżek/prefiksów w tej tablicy są importowane do przestrzeni nazw klastra. Ta wartość jest używana tylko podczas początkowego tworzenia systemu plików Azure Managed Lustre i ma wartość domyślną "/". string[]
loggingContainer Identyfikator zasobu kontenera magazynu używanego do rejestrowania zdarzeń i błędów. Musi być oddzielnym kontenerem na tym samym koncie magazynu co kontener nawodnienia i archiwum. Dostawca zasobów musi mieć uprawnienia do tworzenia tokenów SAS na koncie magazynu. ciąg (wymagany)

Uwaga

Właściwość importPrefixesInitial umożliwia określenie wielu prefiksów do importowania danych do systemu plików, a jednocześnie importPrefix umożliwia określenie pojedynczego prefiksu. Wartość domyślna obu właściwości to /. Jeśli zdefiniujesz jedną z właściwości, nie możesz zdefiniować drugiej. Jeśli zdefiniujesz obie właściwości, wdrożenie zakończy się niepowodzeniem.

Aby dowiedzieć się więcej, zobacz Importowanie prefiksu.

Okno obsługi

Nazwa/nazwisko Opis Wartość
dayOfWeek Dzień tygodnia, w którym może wystąpić okno obsługi. Sunday, Monday, , Tuesday, Wednesday, Thursday, , FridaySaturday
timeOfDayUTC Godzina dnia (w formacie UTC) może wystąpić okno obsługi. przykład ciągu
: 22:30

Właściwość timeOfDayUTC używa formatu zegara 24-godzinnego. Na przykład 22:30 reprezentuje 10:30 PM. Wzorzec to ^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$.

Ustawienia głównego squasha

Nazwa/nazwisko Opis Wartość
tryb Tryb squasha systemu plików AML. "Wszystkie": identyfikatory użytkowników i grup w plikach są usuwane z podanych wartości dla wszystkich użytkowników w systemach niezauwierzonych. "RootOnly": identyfikatory użytkowników i grup w plikach są usuwane z podanymi wartościami wyłącznie dla użytkownika głównego w systemach innych niż zaufane. "Brak": nie jest wykonywane żadne usuwanie identyfikatorów użytkowników i grup dla wszystkich użytkowników w dowolnych systemach. All, , NoneRootOnly
noSquashNidLists Rozdzielona średnikami lista adresów IP karty interfejsu SIECIOWEGO, która ma zostać dodana do elementów TrustedSystems. string
squashGID Identyfikator grupy do zgniecenia do. int
squashUID Identyfikator użytkownika do zgniecenia. int

Nazwa jednostki SKU

Nazwa/nazwisko Opis Wartość
name Nazwa jednostki SKU zasobu. AMLFS-Durable-Premium-40, , AMLFS-Durable-Premium-125, , AMLFS-Durable-Premium-250AMLFS-Durable-Premium-500

Wdrażanie systemu plików przy użyciu szablonu

W poniższych przykładowych krokach użyto poleceń interfejsu wiersza polecenia platformy Azure, aby utworzyć nową grupę zasobów i utworzyć w niej system plików Azure Managed Lustre. W krokach założono, że wybrano już typ i rozmiar systemu plików oraz utworzono plik szablonu zgodnie z opisem we wcześniejszej sekcji tego artykułu. Upewnij się również, że spełniasz wszystkie wymagania wstępne.

  1. Ustaw subskrypcję domyślną:

    az account set --subscription "<subscription-id>"
    az account show
    
  2. Opcjonalnie utwórz nową grupę zasobów dla systemu plików Azure Managed Lustre. Jeśli chcesz użyć istniejącej grupy zasobów, pomiń ten krok i podaj nazwę istniejącej grupy zasobów podczas uruchamiania polecenia szablonu.

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

    System plików może używać zasobów spoza własnej grupy zasobów, o ile są one w tej samej subskrypcji.

  3. Wdróż system plików Azure Managed Lustre przy użyciu szablonu. Składnia zależy od tego, czy używasz plików JSON, czy Bicep, wraz z liczbą plików.

    Szablony Bicep i JSON można wdrażać jako pojedyncze pliki lub wiele plików. Aby uzyskać więcej informacji i zobaczyć dokładną składnię dla każdej opcji, zobacz dokumentację szablonu usługi ARM.

    Przykładowe polecenie JSON:

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

    Przykładowe polecenie Bicep:

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

Przykład JSON

W tej sekcji przedstawiono przykładową zawartość pliku szablonu JSON. Parametry opcjonalne można usunąć podczas tworzenia własnego szablonu usługi 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": {}
}

Przykład Bicep

W tej sekcji przedstawiono przykładową zawartość pliku Bicep. Parametry opcjonalne można usunąć podczas tworzenia własnych.

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