Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 det virtuella filsystemet och fungerar 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 mer effektivt att komma åt data än att kräva att varje uppgift hämtar sina egna data från ett stort delat dataset. 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-lagring
- Nätverksfilsystem (NFS), 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-delningskatalog | Azure Blob-container | NFS-koppling | Montering av CIFS |
---|---|---|---|---|
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 maskiner (VM) måste ha åtkomst tillhttps://packages.microsoft.com
för att kunna ladda ned paketenblobfuse
ochgpg
. 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
, NfsMountConfiguration
eller 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 för 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 vianet 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_DIR
som pekar på platsen för det monterade filsystemet och loggfilerna. Du kan använda loggfilerna för felsökning och avlusning.
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 fildelning.
Logga in på din Azure-prenumeration och ersätt platshållaren med ditt prenumerations-ID.
Connect-AzAccount -Subscription "<subscription-ID>"
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>
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 en nod av storleken Standard_D2_V2, med Windows Server 2016 Datacenter, 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
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 använda RDP eller SSH för att ansluta till noden och kontrollera loggfilerna relaterade till filsystemets monteringar. Följande felmeddelande kan uppstå när du försöker montera en Azure-fildelning 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>
Anslut till noden via RDP.
Öppna loggfilen fshare-S.log på D:\batch\tasks\fsmounts.
Granska felmeddelandena, till exempel:
CMDKEY: Credential added successfully. System error 86 has occurred. The specified network password is not correct.
Felsök problemet med hjälp av Azure-fildelningars felsökare.
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.
I Azure Portal söker du efter och väljer det Batch-konto som har din pool.
På sidan Batch-konto väljer du Pooler i det vänstra navigeringsfältet.
På sidan Pooler väljer du poolens namn.
På poolens sida väljer du Noder i det vänstra navigeringsfältet.
På sidan Noder väljer du nodens namn.
På nodens sida väljer du Ladda upp batchloggar.
I fönstret Ladda upp batchloggar väljer du Välj lagringscontainer.
På sidan Lagringskonton väljer du ett lagringskonto.
På sidan Containrar väljer eller skapar du en container att ladda upp filerna till och väljer Välj.
Välj Starta uppladdning.
När uppladdningen är klar laddar du ned filerna och öppnar agent-debug.log.
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.
Felsök problemet med hjälp av felsökaren för Azure-fildelning.
Montera en filresurs 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.
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
Vänta tills noden är i inaktivt tillstånd.
I Azure Portal söker du efter och väljer det lagringskonto som har din filresurs.
På lagringskontosidans meny väljer du Filresurser i det vänstra navigeringsfältet.
På sidan Filresurser väljer du den filresurs som du vill montera.
På filresursens sida väljer du Anslut.
I fönstret Anslut väljer du fliken Windows .
För Enhetsbeteckning anger du den enhet som du vill använda. Standardvärdet är Z.
För Autentiseringsmetod väljer du hur du vill ansluta till filresursen.
Välj Visa skript och kopiera PowerShell-skriptet för att montera fildelningen.
Anslut till noden via RDP.
Kör kommandot som du kopierade för att montera fildelningen.
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-delningsresurs
Azure Files är standarderbjudandet för Azure-molnfilsystem. Följande konfiguration monterar en Azure Files-resurs med namnet <file-share-name>
på 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 Portal.
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:
Grant limited access to Azure Storage resources using shared access signatures (SAS) (Bevilja begränsad åtkomst till Azure Storage-resurser med hjälp av signaturer för delad åtkomst (SAS))
Konfigurer hanterade identiteter i batch-pooler
Tips
Om du använder en hanterad identitet kontrollerar du att identiteten har tilldelats till poolen så att den är tillgänglig på den virtuella datorn som utför monteringen. Identiteten måste också ha rollen Storage Blob Data Contributor.
Följande konfiguration monterar ett blobfilsystem med BlobFuse-alternativ. För illustrativa ändamål visar exemplet AccountKey
, 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ändarrummet och när poolen skapas monteras katalogen som root. 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:
- Blobfuse2-projekt
- Vanliga frågor och svar om Blobfuse-felsökning
- GitHub-problem på lagringsplatsen azure-storage-fuse
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 CIFS-filmonteringskonfiguration.
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.