Dela via


Montera ett virtuellt filsystem i en Batch-pool

Azure Batch stöder montering av molnlagring eller ett externt filsystem på Windows- eller Linux-beräkningsnoder i Batch-pooler. När en beräkningsnod ansluter till poolen monteras och fungerar det virtuella filsystemet som en lokal enhet på noden. Den här artikeln visar hur du monterar ett virtuellt filsystem på en pool med beräkningsnoder med hjälp av Batch Management Library för .NET.

Om du monterar filsystemet i poolen blir det enklare och effektivare att komma åt data än att kräva uppgifter för att hämta egna data från en stor delad datauppsättning. Tänk dig ett scenario där flera uppgifter behöver åtkomst till en gemensam uppsättning data, som att återge en film. Varje uppgift renderar en eller flera bildrutor samtidigt från scenfilerna. Genom att montera en enhet som innehåller scenfilerna är det enklare för varje beräkningsnod att komma åt delade data.

Du kan också välja det underliggande filsystemet för att uppfylla kraven för prestanda, genomgående och indata/utdata per sekund (IOPS). Du kan oberoende skala filsystemet baserat på antalet beräkningsnoder som samtidigt har åtkomst till data.

Du kan till exempel använda en Avere vFXT-distribuerad minnesintern cache för att stödja stora återgivningar i filmskala med tusentals samtidiga återgivningsnoder som har åtkomst till lokala källdata. Eller för data som redan finns i molnbaserad bloblagring kan du använda BlobFuse för att montera data som ett lokalt filsystem. Azure Files tillhandahåller ett liknande arbetsflöde som BlobFuse och är tillgängligt i både Windows och Linux.

Konfigurationer som stöds

Du kan montera följande typer av filsystem:

  • Azure Files
  • Azure Blob Storage
  • NFS (Network File System), inklusive en Avere vFXT-cache
  • Cifs (Common Internet File System)

Batch stöder följande typer av virtuella filsystem för nodagenter som skapas för respektive utgivare och erbjudande.

Typ av operativsystem Azure Files-resurs Azure Blob-container NFS-montering CIFS-montering
Linux ✔️ ✔️ ✔️ ✔️
Windows ✔️

Kommentar

Montering av ett virtuellt filsystem stöds inte i Batch-pooler som skapats före den 8 augusti 2019.

Nätverkskrav

När du använder virtuella filmonteringar med Batch-pooler i ett virtuellt nätverk bör du tänka på följande krav och se till att ingen nödvändig trafik blockeras. Mer information finns i Batch-pooler i ett virtuellt nätverk.

  • Azure Files-resurser kräver att TCP-port 445 är öppen för trafik till och från storage tjänsttaggen. Mer information finns i Använda en Azure-filresurs med Windows.

  • Azure Blob-containrar kräver att TCP-port 443 är öppen för trafik till och från storage tjänsttaggen. Virtuella datorer (VM) måste ha åtkomst till för att https://packages.microsoft.com ladda ned paketen blobfuse och gpg . Beroende på konfigurationen kan du behöva åtkomst till andra URL:er.

  • NFS (Network File System) kräver åtkomst till port 2049 som standard. Konfigurationen kan ha andra krav. Virtuella datorer måste ha åtkomst till lämplig pakethanterare för att kunna ladda ned paketen nfs-common (för Debian eller Ubuntu). URL:en kan variera beroende på din operativsystemversion. Beroende på konfigurationen kan du också behöva åtkomst till andra URL:er.

    Montering av Azure Blob eller Azure Files via NFS kan ha fler nätverkskrav. Dina beräkningsnoder kan till exempel behöva använda samma virtuella nätverksundernät som lagringskontot.

  • Common Internet File System (CIFS) kräver åtkomst till TCP-port 445. Virtuella datorer måste ha åtkomst till lämplig pakethanterare för att kunna ladda ned cifs-utils paketet. URL:en kan variera beroende på din operativsystemversion.

Monteringskonfiguration och implementering

Om du monterar ett virtuellt filsystem i en pool blir filsystemet tillgängligt för varje beräkningsnod i poolen. Konfigurationen för filsystemet sker när en beräkningsnod ansluter till en pool, startar om eller omskapas.

