Поделиться через


Возможности хранения данных и перемещения данных для ресурсов рендеринга и выходных файлов

Есть несколько вариантов сделать файлы сцен и ассетов доступными приложениям рендеринга на виртуальных машинах из пула:

  • Хранилище BLOB-объектов Azure:
    • Файлы сцен и ресурсов загружаются в облачное хранилище из локальной файловой системы. Когда приложение запускается в рамках задачи, нужные файлы копируются из облачного хранилища на виртуальную машину, чтобы рендеринг-приложение получило к ним доступ. Выходные файлы записываются приложением рендеринга на диск виртуальной машины, а затем копируются в хранилище BLOB-объектов. При необходимости выходные файлы можно скачать из облачного хранилища в локальную файловую систему.
    • Хранилище BLOB-объектов Azure — это простой и экономный вариант для небольших проектов. Все файлы ресурсов должны быть доступными в каждом пуле виртуальных машин, поэтому при увеличении числа и (или) размера файлов ресурсов следует принять меры для максимально эффективной передачи этих файлов.
  • Хранилище Azure в качестве файловой системы с помощью blobfuse:
    • На виртуальных машинах Linux учетные записи хранения можно предоставлять и использовать в качестве файловой системы, если используется драйвер виртуальной файловой системы blobfuse.
    • Этот вариант имеет преимущество, что это экономично, так как для файловой системы не требуются виртуальные машины, а также кэширование blbfuse на виртуальных машинах позволяет избежать многократного скачивания одного и того же файла для нескольких заданий и задач. Перемещение данных также выполняется очень просто, так как файлы имеют обычный формат больших двоичных объектов, следовательно, для копирования файлов между локальной файловой системы и хранилищем Azure можно использовать стандартные API и такие средства, как azcopy.
  • Файловая система или сетевое хранилище:
    • В зависимости от операционной системы и требований к производительности и масштабированию для виртуальной машины, сюда могут относиться файлы Azure, использование виртуальной машины с подключенными дисками для NFS, использование нескольких виртуальных машин с подключенными дисками для распределенной файловой системы (например, Gluster) или использование предложений третьих сторон.
    • Avere Systems в настоящее время является частью Корпорации Майкрософт и скоро будет иметь решения, которые идеально подходят для крупномасштабной высокопроизводительной отрисовки. Решение Avere позволяет создать кэш NFS или SMB на базе Azure, который работает с хранилищем в виде BLOB-объектов или с локальными устройствами NAS.
    • Файловая система позволяет считывать или записывать файлы напрямую в файловой системе или копировать их между файловой системой и пулом виртуальных машин.
    • Файловая система, предоставленная в общий доступ, позволяет использовать большое число ресурсов для нескольких проектов и заданий, при этом задачи рендеринга будут обращаться только к необходимым ресурсам.

Использование хранилища BLOB-объектов Azure

Следует использовать учетную запись хранилища BLOB-объектов или учетную запись хранилища общего назначения версии 2. Эти два типа учетных записей хранения можно настроить с более высокими ограничениями по сравнению с учетной записью хранения общего назначения версии 1, как описано в этой записи блога. При настройке более высокие ограничения обеспечивают более высокую производительность и масштабируемость, особенно при наличии большого количества виртуальных машин пула, обращаюющихся к учетной записи хранения.

Копирование файлов между клиентом и blob-хранилищем

Чтобы скопировать файлы в хранилище Azure и обратно, можно использовать разные механизмы, в том числе API хранилища BLOB-объектов, библиотеку перемещения данных службы хранилища Azure, средство командной строки azcopy для Windows или Linux, Обозреватель службы хранилища Azure и (или) Azure Batch Explorer.

Например, можно передать все ресурсы в папке с помощью azcopy следующим образом:

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

Чтобы скопировать только измененные файлы, добавьте параметр /XO:

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

Копирование входных файлов активов из хранилища Blob в виртуальные машины пула Batch.

Есть несколько подходов к копированию файлов, и выбор оптимального из них зависит от размера ресурсов для задания. Самым простой вариант — копирование всех файлов ресурсов на виртуальные машины пула для каждого задания:

  • Если есть уникальные для задания файлы, которые требуются для выполнения всех задач в задании, вы можете создать задачу подготовки задания для копирования всех файлов. Задача подготовки задания выполняется только один раз при выполнении первой задачи на виртуальной машине, и больше не запускается для последующих задач.
  • Если необходимо указать задачу выпуска задания, чтобы удалить файлы для каждого задания после завершения задания. Это позволит избежать заполнения диска виртуальной машины всеми файлами ресурсов задания.
  • Если же несколько заданий используют одинаковые ресурсы и каждое из них вносит только добавочные изменения, файлы ресурсов все равно копируются, даже если не все из них обновлялись. Это крайне неэффективно, если есть большое число больших файлов ресурсов.

