Batch havuzuna sanal dosya sistemi bağlama

Dikkat

Bu makalede, Kullanım Süresi Sonu (EOL) durumuna yakın bir Linux dağıtımı olan CentOS'a başvuruda bulunur. Lütfen kullanımınızı ve buna uygun planlamayı göz önünde bulundurun. Daha fazla bilgi için bkz . CentOS Kullanım Süresi Sonu kılavuzu.

Azure Batch, Batch havuzlarında Windows veya Linux işlem düğümlerine bulut depolama veya dış dosya sistemi bağlamayı destekler. Bir işlem düğümü havuza katıldığında, sanal dosya sistemi bu düğümde yerel bir sürücü olarak çalışır ve bağlar. Bu makalede, .NET için Batch Yönetim Kitaplığı'nı kullanarak işlem düğümleri havuzuna sanal dosya sisteminin nasıl bağlandığı gösterilmektedir.

Dosya sistemini havuza bağlamak, verilere erişimi büyük bir paylaşılan veri kümesinden kendi verilerini almak için görevler gerektirmekten daha kolay ve daha verimli hale getirir. Birden çok görev için film işleme gibi ortak bir veri kümesine erişmesi gereken bir senaryo düşünün. Her görev, sahne dosyalarından bir veya daha fazla kareyi aynı anda işler. Sahne dosyalarını içeren bir sürücü takarak, her işlem düğümlerinin paylaşılan verilere erişmesi daha kolaydır.

Ayrıca performans, saniye başına giriş/çıkış işlemleri (IOPS) gereksinimlerini karşılamak için temel dosya sistemini seçebilirsiniz. Dosya sistemini, verilere eşzamanlı olarak erişen işlem düğümlerinin sayısına göre bağımsız olarak ölçeklendikleyebilirsiniz.

Örneğin, şirket içi kaynak verilerine erişen binlerce eşzamanlı işleme düğümüyle büyük film ölçekli işlemeleri desteklemek için Avere vFXT dağıtılmış bellek içi önbelleği kullanabilirsiniz. Veya bulut tabanlı blob depolamada bulunan veriler için BlobFuse kullanarak verileri yerel dosya sistemi olarak bağlayabilirsiniz. Azure Dosyalar, BlobFuse ile benzer bir iş akışı sağlar ve hem Windows hem de Linux'ta kullanılabilir.

Desteklenen yapılandırmalar

Aşağıdaki dosya sistemi türlerini bağlayabilirsiniz:

  • Azure Dosyaları
  • Azure Blob Depolama
  • Avere vFXT önbelleği dahil olmak üzere Ağ Dosya Sistemi (NFS)
  • Ortak İnternet Dosya Sistemi (CIFS)

Batch, ilgili yayımcısı ve teklifi için oluşturulan düğüm aracıları için aşağıdaki sanal dosya sistemi türlerini destekler.

İşletim Sistemi Türü Azure Dosyalar paylaşımı Azure Blob kapsayıcısı NFS bağlama CIFS bağlama
Linux ✔️ ✔️ ✔️ ✔️
Windows ✔️

Not

8 Ağustos 2019'dan önce oluşturulan Batch havuzlarında sanal dosya sistemi bağlama desteklenmez.

Ağ gereksinimleri

