碎片是否是影响存储局域网(SAN)性能的大问题?一些人说不是,一些人说是,但是有意思的是双方都断然地坚持自己的观点。那么SAN碎片究竟会有什么影响呢?
SAN专家解释道RAID(独立磁盘冗余阵列)、SAN算法、阵列控制器等要么会最小化碎片要么会排除SAN中的碎片。一些人则表示碎片甚至会干涉操作,从而影响整体的性能。
Compellent Technologies的技术解决方案总监Scott DesBles表示:"碎片整理的好处在DAS(直连式存储)环境中体现得很明显。但是在拥有虚拟化存储(比如Compellent SAN)的数据中心,碎片整理能发挥的作用很小,实际上甚至有可能影响SAN,导致SAN不能按本来的效率来管理数据。"
在SAN OEM(贴牌厂商)群体中,这种观点非常盛行。但是一些分析师和用户有不同的观点。
Storage IO Group的创始人兼高级分析师Greg Schulz表示:"从DAS到SAN附加存储,碎片一直是最富有争议的议题之一。我的观点是碎片是个问题。"
Infrastructure Analytics Inc.的分析师Mike Karp表示:"文件碎片整理对于SAN数据来说是很有价值,但是它的价值会随着访问数据的类型的不同而不同。通常,对于写入的数据来说,进行定期的碎片整理会带来更多的价值,而静态的数据则不然。"
用户在碎片整理上的体验
宾夕法尼亚州Allentown的Synectics Group的技术支持专员Ken Bucci正在使用Diskeeper Corp.的碎片整理软件,其使用环境包括RAID 5,RAID 0,一个2TB惠普MSA1000 SAN和两个戴尔EqualLogic SAN(一个4TB,一个3.5TB)。他表示定期碎片整理在所有阵列上都带来了更高的SAN性能。
Bucci表示:"我们经常听到说SAN的碎片整理是不必要的。但是如果有碎片,那么就需要碎片整理。当我们使用文件服务器数据存储SAN的时候,我们经常听到有人抱怨性能,直到我们使用Diskeeper以后才改观。"
那么谁是正确的,谁是错误的呢?看起来,我们需要区分SAN的物理存储和操作系统(尤其是Windows)所看到的逻辑存储。让我们来看看这两个问题。
像Compellent和惠普这样的OEM坚定地认为"不要对我的SAN进行碎片整理"。
DesBles认为碎片的重要性确实取决于SAN。他强调了Compellent的Dynamic Block Architecture(动态块架构)–这个架构可以跟踪数据的每个块在阵列中的存储、管理和访问地址及方式。他表示,这就是为什么SAN中不需要碎片整理,因为SAN已经比操作系统更有效地管理数据的块。SAN有一个全局的数据中心视图,可以知晓所有连接到SAN的服务器数据访问类型,并相应地管理数据块。此外,Compellent还有一个Free Space Recovery(自由空间恢复)工具,可以为其他应用程序回收自由空间,从而避免了碎片整理的必要性。
惠普也支持"不要碎片整理"。根据惠普EVA高级架构师Rodger Daniels的说法,EVA虚拟化了跨磁盘组的数据。这使得EVA可以将数据分布在磁盘组中的所有磁盘上。当数据被写入或读取的时候,EVA可以利用整个磁盘组中的所有磁盘。这改善了数据访问性能。
Daniels表示:"对EVA来说,由于有了虚拟化技术,数据碎片不成问题。但是如果有客户对磁盘进行碎片整理,EVA也不会受到负面影响。"
他表示碎片整理程序将数据集中到LUN(逻辑单元号)或vdisk中更低的逻辑块地址(LBA)。不过,由于这个数据仍然是均匀分布在存储池中,因此还是可以保证存储池所代表的磁盘池能够带来最高的性能。惠普表示EVA不会受到碎片的影响,因为EVA将数据条带化,处理的是分布在数个磁盘上的8MB分配块。EVA一直在执行一个称为水准测量(leveling)的进程,确保系统中所有磁盘都向分配好的池以及整体的阵列性能做出自己合理的贡献。
Windows的问题
EMC也是类似的情况。通过将数据布局,比如说条带到许多磁盘,以及在多个磁盘上的高性能,Symmetrix能够最小化碎片。此外,元数据被保存在高速缓存中以保证不会出现元数据的碎片。通过像Celerra这样的NAS(网络附加存储)设备和数据写入布局的分配,碎片在很大程度上被避免了。
不过,和其他人不一样,EMC的存储事业部高级营销总监Bob Wambach认为Windows服务器上的碎片确实会影响SAN,也就是说,无论SAN的物理布局技术有多先进,如果Windows看到数据逻辑上分布在30个碎片中,那么可能会影响到SAN的性能。
Wambach表示:"如果Windows看到数据有30个碎片,SAN也无法做什么。这超出了存储所能做的范围。"
Wambach抓住了引起人们困惑的核心问题。SAN运行并做它该做的事情。但是如果连接到Windows服务器,而且这些服务器在逻辑上又以非常碎片的方式来读写数据的话,那么性能会受到影响。SAN的高性能以及架构中的其他因素可能会缓解这个问题,但是系统还是有可能会受到影响。
Diskeeper的销售工程师Mark Harrer解释道:
"你用一个SAN控制器来管理多个磁盘。但是无论硬件是如何安装的,在Windows看来,SAN就是一块逻辑驱动器。在阵列中,数据的状况可能看起来很好,但是在操作系统中,数据还是碎片的形式。"
Windows本身就非常碎片化。如果你不相信,你可以在一台全新的机器上安装Windows,并且什么也不做。然后使用碎片整理工具并运行分析。第一天Windows的碎片情况就很严重。同样地,在任何一台运行中的服务器或个人电脑上打开碎片整理工具,然后观察有多少碎片,哪些文件的碎片情况最严重。如果你没有运行碎片整理,那么你会发现文件有数千个碎片。因此,当Windows进行读取的时候,它必须在逻辑上寻找到这数千个碎片,然后用数千个单独的I/O操作来整合它们,然后再提供给用户。这给性能带来了很大的负担–不过,诚然,SAN硬件的能力某种程度上掩盖了这个问题。
Harrer表示:"SAN专家们担心碎片整理程序会试图告诉控制器应该将数据写入到哪块磁盘,但是无论是Windows还是碎片整理工具都和这个过程无关。控制器卡和设备驱动程序是在不同的层中处理这个过程。碎片整理工具只在逻辑软件层上进行操作。这并不是物理磁盘写入问题。"
他表示碎片的隐性影响会导致存储管理员必须为正在运行的应用程序购买更多的I/O带宽和安装更多的硬件。但如果这是一个软件问题,那么他们瞄准的瓶颈就错了。
Schulz表示:"例如,当发生碎片的时候,RAID一无所知。碎片发生的层是在RAID所运行的层的上两层或上一层。不过,RAID可以提供性能上的提升,从而抵消碎片的影响。同样地,RAID可能需要在IOPS(每秒输入输出)做更多的工作来抵消碎片问题所带来的影响。"
他的建议不要相信两边的厂商,而是安排定期任务,比如在Windows上打开存储在SAN上的数据的文件,然后进行碎片整理,然后再试。
在未来的文章中,我们将整理用户在这个问题上的看法,报道不同的存储管理员如何在不同的SAN环境中处理碎片。