Возможности хранения данных и перемещения данных для ресурсов рендеринга и выходных файлов
У вас есть много вариантов предоставлять файлы сцен и ресурсов для приложений рендеринга на виртуальных машинах в пуле:
-
Хранилище BLOB-объектов Azure:
- Файлы сцен и ресурсов передаются в хранилище BLOB-объектов из локальной файловой системы. Когда задача выполняет приложение, нужные файлы копируются из хранилища BLOB-объектов на виртуальную машину, чтобы приложение получило к ним доступ. Выходные файлы записываются приложением рендеринга на диск виртуальной машины, а затем копируются в хранилище BLOB-объектов. При необходимости выходные файлы можно скачать из хранилища 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, как описано в этой записи блога. При настройке более высокие ограничения обеспечивают более высокую производительность и масштабируемость, особенно при наличии большого количества виртуальных машин пула, обращаюющихся к учетной записи хранения.
Копирование файлов между клиентом и хранилищем больших двоичных объектов
Чтобы скопировать файлы в хранилище 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.
Следующие шаги
Дополнительные сведения о параметрах хранения см. в подробной документации.