Připojení virtuálního systému souborů do fondu Batch

Azure Batch podporuje připojení cloudového úložiště nebo externího systému souborů ve výpočetních uzlech s Windows nebo Linuxem ve fondech Batch. Když se výpočetní uzel připojí k fondu, virtuální souborový systém se namontuje a funguje na daném uzlu jako místní disk. Tento článek ukazuje, jak připojit virtuální systém souborů do fondu výpočetních uzlů pomocí klientské knihovny Azure Resource Manager pro službu Batch (Azure). ResourceManager.Batch).

Připojení systému souborů k fondu usnadňuje a zefektivňuje přístup k datům, aniž by úkoly musely získávat vlastní data z velké sdílené datové sady. Představte si scénář, kdy více úloh potřebuje přístup k společné sadě dat, jako je vykreslování videa. Každý úkol vykreslí jeden nebo více snímků najednou ze souborů scény. Připojením jednotky, která obsahuje soubory scény, je pro každý výpočetní uzel snadnější přístup ke sdíleným datům.

Můžete také zvolit základní systém souborů, který bude splňovat požadavky na výkon, propustnost a operace vstupně-výstupní za sekundu (IOPS). Systém souborů můžete nezávisle škálovat na základě počtu výpočetních uzlů, které současně přistupují k datům.

Můžete například použít distribuovanou mezipaměť v paměti Avere vFXT, která podporuje renderování ve filmovém měřítku s tisíci souběžnými renderovacími uzly, které přistupují k zdrojovým datům v místě. Nebo pro data, která už jsou v cloudovém úložišti blobů, můžete pomocí BlobFuse připojit data jako lokální souborový systém. Azure Files poskytuje podobný pracovní postup jako BlobFuse a je k dispozici v systémech Windows i Linux.

Podporované konfigurace

Můžete připojit následující typy systémů souborů:

  • Azure Files
  • úložiště Blob v Azure
  • Systém souborů NFS (Network File System), včetně mezipaměti Avere vFXT
  • Běžný internetový souborový systém (CIFS)

Služba Batch podporuje následující typy virtuálních souborových systémů pro agenty uzlů, které vytvořil příslušný vydavatel a které odpovídají jeho nabídce.

Typ operačního systému Sdílené úložiště Azure Files Kontejner objektů blob Azure Připojení souborového systému NFS Připojení CIFS
Linux ✔️ ✔️ ✔️ ✔️
Windows ✔️

Poznámka

Připojení virtuálního systému souborů není podporováno ve fondech batch vytvořených před 8. srpnem 2019.

Požadavky na síť

Pokud ve virtuální síti používáte připojení virtuálních souborů s pooly služby Batch, mějte na paměti následující požadavky a ujistěte se, že žádný požadovaný provoz není blokován. Další informace najdete v tématu Fondy batch ve virtuální síti.

  • Sdílené složky Azure Files vyžadují, aby byl port TCP 445 otevřen pro příchozí a odchozí provoz ke značce služby storage. Další informace najdete v tématu Použití sdílené složky Azure s Windows.

  • Kontejnery Azure Blob vyžadují, aby byl otevřený port TCP 443 pro provoz do a ze značky storage služby. Virtuální počítače musí mít přístup k https://packages.microsoft.com, aby mohly stáhnout balíčky blobfuse a gpg. V závislosti na konfiguraci možná budete potřebovat přístup k jiným adresám URL.

  • Systém souborů NFS (Network File System) ve výchozím nastavení vyžaduje přístup k portu 2049. Vaše konfigurace může mít jiné požadavky. Virtuální počítače musí mít přístup k příslušnému správci balíčků ke stažení nfs-common balíčků (pro Debian nebo Ubuntu). Adresa URL se může lišit v závislosti na vaší verzi operačního systému. V závislosti na konfiguraci možná budete potřebovat přístup i k jiným adresám URL.

    Připojení služby Azure Blob nebo Azure Files prostřednictvím systému souborů NFS může mít více požadavků na síť. Výpočetní uzly můžou například potřebovat použít stejnou podsíť virtuální sítě jako účet úložiště.

  • Common Internet File System (CIFS) vyžaduje přístup k portu TCP 445. Aby mohly stáhnout cifs-utils balíček, musí mít virtuální počítače přístup k příslušnému správci balíčků. Adresa URL se může lišit v závislosti na vaší verzi operačního systému.