Om du vill montera ett filsystem på en pool skapar du ett MountConfiguration-objekt som matchar ditt virtuella filsystem: AzureBlobFileSystemConfiguration, AzureFileShareConfiguration, NfsMountConfigurationeller CifsMountConfiguration.

Alla monteringskonfigurationsobjekt behöver följande basparametrar. Vissa monteringskonfigurationer har specifika parametrar för det specifika filsystemet, som kodexemplen innehåller mer detaljerat.

  • Kontonamn eller källa för lagringskontot.

  • Relativ monteringssökväg eller källa, platsen för filsystemet som ska monteras på beräkningsnoden, i förhållande till standardkatalogen \fsmounts som är tillgänglig via AZ_BATCH_NODE_MOUNTS_DIR.

    Den exakta katalogplatsen \fsmounts varierar beroende på nodoperativsystem. Till exempel mappar platsen på en Ubuntu-nod till mnt\batch\tasks\fsmounts.

  • Monteringsalternativ eller BlobFuse-alternativ som beskriver specifika parametrar för montering av ett filsystem.

När du skapar poolen och MountConfiguration objektet tilldelar du objektet till egenskapen MountConfigurationList . Montering för filsystemet sker när en nod ansluter till poolen, startar om eller omskapas.

Batch-agenten implementerar montering på olika sätt i Windows och Linux.

  • I Linux installerar Batch paketet cifs-utils. Sedan utfärdar Batch monteringskommandot.

  • I Windows använder cmdkey Batch för att lägga till dina autentiseringsuppgifter för Batch-kontot. Sedan utfärdar Batch monteringskommandot via net use. Till exempel:

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

När du monterar filsystemet skapas en miljövariabel AZ_BATCH_NODE_MOUNTS_DIRsom pekar på platsen för det monterade filsystemet och loggfilerna. Du kan använda loggfilerna för felsökning och felsökning.

Montera en Azure Files-resurs med PowerShell

Du kan använda Azure PowerShell för att montera en Azure Files-resurs på en Windows- eller Linux Batch-pool. Följande procedur beskriver hur du konfigurerar och monterar ett Azure-filresursfilsystem i en Batch-pool.

Viktigt!

Det maximala antalet monterade filsystem i en pool är 10. Mer information och andra begränsningar finns i Batch-tjänstkvoter och -gränser.

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration.
  • Azure PowerShell har installerats eller använder Azure Cloud Shell och väljer PowerShell för gränssnittet.
  • Ett befintligt Batch-konto med ett länkat Azure Storage-konto som har en filresurs.
  1. Logga in på din Azure-prenumeration och ersätt platshållaren med ditt prenumerations-ID.

    Connect-AzAccount -Subscription "<subscription-ID>"
    
  2. Hämta kontexten för ditt Batch-konto. <batch-account-name> Ersätt platshållaren med ditt Batch-kontonamn.

    $context = Get-AzBatchAccount -AccountName <batch-account-name>
    
  3. Skapa en Batch-pool med följande inställningar. <storage-account-name> Ersätt platshållarna , <storage-account-key>och <file-share-name> med värdena från lagringskontot som är länkat till ditt Batch-konto. <pool-name> Ersätt platshållaren med det namn som du vill ha för poolen.

    Följande skript skapar en pool med ett Windows Server 2016 Datacenter, Standard_D2_V2 storleksnod och monterar sedan Azure-filresursen på nodens S-enhet .

    $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. Anslut till noden och kontrollera att utdatafilen är korrekt.

Få åtkomst till de monterade filerna

Azure Batch-uppgifter kan komma åt de monterade filerna med hjälp av enhetens direkta sökväg, till exempel:

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

Azure Batch-agenten beviljar endast åtkomst för Azure Batch-uppgifter. Om du använder RDP (Remote Desktop Protocol) för att ansluta till noden har ditt användarkonto inte automatisk åtkomst till monteringsenheten. När du ansluter till noden via RDP måste du lägga till autentiseringsuppgifter för lagringskontot för att komma åt S-enheten direkt.

Använd cmdkey för att lägga till autentiseringsuppgifterna. <storage-account-name> Ersätt platshållarna och <storage-account-key> med din egen information.

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

Felsöka monteringsproblem

Om en monteringskonfiguration misslyckas misslyckas beräkningsnoden och nodtillståndet är inställt på Oanvändbar. Om du vill diagnostisera ett monteringskonfigurationsfel kontrollerar du egenskapen ComputeNodeError för mer information om felet.

