Virtuális fájlrendszer csatlakoztatása Batch-készlethez

Figyelemfelhívás

Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Ennek megfelelően fontolja meg a használatot és a tervezést. További információ: CentOS End Of Life útmutató.

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éssel https://packages.microsoft.com kell rendelkezniük a blobfuse csomagok letöltéséhez gpg . 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) vagy nfs-utils (CentOS)-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, NfsMountConfigurationvagy 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_DIRelé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. CentOS-csomóponton a hely az mnt\resources\batch\tasks\fsmounts értékre van leképezve.

  • 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 parancsot net 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.
  1. 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>"
    
  2. 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>
    
  3. 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
    
  4. Csatlakozás 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>
  1. Csatlakozás a csomópontra RDP-n keresztül.

  2. Nyissa meg a fshare-S.log naplófájlt a D:\batch\tasks\fsmounts címen.

  3. Tekintse át a hibaüzeneteket, például:

    CMDKEY: Credential added successfully.
    System error 86 has occurred.
    
    The specified network password is not correct.
    
  4. 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.

  1. Az Azure Portalon keresse meg és válassza ki a készletet tartalmazó Batch-fiókot.

  2. A Batch-fiók lapon válassza a Bal oldali navigációs sáv Készletek elemét .

  3. A Készletek lapon válassza ki a készlet nevét.

  4. A készlet oldalán válassza a Csomópontok lehetőséget a bal oldali navigációs sávon.

  5. A Csomópontok lapon válassza ki a csomópont nevét.

  6. A csomópont oldalán válassza a Kötegnaplók feltöltése lehetőséget.

  7. A Kötegnaplók feltöltése panelen válassza a Tároló kiválasztása lehetőséget.

  8. A Tárfiókok lapon válasszon ki egy tárfiókot.

  9. 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.

  10. Válassza a Feltöltés indítása lehetőséget.

  11. Amikor a feltöltés befejeződött, töltse le a fájlokat, és nyissa meg a agent-debug.log.

  12. 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.
    
  13. 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.

  1. 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
    
  2. Várja meg, amíg a csomópont tétlen állapotban van.

  3. Az Azure Portalon keresse meg és válassza ki a fájlmegosztást tartalmazó tárfiókot.

  4. 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.

  5. A Fájlmegosztások lapon válassza ki a csatlakoztatni kívánt fájlmegosztást.

  6. A fájlmegosztás lapján válassza a Csatlakozás.

  7. A Csatlakozás panelen válassza a Windows lapot.

  8. Meghajtóbetűjelként adja meg a használni kívánt meghajtót. Az alapértelmezett érték a Z.

  9. Hitelesítési módszer esetén válassza ki, hogyan szeretne csatlakozni a fájlmegosztáshoz.

  10. Válassza a Szkript megjelenítése lehetőséget, és másolja a PowerShell-szkriptet a fájlmegosztás csatlakoztatásához.

  11. Csatlakozás a csomópontra RDP-n keresztül.

  12. Futtassa a másolt parancsot a fájlmegosztás csatlakoztatásához.

  13. 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:

Az alábbi konfiguráció blob fájlrendszert csatlakoztat a BlobFuse beállításaival. Illusztrációs célokra a példa azt mutatjaAccountKeySasKey, é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 FU Standard kiadás referenciaoldal a FU Standard kiadás 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:

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.

Következő lépések