Virtuális fájlrendszer csatlakoztatása Batch-készlethez
Az Azure Batch támogatja a Felhőtárhely vagy egy külső fájlrendszer csatlakoztatását Windows vagy Linux rendszerű számítási csomópontokon a Batch-készletekben. Amikor egy számítási csomópont csatlakozik a készlethez, a virtuális fájlrendszer csatlakozik, és helyi meghajtóként működik ezen a csomóponton. Ez a cikk bemutatja, hogyan csatlakoztathat virtuális fájlrendszert számítási csomópontok készletéhez a Batch Management Library for .NET használatával.
A fájlrendszer készlethez való csatlakoztatása egyszerűbbé és hatékonyabbá teszi az adatok elérését, mint az, hogy a feladatok saját adatokat kérjenek le egy nagy megosztott adatkészletből. Fontolja meg azt a forgatókönyvet, amelyben több tevékenységnek is hozzá kell férnie egy közös adatkészlethez, például egy film rendereléséhez. Minden feladat egyszerre egy vagy több képkockát jelenít meg a jelenetfájlból. A jelenetfájlokat tartalmazó meghajtó csatlakoztatásával minden számítási csomópont könnyebben hozzáférhet a megosztott adatokhoz.
Emellett kiválaszthatja a mögöttes fájlrendszert is, hogy megfeleljen a teljesítményre vonatkozó, teljes és bemeneti/kimeneti műveletek másodpercenkénti (IOPS) követelményeinek. A fájlrendszert egymástól függetlenül skálázhatja az adatokhoz egyidejűleg hozzáférő számítási csomópontok száma alapján.
Használhat például egy memóriabeli gyorsítótárban elosztott Avere vFXT-t a nagy méretű, több ezer egyidejű renderelési csomóponttal rendelkező, a helyszíni forrásadatokhoz hozzáférő renderelési csomópontok támogatásához. A felhőalapú blobtárolóban lévő adatok esetében a BlobFuse használatával helyi fájlrendszerként is csatlakoztathatja az adatokat. Az Azure Files a BlobFuse-hoz hasonló munkafolyamatot biztosít, és Windows és Linux rendszeren is elérhető.
Támogatott konfigurációk
A következő típusú fájlrendszereket csatlakoztathatja:
- Azure Files
- Azure Blob Storage
- Hálózati fájlrendszer (NFS), beleértve az Avere vFXT-gyorsítótárat
- Általános internetes fájlrendszer (CIFS)
A Batch a következő virtuális fájlrendszer-típusokat támogatja a csomópontügynökök számára, amelyek a megfelelő közzétevőhöz és ajánlathoz készültek.
Operációs rendszer típusa | Azure Files-megosztás | Azure Blob-tároló | NFS-csatlakoztatás | CIFS-csatlakoztatás |
---|---|---|---|---|
Linux | ✔️ | ✔️ | ✔️ | ✔️ |
Windows | ✔️ | ❌ | ❌ | ❌ |
Feljegyzés
A virtuális fájlrendszer csatlakoztatása nem támogatott a 2019. augusztus 8. előtt létrehozott Batch-készletekben.
Hálózati követelmények
Ha virtuális hálózatban batch-készletekkel rendelkező virtuális fájlcsatlakoztatásokat használ, tartsa szem előtt az alábbi követelményeket, és győződjön meg arról, hogy a szükséges forgalom nincs blokkolva. További információ: Batch-készletek egy virtuális hálózaton.
Az Azure Files-megosztásokhoz meg kell nyitni a 445-ös TCP-portot a
storage
szolgáltatáscímke felé és onnan érkező forgalom számára. További információ: Azure-fájlmegosztás használata a Windowssal.Az Azure Blob-tárolóknak meg kell nyitniuk a 443-as TCP-portot a
storage
szolgáltatáscímke felé és onnan érkező forgalom számára. A virtuális gépeknek (virtuális gépeknek) hozzáférésselhttps://packages.microsoft.com
kell rendelkezniük ablobfuse
csomagok letöltéséhezgpg
. A konfigurációtól függően előfordulhat, hogy más URL-címekhez is hozzá kell férnie.A hálózati fájlrendszernek (NFS) alapértelmezés szerint hozzá kell férnie a 2049-s porthoz. Előfordulhat, hogy a konfiguráció más követelményekkel is rendelkezik. A virtuális gépeknek hozzáféréssel kell rendelkezniük a megfelelő csomagkezelőhöz a
nfs-common
(Debian vagy Ubuntu) csomagok letöltéséhez. Az URL-cím az operációs rendszer verziójától függően változhat. A konfigurációtól függően előfordulhat, hogy más URL-címekhez is hozzá kell férnie.Az Azure Blob vagy az Azure Files NFS-n keresztüli csatlakoztatása további hálózati követelményekkel járhat. Előfordulhat például, hogy a számítási csomópontoknak ugyanazt a virtuális hálózati alhálózatot kell használniuk, mint a tárfiók.
A gyakori internetes fájlrendszerhez (CIFS) hozzá kell férnie a 445-ös TCP-porthoz. A virtuális gépeknek hozzáféréssel kell rendelkezniük a megfelelő csomagkezelőhöz a
cifs-utils
csomag letöltéséhez. Az URL-cím az operációs rendszer verziójától függően változhat.
Konfiguráció és megvalósítás csatlakoztatása
Ha virtuális fájlrendszert csatlakoztat egy készlethez, a fájlrendszer elérhetővé válik a készlet összes számítási csomópontja számára. A fájlrendszer konfigurációja akkor történik, ha egy számítási csomópont csatlakozik egy készlethez, újraindul vagy újraépül.
Ha fájlrendszert szeretne csatlakoztatni egy készlethez, hozzon létre egy MountConfiguration objektumot, amely megfelel a virtuális fájlrendszernek: AzureBlobFileSystemConfiguration
, AzureFileShareConfiguration
, NfsMountConfiguration
vagy CifsMountConfiguration
.
Minden csatlakoztatási konfigurációs objektumnak a következő alapparaméterekre van szüksége. Egyes csatlakoztatási konfigurációk adott paraméterekkel rendelkeznek az adott fájlrendszerhez, amelyeket a kód példái részletesebben mutatnak be.
A tárfiók fiókneve vagy forrása .
Relatív csatlakoztatási útvonal vagy forrás, a számítási csomóponton csatlakoztatni kívánt fájlrendszer helye a standard \fsmounts könyvtárhoz viszonyítva, amelyen keresztül
AZ_BATCH_NODE_MOUNTS_DIR
elérhető.A pontos \fsmounts könyvtár helye a csomópont operációs rendszerétől függően változik. Egy Ubuntu-csomópont helye például mnt\batch\tasks\fsmounts lesz.
Csatlakoztatási beállítások vagy BlobFuse-beállítások , amelyek a fájlrendszer csatlakoztatásának adott paramétereit írják le.
A készlet és az MountConfiguration
objektum létrehozásakor hozzárendeli az objektumot a MountConfigurationList
tulajdonsághoz. A fájlrendszer csatlakoztatása akkor történik, ha egy csomópont csatlakozik a készlethez, újraindul vagy újraépül.
A Batch-ügynök másképpen implementálja a csatlakoztatást Windows és Linux rendszeren.
Linux rendszeren a Batch telepíti a csomagot
cifs-utils
. Ezután a Batch kiadja a csatlakoztatási parancsot.Windows rendszeren a Batch a Batch-fiók hitelesítő adatainak hozzáadását használja
cmdkey
. Ezután a Batch kiadja a csatlakoztatási parancsotnet use
. Példa:net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
A fájlrendszer csatlakoztatása létrehoz egy környezeti változót AZ_BATCH_NODE_MOUNTS_DIR
, amely a csatlakoztatott fájlrendszer és naplófájlok helyére mutat. A naplófájlokat hibaelhárításhoz és hibakereséshez használhatja.
Azure Files-megosztás csatlakoztatása a PowerShell-lel
Az Azure PowerShell használatával Azure Files-megosztásokat csatlakoztathat Windows- vagy Linux Batch-készlethez. Az alábbi eljárás végigvezeti egy Azure-fájlmegosztási fájlrendszer konfigurálásával és csatlakoztatásával egy Batch-készleten.
Fontos
A készleten lévő csatlakoztatott fájlrendszerek maximális száma 10. További részletekért és egyéb korlátozásokért tekintse meg a Batch szolgáltatás kvótáit és korlátait.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel.
- Az Azure PowerShell telepítve van, vagy használja az Azure Cloud Shellt , és válassza a PowerShellt a felülethez.
- Meglévő Batch-fiók egy csatolt Azure Storage-fiókkal, amely rendelkezik fájlmegosztással.
Jelentkezzen be az Azure-előfizetésbe, és cserélje le a helyőrzőt az előfizetés azonosítójára.
Connect-AzAccount -Subscription "<subscription-ID>"
Kérje le a Batch-fiók környezetét. Cserélje le a
<batch-account-name>
helyőrzőt a Batch-fiók nevére.$context = Get-AzBatchAccount -AccountName <batch-account-name>
Hozzon létre egy Batch-készletet az alábbi beállításokkal. Cserélje le a
<storage-account-name>
,<storage-account-key>
és<file-share-name>
helyőrzőket a Batch-fiókhoz társított tárfiók értékeire. Cserélje le a<pool-name>
helyőrzőt a készlethez használni kívánt névre.A következő szkript létrehoz egy készletet egy Windows Server 2016 Datacenterrel, Standard_D2_V2 méretű csomóponttal, majd csatlakoztatja az Azure-fájlmegosztást a csomópont S meghajtójára.
$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
Csatlakozzon a csomóponthoz, és ellenőrizze, hogy a kimeneti fájl helyes-e.
A csatlakoztatott fájlok elérése
Az Azure Batch-feladatok a meghajtó közvetlen elérési útján érhetik el a csatlakoztatott fájlokat, például:
cmd /c "more S:\folder1\out.txt & timeout /t 90 > NULL"
Az Azure Batch-ügynök csak az Azure Batch-feladatokhoz biztosít hozzáférést. Ha távoli asztali protokollt (RDP) használ a csomóponthoz való csatlakozáshoz, a felhasználói fiók nem rendelkezik automatikus hozzáféréssel a csatlakoztatási meghajtóhoz. Amikor RDP-n keresztül csatlakozik a csomóponthoz, hozzá kell adnia a tárfiók hitelesítő adatait az S-meghajtó közvetlen eléréséhez.
A hitelesítő adatok hozzáadására használható cmdkey
. Cserélje le a <storage-account-name>
helyőrzőket <storage-account-key
> a saját adataira.
cmdkey /add:"<storage-account-name>.file.core.windows.net" /user:"Azure\<storage-account-name>" /pass:"<storage-account-key>"
Csatlakoztatási problémák elhárítása
Ha egy csatlakoztatási konfiguráció meghiúsul, a számítási csomópont meghibásodik, és a csomópont állapota használhatatlanná van állítva. A csatlakoztatás konfigurációs hibáinak diagnosztizálásához vizsgálja meg a ComputeNodeError tulajdonságot a hibával kapcsolatos részletekért.
Ha naplófájlokat szeretne lekérni a hibakereséshez, az OutputFiles API-val feltöltheti a *.log fájlokat. A *.log fájlok információkat tartalmaznak a hely fájlrendszer-csatlakoztatásáról AZ_BATCH_NODE_MOUNTS_DIR
. A csatlakoztatási naplófájlok formátuma: <type-mountDirOrDrive><>.log minden csatlakoztatáshoz. Például egy CIFS-csatlakoztatás egy teszt nevű csatlakoztatási könyvtárban a következő nevű csatlakoztatási naplófájllal rendelkezik: cifs-test.log.
Csatlakoztatási hibák vizsgálata
A fájlrendszer-csatlakoztatásokhoz tartozó naplófájlok ellenőrzéséhez RDP-t vagy SSH-t is használhat a csomóponthoz. Az alábbi példahiba akkor lehetséges, ha Azure-fájlmegosztást próbál csatlakoztatni egy Batch-csomóponthoz:
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
Ha ezt a hibát kapja, rdp vagy SSH érkezik a csomópontra a kapcsolódó naplófájlok ellenőrzéséhez. A Batch-ügynök eltérően valósítja meg a csatlakoztatást Windows és Linux for Azure-fájlmegosztásokon. Linux rendszeren a Batch telepíti a csomagot cifs-utils
. Ezután a Batch kiadja a csatlakoztatási parancsot. Windows rendszeren a Batch a Batch-fiók hitelesítő adatainak hozzáadását használja cmdkey
. Ezután a Batch kiadja a csatlakoztatási parancsot net use
. Példa:
net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
Csatlakozzon a csomóponthoz RDP-n keresztül.
Nyissa meg a fshare-S.log naplófájlt a D:\batch\tasks\fsmounts címen.
Tekintse át a hibaüzeneteket, például:
CMDKEY: Credential added successfully. System error 86 has occurred. The specified network password is not correct.
A probléma elhárítása az Azure-fájlmegosztások hibaelhárítójának használatával.
Ha nem tudja RDP-vel vagy SSH-val ellenőrizni a naplófájlokat a csomóponton, feltöltheti a naplókat az Azure Storage-fiókjába. Ezt a módszert Windows- és Linux-naplókhoz is használhatja.
Az Azure Portalon keresse meg és válassza ki a készletet tartalmazó Batch-fiókot.
A Batch-fiók lapon válassza a Bal oldali navigációs sáv Készletek elemét .
A Készletek lapon válassza ki a készlet nevét.
A készlet oldalán válassza a Csomópontok lehetőséget a bal oldali navigációs sávon.
A Csomópontok lapon válassza ki a csomópont nevét.
A csomópont oldalán válassza a Kötegnaplók feltöltése lehetőséget.
A Kötegnaplók feltöltése panelen válassza a Tároló kiválasztása lehetőséget.
A Tárfiókok lapon válasszon ki egy tárfiókot.
A Tárolók lapon válassza ki vagy hozzon létre egy tárolót a fájlok feltöltéséhez, majd válassza a Kiválasztás lehetőséget.
Válassza a Feltöltés indítása lehetőséget.
Amikor a feltöltés befejeződött, töltse le a fájlokat, és nyissa meg a agent-debug.log.
Tekintse át a hibaüzeneteket, például:
..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.
A probléma elhárítása az Azure-fájlmegosztások hibaelhárítójának használatával.
Fájlmegosztás manuális csatlakoztatása a PowerShell-lel
Ha nem tudja diagnosztizálni vagy kijavítani a csatlakoztatási hibákat, a PowerShell használatával manuálisan csatlakoztathatja a fájlmegosztást.
Készlet létrehozása csatlakoztatási konfiguráció nélkül. Példa:
$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árja meg, amíg a csomópont tétlen állapotban van.
Az Azure Portalon keresse meg és válassza ki a fájlmegosztást tartalmazó tárfiókot.
A tárfiók lapjának menüjében válassza a Fájlmegosztások lehetőséget a bal oldali navigációs sávon.
A Fájlmegosztások lapon válassza ki a csatlakoztatni kívánt fájlmegosztást.
A fájlmegosztás lapján válassza a Csatlakozás lehetőséget.
A Csatlakozás panelen válassza a Windows lapot.
Meghajtóbetűjelként adja meg a használni kívánt meghajtót. Az alapértelmezett érték a Z.
Hitelesítési módszer esetén válassza ki, hogyan szeretne csatlakozni a fájlmegosztáshoz.
Válassza a Szkript megjelenítése lehetőséget, és másolja a PowerShell-szkriptet a fájlmegosztás csatlakoztatásához.
Csatlakozzon a csomóponthoz RDP-n keresztül.
Futtassa a másolt parancsot a fájlmegosztás csatlakoztatásához.
Jegyezze fel a kimenetben megjelenő hibaüzeneteket. Ezekkel az információkkal elháríthatja a hálózatkezeléssel kapcsolatos problémákat.
Példa csatlakoztatási konfigurációkra
Az alábbi példakódkonfigurációk bemutatják a különböző fájlmegosztási rendszerek számítási csomópontok készletéhez való csatlakoztatását.
Azure Files-megosztás
Az Azure Files a standard Azure-felhőbeli fájlrendszer-ajánlat. Az alábbi konfiguráció csatlakoztat egy Azure Files-megosztást <file-share-name>
az S-meghajtóhoz . A példában szereplő paraméterekkel kapcsolatos információkért lásd : SMB Azure-fájlmegosztás csatlakoztatása Windows rendszeren vagy NFS Azure-fájlmegosztás létrehozása és csatlakoztatása Linux rendszerű virtuális gépre az Azure Portal használatával.
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-tároló
Egy másik lehetőség az Azure Blob Storage használata a BlobFuse használatával. A blob fájlrendszer csatlakoztatásához fiókkulcsra, közös hozzáférésű jogosultságkódra (SAS) vagy felügyelt identitásra van szükség a tárfiókhoz való hozzáféréssel.
A kulcsok vagy identitások lekéréséről az alábbi cikkekben olvashat:
Felügyelt identitások konfigurálása a Batch-készletekben
Tipp.
Felügyelt identitás használata esetén győződjön meg arról, hogy az identitás hozzá lett rendelve a készlethez , hogy az elérhető legyen a csatlakoztatást végző virtuális gépen. Az identitásnak a Storage Blob Data Közreműködő szerepkörével is rendelkeznie kell.
Az alábbi konfiguráció blob fájlrendszert csatlakoztat a BlobFuse beállításaival. Illusztrációs célokra a példa azt mutatjaAccountKey
SasKey
, és IdentityReference
, de valójában csak egy ilyen metódust adhat meg.
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 "
},
}
}
}
Ha alapértelmezett hozzáférést szeretne kapni a BlobFuse csatlakoztatott könyvtárához, futtassa a feladatot rendszergazdaként. A BlobFuse a címtárat a felhasználói helyen csatlakoztatja, a készlet létrehozásakor pedig gyökérként csatlakoztatja a könyvtárat. Linuxon az összes rendszergazdai feladat gyökérszintű. A FUSE referenciaoldala a FUSE modul összes beállítását ismerteti.
A BlobFuse használatával kapcsolatos további információkért és tippekért tekintse meg az alábbi hivatkozásokat:
- Blobfuse2 projekt
- Blobfuse – Hibaelhárítás – gyakori kérdések
- GitHub-problémák az azure-storage-fuse adattárban
NFS
NFS-megosztásokat csatlakoztathat készletcsomópontokhoz, hogy a Batch hozzáférhessen a hagyományos fájlrendszerekhez. A beállítás lehet egyetlen, a felhőben üzembe helyezett NFS-kiszolgáló vagy egy virtuális hálózaton keresztül elért helyszíni NFS-kiszolgáló. Az NFS-csatlakoztatások támogatják az Avere vFXT-t, amely elosztott memóriabeli gyorsítótár az adatintenzív nagy teljesítményű számítási (HPC) feladatokhoz. Az NFS-csatlakoztatások más szabványos NFS-kompatibilis interfészeket is támogatnak, például az Azure Blobhoz készült NFS-t és az Azure Fileshoz készült NFS-t.
Az alábbi példa egy NFS fájlrendszer-csatlakoztatás konfigurációját mutatja be:
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
NfsMountConfiguration = new NFSMountConfiguration
{
Source = "<source>",
RelativeMountPath = "<relative-mount-path>",
MountOptions = "options ver=3.0"
},
}
}
}
CIFS
A CIFS készletcsomópontokhoz való csatlakoztatása egy másik módja annak, hogy hozzáférést biztosítson a hagyományos fájlrendszerekhez. A CIFS egy fájlmegosztási protokoll, amely nyílt és platformfüggetlen mechanizmust biztosít a hálózati kiszolgáló fájljainak és szolgáltatásainak lekéréséhez. A CIFS az internetes és intranetes fájlmegosztáshoz használt SMB protokoll továbbfejlesztett verzióján alapul.
Az alábbi példa egy CIFS-fájl csatlakoztatásának konfigurációját mutatja be.
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>"
},
}
}
}
Feljegyzés
C# helyett a PowerShellt használó példát keres? Itt talál egy másik nagyszerű példát: Azure-fájl csatlakoztatása az Azure Batch-készlethez.