RAID是一个我们经常能见到的名词。但却因为很少能在实际环境中体验,所以很难对其原理能有很清楚的认识和掌握。RAID全称为独立磁盘冗余阵列(RedundantArrayofIndependentDisks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。RAID通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当做一个硬盘。RAID分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。在实际应用中,可以依据自己的实际需求选择不同的RAID方案。
围绕高速缓存和高速缓存使用率有许多参数,一些是明显可以调节的针对RAIDLUN(逻辑单元号)的参数。调节RAID(独立磁盘冗余阵列)并不困难,你不需要专业服务也可以进行。许多参数都与缓存和缓存利用率,以及众所周知的RAIDLUN相关,本文不针对具体的RAID控制器优化,但阅读本文一样很有帮助,至少你知道有哪些参数经过调整对I/O性能有益。优化RAID控制器需要考虑的地方包括:LUN创建和RAID级别,缓存调整和配置。
关于RAID级别与性能有关的文章已经很多,因此我们这里将讨论如何调整RAID参数。如果你准备通过设置RAID来优化你的系统,无论要设置的是个人电脑上的RAID控制器卡还是高端关键任务型企业级RAID阵列,通过这篇文章,你都可以很好的理解需要考虑哪些事情。
我们一开始先考虑你所拥有的RAID控制器的类型。如今,RAID控制器可以分成三类:
1.企业级主动/主动型:这种类型的控制器允许你从任意主机写入到任意LUN,同时对性能没有影响。这些控制器通常有庞大的镜像后的高速缓存(通常超过32GB),而控制器设计成可以热插拔任意组件。这种控制器的连接目前主要是在光纤通道上,以后很快就会变成FCoE(以太网光纤通道)。
2.中端主动/被动型:这种类型的控制器对每个LUN有两面,一面是主动,也是主存储路径,一面是被动,用于故障复原。你通常可以将LUN在主存储和故障复原之间进行分割,甚至分割你的系统。高速缓存可以在控制器中进行镜像化操作,但是这些控制器不像企业级控制器那样富有弹性。这类控制器的连接方式目前主要是光纤通道,以后很快会变成FCoE。
3.RAID控制器卡:这些是可以插入到PCIe的卡,通过SAS或SATA连接方式连接到驱动器。这些卡没有像中端或企业级控制器那样强大的处理器,而且他们也不支持那么多的驱动器。你不能故障复原到另一个控制器,而且你的系统只能在PCIe插槽和控制器卡上做文章。
许多RAID厂商只考虑他们自己的设备和存储。他们某种程度上认为存储只是按顺序从主机进行分配,同时存储只是按顺序分配的裸设备。尽管这种观点已经有了某些改变,我仍然有时听到一些奇怪的厂商言论说用户只是使用裸设备,同时数据库和文件一次性写入系统。其实,基于块的文件系统并不是按顺序分配数据。
RAID高速缓存调节和设置
RAID高速缓存调节可以分成三个方面:
①调节高速缓存,无论是先读取的还是后写入的;
②调节高速缓存块大小:例如,磁盘上的RAID分配是32KB,那么你可能认为磁盘上的所有I/O都是32KB,但如果高速缓存块大小是4KB,那么读取和写入磁盘的最小大小就是4KB,只有磁盘上的八分之一大小。如果你的文件系统分配和写入请求比较大,那么小的高速缓存块大小可能会降低RAID的性能,因为我所看到的RAID在碰到小的块的时候都会变得比较慢--RAID没有足够的CPU资源来管理所有的块。随着下一代RAID拥有更强劲的CPU,这种情况可能会慢慢消失,不过,如果数据和单个磁盘内的RAID分配不匹配的话,设置小的高速缓存块还是必要的。
③调节高速缓存镜像(对中端控制器很重要):许多中端RAID控制器都有高速缓存镜像功能,在企业级控制器中,所有的写入都被镜像。控制器获取I/O请求后将请求写入到另一半高速缓存以防备正在写入的控制器的部分发生故障。如果数据和全条带匹配,一些厂商有技术有办法越过写入高速缓存镜像要求,不过,在使用写入高速缓存镜像的通用环境下,每个写入请求都被写入到高速缓存,然后在I/O请求得到确认之前写入到另一个高速缓存。写入高速缓存镜像因此通常会拖累性能,因为写入到另一个高速缓存会带来延迟性和带宽要求,同时每个高速缓存必须作为另一个高速缓存的镜像,因此你的可用的高速缓存空间因镜像而减少一半。
先读取和后写入:你可能认为先读取和后写入是一样的,但是它们实际上很不同。
后写入——将块读取到高速缓存以便写入——如果被写入的数据符合RAID的条带值,那么后写入这种方式有很大的好处,因为它在数据到达高速缓存的时候就可以让写入者确认写入。这里的关键是数据必须匹配RAID条带。如果不匹配,那么RAID控制器必须进行读取修正写入(读取进入条带,根据新数据进行修正,然后再写入条带),这种操作会带来更大的系统开销和延迟性。这种情况下RAID高速缓存的作用是隐藏数据写入到磁盘的延迟性并在数据到达高速缓存的时候就马上显示写入。针对后写入的调节经常涉及到需要为写入分配多少高速缓存空间,以及可以被读取或写入的最小高速缓存块大小。
如果是先读取方式--通过在磁盘上读取顺序块,在请求前先读取数据--它假设的是数据将被顺序读取,而且是分配在顺序的块地址上。RAID控制器不知道文件系统或数据的拓扑或格局,它们知道的就是顺序的块地址,因此控制器I/O请求是针对顺序的块地址的。如果你的文件系统分配小于你的RAID条带大小,同时如果同一时间两个以上的文件被写入,那么文件可能在这些RAID条带内分割。
小编结语:
RAID控制器调节其实没那么难,只要你了解一点有关应用程序和RAID之间互动的知识。如果多个文件同时被写入而且文件系统分配比较小,先读取方式经常没那么有用。这种糟糕情况的最明显例子就是Windows上的NTFS。对于文件系统分配比较大的文件系统,如果它们分配大小等于或大于RAID条带大小,那么先读取方式能带来很大的好处。
看完本文,您是否对如何使用RAID实现最佳存储性能得方法有了一定的了解?如果您有任何疑问或者想学习更多相关内容的话,请登录编程学习网教育官网进行咨询哟~~