Konfigurace a implementace montáže

Připojení virtuálního systému souborů v rámci fondu zpřístupňuje tento systém souborů každému výpočetnímu uzlu v fondu. Konfigurace systému souborů se provede, když výpočetní uzel vstoupí do fondu, restartuje nebo se znovu nainstaluje.

Chcete-li připojit souborový systém ve fondu, vytvořte objekt BatchMountConfiguration, který odpovídá vašemu virtuálnímu souborovému systému: BatchBlobFileSystemConfiguration, BatchFileShareConfiguration, BatchNfsMountConfiguration nebo BatchCifsMountConfiguration.

Všechny objekty konfigurace připojení potřebují následující základní parametry. Některé konfigurace připojení mají specifické parametry pro konkrétní systém souborů, které jsou uvedeny v příkladech kódu podrobněji.

  • Název účtu nebo zdroj účtu úložiště.

  • Relativní cesta k připojení nebo zdroj, umístění systému souborů pro připojení k výpočetnímu uzlu vzhledem ke standardnímu adresáři \fsmounts přístupného přes AZ_BATCH_NODE_MOUNTS_DIR.

    Přesné umístění adresáře \fsmounts se liší v závislosti na operačním systému uzlu. Například umístění na uzlu Ubuntu se mapuje na mnt\batch\tasks\fsmounts.

  • Možnosti připojení nebo možnosti BlobFuse , které popisují konkrétní parametry pro připojení systému souborů.

Při vytváření fondu přidáte každý BatchMountConfiguration do kolekce MountConfiguration na BatchAccountPoolData. Připojení k souborovému systému probíhá, když se uzel připojí k fondu, restartuje nebo je znovu nahrán obraz.

Agent Batch implementuje připojení odlišně ve Windows a Linuxu.

  • V Linuxu služba Batch nainstaluje balíček cifs-utils. Batch pak vydá příkaz mount.

  • Služba Batch ve Windows používá cmdkey k přidání přihlašovacích údajů k účtu Batch. Pak služba Batch vydá příkaz pro připojení prostřednictvím net use. Například:

    net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
    

Připojení systému souborů vytvoří proměnnou prostředí AZ_BATCH_NODE_MOUNTS_DIR, která odkazuje na umístění připojeného systému souborů a souborů protokolu. K řešení potíží a ladění můžete použít soubory protokolu.

Připojení sdílené složky Azure Files pomocí PowerShellu

Pomocí Azure PowerShellu můžete připojit sdílenou složku Azure Files do fondu služby Windows nebo Linux Batch. Následující postup vás provede konfigurací a připojením souborového systému sdílené složky Azure v rámci fondu úloh Batch.

Důležité

Maximální počet připojených souborových systémů v poolu je 10. Podrobnosti a další omezení najdete v tématu Kvóty a limity služby Batch.