Когда файлы ресурсов используются повторно между заданиями, внося только небольшие изменения, более эффективным, но немного более сложным подходом будет хранение ресурсов в общей папке на виртуальной машине и синхронизация изменённых файлов.

  • Задача подготовки задания должна выполнять копирование с помощью средства azcopy с параметром /XO в общую папку виртуальной машины, которая указана в переменной среды AZ_BATCH_NODE_SHARED_DIR. Таким образом на каждую виртуальную машину копируются только измененные файлы.
  • Следует подумать о размере всех активов, чтобы они поместились во временные хранилища виртуальных машин пула.

Пакетная служба Azure изначально поддерживает копирование файлов между учетной записью хранения и виртуальными машинами пула пакетной службы. Задача файлов ресурсов копирует файлы из хранилища на виртуальные машины пула. Ее можно указать для задачи подготовки задания. К сожалению, когда количество файлов достигает сотен, можно столкнуться с ограничением, и задачи могут завершиться сбоем. При наличии большого количества ресурсов рекомендуется использовать командную строку azcopy в задаче подготовки задания, которая может использовать подстановочные знаки и не имеет ограничений.

Копирование выходных файлов в хранилище Blob из виртуальных машин пула Batch.

Выходные файлы можно использовать для копирования файлов из виртуальных машин пула в хранилище. После завершения задачи один или несколько файлов можно скопировать из виртуальной машины в указанную учетную запись хранения. Выводимые данные следует копировать, но также может потребоваться сохранять файлы журналов.

Использование виртуальной файловой системы blobfuse для пулов виртуальных машин Linux

Blobfuse — это драйвер виртуальной файловой системы для хранилища BLOB-объектов Azure, который позволяет обращаться к файлам, сохраненным в виде BLOB-объектов в учетной записи хранения в файловой системе Linux.

Узлы пула могут подключать файловую систему при их запуске или как часть задачи подготовки задания — задачи, которая выполняется только при запуске первой задачи на узле. Настройки Blobfuse позволяют использовать одновременно диск ramdisk и локальные диски SSD на виртуальных машинах для кэширования файлов, что существенно повышает производительность при обращении нескольких задач на узле к некоторым из файлов.

Доступны примеры шаблонов для запуска автономных средств рендеринга V-Ray с файловой системой blobfuse, на основе которых можно создать шаблоны для других приложений.

Доступ к файлам

Задачи указывают пути для входных и выходных файлов в подключенной файловой системе.

Копирование входных файлов ресурсов из хранилища блобов на виртуальные машины пула Batch

Файлы являются обычными BLOB-объектами в службе хранилища Azure, поэтому вы можете использовать для копирования файлов между локальной системы и хранилищем BLOB-объектов стандартные API-интерфейсы, средства и пользовательские интерфейсы, поддерживающие BLOB-объекты: средство azcopy, Обозреватель службы хранилища, Batch Explorer и т. д.

Использование службы файлов Azure с виртуальными машинами Windows

Служба файлов Azure предоставляет полностью управляемые общие файловые ресурсы в облаке, доступные по протоколу SMB. Файлы Azure основаны на Хранилище BLOB-объектов Azure; они стоимостно-эффективны и могут быть настроены с репликацией данных в другой регион, что обеспечивает глобальную избыточность. Следует оценить целевые показатели масштабирования для достижения ожидаемого размера пула и числа файлов ресурсов, чтобы определить, нужно ли использовать службу файлов Azure.

В документации описано, как подключить общую папку Azure.

Подключение общего ресурса службы файлов Azure

Чтобы использовать в пакетной обработке, операция монтирования должна выполняться каждый раз, при выполнении задачи, поскольку невозможно сохранить соединение между задачами. Самый простой способ сделать это — использовать cmdkey для сохранения учетных данных в конфигурации пула с помощью задачи запуска, а затем монтировать общий ресурс перед каждой задачей.

В этом примере cmdkey используется в шаблоне пула (экранировано для использования в JSON-файле). Учтите, что при разделении вызовов cmdkey и net use контекст пользователя для запуска задачи должен совпадать с контекстом для выполнения задач.

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

Пример командной строки для задачи задания:

"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\""

Доступ к файлам

Рабочие задачи указывают пути для входных и выходных файлов с использованием подключенной файловой системы, будь то подключенный диск или UNC-путь.

Копирование файлов входных ресурсов из хранилища Blob в ВМ пула Batch.

Служба файлов Azure поддерживается всеми основными API и средствами, которые умеют работать с хранилищем Azure (azcopy, Azure CLI, Обозреватель службы хранилища, Azure PowerShell, Batch Explorer и т. д.)

Служба синхронизации файлов Azure позволяет автоматически синхронизировать файлы между локальной файловой системой и общим файловым ресурсом Azure.

Следующие шаги

Дополнительные сведения о параметрах хранения см. в подробной документации.