Memasang sistem file virtual pada kumpulan Batch

Perhatian

Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status End Of Life (EOL). Harap pertimbangkan penggunaan dan perencanaan Anda yang sesuai. Untuk informasi selengkapnya, lihat panduan Akhir Masa Pakai CentOS.

Azure Batch mendukung pemasangan penyimpanan cloud atau sistem file eksternal pada simpul komputasi Windows atau Linux di kumpulan Batch. Ketika simpul komputasi bergabung dengan kumpulan, sistem file virtual dipasang dan bertindak sebagai drive lokal pada simpul tersebut. Artikel ini menunjukkan kepada Anda cara memasang sistem file virtual pada kumpulan simpul komputasi dengan menggunakan Pustaka Manajemen Batch untuk .NET.

Memasang sistem file ke kumpulan membuat akses data lebih mudah dan lebih efisien daripada memerlukan tugas untuk mendapatkan data mereka sendiri dari himpunan data bersama yang besar. Pertimbangkan skenario di mana beberapa tugas memerlukan akses ke sekumpulan data umum, seperti merender film. Setiap tugas merender satu atau beberapa bingkai sekaligus dari file adegan. Dengan memasang drive yang berisi file adegan, lebih mudah bagi setiap simpul komputasi untuk mengakses data bersama.

Selain itu, Anda dapat memilih sistem file yang mendasar untuk memenuhi persyaratan performa, di seluruh, dan operasi input/output per detik (IOPS). Anda dapat menskalakan sistem file secara independen berdasarkan jumlah simpul komputasi yang secara bersamaan mengakses data.

Misalnya, Anda dapat menggunakan cache dalam memori terdistribusi Avere vFXT untuk mendukung render skala film besar dengan ribuan simpul render bersamaan yang mengakses data sumber lokal. Atau, untuk data yang sudah ada di penyimpanan blob berbasis cloud, Anda dapat menggunakan BlobFuse untuk memasang data sebagai sistem file lokal. Azure Files menyediakan alur kerja serupa dengan BlobFuse dan tersedia di Windows dan Linux.

Konfigurasi yang didukung

Anda dapat memasang jenis sistem file berikut:

  • Azure Files
  • Azure Blob Storage
  • Network File System (NFS), termasuk cache Avere vFXT
  • Sistem File Internet Umum (CIFS)

Batch mendukung jenis sistem file virtual berikut untuk agen simpul yang diproduksi untuk penerbit dan penawaran masing-masing.

Jenis OS Berbagi Azure Files Kontainer Azure Blob Pemasangan NFS Pemasangan CIFS
Linux ✔️ ✔️ ✔️ ✔️
Windows ✔️

Catatan

Memasang sistem file virtual tidak didukung pada kumpulan Batch yang dibuat sebelum 8 Agustus 2019.

Persyaratan jaringan

Saat Anda menggunakan pemasangan file virtual dengan kumpulan Batch di jaringan virtual, ingatlah persyaratan berikut, dan pastikan bahwa tidak ada lalu lintas yang diperlukan yang diblokir. Untuk informasi selengkapnya, lihat Kumpulan batch di jaringan virtual.

  • Berbagi Azure Files mengharuskan port TCP 445 terbuka untuk lalu lintas ke dan dari storage tag layanan. Untuk informasi selengkapnya, lihat Menggunakan berbagi file Azure dengan Windows.

  • Kontainer Azure Blob mengharuskan port TCP 443 terbuka untuk lalu lintas ke dan dari storage tag layanan. Komputer virtual (VM) harus memiliki akses untuk https://packages.microsoft.com mengunduh blobfuse paket dan gpg . Bergantung pada konfigurasi, Anda mungkin memerlukan akses ke URL lain.

  • Network File System (NFS) memerlukan akses ke port 2049 secara default. Konfigurasi Anda mungkin memiliki persyaratan lain. VM harus memiliki akses ke manajer paket yang sesuai untuk mengunduh nfs-common paket (untuk Debian atau Ubuntu) atau nfs-utils (untuk CentOS). URL mungkin bervariasi berdasarkan versi OS Anda. Bergantung pada konfigurasi, Anda mungkin juga memerlukan akses ke URL lain.

    Memasang Azure Blob atau Azure Files melalui NFS mungkin memiliki lebih banyak persyaratan jaringan. Misalnya, simpul komputasi Anda mungkin perlu menggunakan subnet jaringan virtual yang sama dengan akun penyimpanan.

  • Common Internet File System (CIFS) memerlukan akses ke port TCP 445. VM harus memiliki akses ke manajer paket yang sesuai untuk mengunduh cifs-utils paket. URL mungkin bervariasi berdasarkan versi OS Anda.