Prerequisites

  • Účet Azure s aktivním předplatným.
  • Nainstalovaný Azure PowerShell nebo použijte Azure Cloud Shell a vyberte PowerShell pro rozhraní.
  • Existující účet Batch s propojeným účtem Azure Storage, který má sdílenou složku.
  1. Přihlaste se ke svému předplatnému Azure a nahraďte zástupný symbol SVÝM ID předplatného.

    Connect-AzAccount -Subscription "<subscription-ID>"
    
  2. Získejte potřebné informace pro svůj účet ve službě Batch. Nahraďte zástupný symbol <batch-account-name> názvem účtu Batch.

    $context = Get-AzBatchAccount -AccountName <batch-account-name>
    
  3. Vytvořte fond Batch s těmito nastaveními. Nahraďte zástupné symboly <storage-account-name>, <storage-account-key> a <file-share-name> hodnotami z účtu úložiště, který je propojený s vaším účtem Batch. <pool-name> Zástupný symbol nahraďte požadovaným názvem fondu.

    Následující skript vytvoří fond s jedním uzlem Windows Server 2016 Datacenter velikosti Standard_D2_V2 a pak připojí sdílenou složku Azure k jednotce uzlu S.

    $fileShareConfig = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSAzureFileShareConfiguration" -ArgumentList @("<storage-account-name>", "https://<storage-account-name>.file.core.windows.net/batchfileshare1", "S", "<storage-account-key>")
    
    $mountConfig = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSMountConfiguration" -ArgumentList @($fileShareConfig)
    
    $imageReference = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("WindowsServer", "MicrosoftWindowsServer", "2016-Datacenter", "latest")
    
    $configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageReference, "batch.node.windows amd64")
    
    New-AzBatchPool -Id "<pool-name>" -VirtualMachineSize "STANDARD_D2_V2" -VirtualMachineConfiguration $configuration -TargetDedicatedComputeNodes 1 -MountConfiguration @($mountConfig) -BatchContext $context
    
  4. Připojte se k uzlu a zkontrolujte správnost výstupního souboru.

Přístup k připojeným souborům

Úlohy služby Azure Batch mají přístup k připojeným souborům pomocí přímé cesty jednotky, například:

cmd /c "more S:\folder1\out.txt & timeout /t 90 > NULL"

Agent Azure Batch uděluje přístup pouze pro úlohy Služby Azure Batch. Pokud se k uzlu připojujete pomocí protokolu RDP (Vzdálená plocha Protocol), nemá váš uživatelský účet automatický přístup k připojové jednotce. Když se připojíte k uzlu přes protokol RDP, musíte přidat přihlašovací údaje pro účet úložiště, aby měl přímý přístup k jednotce S .

Slouží cmdkey k přidání přihlašovacích údajů. Nahraďte <storage-account-name> a <storage-account-key> zástupné značky vlastními informacemi.

cmdkey /add:"<storage-account-name>.file.core.windows.net" /user:"Azure\<storage-account-name>" /pass:"<storage-account-key>"

Řešení potíží s připojením

Pokud konfigurace připojení selže, výpočetní uzel selže a stav uzlu je nastavený na Nepoužitelné. Pokud chcete diagnostikovat selhání konfigurace připojení, zkontrolujte vlastnost ComputeNodeError , kde najdete podrobnosti o chybě.

K získání souborů protokolu pro ladění můžete použít rozhraní API OutputFiles k nahrání souborů *.log . Soubory *.log obsahují informace o připojení systému souborů na AZ_BATCH_NODE_MOUNTS_DIR umístění. Soubory protokolu mount mají formát: <type>-<mountDirOrDrive>.log pro každé připojení. Například připojení CIFS v adresáři připojení s názvem test má soubor protokolu připojení s názvem: cifs-test.log.

Zkoumání chyb montáže

K uzlu se můžete připojit pomocí protokolu RDP nebo SSH a zkontrolovat logové soubory týkající se montáží souborového systému. Následující příklad chybové zprávy je možné, když se pokusíte připojit sdílenou složku Azure k uzlu Batch:

Mount Configuration Error | An error was encountered while configuring specified mount(s)
Message: System error (out of memory, cannot fork, no more loop devices)
MountConfigurationPath: S

Pokud se zobrazí tato chyba, připojte se k uzlu pomocí protokolu RDP nebo SSH a zkontrolujte související soubory protokolů. Agent Batch implementuje připojení v systémech Windows a Linux odlišně pro sdílené složky Azure. V Linuxu služba Batch nainstaluje balíček cifs-utils. Batch pak vydá příkaz mount. Služba Batch ve Windows používá cmdkey k přidání přihlašovacích údajů k účtu Batch. Pak služba Batch vydá příkaz pro připojení prostřednictvím net use. Například:

net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
  1. Připojte se k uzlu přes protokol RDP.

  2. Otevřete soubor protokolu fshare-S.log v umístění D:\batch\tasks\fsmounts.

  3. Projděte si chybové zprávy, například:

    CMDKEY: Credential added successfully.
    System error 86 has occurred.
    
    The specified network password is not correct.
    
  4. Při řešení potíží s problémem použijte poradce při potížích se sdílenými složkami Azure.

Pokud nemůžete pomocí protokolu RDP nebo SSH zkontrolovat soubory protokolů na uzlu, můžete protokoly nahrát do účtu úložiště Azure. Tuto metodu můžete použít pro protokoly Windows i Linux.

  1. Na Azure portal vyhledejte a vyberte účet Batch, který obsahuje váš fond.

  2. Na stránce účtu Batch vyberte fondy v levém navigačním panelu.

  3. Na stránce Fondy vyberte název fondu.

  4. Na stránce fondu vyberte v levém navigačním panelu uzly .

  5. Na stránce Uzly vyberte název uzlu.

  6. Vyberte na stránce uzlu Nahrát dávkové protokoly.

  7. V podokně Nahrát dávkové protokoly vyberte možnost Zvolit kontejner úložiště.

  8. Na stránce Účty úložiště vyberte účet úložiště.

  9. Na stránce Kontejnery vyberte nebo vytvořte kontejner pro nahrání souborů a vyberte Vybrat.

  10. Vyberte Spustit nahrávání.

  11. Po dokončení nahrávání stáhněte soubory a otevřete agent-debug.log.

  12. Projděte si chybové zprávy, například:

    ..20210322T113107.448Z.00000000-0000-0000-0000-000000000000.ERROR.agent.mount.filesystems.basefilesystem.basefilesystem.py.run_cmd_persist_output_async.59.2912.MainThread.3580.Mount command failed with exit code: 2, output:
    
    CMDKEY: Credential added successfully.
    
    System error 86 has occurred.
    
    The specified network password is not correct.
    
  13. Při řešení potíží s problémem použijte poradce při potížích se sdílenými složkami Azure.

Ruční připojení sdílené složky pomocí PowerShellu

Pokud nemůžete diagnostikovat nebo opravit chyby připojení, můžete místo toho připojit sdílenou složku ručně pomocí PowerShellu.

  1. Vytvořte fond bez konfigurace připojování. Například:

    $imageReference = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("WindowsServer", "MicrosoftWindowsServer", "2016-Datacenter", "latest")
    
    $configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageReference, "batch.node.windows amd64")
    
    New-AzBatchPool -Id "<pool-name>" -VirtualMachineSize "STANDARD_D2_V2" -VirtualMachineConfiguration $configuration -TargetDedicatedComputeNodes 1  -BatchContext $Context
    
  2. Počkejte, až bude uzel ve stavu nečinnosti .

  3. Na webu Azure Portal vyhledejte a vyberte účet úložiště, který má vaši sdílenou složku.

  4. Na stránce účtu úložiště vyberte v levém menu sdílení souborů.

  5. Na stránce Sdílené složky vyberte sdílenou složku, kterou chcete připojit.

  6. Na stránce sdílené složky vyberte Připojit.

  7. V podokně Připojit vyberte kartu Windows .

  8. Jako písmeno jednotky zadejte jednotku, kterou chcete použít. Výchozí hodnota je Z.

  9. Pro metodu ověřování vyberte, jak se chcete připojit ke sdílené složce.

  10. Vyberte Zobrazit skript a zkopírujte skript PowerShellu pro připojení sdílené složky.

  11. Připojte se k uzlu přes protokol RDP.

  12. Spuštěním příkazu, který jste zkopírovali, připojte sdílenou složku.

  13. Všimněte si všech chybových zpráv ve výstupu. Tyto informace použijte k řešení potíží souvisejících se sítí.

Příklady konfigurací připojení

