论坛上有不少有关虚拟盘或服务器的帖子中,都说到关于RAID是否有助于提高服务器的性能
引用的证据不外乎使用测试软件对阵列进行的测速结果等,发这个帖子的目的是抛出我个人的一些观点,起抛砖引玉的作用,希望能激发大家的讨论
先给大家看我的结论:RAID只减少了从磁盘中读取文件所需要的时间(该时间减少了50%),但是所需要的寻道时间一点都没有变化(因为RAID发指令给磁盘后,磁盘依然需要转动磁头、旋转盘片来进行寻道),所以RAID方式对于
网吧的虚拟盘服务器应用是没有任何帮助的。
要证明我的观点,首先我们先考虑2个问题,
游戏文件的读取和阵列的工作模式
1、游戏文件的读取大家应该都有概念,WOW进游戏大概才读取280M左右的文件,这些文件可能是该游戏中DATA、MP3、MAP文件夹下的个别文件,这是一个从物理磁盘上的随机位置读取文件的过程,这个只要玩
游戏的时候多留心注意的都能发现,就不多说了。
2、RAID的工作模式方面,大家在
网吧应用的绝大部分都是RAID 0,他的工作方式很简单,将2个磁盘合并成一个大磁盘来使用,任何写入的数据,都被拆分成几部分,我们就按照2个磁盘来做的RADI 0来算,那么就分成2个50%,分别保存到这2个磁盘,这个是写入的过程。那么在读取文件的过程中,大家想一下RAID 0起到了什么作用。
需要读取文件时,发送读取指令给RAID 芯片,RAID芯片根据该文件之前保存的信息,将读取需求拆分,并分别给2个磁盘指令,让他们分别进行读取。
磁盘接到指令后,开始进行磁盘寻道,找到文件后,进行文件读取,然后将读取到的文件信息反馈给RAID,RAID将2个50%的信息汇总成完整的文件,然后再反馈给指令来源。
对比一下单磁盘的运行方式,RAID减少了什么时间?他是将一个单独的大文件分成2个部分,减少了从磁盘读取的时间,但是增加了拆分文件、汇总文件的时间。
再思考一下磁盘目前最大的性能瓶颈,是读取文件的速度不够快吗?还是寻道时间不够快?(简单想一下,顺序读取速度能达到150M,随机速度只有5M,就知道磁盘读取文件的速度已经足够快了,而如果需要寻道的时候,速度立即下降30倍,能说明问题了吧!)
还有需要考虑的是多块磁盘,即使同一流水线生产的,性能上也有可能会有%几的差别,因为RAID的读取方式依赖于两块磁盘都完成读取指令后,所以永远只能等待那块性能略差的磁盘读完后才可以完成整个文件的读取。最后还有一点需要考虑的是假设每块磁盘的返修率是1%,那么RAID的返修率就是磁盘数X1%,理由很简单,每块磁盘坏了RAID中的数据都没了,这个损失很风险就不用我说了吧。