Konfigurasi dan implementasi pemasangan

Memasang sistem file virtual pada kumpulan akan membuat sistem file tersedia untuk setiap simpul komputasi di kumpulan. Konfigurasi untuk sistem file terjadi ketika node komputasi bergabung dengan kumpulan, dimulai ulang, atau dicitrakan ulang.

Untuk memasang sistem file pada kumpulan, Anda membuat objek MountConfiguration yang cocok dengan sistem file virtual Anda: AzureBlobFileSystemConfiguration, , AzureFileShareConfigurationNfsMountConfiguration, atau CifsMountConfiguration.

Semua objek konfigurasi pemasangan memerlukan parameter dasar berikut. Beberapa konfigurasi pemasangan memiliki parameter khusus untuk sistem file tertentu, yang contoh kodenya ada secara lebih rinci.

  • Nama akun atau sumber akun penyimpanan.

  • Jalur atau sumber pemasangan relatif, lokasi sistem file untuk dipasang pada simpul komputasi, relatif terhadap direktori \fsmounts standar yang dapat diakses melalui AZ_BATCH_NODE_MOUNTS_DIR.

    Lokasi direktori \fsmounts yang tepat bervariasi tergantung pada OS simpul. Misalnya, lokasi pada peta simpul Ubuntu ke mnt\batch\tasks\fsmounts. Pada simpul CentOS, lokasi memetakan ke mnt\resources\batch\tasks\fsmounts.

  • Opsi pemasangan atau opsi BlobFuse yang menjelaskan parameter tertentu untuk memasang sistem file.

Saat Anda membuat kumpulan dan MountConfiguration objek, Anda menetapkan objek ke MountConfigurationList properti . Pemasangan untuk sistem file terjadi ketika simpul bergabung dengan kumpulan, memulai ulang, atau digambarkan ulang.

Agen Batch menerapkan pemasangan secara berbeda pada Windows dan Linux.

  • Di Linux, Batch menginstal paket cifs-utils. Kemudian, Batch mengeluarkan perintah pemasangan.

  • Di Windows, Batch menggunakan cmdkey untuk menambahkan kredensial akun Batch Anda. Kemudian, Batch mengeluarkan perintah pemasangan melalui net use. Contohnya:

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

Memasang sistem file membuat variabel AZ_BATCH_NODE_MOUNTS_DIRlingkungan , yang menunjuk ke lokasi sistem file dan file log yang dipasang. Anda dapat menggunakan file log untuk pemecahan masalah dan penelusuran kesalahan.

Memasang berbagi Azure Files dengan PowerShell

Anda dapat menggunakan Azure PowerShell untuk memasang berbagi Azure Files di kumpulan Windows atau Linux Batch. Prosedur berikut memanah Anda mengonfigurasi dan memasang sistem file berbagi file Azure pada kumpulan Batch.

Penting

Jumlah maksimum sistem file yang dipasang pada kumpulan adalah 10. Untuk detail dan batas lainnya, lihat Kuota dan batas layanan Batch.

Prasyarat

  • Akun Azure dengan langganan aktif.
  • Azure PowerShell terinstal , atau gunakan Azure Cloud Shell dan pilih PowerShell untuk antarmuka.
  • Akun Batch yang sudah ada dengan akun Azure Storage tertaut yang memiliki berbagi file.
  1. Masuk ke langganan Azure Anda, mengganti tempat penampung dengan ID langganan Anda.

    Connect-AzAccount -Subscription "<subscription-ID>"
    
  2. Dapatkan konteks untuk akun Batch Anda. <batch-account-name> Ganti tempat penampung dengan nama akun Batch Anda.

    $context = Get-AzBatchAccount -AccountName <batch-account-name>
    
  3. Buat kumpulan Batch dengan pengaturan berikut. <storage-account-name> Ganti tempat penampung , <storage-account-key>, dan <file-share-name> dengan nilai dari akun penyimpanan yang ditautkan ke akun Batch Anda. <pool-name> Ganti tempat penampung dengan nama yang Anda inginkan untuk kumpulan.

    Skrip berikut membuat kumpulan dengan satu Pusat Data Windows Server 2016, Standard_D2_V2 simpul ukuran, lalu memasang berbagi file Azure ke drive S simpul.

    $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. Koneksi ke simpul dan periksa apakah file output sudah benar.