Následující ukázkové konfigurace kódu ukazují připojení různých systémů sdílených složek do fondu výpočetních uzlů.

Sdílené úložiště Azure Files

Azure Files je standardní nabídka cloudového systému souborů Azure. Následující konfigurace připojí sdílenou složku Azure Files pojmenovanou <file-share-name> k jednotce S . Informace o parametrech v tomto příkladu najdete v tématu Připojení sdílené složky SMB Azure ve Windows nebo vytvoření sdílené složky Azure NFS a jeho připojení k virtuálnímu počítači s Linuxem pomocí webu Azure Portal.

using System;
using System.Threading.Tasks;
using Azure;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Batch;
using Azure.ResourceManager.Batch.Models;

internal static class Program
{
    private static async Task Main()
    {
        await CreatePoolWithAzureFilesMountAsync(
            subscriptionId: "<subscription-id>",
            resourceGroupName: "<resource-group>",
            batchAccountName: "<batch-account-name>",
            poolId: "<pool-name>");
    }

    private static async Task CreatePoolWithAzureFilesMountAsync(
        string subscriptionId,
        string resourceGroupName,
        string batchAccountName,
        string poolId)
    {
        BatchAccountPoolData pool = new BatchAccountPoolData()
        {
            VmSize = "standard_d1_v2",
            DeploymentConfiguration = new BatchDeploymentConfiguration()
            {
                VmConfiguration = new BatchVmConfiguration(
                    imageReference: new BatchImageReference()
                    {
                        Publisher = "MicrosoftWindowsServer",
                        Offer = "WindowsServer",
                        Sku = "2019-datacenter-core",
                        Version = "latest",
                    },
                    nodeAgentSkuId: "batch.node.windows amd64"),
            },
        };

        pool.MountConfiguration.Add(new BatchMountConfiguration
        {
            FileShareConfiguration = new BatchFileShareConfiguration(
                accountName: "<storage-account-name>",
                fileUri: new Uri("https://<storage-account-name>.file.core.windows.net/<file-share-name>"),
                accountKey: "<storage-account-key>",
                relativeMountPath: "S")
            {
                MountOptions = "-o vers=3.0,dir_mode=0777,file_mode=0777,sec=ntlmssp",
            },
        });

        var armClient = new ArmClient(new DefaultAzureCredential());
        BatchAccountResource batchAccount = armClient.GetBatchAccountResource(
            BatchAccountResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, batchAccountName));

        await batchAccount.GetBatchAccountPools()
            .CreateOrUpdateAsync(WaitUntil.Completed, poolId, pool);

        Console.WriteLine($"Created pool '{poolId}' with an Azure Files mount.");
    }
}

Kontejner objektů blob Azure

Další možností je použít službu Azure Blob Storage prostřednictvím BlobFuse. Montáž systému souborů blob vyžaduje buď klíč účtu, klíč sdíleného přístupového podpisu (SAS), nebo spravovanou identitu s přístupem k vašemu účtu úložiště.

Informace o získání těchto klíčů nebo identity najdete v následujících článcích:

Následující konfigurace připojí systém souborů objektů blob s možnostmi BlobFuse. Pro ilustraci ukazuje příklad AccountKey, SasKeya IdentityResourceId, ale můžete ve skutečnosti zadat pouze jednu z těchto metod.

using System;
using System.Threading.Tasks;
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Batch;
using Azure.ResourceManager.Batch.Models;

internal static class Program
{
    private static async Task Main()
    {
        await CreatePoolWithAzureBlobMountAsync(
            subscriptionId: "<subscription-id>",
            resourceGroupName: "<resource-group>",
            batchAccountName: "<batch-account-name>",
            poolId: "<pool-name>");
    }

