实例分析:存储阵列中闪存使用管理技巧

EMC的闪电计划中,服务器里会有一个能控制闪存的存储阵列,并且服务器和该存储阵列是联网的。 Dell公司现在也在沿着类似的思路搞研发,希望借此提高服务器的存储性能。真的可以吗?是什么原理呢?

Leon Funnel—Catlin Underwriting代理公司的企业基础设施架构师,联系到我后给了我一个使用案例,在这个案例中上述思路发挥了重要的作用。

他的案例里涉及到了一个ESXi 的服务器,大量的虚拟机(VMs) 和一个NetApp文件服务器,该服务器的控制器(PAM)里面有一个运行NetApp A-SIS重复数据删除的缓存。

ESXi服务器和文件服务器

将一个ESXi 服务器连接到一个NetApp文件服务器上。该文件服务器的可读存储空间里每晚都会运行一个A-SIS 任务,目的是将相同的数据块合成一个单实例。这么做是大有好处的,因为空间利用不会随VM数量的增加而直线上升。

你可以在文件服务器中使用PAM读缓存,然后将当前的数据块而不是那些经过处理的数据块存在磁盘里。所以,是的,你的缓存利用率会因此变得很高,同时也意味着在现有的VM数量不变的情况下,你不需要再通过增加物理主轴数量来提高性能了。

问题是出在文件服务器的可扩展能力和网络堆栈引起的延迟上。这么做有个缺点:文件服务器需要占用大量CPU来处理相同数据块里上百个VM发出的请求。这样就限制了31xx 和60xx 文件服务器可用的VM数量,在文件服务器的CPU变得发烫之前,VM大概只能有300-500个,而且,因网络堆栈发出的存储请求一般会产生5-10毫秒的延迟, VM自身的性能也降低了。

“你可以将文件服务器升级成最新最好的版本,然后花一大笔足够救命的钱,于是乎,接下来三年里CPU的问题就都解决了,直到再次出现同样的问题,你再拿出一笔救命钱,因为文件服务器是跟不上你VM数量的增速的。不过这个办法解决不了网络堆栈延迟问题。”

把PAM里的数据保存到服务器闪存里

如果你能把PAM卡里的数据存到文件服务器中,再将其复制到ESX主机的闪存里,会带来两个好处。第一,将网络堆栈延迟退回到文件服务器中,因此提高了VM的性能以及随后在每个ESXi主机上进行的融合率,同时还延长了你投入下一笔资金的时间周期:用来升级存储器的投资以及用于解决CPU问题的投资。有些人想用共享存储器,但又希望它有本地SSD 的性能。并且,购买几千美元一个的ESXi主机时也不会那么犹豫了,因为这样总比每过几年就要在存储控制器上花一大笔钱好很多。

数据融合服务器代理

说到这里我就想了:Funnell案例中的数据融合也许需要代理软件。我的想法是这样的:

一个重复数据删除文件相当于多个独一无二的数据段加上指向数据段复本中主副本的多个指针。

在这个案例中,ESXi 服务器的闪存以及存储阵列的几个独一无二数据段里都有主副本——两个存储区域中都有文件里的数据。因此I/O 请求使用VM时会涉及到存储阵列里的数据以及服务器闪存的数据,它们会在重复数据删除文件的融合过程中被结合到一起。Where is the rehydration done? 数据融合是在哪里进行的呢?

我认为融合是由存储阵列完成的,但是ESXI服务器里不是应该有一个代理器来结合缓存数据和阵列数据,进而建立融合文件吗?

Funnell说:“是的,可能需要动些脑筋或一个代理器来让主机缓存融合数据—也就是说,一个表格说要访问这个参考数据,但却是从另一个参考数据里获取了信息。如果没读到,就从共享存储里找,然后把它存到缓存里以备下次使用。主机里(可能)需要用到NetApp文件服务器的部分缓存算法。”

他强调,存储阵列和闪存应该来自于一个供应商,这样的话如果出现了问题,问题也只有一种。

不是必须要用NetApp文件服务器。这个案例原则上也可以使用控制服务器闪存的EMC VNX阵列:就像EMC说的,这就是闪电计划。