Sanal ağda Batch havuzlarıyla sanal dosya bağlamaları kullandığınızda aşağıdaki gereksinimleri göz önünde bulundurun ve gerekli trafiğin engellenmediğinden emin olun. Daha fazla bilgi için bkz . Sanal ağdaki Batch havuzları.

  • Azure Dosyalar paylaşımları, hizmet etiketine gelen ve gelen trafik için 445 numaralı TCP bağlantı noktasının storage açık olmasını gerektirir. Daha fazla bilgi için bkz . Windows ile Azure dosya paylaşımı kullanma.

  • Azure Blob kapsayıcıları , hizmet etiketine gelen ve bu etiketten gelen trafik için 443 numaralı TCP bağlantı noktasının storage açık olmasını gerektirir. Ve paketlerini indirmek için https://packages.microsoft.com sanal makinelerin blobfusegpg (VM) erişimi olmalıdır. Yapılandırmanıza bağlı olarak, diğer URL'lere erişmeniz gerekebilir.

  • Ağ Dosya Sistemi (NFS), varsayılan olarak 2049 numaralı bağlantı noktasına erişim gerektirir. Yapılandırmanızın başka gereksinimleri olabilir. VM'lerin (Debian veya Ubuntu için) veya nfs-utils (CentOS için) paketlerini indirmek nfs-common için uygun paket yöneticisine erişimi olmalıdır. URL, işletim sistemi sürümünüz temelinde farklılık gösterebilir. Yapılandırmanıza bağlı olarak, diğer URL'lere de erişmeniz gerekebilir.

    NFS aracılığıyla Azure Blob veya Azure Dosyalar bağlamanın ağ gereksinimleri daha fazla olabilir. Örneğin, işlem düğümlerinizin depolama hesabıyla aynı sanal ağ alt ağını kullanması gerekebilir.

  • Ortak İnternet Dosya Sistemi (CIFS), 445 numaralı TCP bağlantı noktasına erişim gerektirir. VM'lerin paketi indirmek cifs-utils için uygun paket yöneticisine erişimi olmalıdır. URL, işletim sistemi sürümünüz temelinde farklılık gösterebilir.

Yapılandırmayı ve uygulamayı bağlama

Sanal dosya sistemini bir havuza bağlamak, dosya sisteminin havuzdaki tüm işlem düğümlerinin kullanımına sunulmasını sağlar. Dosya sistemi yapılandırması, bir işlem düğümü bir havuza katıldığında, yeniden başlatıldığında veya yeniden yapılandırıldığında gerçekleşir.

Bir dosya sistemini havuza bağlamak için, sanal dosya sisteminizle eşleşen bir MountConfiguration nesnesi oluşturursunuz: AzureBlobFileSystemConfiguration, AzureFileShareConfiguration, NfsMountConfigurationveya CifsMountConfiguration.

Tüm bağlama yapılandırma nesneleri aşağıdaki temel parametrelere ihtiyaç duyar. Bazı bağlama yapılandırmaları, kod örneklerinin daha ayrıntılı olarak sunduğu belirli dosya sistemi için belirli parametrelere sahiptir.

  • Depolama hesabının hesap adı veya kaynağı .

  • göreli bağlama yolu veya kaynağı, aracılığıyla erişilebilen AZ_BATCH_NODE_MOUNTS_DIRstandart \fsmounts dizinine göre işlem düğümüne bağlanacak dosya sisteminin konumu.

    Tam \fsmounts dizin konumu düğüm işletim sistemine bağlı olarak değişir. Örneğin, Ubuntu düğümündeki konum mnt\batch\tasks\fsmounts ile eşler. CentOS düğümünde, konum mnt\resources\batch\tasks\fsmounts ile eşler.

  • Dosya sistemini bağlamak için belirli parametreleri açıklayan bağlama seçenekleri veya BlobFuse seçenekleri .

Havuzu ve MountConfiguration nesneyi oluşturduğunuzda, nesnesini özelliğine MountConfigurationList atarsınız. Bir düğüm havuza katıldığında, yeniden başlatıldığında veya yeniden oluşturulduğunda dosya sistemi için bağlama gerçekleşir.

Batch aracısı, Windows ve Linux'ta bağlamayı farklı şekilde uygular.

  • Linux'ta Batch paketini cifs-utilsyükler. Ardından Batch bağlama komutunu gönderir.

  • Windows'da Batch, Batch hesabı kimlik bilgilerinizi eklemek için kullanır cmdkey . Ardından Batch bağlama komutunu aracılığıyla net usegönderir. Örneğin:

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

Dosya sistemini bağlamak, bağlı dosya sisteminin ve günlük dosyalarının konumunu gösteren bir ortam değişkeni AZ_BATCH_NODE_MOUNTS_DIRoluşturur. Günlük dosyalarını sorun giderme ve hata ayıklama için kullanabilirsiniz.

PowerShell ile Azure Dosyalar paylaşımı bağlama

Windows veya Linux Batch havuzuna bir Azure Dosyalar paylaşımı bağlamak için Azure PowerShell'i kullanabilirsiniz. Aşağıdaki yordam, bir Azure dosya paylaşımı dosya sistemini Batch havuzuna yapılandırma ve bağlama işleminde size yol gösterir.

Önemli

Bir havuzdaki bağlı dosya sistemi sayısı üst sınırı 10'dur. Ayrıntılar ve diğer sınırlar için bkz . Batch hizmeti kotaları ve sınırları.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı.
  • Azure PowerShell yüklendi veya Azure Cloud Shell'i kullanarak arabirim için PowerShell'i seçin.
  • Dosya paylaşımına sahip bağlantılı Azure Depolama hesabına sahip mevcut bir Batch hesabı.
  1. Yer tutucuyu abonelik kimliğiniz ile değiştirerek Azure aboneliğinizde oturum açın.

    Connect-AzAccount -Subscription "<subscription-ID>"
    
  2. Batch hesabınızın bağlamını alın. Yer tutucuyu <batch-account-name> Batch hesabı adınızla değiştirin.

    $context = Get-AzBatchAccount -AccountName <batch-account-name>
    
  3. Aşağıdaki ayarlarla bir Batch havuzu oluşturun. <storage-account-name> , <storage-account-key>ve <file-share-name> yer tutucularını Batch hesabınıza bağlı depolama hesabında bulunan değerlerle değiştirin. Yer tutucuyu <pool-name> havuz için istediğiniz adla değiştirin.

    Aşağıdaki betik, bir Windows Server 2016 Datacenter, Standard_D2_V2 boyut düğümü ile bir havuz oluşturur ve ardından Azure dosya paylaşımını düğümün S sürücüsüne bağlar.

    $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. Düğüme Bağlan ve çıkış dosyasının doğru olup olmadığını denetleyin.

Bağlı dosyalara erişme

Azure Batch görevleri, sürücünün doğrudan yolunu kullanarak bağlı dosyalara erişebilir, örneğin:

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

Azure Batch aracısı yalnızca Azure Batch görevleri için erişim verir. Düğüme bağlanmak için Uzak Masaüstü Protokolü (RDP) kullanıyorsanız, kullanıcı hesabınızın bağlama sürücüsüne otomatik erişimi yoktur. RDP üzerinden düğüme bağlandığınızda, S sürücüsüne doğrudan erişmek için depolama hesabının kimlik bilgilerini eklemeniz gerekir.

Kimlik bilgilerini eklemek için kullanın cmdkey . <storage-account-name> ve <storage-account-key> yer tutucularını kendi bilgilerinizle değiştirin.

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

Bağlama sorunlarını giderme

Bağlama yapılandırması başarısız olursa işlem düğümü başarısız olur ve düğüm durumu Kullanılamaz olarak ayarlanır. Bağlama yapılandırma hatasını tanılamak için, hatayla ilgili ayrıntılar için ComputeNodeError özelliğini inceleyin.

Hata ayıklamaya yönelik günlük dosyalarını almak için OutputFiles API'sini kullanarak *.log dosyalarını karşıya yükleyebilirsiniz. *.log dosyaları, konumdaki dosya sistemi bağlaması AZ_BATCH_NODE_MOUNTS_DIR hakkında bilgi içerir. Bağlama günlük dosyaları, her bağlama için type-mountDirOrDrive.log biçimindedir<.><> Örneğin, test adlı bir bağlama dizinindeki CIFS bağlaması şu adlı bir bağlama günlük dosyasına sahiptir: cifs-test.log.

Bağlama hatalarını araştırma