Om du vill hämta loggfiler för felsökning kan du använda OutputFiles-API:et för att ladda upp *.log-filerna. * .log-filerna innehåller information om filsystemmonteringen på platsen AZ_BATCH_NODE_MOUNTS_DIR . Monteringsloggfiler har formatet: <type-mountDirOrDrive>><.log för varje montering. En CIFS-montering vid en monteringskatalog med namnet test har till exempel en monteringsloggfil med namnet: cifs-test.log.

Undersöka monteringsfel

Du kan RDP eller SSH till noden för att kontrollera loggfilerna som hör till filsystemmonteringar. Följande exempel på ett felmeddelande är möjligt när du försöker montera en Azure-filresurs på en Batch-nod:

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

Om du får det här felet, RDP eller SSH till noden för att kontrollera de relaterade loggfilerna. Batch-agenten implementerar montering på olika sätt i Windows och Linux för Azure-filresurser. I Linux installerar Batch paketet cifs-utils. Sedan utfärdar Batch monteringskommandot. I Windows använder cmdkey Batch för att lägga till dina autentiseringsuppgifter för Batch-kontot. Sedan utfärdar Batch monteringskommandot via net use. Till exempel:

net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
  1. Anslut till noden via RDP.

  2. Öppna loggfilen fshare-S.logD:\batch\tasks\fsmounts.

  3. Granska felmeddelandena, till exempel:

    CMDKEY: Credential added successfully.
    System error 86 has occurred.
    
    The specified network password is not correct.
    
  4. Felsöka problemet med hjälp av felsökaren för Azure-filresurser.

Om du inte kan använda RDP eller SSH för att kontrollera loggfilerna på noden kan du ladda upp loggarna till ditt Azure Storage-konto. Du kan använda den här metoden för både Windows- och Linux-loggar.

  1. I Azure-portalen söker du efter och väljer det Batch-konto som har din pool.

  2. På sidan Batch-konto väljer du Pooler i det vänstra navigeringsfältet.

  3. På sidan Pooler väljer du poolens namn.

  4. På poolens sida väljer du Noder i det vänstra navigeringsfältet.

  5. På sidan Noder väljer du nodens namn.

  6. På nodens sida väljer du Ladda upp batchloggar.

  7. I fönstret Ladda upp batchloggar väljer du Välj lagringscontainer.

  8. På sidan Lagringskonton väljer du ett lagringskonto.

  9. På sidan Containrar väljer eller skapar du en container att ladda upp filerna till och väljer Välj.

  10. Välj Starta uppladdning.

  11. När uppladdningen är klar laddar du ned filerna och öppnar agent-debug.log.

  12. Granska felmeddelandena, till exempel:

    ..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. Felsöka problemet med hjälp av felsökaren för Azure-filresurser.

Montera filresursen manuellt med PowerShell

Om du inte kan diagnostisera eller åtgärda monteringsfel kan du använda PowerShell för att montera filresursen manuellt i stället.

  1. Skapa en pool utan monteringskonfiguration. Till exempel:

    $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. Vänta tills noden är i inaktivt tillstånd.

  3. I Azure-portalen söker du efter och väljer det lagringskonto som har din filresurs.

  4. På lagringskontosidans meny väljer du Filresurser i det vänstra navigeringsfältet.

  5. På sidan Filresurser väljer du den filresurs som du vill montera.

  6. På filresursens sida väljer du Anslut.

  7. I fönstret Anslut väljer du fliken Windows .

  8. För Enhetsbeteckning anger du den enhet som du vill använda. Standardvärdet är Z.

  9. Som Autentiseringsmetod väljer du hur du vill ansluta till filresursen.

  10. Välj Visa skript och kopiera PowerShell-skriptet för montering av filresursen.

  11. Anslut till noden via RDP.

  12. Kör kommandot som du kopierade för att montera filresursen.

  13. Observera eventuella felmeddelanden i utdata. Använd den här informationen för att felsöka eventuella nätverksrelaterade problem.

Exempel på monteringskonfigurationer

Följande kodexempelkonfigurationer visar hur du monterar olika filresurssystem i en pool med beräkningsnoder.

Azure Files-resurs

