Opcje magazynowania i przenoszenia danych na potrzeby renderowania elementów zawartości i plików wyjściowych

Istnieje wiele opcji udostępniania sceny i plików elementów zawartości aplikacjom renderowania na maszynach wirtualnych puli:

  • Azure Blob Storage:
    • Pliki sceny i elementów zawartości są przekazywane do magazynu obiektów blob z lokalnego systemu plików. Gdy aplikacja jest uruchamiana przez zadanie, wymagane pliki są kopiowane z magazynu obiektów blob na maszynę wirtualną, aby można było uzyskać do nich dostęp przez aplikację renderowania. Pliki wyjściowe są zapisywane przez aplikację renderowania na dysku maszyny wirtualnej, a następnie kopiowane do magazynu obiektów blob. W razie potrzeby pliki wyjściowe można pobrać z magazynu obiektów blob do lokalnego systemu plików.
    • Azure Blob Storage jest prostą i ekonomiczną opcją dla mniejszych projektów. Ponieważ wszystkie pliki zasobów są wymagane na każdej maszynie wirtualnej puli, po zwiększeniu liczby i rozmiaru plików zasobów należy zadbać o to, aby transfery plików były tak wydajne, jak to możliwe.
  • Usługa Azure Storage jako system plików przy użyciu systemu plików blobfuse:
    • W przypadku maszyn wirtualnych z systemem Linux konto magazynu może być uwidocznione i używane jako system plików, gdy jest używany wirtualny sterownik systemu plików blobfuse.
    • Ta opcja ma zaletę, że jest bardzo opłacalna, ponieważ w systemie plików nie są wymagane żadne maszyny wirtualne, a buforowanie blobfuse na maszynach wirtualnych pozwala uniknąć wielokrotnego pobierania tych samych plików dla wielu zadań i zadań podrzędnych. Przenoszenie danych jest również proste, ponieważ pliki to po prostu obiekty blob i standardowe interfejsy API i narzędzia, takie jak azcopy, mogą służyć do kopiowania plików między lokalnym systemem plików a usługą Azure Storage.
  • System plików lub udział plików:
    • W zależności od wymagań dotyczących systemu operacyjnego maszyny wirtualnej i wydajności/skalowania opcje obejmują Azure Files przy użyciu maszyny wirtualnej z dołączonymi dyskami dla systemu plików NFS, używając wielu maszyn wirtualnych z dołączonymi dyskami dla rozproszonego systemu plików, takiego jak GlusterFS, lub korzystając z oferty innej firmy.
    • Avere Systems jest teraz częścią firmy Microsoft i będzie mieć rozwiązania w najbliższej przyszłości, które są idealne do renderowania na dużą skalę i wysokiej wydajności. Rozwiązanie Avere umożliwi utworzenie opartej na platformie Azure pamięci podręcznej NFS lub SMB, która działa w połączeniu z magazynem obiektów blob lub z lokalnymi urządzeniami NAS.
    • W systemie plików pliki można odczytywać lub zapisywać bezpośrednio w systemie plików lub kopiować między systemem plików a maszynami wirtualnymi puli.
    • Udostępniony system plików umożliwia korzystanie z dużej liczby zasobów współużytkowanych między projektami i zadaniami, przy czym zadania renderowania uzyskują dostęp tylko do wymaganych elementów.

Korzystanie z Azure Blob Storage

Należy użyć konta magazynu obiektów blob lub konta magazynu ogólnego przeznaczenia w wersji 2. Te dwa typy kont magazynu można skonfigurować z znacznie wyższymi limitami w porównaniu z kontem magazynu ogólnego przeznaczenia w wersji 1, zgodnie z opisem w tym wpisie w blogu. Po skonfigurowaniu wyższe limity umożliwią znacznie lepszą wydajność i skalowalność, zwłaszcza gdy istnieje wiele maszyn wirtualnych puli, które uzyskują dostęp do konta magazynu.

Kopiowanie plików między klientem a magazynem obiektów blob

Do kopiowania plików do i z usługi Azure Storage można używać różnych mechanizmów, w tym interfejsu API obiektów blob magazynu, biblioteki przenoszenia danych usługi Azure Storage, narzędzia wiersza polecenia azcopy dla systemu Windows lub Linux, Eksplorator usługi Azure Storage i eksploratora Azure Batch.

Na przykład za pomocą narzędzia azcopy można przenieść wszystkie zasoby w folderze w następujący sposób:

azcopy /source:. /dest:https://account.blob.core.windows.net/rendering/project /destsas:"?st=2018-03-30T16%3A26%3A00Z&se=2020-03-31T16%3A26%3A00Z&sp=rwdl&sv=2017-04-17&sr=c&sig=sig" /Y

Aby skopiować tylko zmodyfikowane pliki, można użyć /XO parametru:

azcopy /source:. /dest:https://account.blob.core.windows.net/rendering/project /destsas:"?st=2018-03-30T16%3A26%3A00Z&se=2020-03-31T16%3A26%3A00Z&sp=rwdl&sv=2017-04-17&sr=c&sig=sig" /XO /Y

Kopiowanie wejściowych plików zasobów z magazynu obiektów blob do maszyn wirtualnych puli usługi Batch

Istnieje kilka różnych metod kopiowania plików przy użyciu najlepszego podejścia określonego przez rozmiar zasobów zadania. Najprostszym podejściem jest skopiowanie wszystkich plików zasobów do maszyn wirtualnych puli dla każdego zadania:

  • Jeśli istnieją pliki unikatowe dla zadania, ale są wymagane dla wszystkich zadań zadania podrzędnego, można określić zadanie przygotowania zadania w celu skopiowania wszystkich plików. Zadanie podrzędne przygotowania zadania jest uruchamiane raz, gdy pierwsze zadanie zadania jest wykonywane na maszynie wirtualnej, ale nie jest uruchamiane ponownie dla kolejnych zadań podrzędnych.
  • Zadanie zwolnienia zadania należy określić, aby usunąć pliki poszczególnych zadań po zakończeniu zadania; Pozwoli to uniknąć wypełniania dysku maszyny wirtualnej przez wszystkie pliki zasobów zadania.
  • Jeśli istnieje wiele zadań korzystających z tych samych zasobów, przy użyciu tylko przyrostowych zmian w zasobach dla każdego zadania, wszystkie pliki zasobów są nadal kopiowane, nawet jeśli tylko podzbiór został zaktualizowany. Byłoby to nieefektywne, gdy istnieje wiele dużych plików zasobów.

Gdy pliki zasobów są ponownie używane między zadaniami, przy użyciu tylko przyrostowych zmian między zadaniami, bardziej wydajne, ale nieco bardziej zaangażowane podejście polega na przechowywaniu zasobów w folderze udostępnionym na maszynie wirtualnej i synchronizowaniu zmienionych plików.

  • Zadanie przygotowania zadania wykona kopię przy użyciu polecenia azcopy z parametrem /XO do folderu udostępnionego maszyny wirtualnej określonego przez AZ_BATCH_NODE_SHARED_DIR zmiennej środowiskowej. Spowoduje to skopiowanie tylko zmienionych plików do każdej maszyny wirtualnej.
  • Uważa się, że trzeba będzie podać rozmiar wszystkich zasobów, aby upewnić się, że będą one zmieścić się na dysku tymczasowym maszyn wirtualnych puli.

Azure Batch ma wbudowaną obsługę kopiowania plików między kontem magazynu a maszynami wirtualnymi puli usługi Batch. Pliki zasobów zadań kopiują pliki z magazynu do maszyn wirtualnych puli i można je określić dla zadania przygotowania zadania. Niestety, gdy istnieją setki plików, można osiągnąć limit i zadania, które mogą zakończyć się niepowodzeniem. Jeśli istnieje duża liczba zasobów, zaleca się użycie wiersza polecenia azcopy w zadaniu przygotowania zadania, które może używać symboli wieloznacznych i nie ma limitu.

Kopiowanie plików wyjściowych do magazynu obiektów blob z maszyn wirtualnych puli usługi Batch

Pliki wyjściowe mogą służyć do kopiowania plików z maszyny wirtualnej puli do magazynu. Co najmniej jeden plik można skopiować z maszyny wirtualnej do określonego konta magazynu po zakończeniu zadania. Dane wyjściowe renderowane powinny być kopiowane, ale może być również pożądane przechowywanie plików dziennika.

Korzystanie z wirtualnego systemu plików blobfuse dla pul maszyn wirtualnych z systemem Linux

Blobfuse to wirtualny sterownik systemu plików dla Azure Blob Storage, który umożliwia dostęp do plików przechowywanych jako obiekty blob na koncie magazynu za pośrednictwem systemu plików Systemu Linux.

