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

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

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

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

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

Копирование файлов между клиентом и хранилищем больших двоичных объектов

Чтобы скопировать файлы в хранилище 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-объектов на виртуальные машины пула пакетной службы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Файлы являются обычными 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-объектов на виртуальные машины пула пакетной службы

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

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

Дальнейшие действия

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