    private static async Task CreatePoolWithAzureBlobMountAsync(
        string subscriptionId,
        string resourceGroupName,
        string batchAccountName,
        string poolId)
    {
        BatchAccountPoolData pool = new BatchAccountPoolData()
        {
            VmSize = "standard_d1_v2",
            DeploymentConfiguration = new BatchDeploymentConfiguration()
            {
                VmConfiguration = new BatchVmConfiguration(
                    imageReference: new BatchImageReference()
                    {
                        Publisher = "canonical",
                        Offer = "0001-com-ubuntu-server-focal",
                        Sku = "20_04-lts",
                        Version = "latest",
                    },
                    nodeAgentSkuId: "batch.node.ubuntu 20.04"),
            },
        };

        pool.MountConfiguration.Add(new BatchMountConfiguration
        {
            BlobFileSystemConfiguration = new BatchBlobFileSystemConfiguration(
                accountName: "<storage-account-name>",
                containerName: "<container-name>",
                relativeMountPath: "<relative-mount-path>")
            {
                // Use only one of the following three lines:
                AccountKey = "<storage-account-key>",
                SasKey = "<sas-key>",
                IdentityResourceId = new ResourceIdentifier(
                    "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>"),
                BlobfuseOptions = "-o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120",
            },
        });

        var armClient = new ArmClient(new DefaultAzureCredential());
        BatchAccountResource batchAccount = armClient.GetBatchAccountResource(
            BatchAccountResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, batchAccountName));

        await batchAccount.GetBatchAccountPools()
            .CreateOrUpdateAsync(WaitUntil.Completed, poolId, pool);

        Console.WriteLine($"Created pool '{poolId}' with an Azure Blob (BlobFuse) mount.");
    }
}

Pokud chcete získat výchozí přístup k připojenému adresáři BlobFuse, spusťte úlohu jako správce. BlobFuse připojí adresář v prostoru uživatele a při vytváření fondu připojí adresář jako root. V Linuxu jsou všechny úlohy správce kořenové. Referenční stránka FUSE popisuje všechny možnosti modulu FUSE.

Další informace a tipy k používání blobFuse najdete v následujících odkazech:

Režim streamování versus caching pro velké datové sady

BlobFuse2 podporuje dva režimy přenosu dat, které nastavujete prostředkem BlobfuseOptions:

  • Streamování (bloková cache) streamuje data v blocích při stahování. Používejte ho pro velké soubory, jako jsou AI/ML tréninkové datové sady, genomické sekvenování a data z HPC simulací – běžný vzorec pro vysokopropustné dávkové pracovní zátěže, které čtou velké vstupy z Blob.
  • Cache (souborová cache) stáhne každý soubor do lokální cache před použitím. Používejte ho pro pracovní zátěže, které opakovaně čtou soubory, jež se vešly na lokální disk uzlu.

Pro určení, který režim vyhovuje vaší zátěži, a pro nastavení velikosti bloku, paměti a diskové cache, viz režim streamování versus caching pro BlobFuse mounty a Configure BlobFuse pro streamovací režim.

NFS

Sdílené složky NFS můžete připojit k uzlům fondu, abyste službě Batch umožnili přístup k tradičním systémům souborů. Nastavení může být jeden server NFS nasazený v cloudu nebo místní server NFS přístupný přes virtuální síť. Připojení NFS podporují Avere vFXT, distribuovanou mezipaměť v paměti pro úlohy vysokovýkonného výpočetního prostředí (HPC), které jsou náročné na data. Připojení NFS také podporují další standardní rozhraní kompatibilní se systémem souborů NFS, jako je NFS pro Azure Blob a NFS pro Azure Files.

Následující příklad ukazuje konfiguraci připojení systému souborů NFS:

using System;
using System.Threading.Tasks;
using Azure;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Batch;
using Azure.ResourceManager.Batch.Models;

internal static class Program
{
    private static async Task Main()
    {
        await CreatePoolWithNfsMountAsync(
            subscriptionId: "<subscription-id>",
            resourceGroupName: "<resource-group>",
            batchAccountName: "<batch-account-name>",
            poolId: "<pool-name>");
    }