Mengakses file yang dipasang

Tugas Azure Batch dapat mengakses file yang dipasang dengan menggunakan jalur langsung drive, misalnya:

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

Agen Azure Batch memberikan akses hanya untuk tugas Azure Batch. Jika Anda menggunakan Protokol Desktop Jauh (RDP) untuk menyambungkan ke simpul, akun pengguna Anda tidak memiliki akses otomatis ke drive pemasangan. Saat tersambung ke simpul melalui RDP, Anda harus menambahkan kredensial untuk akun penyimpanan untuk mengakses drive S secara langsung.

Gunakan cmdkey untuk menambahkan kredensial. <storage-account-name> Ganti tempat penampung dan <storage-account-key> dengan informasi Anda sendiri.

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

Memecahkan masalah pemasangan

Jika konfigurasi pemasangan gagal, simpul komputasi gagal dan status simpul diatur ke Tidak Dapat Digunakan. Untuk mendiagnosis kegagalan konfigurasi pemasangan, periksa properti ComputeNodeError untuk detail tentang kesalahan.

Untuk mendapatkan file log untuk penelusuran kesalahan, Anda dapat menggunakan OUTPUTFiles API untuk mengunggah *.log file. File *.log berisi informasi tentang pemasangan sistem file di lokasi tersebut AZ_BATCH_NODE_MOUNTS_DIR . File log pemasangan memiliki format: <type-mountDirOrDrive><>.log untuk setiap pemasangan. Misalnya, pemasangan CIFS di direktori pemasangan bernama pengujian memiliki file log pemasangan bernama: cifs-test.log.

Menyelidiki kesalahan pemasangan

Anda dapat RDP atau SSH ke simpul untuk memeriksa file log yang berkaitan dengan pemasangan sistem file. Contoh pesan kesalahan berikut dimungkinkan saat Anda mencoba memasang berbagi file Azure ke simpul Batch:

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

Jika Anda menerima kesalahan ini, RDP atau SSH ke node untuk memeriksa file log terkait. Agen Batch mengimplementasikan pemasangan secara berbeda di Windows dan Linux untuk berbagi file Azure. Di Linux, Batch menginstal paket cifs-utils. Kemudian, Batch mengeluarkan perintah pemasangan. Di Windows, Batch menggunakan cmdkey untuk menambahkan kredensial akun Batch Anda. Kemudian, Batch mengeluarkan perintah pemasangan melalui net use. Contohnya:

net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
  1. Hubungkan ke node melalui RDP.

  2. Buka file log fshare-S.log, di D:\batch\tasks\fsmounts.

  3. Tinjau pesan kesalahan, misalnya:

    CMDKEY: Credential added successfully.
    System error 86 has occurred.
    
    The specified network password is not correct.
    
  4. Memecahkan masalah dengan menggunakan pemecah masalah berbagi file Azure.

Jika Anda tidak dapat menggunakan RDP atau SSH untuk memeriksa file log pada simpul, Anda dapat mengunggah log ke akun penyimpanan Azure Anda. Anda dapat menggunakan metode ini untuk log Windows dan Linux.

  1. Di portal Azure, cari dan pilih akun Batch yang memiliki kumpulan Anda.

  2. Pada halaman Akun batch, pilih Kumpulan dari navigasi kiri.

  3. Pada halaman Kumpulan , pilih nama kumpulan.

  4. Pada halaman kumpulan, pilih Simpul dari navigasi kiri.

  5. Pada halaman Simpul , pilih nama simpul.

  6. Pada halaman simpul, pilih Unggah log batch.

  7. Pada panel Unggah log batch, pilih Pilih kontainer penyimpanan.

  8. Pada halaman Akun penyimpanan , pilih akun penyimpanan.

  9. Pada halaman Kontainer , pilih atau buat kontainer untuk mengunggah file, dan pilih Pilih.

  10. Pilih Mulai unggah.

  11. Setelah unggahan selesai, unduh file dan buka agent-debug.log.

  12. Tinjau pesan kesalahan, misalnya:

    ..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. Memecahkan masalah dengan menggunakan pemecah masalah berbagi file Azure.

Memasang berbagi file secara manual dengan PowerShell

