NetApp存储系统赋予《阿凡达》生命

《阿凡达》打破票房销售纪录,全球票房收入超过 27 亿美元,而此数字仍在攀升。Weta Digital 是负责该部影片视觉特效的公司,在为《阿凡达》制作炫目三维效果时也必须打破自己的一些纪录。在《指环王》三部曲和最近其它影片的制作中,Weta Digital 在密集图形渲染方面已表现得相当纯熟,但《阿凡达》的制作仍是一项巨大的技术工程。

Weta Digital 挑战了自己的计算和存储基础结构的极限,其程度远超过以往任何时候。2006 年开始着手《阿凡达》方面的工作时,Weta Digital 刚刚完成《金刚》的制作。那时,Weta Digital 的“渲染墙”中大约包含 4,400 个 CPU 核心,存储大约有 100 TB。到《阿凡达》制作结束时,公司的渲染墙中大约有 35,000 个 CPU 核心,存储也达到 3000 TB。仅渲染墙中的 RAM 容量现在就已超过《金刚》制作完成时 Weta Digital 拥有的总磁盘存储容量。

我于 2003 年开始作为系统管理员在 Weta Digital 工作,当时最后一部《指环王》影片将要制作完成。自那时起,我便主要担任 Weta Digital 基础结构小组的组长。我们的小组负责所有服务器、网络和存储方面的相关工作。我们的工作是构建使《阿凡达》得以成功制作的基础结构,以及解决随之而来的任何技术问题。

应对规模问题

尽管在制作《阿凡达》期间 Weta Digital 经历了巨大增长,但管理规模上的变化没有像我们所担心的那样具有挑战性。其中大部分原因是由于我们有一支经验丰富的团队,他们知道如何相互协作。我们的团队齐心协力,当出现问题时,我们会全身心地投入进去,解决问题。我们工作努力,绝大多数情况下,我们都设法做到积极主动,而不是消极被动。

我们很快就认识到,为了实现《阿凡达》所要求的目标,我们必须采取两大措施。

建立新的数据中心。Weta Digital 一直使用分散在几座大楼中的几个小型机房。新数据中心提供一个中心位置来整合我们在从事《阿凡达》项目期间需要增加的新基础结构。(有关数据中心的详细信息,请参见侧边栏。)

实施高速光纤。Weta Digital 没有集中式园区。我们的园区由分散在惠灵顿郊区的几座独立的大楼组成。我们实施高速光纤环网将这几座大楼与新数据中心连接起来。每座大楼都具有最低 10Gbps 的冗余连接,同时配备 40Gbps 的以太通道干线,以备任何时候存储和渲染墙需要相互通信时使用。

这两个要素为我们提供了随数据增长对基础结构进行扩展的物理容量和在两个位置之间自由移动数据的带宽。更新的渲染墙的新服务器基础结构使用 HP 刀片服务器创建。由于每个刀片服务器包含 8 个核心和 24 GB 的 RAM,我们可为每个机架配置 1,024 个核心和 3 TB 的 RAM。新数据中心由多排机架构成,其中每排包含 10 个机架,因此,我们以 10 个机架或 10,240 个核心为单位来增扩我们的服务器。我们先放入 10,000 个核心,稍后,再增加另外 10,000 个核心,再等待稍长一点时间,再增加另外 10,000 个核心,之后放入最后 5,000 个核心完成该过程。

我们拥有多供应商存储基础结构,但存储核心由提供大约 1000 TB 容量的 NetApp 存储系统组成。到《阿凡达》制作结束时,我们已经用 FAS6080 群集替换了所有旧的 FAS980 和 FAS3050 系统。在该项目的后八个月,我们还增加了四个 SA600 存储加速设备,以解决一个特别棘手的性能问题。

通过自适式高速缓存缩短纹理文件访问时间

在视觉特效行业,纹理是应用于三维模型以使其看起来更真实的图像。纹理将模型包裹起来,赋予其细节、颜色和阴影,使其看起来不只是一个光滑的灰色模型。“纹理集”是必须应用于特定模型以使其看起来像树、人或动物的所有不同图片。包含对象的大多数渲染操作也可将纹理应用于对象,因此,渲染墙对纹理的需求很高,纹理会被再三地使用。

随时可能有几千个核心需要一组指定纹理集, 而另外几千个核心可能需要一个重叠组内的贴图,诸如此类。我们为提高纹理提供速度所做的任何工作都会从总体上对渲染墙的性能产生巨大影响。