Dosya sistemi bağlamalarıyla ilgili günlük dosyalarını denetlemek için düğüme RDP veya SSH ekleyebilirsiniz. Bir Azure dosya paylaşımını Batch düğümüne bağlamaya çalıştığınızda aşağıdaki örnek hata iletisi mümkündür:

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

Bu hatayı alırsanız, ilgili günlük dosyalarını denetlemek için düğüme RDP veya SSH gönderin. Batch aracısı, Azure dosya paylaşımları için Windows ve Linux'ta bağlamayı farklı şekilde uygular. Linux'ta Batch paketini cifs-utilsyükler. Ardından Batch bağlama komutunu gönderir. Windows'da Batch, Batch hesabı kimlik bilgilerinizi eklemek için kullanır cmdkey . Ardından Batch bağlama komutunu aracılığıyla net usegönderir. Örneğin:

net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
  1. RDP üzerinden düğüme Bağlan.

  2. fshare-S.log günlük dosyasını D:\batch\tasks\fsmounts konumunda açın.

  3. Hata iletilerini gözden geçirin, örneğin:

    CMDKEY: Credential added successfully.
    System error 86 has occurred.
    
    The specified network password is not correct.
    
  4. Azure dosya paylaşımları sorun gidericisini kullanarak sorunu giderin.

Düğümdeki günlük dosyalarını denetlemek için RDP veya SSH kullanamıyorsanız günlükleri Azure depolama hesabınıza yükleyebilirsiniz. Bu yöntemi hem Windows hem de Linux günlükleri için kullanabilirsiniz.

  1. Azure portalında, havuzunuzun yer aldığı Batch hesabını arayın ve seçin.

  2. Batch hesabı sayfasında, sol gezinti bölmesinden Havuzlar'ı seçin.

  3. Havuzlar sayfasında havuzun adını seçin.

  4. Havuzun sayfasında sol gezinti bölmesinden Düğümler'i seçin.

  5. Düğümler sayfasında düğümün adını seçin.

  6. Düğümün sayfasında Toplu iş günlüklerini karşıya yükle'yi seçin.

  7. Toplu iş günlüklerini karşıya yükle bölmesinde Depolama kapsayıcısı seç'i seçin.

  8. Depolama hesapları sayfasında bir depolama hesabı seçin.

  9. Kapsayıcılar sayfasında, dosyaları karşıya yüklemek için bir kapsayıcı seçin veya oluşturun ve Seç'i seçin.

  10. Karşıya yüklemeyi başlat'ı seçin.

  11. Karşıya yükleme tamamlandığında dosyaları indirin ve agent-debug.log açın.

  12. Hata iletilerini gözden geçirin, örneğin:

    ..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. Azure dosya paylaşımları sorun gidericisini kullanarak sorunu giderin.

Azure dosya paylaşımını PowerShell aracılığıyla el ile bağlama

Bağlama hatalarını tanılayamaz veya düzeltemiyorsanız, powershell kullanarak dosya paylaşımını el ile bağlayabilirsiniz.

  1. Bağlama yapılandırması olmadan bir havuz oluşturun. Örneğin:

    $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. Düğümün Boşta durumunda olmasını bekleyin.

  3. Azure portalında dosya paylaşımınızın olduğu depolama hesabını arayın ve seçin.

  4. Depolama hesabı sayfasının menüsünde, sol gezinti bölmesinden Dosya paylaşımları'nı seçin.

  5. Dosya paylaşımları sayfasında, bağlamak istediğiniz dosya paylaşımını seçin.

  6. Dosya paylaşımının sayfasında Bağlan'ı seçin.

  7. Bağlan bölmesinde Windows sekmesini seçin.

  8. Sürücü harfi için, kullanmak istediğiniz sürücüyü girin. Varsayılan değer Z'dir.

  9. Kimlik doğrulama yöntemi için dosya paylaşımına nasıl bağlanmak istediğinizi seçin.

  10. Betiği Göster'i seçin ve dosya paylaşımını bağlamak için PowerShell betiğini kopyalayın.

  11. RDP üzerinden düğüme Bağlan.

  12. Dosya paylaşımını bağlamak için kopyaladığınız komutu çalıştırın.

  13. Çıktıdaki hata iletilerini not edin. Ağ ile ilgili sorunları gidermek için bu bilgileri kullanın.