Jika Anda tidak dapat mendiagnosis atau memperbaiki kesalahan pemasangan, Anda dapat menggunakan PowerShell untuk memasang berbagi file secara manual sebagai gantinya.

  1. Buat kumpulan tanpa konfigurasi pemasangan. Contohnya:

    $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. Tunggu hingga node berada dalam status Siaga.

  3. Di portal Azure, cari dan pilih akun penyimpanan yang memiliki berbagi file Anda.

  4. Pada menu halaman akun penyimpanan, pilih Berbagi file dari navigasi kiri.

  5. Pada halaman Berbagi file, pilih berbagi file yang ingin Anda pasang.

  6. Pada halaman berbagi file, pilih Koneksi.

  7. Di panel Hubungkan, pilih tab Windows.

  8. Untuk Huruf kandar, masukkan drive yang ingin Anda gunakan. Defaultnya adalah Z.

  9. Untuk Metode autentikasi, pilih cara Anda ingin terhubung ke berbagi file.

  10. Pilih Perlihatkan Skrip, dan salin skrip PowerShell untuk memasang berbagi file.

  11. Hubungkan ke node melalui RDP.

  12. Jalankan perintah yang Anda salin untuk memasang berbagi file.

  13. Perhatikan pesan kesalahan dalam output. Gunakan informasi ini untuk memecahkan masalah terkait jaringan.

Contoh konfigurasi pemasangan

Contoh konfigurasi kode berikut menunjukkan pemasangan berbagai sistem berbagi file ke kumpulan simpul komputasi.

Berbagi Azure Files

Azure Files adalah penawaran sistem file cloud Azure standar. Konfigurasi berikut memasang berbagi Azure Files bernama <file-share-name> ke drive S . Untuk informasi tentang parameter dalam contoh, lihat Memasang berbagi file SMB Azure di Windows atau Membuat berbagi file NFS Azure dan memasangnya di VM Linux menggunakan portal Azure.

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

Kontainer Azure Blob

Opsi lain adalah menggunakan penyimpanan Azure Blob melalui BlobFuse. Memasang sistem file blob memerlukan kunci akun, kunci tanda tangan akses bersama (SAS), atau identitas terkelola dengan akses ke akun penyimpanan Anda.

Untuk informasi tentang mendapatkan kunci atau identitas ini, lihat artikel berikut ini:

Konfigurasi berikut memasang sistem file blob dengan opsi BlobFuse. Untuk tujuan ilustrasi, contoh menunjukkan AccountKey, SasKey dan IdentityReference, tetapi Anda benar-benar hanya dapat menentukan salah satu metode ini.

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

Untuk mendapatkan akses default ke direktori yang dipasang BlobFuse, jalankan tugas sebagai administrator. BlobFuse memasang direktori di ruang pengguna, dan pada pembuatan kumpulan memasang direktori sebagai root. Di Linux, semua tugas administrator adalah root. Halaman referensi FUSE menjelaskan semua opsi untuk modul FUSE.

Untuk informasi selengkapnya dan tips tentang menggunakan BlobFuse, lihat referensi berikut:

NFS

Anda dapat memasang berbagi NFS ke simpul kumpulan untuk memungkinkan Batch mengakses sistem file tradisional. Penyiapan dapat berupa satu server NFS yang disebarkan di cloud atau server NFS lokal yang diakses melalui jaringan virtual. Pemasangan NFS mendukung Avere vFXT, cache dalam memori terdistribusi untuk tugas komputasi performa tinggi (HPC) intensif data. Pemasangan NFS juga mendukung antarmuka standar yang mematuhi NFS lainnya, seperti NFS untuk Azure Blob dan NFS untuk Azure Files.

Contoh berikut menunjukkan konfigurasi untuk pemasangan sistem file NFS:

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

CIFS

Memasang CIFS ke simpul kumpulan adalah cara lain untuk menyediakan akses ke sistem file tradisional. CIFS adalah protokol berbagi file yang menyediakan mekanisme terbuka dan lintas platform untuk meminta file dan layanan server jaringan. CIFS didasarkan pada versi protokol SMB yang disempurnakan untuk berbagi file internet dan intranet.

Contoh berikut menunjukkan konfigurasi untuk pemasangan file CIFS.

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

Catatan

Mencari contoh menggunakan PowerShell daripada C#? Anda dapat menemukan contoh hebat lainnya di sini: Memasang Azure File ke Kumpulan Azure Batch.

Langkah berikutnya