任何单一文件服务器都无法交付提供纹理集所必需的带宽,因此我们开发了一个发布流程,该流程专用于在创建新纹理集后为每个新纹理集创建副本。图 1 对此进行了说明。

图 1) 增加纹理集带宽的旧方法

当在渲染墙上运行的作业需要访问纹理集时,它会随机选择一个文件服务器并从该副本访问纹理。此流程使我们可以将纹理负载分摊给多个文件服务器,从而极大地改善了性能。尽管该解决方案要优于依靠单一文件服务器,但发布和复制流程很复杂,并需要进行非常耗时的一致性检查来确保副本保持相同。

我们开始注意到 NetApp FlexCache 和 SA600 存储加速器在解决由纹理集导致的性能问题方面是一种更为简单的方法。FlexCache 软件在存储基础结构中创建一个缓存层,自动适应不断变化的使用模式,从而消除性能瓶颈。此外,FlexCache 可使用本地高速缓存卷自动复制和提供基础结构中任何位置的热数据集。

无需手动将纹理数据复制到多个文件服务器,FlexCache 允许我们动态地缓存当前常用的纹理并通过 SA600 提供给渲染墙。我们对该解决方案进行了测试,结果发现该解决方案在我们的环境中运行得非常好,因此,在《阿凡达》预定完成前的八个月,我们做了一次大胆的尝试:安装了四个 SA600 系统,每个系统都安装有两个 16 GB 性能加速器模块 (PAM)。(PAM 作为高速缓冲存储器以进一步降低延迟。)

图 2) 使用 NetApp FlexCache、SA600 和 PAM 增加纹理集带宽的改进方法

总纹理集大约有 5 TB,但 FlexCache 准备就绪后,我们发现在给定的任意时间里仅大约 500 GB 的纹理集是热数据集。每个 SA600 都有足够的本地磁盘来容纳热数据集,并且当热数据集更改时,无需我们干预,高速缓存会自适应这种变化。总吞吐量超过 4 GB/秒,远远超过我们以前曾经达到的吞吐量。

通过 FlexCache 缓存纹理是卓越的解决方案。它使作业运行得更快,并简化了管理纹理集的工作。我们进入了四年电影项目的最后一年。如果我们引入 SA600 后遇到无法快速解决的问题,我们可能不得不撤消 SA600 的部署。但是,一星期过去了,我们几乎忘记了它们,直到影片结束才注意到。这正是令 IT 人员感到高兴的事情。

存储性能对渲染发生的速度有很大影响。存储瓶颈可能会阻碍渲染库的吞吐量。在《阿凡达》制作的最后一年,我们开始深入研究这种瓶颈产生的影响,并在每项作业中增加了许多监控功能和统计信息。

有许多固定的待办作业等待运行;每天有许多比渲染墙可能实际完成的作业还要多的作业等待渲染。Weta Digital 的“牧马人”团队负责监控作业,以确保每项作业都能按预期进行。我们引入 FlexCache 后的一天早晨,“牧马人”团队的组长来到我的办公室报告一切工作都已完成。FlexCache 运行得实在是太快了,他猜想我们可能打破了某些记录。

为什么选择 NetApp?

我是 NetApp 的忠实用户已经有很长时间了。第一次使用 NetApp 是在 90 年代末网络公司兴起之时,当时我在阿拉斯加一家 ISP 工作。那次使用经历让我印象非常深刻,以至于后来在其他几家公司我都引入了 NetApp 存储。当我来到 Weta Digital 时,我高兴地发现该公司已经在使用 NetApp 存储了。

对于像 Weta Digital 这样的公司,发生故障也会泰然处之,因为没有任何其它公司使用与 Weta Digital 完全一样的方式来实施基础结构。关键在于,当故障发生时,你需要有供应商来帮助你修复它。即使我在规模较小的公司工作时,NetApp 都始终有专人花时间同我一起研究问题,直到问题解决为止。你可能会认为这只是公事公办罢了,但依我的经验来看,能做到这种程度的公司并不多见。

存储可能很复杂。NetApp 技术使存储尽量简单。当然,我觉得 NetApp 也有不足之处,但跟我所知道的其它公司相比,NetApp 不仅能做出易于使用的多功能产品,而且能够给予客户强有力的支持。这就是我们为什么继续选择 NetApp 的原因。