Örnek bağlama yapılandırmaları

Aşağıdaki kod örneği yapılandırmaları, çeşitli dosya paylaşım sistemlerini bir işlem düğümleri havuzuna bağlamayı gösterir.

Azure Dosyalar paylaşımı

Azure Dosyalar, standart Azure bulut dosya sistemi teklifidir. Aşağıdaki yapılandırma, S sürücüsüne adlı <file-share-name> bir Azure Dosyalar paylaşımı bağlar. Örnekteki parametreler hakkında bilgi için bkz . Windows'da SMB Azure dosya paylaşımını bağlama veya NFS Azure dosya paylaşımı oluşturma ve Azure portalını kullanarak linux VM'ye bağlama.

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 kapsayıcısı

Bir diğer seçenek de BlobFuse aracılığıyla Azure Blob depolamayı kullanmaktır. Blob dosya sistemini bağlamak için hesap anahtarı, paylaşılan erişim imzası (SAS) anahtarı veya depolama hesabınıza erişimi olan yönetilen kimlik gerekir.

Bu anahtarları veya kimliği alma hakkında bilgi için aşağıdaki makalelere bakın:

Aşağıdaki yapılandırma, BlobFuse seçenekleriyle bir blob dosya sistemi bağlar. Çizim amacıyla, örnekte , SasKey ve IdentityReferencegösterilirAccountKey, ancak aslında bu yöntemlerden yalnızca birini belirtebilirsiniz.

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 "
            },
        }
    }
}

BlobFuse'a bağlı dizine varsayılan erişim elde etmek için, görevi yönetici olarak çalıştırın. BlobFuse, dizini kullanıcı alanına bağlar ve havuz oluşturma sırasında dizini kök olarak bağlar. Linux'ta tüm yönetici görevleri kök görevdir. FUSE başvuru sayfasında FUSE modülü için tüm seçenekler açıklanmaktadır.

BlobFuse kullanma hakkında daha fazla bilgi ve ipucu için aşağıdaki başvurulara bakın:

NFS

Batch'in geleneksel dosya sistemlerine erişmesine izin vermek için NFS paylaşımlarını havuz düğümlerine bağlayabilirsiniz. Kurulum, bulutta dağıtılan tek bir NFS sunucusu veya sanal ağ üzerinden erişilen bir şirket içi NFS sunucusu olabilir. NFS bağlamaları, veri yoğunluklu yüksek performanslı bilgi işlem (HPC) görevleri için dağıtılmış bir bellek içi önbellek olan Avere vFXT'yi destekler. NFS bağlamaları, Azure Blob için NFS ve Azure Dosyalar için NFS gibi diğer standart NFS uyumlu arabirimleri de destekler.

Aşağıdaki örnekte NFS dosya sistemi bağlama yapılandırması gösterilmektedir:

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

CIFS

CIFS'yi havuz düğümlerine bağlamak, geleneksel dosya sistemlerine erişim sağlamanın başka bir yoludur. CIFS, ağ sunucusu dosyalarını ve hizmetlerini istemek için açık ve platformlar arası bir mekanizma sağlayan bir dosya paylaşım protokolüdür. CIFS, İnternet ve intranet dosya paylaşımı için SMB protokolünün gelişmiş sürümünü temel alır.

Aşağıdaki örnekte CIFS dosya bağlama yapılandırması gösterilmektedir.

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>"
            },
        }
    }
}

Not

C# yerine PowerShell kullanan bir örnek mi arıyorsunuz? Burada başka bir harika örnek bulabilirsiniz: Azure Dosyasını Azure Batch Havuzu'na bağlama.

Sonraki adımlar