    private static async Task CreatePoolWithNfsMountAsync(
        string subscriptionId,
        string resourceGroupName,
        string batchAccountName,
        string poolId)
    {
        BatchAccountPoolData pool = new BatchAccountPoolData()
        {
            VmSize = "standard_d1_v2",
            DeploymentConfiguration = new BatchDeploymentConfiguration()
            {
                VmConfiguration = new BatchVmConfiguration(
                    imageReference: new BatchImageReference()
                    {
                        Publisher = "canonical",
                        Offer = "0001-com-ubuntu-server-focal",
                        Sku = "20_04-lts",
                        Version = "latest",
                    },
                    nodeAgentSkuId: "batch.node.ubuntu 20.04"),
            },
        };

        pool.MountConfiguration.Add(new BatchMountConfiguration
        {
            NfsMountConfiguration = new BatchNfsMountConfiguration(
                source: "<source>",
                relativeMountPath: "<relative-mount-path>")
            {
                MountOptions = "options ver=3.0",
            },
        });

        var armClient = new ArmClient(new DefaultAzureCredential());
        BatchAccountResource batchAccount = armClient.GetBatchAccountResource(
            BatchAccountResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, batchAccountName));

        await batchAccount.GetBatchAccountPools()
            .CreateOrUpdateAsync(WaitUntil.Completed, poolId, pool);

        Console.WriteLine($"Created pool '{poolId}' with an NFS mount.");
    }
}

CIFS

Připojení CIFS k uzlům fondu je dalším způsobem, jak poskytnout přístup k tradičním systémům souborů. CIFS je protokol pro sdílení souborů, který poskytuje otevřený a multiplatformní mechanismus pro vyžádání souborů a služeb síťového serveru. CIFS je založená na vylepšené verzi protokolu SMB pro sdílení souborů v internetu a intranetu.

Následující příklad ukazuje konfiguraci připojení souboru CIFS.

using System;
using System.Threading.Tasks;
using Azure;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Batch;
using Azure.ResourceManager.Batch.Models;

internal static class Program
{
    private static async Task Main()
    {
        await CreatePoolWithCifsMountAsync(
            subscriptionId: "<subscription-id>",
            resourceGroupName: "<resource-group>",
            batchAccountName: "<batch-account-name>",
            poolId: "<pool-name>");
    }

    private static async Task CreatePoolWithCifsMountAsync(
        string subscriptionId,
        string resourceGroupName,
        string batchAccountName,
        string poolId)
    {
        BatchAccountPoolData pool = new BatchAccountPoolData()
        {
            VmSize = "standard_d1_v2",
            DeploymentConfiguration = new BatchDeploymentConfiguration()
            {
                VmConfiguration = new BatchVmConfiguration(
                    imageReference: new BatchImageReference()
                    {
                        Publisher = "canonical",
                        Offer = "0001-com-ubuntu-server-focal",
                        Sku = "20_04-lts",
                        Version = "latest",
                    },
                    nodeAgentSkuId: "batch.node.ubuntu 20.04"),
            },
        };

        pool.MountConfiguration.Add(new BatchMountConfiguration
        {
            CifsMountConfiguration = new BatchCifsMountConfiguration(
                username: "<storage-account-name>",
                source: "<source>",
                password: "<storage-account-key>",
                relativeMountPath: "<relative-mount-path>")
            {
                MountOptions = "-o vers=3.0,dir_mode=0777,file_mode=0777,serverino,domain=<domain-name>",
            },
        });

        var armClient = new ArmClient(new DefaultAzureCredential());
        BatchAccountResource batchAccount = armClient.GetBatchAccountResource(
            BatchAccountResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, batchAccountName));

        await batchAccount.GetBatchAccountPools()
            .CreateOrUpdateAsync(WaitUntil.Completed, poolId, pool);

        Console.WriteLine($"Created pool '{poolId}' with a CIFS mount.");
    }
}

Poznámka

Hledáte příklad použití PowerShellu místo jazyka C#? Další skvělý příklad najdete tady: Připojení služby Azure File k fondu Azure Batch.

Další kroky