Azure Files är standarderbjudandet för Azure-molnfilsystem. Följande konfiguration monterar en Azure Files-resurs med namnet <file-share-name>S-enheten . Information om parametrarna i exemplet finns i Montera SMB Azure-filresurs i Windows eller Skapa en NFS Azure-filresurs och montera den på en virtuell Linux-dator med hjälp av Azure-portalen.

new PoolAddParameter
{
    Id = poolId,
    MountConfiguration = new[]
    {
        new MountConfiguration
        {
            AzureFileShareConfiguration = new AzureFileShareConfiguration
            {
                AccountName = "<storage-account-name>",
                AzureFileUrl = "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"
            },
        }
    }
}

Azure Blob-container

Ett annat alternativ är att använda Azure Blob Storage via BlobFuse. För att montera ett blobfilsystem krävs antingen en kontonyckel, signatur för delad åtkomst (SAS) eller hanterad identitet med åtkomst till ditt lagringskonto.

Information om hur du hämtar dessa nycklar eller identiteter finns i följande artiklar:

Följande konfiguration monterar ett blobfilsystem med BlobFuse-alternativ. För illustrationsändamål visar AccountKeyexemplet , SasKey och IdentityReference, men du kan faktiskt bara ange en av dessa metoder.

new PoolAddParameter
{
    Id = poolId,
    MountConfiguration = new[]
    {
        new MountConfiguration
        {
            AzureBlobFileSystemConfiguration = new AzureBlobFileSystemConfiguration
            {
                AccountName = "<storage-account-name>",
                ContainerName = "<container-name>",
                // Use only one of the following three lines:
                AccountKey = "<storage-account-key>",
                SasKey = "<sas-key>",
                IdentityReference = new ComputeNodeIdentityReference("/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>"),
                RelativeMountPath = "<relative-mount-path>",
                BlobfuseOptions = "-o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120 "
            },
        }
    }
}

Om du vill få standardåtkomst till den blobfuse-monterade katalogen kör du uppgiften som administratör. BlobFuse monterar katalogen i användarutrymmet och när poolen skapas monteras katalogen som rot. I Linux är alla administratörsuppgifter rot. PÅ FUSE-referenssidan beskrivs alla alternativ för FUSE-modulen.

Mer information och tips om hur du använder BlobFuse finns i följande referenser:

NFS

Du kan montera NFS-resurser till poolnoder så att Batch kan komma åt traditionella filsystem. Konfigurationen kan vara en enda NFS-server som distribueras i molnet eller en lokal NFS-server som nås via ett virtuellt nätverk. NFS-monteringar stöder Avere vFXT, en distribuerad minnesintern cache för dataintensiva HPC-uppgifter (databehandling med höga prestanda). NFS-monteringar stöder även andra standardgränssnitt som är NFS-kompatibla, till exempel NFS för Azure Blob och NFS för Azure Files.

I följande exempel visas en konfiguration för en NFS-filsystemmontering:

new PoolAddParameter
{
    Id = poolId,
    MountConfiguration = new[]
    {
        new MountConfiguration
        {
            NfsMountConfiguration = new NFSMountConfiguration
            {
                Source = "<source>",
                RelativeMountPath = "<relative-mount-path>",
                MountOptions = "options ver=3.0"
            },
        }
    }
}

CIFS

Att montera CIFS på poolnoder är ett annat sätt att ge åtkomst till traditionella filsystem. CIFS är ett fildelningsprotokoll som tillhandahåller en öppen och plattformsoberoende mekanism för att begära nätverksserverfiler och tjänster. CIFS baseras på den förbättrade versionen av SMB-protokollet för fildelning på Internet och intranät.

I följande exempel visas en konfiguration för en CIFS-filmontering.

new PoolAddParameter
{
    Id = poolId,
    MountConfiguration = new[]
    {
        new MountConfiguration
        {
            CifsMountConfiguration = new CIFSMountConfiguration
            {
                Username = "<storage-account-name>",
                RelativeMountPath = "<relative-mount-path>",
                Source = "<source>",
                Password = "<storage-account-key>",
                MountOptions = "-o vers=3.0,dir_mode=0777,file_mode=0777,serverino,domain=<domain-name>"
            },
        }
    }
}

Kommentar

Letar du efter ett exempel som använder PowerShell i stället för C#? Du hittar ett annat bra exempel här: Montera Azure-fil till Azure Batch-pool.

Nästa steg