Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Batch ondersteunt het koppelen van cloudopslag of een extern bestandssysteem op Windows- of Linux-rekenknooppunten in Batch-pools. Wanneer een rekenknooppunt lid wordt van de pool, wordt het virtuele bestandssysteem aangekoppeld en fungeert het als een lokaal station op dat knooppunt. In dit artikel leest u hoe u een virtueel bestandssysteem koppelt aan een pool rekenknooppunten met behulp van de Batch-beheerbibliotheek voor .NET.
Het koppelen van het bestandssysteem aan de pool maakt het openen van gegevens eenvoudiger en efficiënter dan het vereisen van taken om hun eigen gegevens op te halen uit een grote gedeelde gegevensset. Overweeg een scenario waarin meerdere taken toegang nodig hebben tot een gemeenschappelijke set gegevens, zoals het weergeven van een film. Elke taak geeft een of meer frames tegelijk weer vanuit de scènebestanden. Door een schijf te koppelen die de scènebestanden bevat, wordt het gemakkelijker voor elk rekenknooppunt om toegang te krijgen tot de gedeelde gegevens.
U kunt ook het onderliggende bestandssysteem kiezen om te voldoen aan de vereisten voor prestaties en invoer-/uitvoerbewerkingen per seconde (IOPS). U kunt het bestandssysteem onafhankelijk schalen op basis van het aantal rekenknooppunten dat gelijktijdig toegang heeft tot de gegevens.
U kunt bijvoorbeeld een gedistribueerde cache van Avere vFXT gebruiken ter ondersteuning van grootschalige renders op filmschaal met duizenden gelijktijdige renderknooppunten die toegang hebben tot on-premises brongegevens. Of voor gegevens die zich al in de cloud-blobopslag bevinden, kunt u BlobFuse gebruiken om de gegevens te koppelen als een lokaal bestandssysteem. Azure Files biedt een vergelijkbare werkstroom als blobFuse en is beschikbaar in zowel Windows als Linux.
Ondersteunde configuraties
U kunt de volgende typen bestandssystemen koppelen:
- Azure Files
- Azure Blobopslag
- Network File System (NFS), inclusief een Avere vFXT-cache
- Common Internet File System (CIFS)
Batch ondersteunt de volgende typen virtuele bestandssysteemen voor knooppuntagents die worden geproduceerd voor hun respectieve uitgever en aanbieding.
| Type besturingssysteem | Azure Files-share | Azure Blob-container | NFS-koppeling | CIFS-koppeling |
|---|---|---|---|---|
| Linux | ✔️ | ✔️ | ✔️ | ✔️ |
| Windows | ✔️ | ❌ | ❌ | ❌ |
Notitie
Het koppelen van een virtueel bestandssysteem wordt niet ondersteund in Batch-pools die vóór 8 augustus 2019 zijn gemaakt.
Netwerkvereisten
Wanneer u virtuele bestandskoppelingen gebruikt met Batch-pools in een virtueel netwerk, moet u rekening houden met de volgende vereisten en ervoor zorgen dat er geen vereist verkeer wordt geblokkeerd. Zie Batch-pools in een virtueel netwerk voor meer informatie.
Voor Azure Files-shares moet TCP-poort 445 zijn geopend voor verkeer van en naar de
storageservicetag. Zie Een Azure-bestandsshare gebruiken met Windows voor meer informatie.Voor Azure Blob-containers moet TCP-poort 443 zijn geopend voor verkeer van en naar de
storageservicetag. Virtuele machines (VMs) moeten toegang hebben tothttps://packages.microsoft.comom de pakkettenblobfuseengpgte downloaden. Afhankelijk van uw configuratie hebt u mogelijk toegang nodig tot andere URL's.Network File System (NFS) vereist standaard toegang tot poort 2049. Uw configuratie heeft mogelijk andere vereisten. VM's moeten toegang hebben tot de juiste pakketbeheerder om de
nfs-commonpakketten (voor Debian of Ubuntu) te downloaden. De URL kan variëren op basis van uw versie van het besturingssysteem. Afhankelijk van uw configuratie hebt u mogelijk ook toegang nodig tot andere URL's.Het koppelen van Azure Blob of Azure Files via NFS kan meer netwerkvereisten hebben. Uw rekenknooppunten moeten bijvoorbeeld hetzelfde subnet van het virtuele netwerk gebruiken als het opslagaccount.
Common Internet File System (CIFS) vereist toegang tot TCP-poort 445. VM's moeten toegang hebben tot het juiste pakketbeheer om het
cifs-utilspakket te kunnen downloaden. De URL kan variëren op basis van uw versie van het besturingssysteem.
Montageconfiguratie en -implementatie
Door een virtueel bestandssysteem in een pool te koppelen, is het bestandssysteem beschikbaar voor elk rekenknooppunt in de pool. Configuratie voor het bestandssysteem vindt plaats wanneer een rekenknooppunt lid wordt van een pool, opnieuw wordt opgestart of opnieuw wordt gemaakt.
Als u een bestandssysteem aan een pool wilt koppelen, maakt u een MountConfiguration-object dat overeenkomt met uw virtuele bestandssysteem: AzureBlobFileSystemConfiguration, AzureFileShareConfiguration, NfsMountConfigurationof CifsMountConfiguration.
Alle configuratieobjecten voor koppelen hebben de volgende basisparameters nodig. Sommige configuraties voor koppelen hebben specifieke parameters voor het specifieke bestandssysteem, die de codevoorbeelden in meer detail presenteren.
Accountnaam of bron van het opslagaccount.
Relatief koppelpad of bron, de locatie van het bestandssysteem die moet worden gekoppeld op het rekenknooppunt, ten opzichte van de standaardmap \fsmounts die toegankelijk is via
AZ_BATCH_NODE_MOUNTS_DIR.De exacte locatie van de map \fsmounts varieert afhankelijk van het knooppunt-besturingssysteem. De locatie op een Ubuntu-knooppunt wordt bijvoorbeeld toegewezen aan mnt\batch\tasks\fsmounts.
Koppelopties of BlobFuse-opties die specifieke parameters beschrijven voor het koppelen van een bestandssysteem.
Wanneer u de pool en het MountConfiguration object maakt, wijst u het object toe aan de MountConfigurationList eigenschap. Koppelen van het bestandssysteem gebeurt wanneer een knooppunt lid wordt van de pool, opnieuw wordt opgestart of hersteld wordt naar een eerdere staat.
De Batch-agent implementeert het koppelen anders op Windows en Linux.
In Linux installeert Batch het pakket
cifs-utils. Vervolgens geeft Batch de koppelingsopdracht uit.Op Windows gebruikt Batch
cmdkeyom uw Batch-accountreferenties toe te voegen. Vervolgens voert Batch de mountopdracht uit vianet use. Voorbeeld:net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
Het koppelen van het bestandssysteem maakt een omgevingsvariabele AZ_BATCH_NODE_MOUNTS_DIR, die verwijst naar de locatie van het gekoppelde bestandssysteem en logboekbestanden. U kunt de logboekbestanden gebruiken voor probleemoplossing en foutopsporing.
Een Azure Files-share koppelen met PowerShell
U kunt Azure PowerShell gebruiken om een Azure Files-share te koppelen aan een Windows- of Linux Batch-pool. De volgende procedure begeleidt u bij het configureren en koppelen van een Azure-bestandssysteem voor bestandsshares in een Batch-pool.
Belangrijk
Het maximum aantal gekoppelde bestandssystemen in een groep is 10. Zie Quota en limieten voor Batch-services voor meer informatie en andere limieten.
Vereisten
- Een Azure-account met een actief abonnement.
- Azure PowerShell geïnstalleerd of Azure Cloud Shell gebruiken en PowerShell selecteren voor de interface.
- Een bestaand Batch-account met een gekoppeld Azure Storage-account met een bestandsshare.
Meld u aan bij uw Azure-abonnement en vervang de tijdelijke aanduiding door uw abonnements-id.
Connect-AzAccount -Subscription "<subscription-ID>"Haal de context voor uw Batch-account op. Vervang de tijdelijke aanduiding door de
<batch-account-name>naam van uw Batch-account.$context = Get-AzBatchAccount -AccountName <batch-account-name>Maak een Batch-pool met de volgende instellingen. Vervang de
<storage-account-name>,<storage-account-key>, en<file-share-name>plaatsaanduidingen door de waarden van het opslagaccount dat is gelinkt aan uw Batch-account. Vervang de<pool-name>tijdelijke aanduiding door de gewenste naam voor de pool.Met het volgende script maakt u een pool met één Windows Server 2016 Datacenter-knooppunt van de grootte Standard_D2_V2 en koppelt vervolgens de Azure-bestandsshare aan het S-station van het knooppunt.
$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 $contextMaak verbinding met het knooppunt en controleer of het uitvoerbestand juist is.
Toegang tot de gekoppelde bestanden
Azure Batch-taken hebben toegang tot de gekoppelde bestanden door het directe pad van de schijf te gebruiken, bijvoorbeeld:
cmd /c "more S:\folder1\out.txt & timeout /t 90 > NULL"
De Azure Batch-agent verleent alleen toegang voor Azure Batch-taken. Als u Remote Desktop Protocol (RDP) gebruikt om verbinding te maken met het knooppunt, heeft uw gebruikersaccount geen automatische toegang tot het koppelstation. Wanneer u via RDP verbinding maakt met het knooppunt, moet u gegevens voor het opslagaccount toevoegen voor directe toegang tot het S-station.
Gebruik cmdkey om de referenties toe te voegen. Vervang de <storage-account-name> en <storage-account-key> plaatsaanduidingen door uw eigen gegevens.
cmdkey /add:"<storage-account-name>.file.core.windows.net" /user:"Azure\<storage-account-name>" /pass:"<storage-account-key>"
Problemen met koppelen oplossen
Als een koppelingsconfiguratie mislukt, mislukt het rekenknooppunt en wordt de status van het knooppunt ingesteld op Onbruikbaar. Als u een fout in de koppelingsconfiguratie wilt vaststellen, inspecteert u de eigenschap ComputeNodeError voor meer informatie over de fout.
Als u logboekbestanden wilt ophalen voor foutopsporing, kunt u de OutputFiles-API gebruiken om de *.log-bestanden te uploaden. De *.log-bestanden bevatten informatie over de koppeling van het bestandssysteem op de AZ_BATCH_NODE_MOUNTS_DIR locatie. Koppelingslogbestanden hebben de indeling: <type>-<mountDirOrDrive>.log voor elke mount. Een CIFS-koppeling op een koppelmap met de naam test heeft bijvoorbeeld een koppelingslogboekbestand met de naam: cifs-test.log.
Montagefouten onderzoeken
U kunt via RDP of SSH verbinding maken met het knooppunt om de logboekbestanden met betrekking tot bestandsysteem-mounts te controleren. Het volgende voorbeeldfoutbericht is mogelijk wanneer u een Azure-bestandsshare probeert te koppelen aan een Batch-knooppunt:
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
Als u deze fout krijgt, gebruikt u RDP of SSH voor het knooppunt om de gerelateerde logboekbestanden te controleren. De Batch-agent implementeert een andere koppeling in Windows en Linux voor Azure-bestandsshares. In Linux installeert Batch het pakket cifs-utils. Vervolgens geeft Batch de koppelingsopdracht uit. Op Windows gebruikt Batch cmdkey om uw Batch-accountreferenties toe te voegen. Vervolgens voert Batch de mountopdracht uit via net use. Voorbeeld:
net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
Maak verbinding met het knooppunt via RDP.
Open het logboekbestand fshare-S.log op D:\batch\tasks\fsmounts.
Bekijk de foutberichten, bijvoorbeeld:
CMDKEY: Credential added successfully. System error 86 has occurred. The specified network password is not correct.Los het probleem op met behulp van de probleemoplosser voor Azure-bestandsshares.
Als u RDP of SSH niet kunt gebruiken om de logboekbestanden op het knooppunt te controleren, kunt u de logboeken uploaden naar uw Azure-opslagaccount. U kunt deze methode gebruiken voor zowel Windows- als Linux-logboeken.
Zoek en selecteer in Azure Portal het Batch-account met uw pool.
Selecteer Pools in de linkernavigatiebalk op de pagina Batch-account.
Selecteer op de pagina Pools de naam van de pool.
Selecteer op de pagina van de pool in het linkernavigatievenster Knooppunten.
Selecteer op de pagina Knooppunten de naam van het knooppunt.
Selecteer Batchlogboeken uploaden op de knooppuntpagina.
Selecteer Opslagcontainer kiezen in het deelvenster Batchlogboeken uploaden.
Selecteer een opslagaccount op de pagina Opslagaccounts .
Selecteer of maak op de pagina Containers een container om de bestanden naar te uploaden en selecteer Selecteren.
Selecteer Uploaden starten.
Wanneer het uploaden is voltooid, downloadt u de bestanden en opent u agent-debug.log.
Bekijk de foutberichten, bijvoorbeeld:
..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.Los het probleem op met behulp van de probleemoplosser voor Azure-bestandsshares.
Een bestandsshare handmatig koppelen met PowerShell
Als u geen koppelingsfouten kunt vaststellen of oplossen, kunt u PowerShell gebruiken om de bestandsshare handmatig te koppelen.
Maak een pool zonder montageconfiguratie. Voorbeeld:
$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 $ContextWacht tot het knooppunt de status Niet-actief heeft.
Zoek en selecteer in Azure Portal het opslagaccount met uw bestandsshare.
Selecteer bestandsopslag in het menu van de opslagaccountpagina in het linkernavigatievenster.
Op de pagina Bestandsdeling selecteert u de bestandsdeling die u wilt mounten.
Selecteer Verbinding maken op de pagina van de bestandsshare.
Selecteer het tabblad Windows in het deelvenster Connect.
Voer voor de stationsletter het station in dat u wilt gebruiken. De standaardwaarde is Z.
Selecteer voor de verificatiemethode hoe u verbinding wilt maken met de bestandsshare.
Selecteer Script weergeven en kopieer het PowerShell-script om de bestandsshare te koppelen.
Maak verbinding met het knooppunt via RDP.
Voer de opdracht uit die u hebt gekopieerd om de bestandsshare te koppelen.
Noteer eventuele foutberichten in de uitvoer. Gebruik deze informatie om eventuele netwerkproblemen op te lossen.
Voorbeeldconfiguraties voor koppelen
In de volgende codevoorbeeldconfiguraties ziet u hoe u verschillende systemen voor bestandsshares kunt koppelen aan een groep rekenknooppunten.
Azure Files-share
Azure Files is het standaardaanbod van het Azure-cloudbestandssysteem. Met de volgende configuratie wordt een Azure Files-share genaamd <file-share-name> gekoppeld aan het S-station. Zie SMB Azure-bestandsshare koppelen in Windows of Een NFS Azure-bestandsshare maken en koppelen op een Virtuele Linux-machine met behulp van Azure Portal voor meer informatie over de parameters in het voorbeeld.
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
Een andere optie is om Azure Blob Storage te gebruiken via BlobFuse. Voor het koppelen van een blobbestandssysteem is een sas-sleutel (Shared Access Signature) of een beheerde identiteit met toegang tot uw opslagaccount vereist.
Zie de volgende artikelen voor meer informatie over het ophalen van deze sleutels of identiteiten:
Beheerde identiteiten configureren in Batch-groepen
Tip
Als u een beheerde identiteit gebruikt, moet u ervoor zorgen dat de identiteit is toegewezen aan de pool, zodat deze beschikbaar is op de virtuele machine die de koppeling maakt. De identiteit moet ook de Storage Blob Data Contributor-rol hebben.
De volgende configuratie koppelt een blobbestandssysteem met opties voor BlobFuse. Ter illustratie toont het voorbeeld AccountKey, SasKey en IdentityReference, maar in werkelijkheid kunt u slechts één van deze methoden opgeven.
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 "
},
}
}
}
Als u standaardtoegang wilt krijgen tot de gekoppelde blobFuse-map, voert u de taak uit als beheerder. BlobFuse koppelt de map aan de gebruikersruimte en bij het maken van een pool wordt de map als hoofdmap toegevoegd. In Linux zijn alle beheerderstaken hoofdtaken. De FUSE-referentiepagina beschrijft alle opties voor de FUSE-module.
Zie de volgende verwijzingen voor meer informatie en tips over het gebruik van BlobFuse:
- Blobfuse2-project
- Veelgestelde vragen over het oplossen van problemen met Blobfuse
- GitHub-problemen in de opslagplaats azure-storage-fuse
NFS
U kunt NFS-shares koppelen aan poolknooppunten om Batch toegang te geven tot traditionele bestandssystemen. De installatie kan één NFS-server zijn die is geïmplementeerd in de cloud of een on-premises NFS-server die via een virtueel netwerk wordt geopend. NFS-koppelingen ondersteunen Avere vFXT, een gedistribueerde cache in het geheugen voor gegevensintensieve HPC-taken (High Performance Computing). NFS-koppelingen ondersteunen ook andere standaardinterfaces die compatibel zijn met NFS, zoals NFS voor Azure Blob en NFS voor Azure Files.
In het volgende voorbeeld ziet u een configuratie voor een NFS-bestandssysteemkoppeling:
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
NfsMountConfiguration = new NFSMountConfiguration
{
Source = "<source>",
RelativeMountPath = "<relative-mount-path>",
MountOptions = "options ver=3.0"
},
}
}
}
CIFS
Het koppelen van CIFS aan poolknooppunten is een andere manier om toegang te bieden tot traditionele bestandssystemen. CIFS is een protocol voor het delen van bestanden dat een open en platformoverschrijdend mechanisme biedt voor het aanvragen van netwerkserverbestanden en -services. CIFS is gebaseerd op de verbeterde versie van het SMB-protocol voor het delen van internet- en intranetbestanden.
In het volgende voorbeeld ziet u een configuratie voor een CIFS-bestandskoppeling.
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>"
},
}
}
}
Notitie
Zoekt u een voorbeeld met PowerShell in plaats van C#? U kunt hier nog een goed voorbeeld vinden: Azure File koppelen aan Azure Batch-pool.