Węzły puli mogą instalować system plików po uruchomieniu lub instalacja może nastąpić w ramach zadania podrzędnego przygotowania zadania — zadanie uruchamiane tylko wtedy, gdy pierwsze zadanie w zadaniu jest uruchamiane w węźle. System Blobfuse można skonfigurować do korzystania zarówno z dysku RAMdisk, jak i lokalnych dysków SSD maszyn wirtualnych do buforowania plików, co znacznie zwiększy wydajność, jeśli wiele zadań w węźle uzyskuje dostęp do niektórych z tych samych plików.

Przykładowe szablony są dostępne do uruchamiania autonomicznych renderów V-Ray przy użyciu systemu plików blobfuse i mogą służyć jako podstawa szablonów dla innych aplikacji.

Uzyskiwanie dostępu do plików

Zadania podrzędne określają ścieżki dla plików wejściowych i plików wyjściowych przy użyciu zainstalowanego systemu plików.

Kopiowanie wejściowych plików zasobów z magazynu obiektów blob do maszyn wirtualnych puli usługi Batch

Ponieważ pliki są po prostu obiektami blob w usłudze Azure Storage, standardowe interfejsy API obiektów blob, narzędzia i interfejsy użytkownika mogą służyć do kopiowania plików między lokalnym systemem plików i magazynem obiektów blob; na przykład azcopy, Eksplorator usługi Storage, Batch Explorer itp.

Używanie Azure Files z maszynami wirtualnymi z systemem Windows

Azure Files oferuje w pełni zarządzane udziały plików w chmurze, które są dostępne za pośrednictwem protokołu SMB. Azure Files jest oparta na Azure Blob Storage; jest opłacalna i można ją skonfigurować przy użyciu replikacji danych do innego regionu, tak aby był globalnie nadmiarowy. Cele skalowania należy przejrzeć, aby określić, czy Azure Files należy użyć, biorąc pod uwagę rozmiar puli prognozy i liczbę plików zasobów.

Dostępna jest dokumentacja dotycząca sposobu instalowania udziału plików platformy Azure.

Instalowanie udziału Azure Files

Aby można było używać w usłudze Batch, należy wykonać operację instalacji przy każdym uruchomieniu zadania, ponieważ nie można utrwalić połączenia między zadaniami. Najprostszym sposobem wykonania tej czynności jest użycie narzędzia cmdkey do utrwalania poświadczeń przy użyciu zadania uruchamiania w konfiguracji puli, a następnie instalowania udziału przed każdym zadaniem.

Przykład użycia narzędzia cmdkey w szablonie puli (w pliku JSON, który został użyty w pliku JSON) — należy pamiętać, że podczas oddzielania wywołania cmdkey od wywołania net use kontekst użytkownika dla zadania uruchamiania musi być taki sam jak kontekst użytkownika używany do uruchamiania zadań:

"startTask": {
  "commandLine": "cmdkey /add:storageaccountname.file.core.windows.net
    /user:AZURE\\markscuscusbatch /pass:storage_account_key",
  "userIdentity":{
    "autoUser": {
      "elevationLevel": "nonadmin",
      "scope": "pool"
    }
}

Przykładowy wiersz polecenia zadania zadania:

"commandLine":"net use S:
  \\\\storageaccountname.file.core.windows.net\\rendering &
3dsmaxcmdio.exe -v:5 -rfw:0 -10 -end:10
  -bitmapPath:\"s:\\3dsMax\\Dragon\\Assets\"
  -outputName:\"s:\\3dsMax\\Dragon\\RenderOutput\\dragon.jpg\"
  -w:1280 -h:720
  \"s:\\3dsMax\\Dragon\\Assets\\Dragon_Character_Rig.max\""

Uzyskiwanie dostępu do plików

Zadania zadania określają ścieżki dla plików wejściowych i plików wyjściowych przy użyciu zainstalowanego systemu plików, używając dysku zmapowanego lub ścieżki UNC.

Kopiowanie wejściowych plików zasobów z magazynu obiektów blob do maszyn wirtualnych puli usługi Batch

Azure Files są obsługiwane przez wszystkie główne interfejsy API i narzędzia, które obsługują usługę Azure Storage, np. azcopy, interfejs wiersza polecenia platformy Azure, Eksplorator usługi Storage, Azure PowerShell, narzędzie Batch Explorer itp.

Azure File Sync jest dostępna do automatycznego synchronizowania plików między lokalnym systemem plików a udziałem plików platformy Azure.

Następne kroki

Aby uzyskać więcej informacji na temat opcji magazynu, zobacz szczegółową dokumentację: