借助 NetDrive 服务 VFX 与 3D 渲染工作室 — 无需本地副本的渲染农场

阅读时间 5 分钟 use-case google-cloud-storage
Morgan
MorganStaff Engineer
VFX 与 3D 渲染工作室如何使用 NetDrive 将 Google Cloud Storage 挂载为驱动器,让渲染节点无需预先同步即可读取帧和纹理。

一家中型 VFX 工作室把自己的镜头素材库放在 Google Cloud Storage 上——包括缓存的流体模拟、EXR 帧序列,以及一个在多个进行中项目里不断增长、已超过 30 TB 的共享纹理库。渲染农场里的每个渲染节点都需要对该素材库的读取权限,但在任务开始前把整套工作集下载到每台机器上,既浪费了本可用于本地暂存文件的磁盘空间,又会让每次渲染都因同步耗时而延后。用 NetDrive 把该存储桶挂载为驱动器后,每个节点都能按需精确读取某个任务实际用到的帧和纹理,无需预先执行复制步骤。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

在整个渲染农场挂载云存储

NetDrive 让 Google Drive、OneDrive、S3、SFTP、WebDAV 等在 Windows 和 macOS 上显示为本地驱动器 — 无需同步,无需完整下载。

  • 只读驱动器可防止渲染节点触碰源素材
  • 最高 1 TB 的缓存大小选项可吸收重复的纹理读取
  • 开机自动挂载让驱动器无需用户会话即可就绪
WindowsmacOS
下载 NetDrive →

免费试用。提供终身与订阅方案。

为什么按需访问优于预先同步

渲染农场节点通常被配置成完全相同、可随意替换的机器——其基本假设是任何节点都能接手任何任务。这与把整个素材库预先同步到本地磁盘的做法相冲突,因为一旦某个任务可能落在五十个节点中的任意一个上,要么这五十个节点都需要一份完整的本地副本(一种庞大且不断过时的重复存储),要么每个任务开始前都得先跑一次同步步骤,给一次可能每帧只需几秒钟的渲染平白增加几分钟的空转时间。

NetDrive 会把 Google Cloud Storage 存储桶挂载为网络驱动器或只读驱动器,渲染引擎看到的就是像 R:\assets\textures\ 这样普通的文件路径。只有在任务真正读取某个帧或纹理时,数据才会被传输过来,而 NetDrive 的缓存机制会让最近用过的文件保持可用,供下一个需要同一纹理的任务直接使用,而不必每次都重新从存储桶获取。

用于通过 NetDrive 将存储桶挂载为驱动器的 Google Cloud Storage 提供商图标

为渲染节点设置只读素材驱动器

  1. 打开 NetDrive,在 Drive Manager 中点击 + Add Drive。
  2. 从提供商列表中选择 Google Cloud Storage。
  3. 输入限定在镜头素材库存储桶范围内的服务账号凭据——对于只消费素材的节点,只读 IAM 角色就足够了。
  4. 输入存储桶名称。
  5. 在 Drive Type 中选择 Read-only drive。渲染节点没有理由向源素材存储桶写回数据,只读挂载可以杜绝配置错误的任务意外覆盖共享纹理的可能性。
  6. 由于渲染节点是作为无人值守的机器运行,而不是已登录的工作站,请将 Mount on 设为 Boot。
  7. 在驱动器设置中调高缓存大小——NetDrive 支持从 100 GB 到 1 TB 的缓存大小(在 3.16.589 中新增),这对于在一个序列的多个帧中反复读取同一纹理集的渲染节点尤为重要。
  8. 点击 Mount。

NetDrive Drive Manager 显示已挂载为驱动器的云存储,可供渲染节点读取

在不阻塞渲染的情况下写回帧

读取权限覆盖了纹理和模拟缓存,但渲染完成的帧仍然需要存放到某处。第二个以读写方式挂载到输出存储桶的驱动器负责这一部分。NetDrive 的后台上传模式会先把完成的帧写入本地缓存,再异步上传到 Google Cloud Storage,这样渲染进程就能继续处理下一帧,而不必在每次写入时都因网络 I/O 而停滞。

NetDrive 后台上传队列显示正在异步写入云存储的数据

这种分离——共享素材库使用只读,输出使用带后台上传的读写——让两条数据路径互不干扰。读取 4K 纹理的渲染节点不会与自身的帧输出队列争抢同一套连接语义。

跨多个节点扩展

由于每个节点都独立挂载同一个存储桶,为农场增加算力只需用相同的 NetDrive 驱动器配置再配置一台机器,而无需协调共享存储的争用问题。任务进行到一半时下线的节点也不会让共享文件系统陷入不一致状态,因为每个节点只持有自己的本地缓存——存储桶本身始终是唯一的可信来源。

对于运行混合环境的工作室来说,同一个存储桶在 Windows 渲染节点和 macOS 美术工作站上以完全相同的方式挂载,因此负责审查镜头的美术师所使用的路径结构,与渲染农场进行渲染时所用的完全一致。

小结

把云存储挂载为驱动器,能让渲染农场把 Google Cloud Storage 存储桶当作普通的本地路径来处理:只读挂载保护源素材,后台上传则确保帧输出不会阻塞下一次渲染。关于底层设置,请参阅在 Windows 上用 NetDrive 挂载 Google Cloud Storage或在 macOS 上用 NetDrive 挂载 Google Cloud Storage。对于运行 CI 风格自动化渲染流水线的工作室,面向 CI 团队的 S3 测试固件一文介绍的开机挂载模式,对无人值守节点同样有用。

— Morgan, NetDrive