技术分享 虚拟盘技术资料,最详细的虚拟盘讲解! [复制链接]

无盘
三国LV2
技术中心 30517 0 2010-11-10 00:41:47
说到虚拟盘本身,相信很多的网管兄弟已经熟的不再熟了,现在的网吧,几乎每个网吧都会使用虚拟盘,但是如何用好虚拟盘,把虚拟盘真正的实力发挥出来呢?据我到全国各地网吧观察到的情况,其实能达到理想效果的网吧仍然是非常少见的.

我本人从2001年开始进入网吧直到现在.弄过的网吧也有几十家了,现在虽然因为工作太忙,网吧不太去了,但是还管着一大一小两家网吧,琢磨这些东西也能
有点年头了,有一些小小的心得,丢出来和大家一起探讨一下, 认为我说的有道理,就给点掌声,认为我在胡扯,那就丢点烂西瓜臭鸡蛋什么的.
也许有些观念和您以前的认知完全相反,也许你完全不能认同我的观点,没有关系,大家一起来讨论吧!
   第一篇:<虚拟盘的价值>

所有的网吧工具和软件,都是为网吧管理而服务的,并最终为网吧生意服务.我们网管在使用这些网维软件,应该时刻都要记得,我们不仅仅要让网吧能够正常运转,最终是要让网吧的生意变得更好.
怎样让网吧生意更好,这里的原因和手段太多了,我不是来讲网吧经营的,我就仅仅从技术角度来看,咱们网管可以为网吧的生意做些什么:
1)  稳定(网吧的根本,没什么可说的)
2)  快(让顾客爽)
3)  多(满足各种顾客的需求)
4)  好(游戏优化,更新及时)
5)  省(给老板省点钱,省钱就是赚钱呀)

满足这5大要素的网吧,基本上技术就到极致了.剩下的就是技术外的问题了.
这5大要素当中,我们如何去做呢?
我的答案非常简单,弄好你的虚拟盘,把所有的游戏都放在虚拟盘上,本地的硬盘就只放个系统就可以了.
相信很多人要问了,这样真的可以吗?速度够吗?带的起吗?
我可以很明确的回答:完全可以!一台5千元的服务器就可以带150台,一台1万元的服务器可以带300台,一台2万的服务器几乎可以带上一千台,不但可以带的起,而且还比本地硬盘还要快的多的多!


这样的做法有很多的好处,我总结了以下十大优点:
1)        无人值守自动更新游戏,无需推送到客户端,无需额外管理
2)        好的虚拟盘,可以达到几乎无限的速度,完全突破系统的瓶颈,远比本地硬盘快的多.到底有多快,我在后面就会说明.
3)        容量扩展将变的更加简单, 现在1.5T的硬盘也就8xx元,弄2个装上,代价不过16xx元而已,3T的游戏空间啥游戏不能装?
4)        玩家启动游戏没有更新过程,完全无需等待
5)        不会出现因为磁盘空间不足导致的游戏误删除,不怕游戏强推
6)        大幅度减少磁盘扫描现象,E盘扫描可以杜绝
7)        客户机方便部署,只需要GHOST系统盘
8)        只要服务器管理得当,游戏分区不再有病毒问题
9)        方案同样适用于所有的无盘,让无盘只负责C盘和回写,游戏完全交给虚拟盘来进行管理,既减少了无盘服务器的负载压力,又方便而易于部署
10)        其实,弄个好的虚拟盘服务器并不贵,平均摊到每客户机成本还不到50元,网吧如果旧硬盘不更新的话,硬盘上省下的钱远不止这点.


明白了这些好处,接下来的问题就是如何去用好虚拟盘.

我的文章会从以下几个方面展开:
1)   一些基础的知识
2)    硬盘的基本原理和性能分析
3)    虚拟盘的性能分析
4)    虚拟盘的负载能力
5)    虚拟盘在网吧中的实际应用
6)    典型案例和推荐方案
7)    一些问题


这个"系统+虚拟盘"的方案,它并不是一个新鲜的概念,曾经有许多人也做过积极的尝试,有部分人很成功,而更多的人,因为无法解决高负载情况下的服务器性能问题,而放弃尝试.问题在哪里呢?我在后面要讲解的,就是这些成功的秘诀.

(未完待续)

    第二篇:<卡?不卡,慢还是快?带的起,带不起?>

看到一些朋友的回复,说说我的观点.
12楼问:和无盘有优势吗?
我的回答:无盘可以理解成另外一种虚拟盘,是一种把系统也放在服务器上的虚拟盘.
从读的本质来说,虚拟盘和无盘是完全一样的.
他们差别只在于写的问题,无盘服务器需要负载客户机的大量回写,而且写的负担远比读取要大很多.相比较而言,虚拟盘可以将所有的资源用于读,比无盘服务器要轻松的多.
所以,在速度上,它们并无本质区别.


好了言归正传,今天继续开讲,先来说一些最基本的东西.
第一个问题,网吧怎样算卡,怎样算不卡,达到什么样的条件才不会卡?
这个问题看起来非常的白痴,但是真的要是去问问我们的网管,可能问100个人就会有99种说法,仔细想想,这个问题真的那么简单吗?
其实造成卡的因素非常的多,外网延迟高,内网不稳定,CPU,显卡太差,内存不足等等.今天我们这里只讨论磁盘和虚拟盘的问题,磁盘或者虚拟盘造成的卡,是和写入或者读取的速度有关的,在游戏运行过程中,速度降低到多少才会出现较为明显的停顿呢?这个因不同的游戏而异.但是基本的,我可以提供一个参考数值:1MB/S!
启动游戏时,1MB/S的速度估计会慢的让人很郁闷,但是对大多数游戏来说,只要进了游戏以后,如果任何时候都能满足1MB/S的读写速度,游戏就可以运行的很流畅.在服务器上观察客户机的读写,几乎90%以上的客户机平时读写数据都是0,偶尔读一点,也是128K,256K这样的流量,.不信的话,你可以认真的观察一下服务器的情况.很多百M内网的网吧里,在虚拟盘服务器上运行游戏,除了启动略慢一些,游戏过程中依然可以很流畅的.
对有盘的网吧来说,在本地运行的游戏要达到1MB/S的标准实在太容易了,所以有盘网吧里硬盘导致的卡是很罕见的,往往是其他的原因才会出现卡的情况.
但是对无盘网吧来说,情况要糟糕一些,事实上很多无盘网吧都容易出现卡机现象,原因是无盘服务器回写的压力是非常大的,回写的文件多半细碎而且难以缓存,所以服务器硬盘常常处于负荷的极限,这种情况下是很容易卡的.我这里并不是说无盘不好,只是因为很多代理商施工的时候为了追求利润或者追求高带机量,让服务器带了过多的客户机,这样回写的压力是非常大的,很多人都对服务器性能过于乐观了.


再来说说快和慢的问题,到底磁盘要多快才够呢?我们在疯狂的做RAID0的时候,测到200-300M/S的速度的时候,也许自己还不是很满意,还想能不能再快一些,快到400M甚至500M,可是事实上我们需要那么快吗?

我们来做一些简单的分析.我们的测试客户机是这样的:
CPU 酷睿2200
显卡9600GT
内存2G
这样的机器是去年下半年网吧比较典型的配置.
这样的机器,在读取硬盘数据的时候需要多少的速度才能满足要求?才能不成为系统的瓶颈?
我们使用一个固态硬盘作为参照----OCZ的一个32G的固态硬盘来做测试,这样硬盘不会成为系统的瓶颈,CPU和显卡的处理速度才是系统的瓶颈.
测试结果是:
WINDOWS XP一般启动一次大概要读取250M左右的数据,最高启动速度为30M左右
魔兽世界进入到游戏画面,所有读取的数据大概为300M左右,最高的读取速度不到30M.
我们随后又测试了多款游戏,大部分的游戏启动,都不超过25M/S.
随后我们用PCMARK05进行测试,结果如下:
下载 (67.97 KB)
2009-8-26 10:35



(图2-1:PCMARK05测试OCZ固态硬盘)
如图所示,模拟启动XP的速度为27MB/S,模拟程序载入时23MB/S,普通应用18MB/S,只有做模拟病毒扫描时才达到104MB/S.
初步的结论:我们这样的机器,对数据的需求最高不超过30M,在绝大多数时候,数据流量在10M以下,那么几百MB/S的硬盘是我们需要的吗?
不不,事情绝对不是那么简单的,硬盘中还隐藏着很多不为大家所熟知的秘密,
下一节我会用非常大的篇幅来仔细的讨论这个课题.


接下来我们说说负载问题,对虚拟盘服务器来说,怎样算带的起,怎样算带不起?
我的方法也很简单,找出虚拟盘服务器整个系统中最薄弱的环节,仔细测量薄弱环节的性能和能力,按照客户机平均读取流量,计算服务器能负载的极限值,然后,为服务器留出3-5倍的性能余量.这样基本上就是带的起了.
有很多种方法可以测量服务器的负载情况,如果你对自己服务器的性能掌握不太清楚的话,可以自行监测一下.
多数虚拟盘服务器的瓶颈都在于硬盘,我这里提供一个简单的监控硬盘性能的方法.
在服务器上打开 开始&#61664;程序&#61664;管理工具&#61664;性能.


下载 (55.32 KB)
2009-8-26 10:35


(图2-2:WINDOWS自带性能监视工具)


然后选择计数器日志,新建一个磁盘监控的任务,再添加一个计数器,选择硬盘(physicaldisk),选择你要监控的磁盘分区,然后从列表选择计数器: % disk time,然后将时间周期设定为1秒,这样,系统会每一秒钟记录一次磁盘的运作情况,输出为csv格式,可以直接用excel打开分析.
如下图:

下载 (96.97 KB)
2009-8-26 10:35


(图2-3:用WINDOWS自带性能监视工具记录服务器状态)
这里解释一下什么叫% disk time,词可翻译为磁盘工作时间的百分比,输出的数值多半为5.x,86.x,264.x,对应的意思是:这一秒钟有磁盘有5%的时间在工作,86%的时间在工作,264的意思是工作需要2.64秒才能完成,对这秒钟来说,磁盘已经远远的超过了负荷,就有可能会卡了.
这个数值100%为磁盘满负荷,小于100%,就是未满负荷,大于100%,就是超过磁盘的承受能力.
用这个计数器可以无限的记录下去,在你网吧人最多的时间,找一段数据出来分析一下,你就会知道你的服务器到底负荷怎样.

我举一个例子吧,下面这段数据是某网吧虚拟盘服务器在8月8日晚上20:00~22:00点之间记录的,这个网吧当时约90人,所有的游戏都放在该服务器上的该硬盘上(一个1.5T的希捷11代硬盘).
我用execl分析成图表如下:

下载 (67.04 KB)
2009-8-26 10:35


(图2-3:某网吧虚拟盘服务器高峰时段的硬盘读写时间图)

分析整整2小时的数据,我将读写时间从高到低进行排列,最忙的那一秒钟在8月8号的20:53分,负荷达到了95%左右.
从整个横线的比例来说,1%不到的时间,硬盘的负荷在90%~30%之间.
大概有2%左右的时间,硬盘的负荷在30%~10之间
其他大概97%左右的时间,硬盘仅仅工作在10%的负荷之内.
这是很理想的情况,这种负载下,服务器是真的带的起,带的轻松.负载的客户机再增加5倍都没什么问题.
这里还要补充一下,并非硬盘达到100%以上客户机就会卡,在100%那一刻,没有去读数据的客户机不会卡,就算去读的客户机也不一定会卡,因为数据的需求量并不一定是那么大的,而且,1秒很快就过去了,就算数据受阻,一般也未必感觉的到,但是!经常性长期性的超过100%,那就总有碰到卡的时候.
欢迎大家自查自己的服务器,很期待看到大家贴出自己服务器的硬盘负载图.
下一节: 硬盘中的惊天大秘密!
(未完待续)

                                           第三篇:<硬盘中的惊天大秘密!>

既然要谈论虚拟盘,那我们就先从硬盘开始说起
目前市面上可以买到的硬盘大体分为三种:
1.  普通的sata硬盘,最为常见,性能一般,转速7200转,容量从80G-2000G不等,价格低廉.无需专用接口,一般主板都支持.
2.  高级一些的SAS硬盘,属于服务器配件,需要专门的SAS接口,这种接口在高端的服务器主板上才会有,普通的主板要用sas硬盘的话,可以买专门的sas接口RAID卡.价钱较贵,一般147G的硬盘就要1K多
     了,速度比普通sata硬盘要快一些.
3.  新型的固态硬盘,也称为SSD,这种硬盘使用flash进行存储,没有机械结构,最大的优点是寻道时间非常低,现在最快的SSD,已经可以达到250M的读取速度,200M的写入速度,性能全面超过以前的老式硬盘,缺点是容量太小,价钱较高.一般120G的SSD就要卖到2-3K了.固态硬盘目前比较多使用在高级的服务器上,部分高端的笔记本也会使用一些SSD.

第一部分:普通的SATA硬盘:
硬盘的工作原理,可以从这段视频中清晰的看到
http://player.ku6.com/refer/zCTB6Fmc2HGRPxko/v.swf
这段视频展示了我们在删除,复制粘贴,快速格式化时,磁头的相应工作情况,印象最深的是磁头疯狂摆动的样子.

我们先来了解一些硬盘的基本概念,如图是硬盘的盘片的示意图:

下载 (74.97 KB)
2009-8-26 10:35


(图3-1:硬盘中的盘片示意图)

磁道
磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道(Track)。磁道从外向内从0开始顺序编号。信息以脉冲串的形式记录在这些轨迹中,这些同心圆不是连续记录数据,而是被划分成一段段的圆弧,每段圆弧叫做一个扇区,扇区从“1”开始编号,每个扇区中的数据作为一个单元同时读出或写入。一个标准的3.5in硬盘盘面通常有几百到几千条磁道。磁道是“看”不见的,只是盘面上以特殊形式磁化了的一些磁化区,在磁盘格式化时就已规划完毕。

扇区

操作系统以扇区(Sector)形式将信息存储在硬盘上,每个扇区包括512个字节的数据和一些其他信息。一个扇区有两个主要部分:存储数据地点的标识符和存储数据的数据段, 标识符就是扇区头标,包括组成扇区三维地址的三个数字:扇区所在的磁头(或盘面)、磁道(或柱面号)以及扇区在磁道上的位置即扇区号。



簇就是更大的扇区,它可以是一个扇区、也可以是2个、4个、8个等等,它究竟有多大是在高级格式化的时候决定的。把相邻的若干个扇区组合起来就是一个簇,和扇区一样,一个簇内不允许存在两个文件,因此当储存一段比单个簇的容量还要小的数据时,会浪费一些储存空间。比如镞是64K,那么那怕只有一个字节的文档,也会占用64K的空间,对于QQGAME之类的小文件极多的游戏,浪费的空间是很大的.
簇就是我们在格式化的时候,可以选择的区块大小,从512B---128K不等,如果我们选择比较大的簇,空间会比较浪费,但是虚拟盘出盘的流量会大为减少.如下图:

下载 (65.26 KB)
2009-8-26 10:35


(图3-2:虚拟盘出盘数据量)

这是个1.5的硬盘,几乎装满了游戏,但是出盘仅仅只要读取3M数据,这个分区是用64KB为单位进行格式化的,如果使用32KB的簇,那么出盘流量就会变成2倍:6M,如果使用默认的方式格式化(512B),那么出盘的流量就会达到300多M,这样的数据是很恐怖的,对分区硬盘大的的服务器会导致出盘的效率极度低下.
来看看这么一张截图,是用HDTUNE测试硬盘基准测试:

下载 (89.76 KB)
2009-8-26 10:35


(图3-3:HD TUNE文件基准测试图)
对一个硬盘分别采用从512B,1K,2K…8M等从小到大的不同区块大小,进行测试读写速度,总的速度来看是逐渐升高的,到64K以后,就基本持平了,对于过小的区块大小,磁盘读取后数据的处理时间还赶不上磁头读取的速度,因此小区块造成的速度衰减是非常明显的,我们在后面的测试当中,大部分都基于64K的区块,这样反应的数据比较有价值.1M,8M这样的区块大小我不会在测试中采用,对真实应用的指导性不大,因为我们一般的虚拟盘都是基于512B-64K之间的大小来进行格式化的.
区块大小对于虚拟盘的测试会产生非常大的数据偏差.在客户机上测试网维大师的虚拟盘,用512K区块时,可以达到90M以上的读取速度,但是在64K时,只有55M的读取速度.常常在论坛上看见很多比拼虚拟盘或者无盘的读取速度,很多人都没有注意这个区块大小的问题,不同区块大小造成的测试结果偏差导致很多比拼失去了公平的意义.
&Oslash; 平均寻道时间(Average seek time):指硬盘在盘面上移动读写头至指定磁道寻找相应目标数据所用的时间,它描述硬盘读取数据的能力,单位为毫秒。寻道时间和这几个因素有关:盘片大小,磁头移动速度.

&Oslash; 平均潜伏时间(Average latency time):指当磁头移动到数据所在的磁道后,然后等待所要的数据块继续转动到磁头下的时间,一般在2ms-6ms之间。 潜伏时间和盘片转速关系最大.

&Oslash; 平均访问时间(Average access time):指磁头找到指定数据的平均时间,通常是平均寻道时间和平均潜伏时间之和。平均访问时间最能够代表硬盘找到某一数据所用的时间,越短的平均访问时间越好,7200转的SATA硬盘一般在11ms-18ms之间,典型的15000转SAS硬盘一般在5ms-8ms之间.现在,一般在说的平均寻道时间往往指的就是指平均访问时间,我们在后面也用平均寻道时间来代表这个平均访问时间.

Sata硬盘的性能取决于2大指标:
一是硬盘的转速,转速越高性能越好,一般的sata硬盘转速都是7200转,也有少量的5400转产品,多用在笔记本上,西数还有一种特别的迅猛龙硬盘,是一万转的,盘片是2.5寸的,比普通硬盘的3.5寸盘片小很多,转速高,盘片小,使得迅猛龙硬盘在寻道时间上比普通硬盘缩短了近一倍的时间,实际性能已经很接近于sas硬盘了.
,二是磁盘的单碟容量.存储密度的提高对性能提升是很有好处的,在磁头划过同样的距离时,密度越高的磁盘,读取的速度自然越多.这点对顺序读取的性能提升尤其非常明显.


普通的硬盘有多快呢?
我们先看一个截图:

下载 (99.37 KB)
2009-8-26 10:35


(图3-4:HD TUNE测试希捷11代盘顺序读取)
硬盘是希捷11代的1.5硬盘,单碟容量500G,是当今最快的SATA硬盘之一.(因为测试的时候服务器还在提供负载,所以曲线不是很平滑).这个测试显示的是硬盘连续读取的状态.使用的工具是HD-TUNE PRO 3.50版本.
从这个图看,该硬盘的外圈速度已经达120MB/S以上,速度应该是非常理想了,但是我们来看另一个测试:

下载 (90.13 KB)
2009-8-26 10:35


(图3-5:HD TUNE测试希捷11代盘随机读取)

还是那个硬盘,这次我们测试的是随机读取的速度,在硬盘中随机选取N个小点,每个小点代表64K的数据.
和上面连续读取的条件一样,都是读取64K的区块,结果速度降到了3.577MB/S,相差了近30倍.
为什么有如此大的差异呢?
因为硬盘的性能指标中,读取数据的性能远大于寻找数据的性能.
读取一个64K的数据,硬盘只需要1/2000秒,也就是0.5MS(毫秒)
但是要找到这个64K的数据,硬盘需要花费1/57秒的时间,也就是17MS.
这两个性能相差了30多倍.如果硬盘花在读取数据上的比例多,性能就会很好,如果硬盘花在寻找数据的比例多,那性能就会变的非常糟糕.

那么,在实际应用当中,哪个数据更有参考意义呢?
我的结论是硬盘的随机读取速度才代表硬盘的真正速度,因为实际在网吧里的应用大部分都是随机读取的过程,为什么这么说呢?原因有以下几点:
1)        客户机上的硬盘很难将文件排列整齐,随着硬盘满了删,删了写,满了又删,长久以往,硬盘上的游戏难以按顺序排列,而且碎片很多,而网吧的环境又很难常常去整理硬盘,如果不幸用的是300G以上的硬盘,那整理的过程是会让人崩溃的.
2)        就算是初次刻盘,将文件都好好的排好了,也不会是连续读取,因为基本没什么游戏会对硬盘的读取顺序进行优化,多数的游戏里面文件排列的规则都是按照开发人员易于管理的方式进行排列,比如素材这类的放在一起,地图这类的放在另一个文件夹里,人物的画面又放在其他文件夹里等等,这样的游戏在读取的时候,必然是地图要读,素材要读,界面要读,人物图片要读,这必然是”随机读取”的过程.
3)        对硬盘来说,就算是读取连续文件,但是如果存在2个或者2个以上的读取线程,那就马上变成随机读取了,硬盘的磁头会不停的移动,一会去内圈为A进程读取,马上又去外圈为B进程读取.在XP开机刚进桌面的时候,因为进程很多,这时候磁盘速度会变的奇慢无比.
4)        随机读取的衰减是非常惊人的,100%的顺序读取很罕见,多半都是部分是顺序的,部分是随机的,只要有少量的随机读取的比例,磁盘的性能就会急速的衰减.

说了这么多,很多朋友肯定还是不信,那么我们来看看真实的数据吧.

下载 (87.3 KB)
2009-8-26 10:35


(图3-6:PCMARK测试intelSSD和希捷11代盘)


这个图是天极网做过的一个评测,用最爱生活 爱顺网的机器(爱妻+爱生活 爱顺网显卡),再超频到极限以后测试的结果,以尽可能好的机器来挖掘硬盘的潜力.
分别用INTEL的固态硬盘和希捷11代盘来测试PCMARK VANTAGE.显示的数值是2个硬盘在运行不同的测试项目时读取硬盘的平均速度.INTLE的固态硬盘是当今最快的固态硬盘之一,读取速度达到250MB/S,写入速度也能达到200MB/S以上,而且固态硬盘的特质就是随机性能和顺序读取性能相差无几.
仔细看看这个图,是很有启发的,我们来看Gameing这一项(第3行),在运行游戏项目的时候,固态硬盘读取的平均速度是95MB/S,而普通硬盘只有10.5MB/S.
在SSD的测试当中,硬盘不是系统的瓶颈,瓶颈是机器本身的处理性能,包括cpu和显卡,这说明这个系统的处理能力是95MB/S.
在SATA硬盘的测试当中,虽然系统能达到95MB/S的处理能力,但是硬盘只能输出10.5MB/S.这说明了,这个测试中,硬盘只能达到10.5MB/S的读取速度.

因为PCMARK VANTAGE只能在VISTA上运行,因此我们没有去复现这个测试,基于XP,我们用PCMARK05做了以下的对比测试:

下载 (66.89 KB)
2009-8-26 10:35


(图3-7:PCMARK05测试OCZ的SSD)
这个图是上一节出现过的,采用网吧内普通的机器测试,这个OCZ的固态硬盘是去年夏天购买的,是OCZ第一代的SSD,采用JB的控制芯片.对比一下希捷硬盘的测试结果:

下载 (64.62 KB)
2009-8-26 10:35


(图3-8:PCMARK05测试普通sata硬盘)
结果差异虽然不如天极测试的明显,但是结论是一致的.
测试中SSD硬盘在XP启动,游戏载入,普通应用这3项测试上能达到20-30MB/S的读取速度,这说明客户机的CPU和显卡的处理性能基本就在20-30mb/s这个水平上.
普通的sata硬盘在XP启动,游戏载入,普通应用这3项测试上只有7-8MB/S的读取速度.这说明,硬盘的读取能力仅有7-8mb/s的水平.

这就充分说明了:在游戏测试的项目中,硬盘去读取这些数据多数都是”随机读取”的状态,对固态硬盘来说,随机读取和顺序读取几乎是一样的,所以衰减很少,可以全速读取,但是对普通的硬盘来说,做随机读取需要消耗大量的寻道时间,实在是快不起来啊!
在图3-5的测试当中,硬盘需要花费95%以上的时间来进行寻道,只有5%的时间在读取数据.在各种不同的应用当中,表现的情况是随机读取的情况占大多数,在网吧中游戏是最主要的应用,普通的硬盘在游戏的表现中是非常不理想的.
因为随机读取性能更能代表硬盘本身的性能,所以我们在后面的测试大部分都是采用随机读取的测试结果.
总结:普通的7200转SATA硬盘,目前性能最好的已经达到了单碟500G容量.
用64K区块进行测试,这些硬盘顺序读取速度在外圈都超过100MB/S的速度,但是随即读取的速度一般只在3-4MB/S之间,而实际应用中,随机读取的速度决定了硬盘的快慢表现.
下一节,我为大家说说SAS和SSD硬盘,神秘的SAS和SSD硬盘对很多人来说就是昂贵和性能的代名词,究竟如何呢?下回分晓.

(未完待续)



第四篇:<揭开SAS和SSD硬盘的真相>





什么是sas硬盘:
SAS是新一代的SCSI技术,和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。SAS是并行SCSI接口之后开发出的全新接口.
简单的说,sata是家用版本,sas就是服务器版本.
sas硬盘多半是采用2.5寸的盘片,sata一般是3.5寸的盘片(笔记本硬盘和迅猛龙硬盘除外).
Sas硬盘转速一般是1万转/分钟,或者是1.5万转/分钟,sata的转速一般是7200/分钟.
Sas硬盘的磁记录密度和sata差不多,所以连续读取速度上和sata硬盘差不多.但是sas硬盘的平均访问时间比sata快很多,所以在随机性能上有一定优势.
平均访问时间是由寻道时间和潜伏时间决定,而寻道时间由盘片大小和磁头臂移动时间有关,而潜伏时间和转速有关,综合起来,1.5万转的sas平均访问时间大概是是5-8ms,sata一般是10-20ms.
下面我们通过测试来看看,1.5万转的SAS硬盘究竟有多快,

先看看顺序读取的情况:

下载 (85.86 KB)
2009-8-27 09:46



(4-1:HD TUNE测试希捷15000SAS硬盘顺序读取)

使用的是希捷146G15000sas硬盘,在全顺序读取的情况下,最高速度为125M.这个速度和普通的希捷11代盘差不了多少.
再来看随机读取的情况:

下载 (81.93 KB)
2009-8-27 09:46


(4-2:HD TUNE测试希捷15000SAS硬盘顺序读取)

因为寻道时间的大幅度减少,随机性能比sata硬盘好了不少,但是也只有9.6MB/S,大概是sata硬盘2-3倍的速度.
这样,我们基本上就可以理解为sas硬盘的速度是sata硬盘的2-3,在实际应用的时候,我们确实发现sas硬盘对于无盘回写的处理能力,2-3sata硬盘的回写处理能力相当.在支持多回写的无盘软件上,用一个sas硬盘和3sata硬盘所能得到的效果和带机量是相当的.

再来看看固态硬盘的情况:

基于闪存的固态硬盘,采用FLASH芯片作为存储介质,就是我们通常所说的SSD


固态硬盘中,存储单元又分为两类:SLCSingle Layer Cell 单层单元)和MLCMulti-Level Cell多层单元)。SLC的特点是成本高、容量小、但是速度快,而MLC的特点是容量大成本低,但是速度慢。MLC的每个单元是2bit的,相对SLC来说整整多了一倍。不过,由于每个MLC存储单元中存放的资料较多,结构相对复杂,出错的几率会增加,必须进行错误修正,这个动作导致其性能大幅落后于结构简单的SLC闪存。此外,SLC闪存的优点是复写次数高达100000次,比MLC闪存高10倍。此外,为了保证MLC的寿命,控制芯片都校验和智能磨损平衡技术算法,使得每个存储单元的写入次数可以平均分摊,达到100万小时故障间隔时间(MTBF),达到20年以上的使用年限.


固态硬盘的优点是寻道时间短,没有机械机构,耐冲击.


缺点是价格高,容量小,写入速度一般.


固态硬盘这几年发展的相当快,GB价格下降很快,几乎每年都要跌去一半的价格.现在INTEL80GMLC硬盘大概售价在2爱生活 爱顺网左右.INTEL30GSLC硬盘大概也是2爱生活 爱顺网左右.
固态硬盘的存储单元flash,本身速度并不是非常快的,U盘一样,一般的读取速度也就几十M左右,但是因为flash访问延迟很低,因此固态硬盘的做法是就是将很多flash组成多个RAID0来提升速度,INTEL提供的方案就是10通道的raid0,这样速度可以提升到200MB/S以上.
同样,我们用测试的数据说话,看看SSD到底有多快.测试对象是金士顿的32G固态硬盘,采用SLC芯片,INTELOEM产品,性能和intel的硬盘几乎一样.

顺序读取:

下载 (95.41 KB)
2009-8-27 09:46



(4-3:HD TUNE测试金士顿32G固态硬盘顺序读取)

顺序读取速度稳定在210MB/S,平均的存取时间只有0.1.
再来看随机读取的情况:


下载 (96.02 KB)
2009-8-27 09:46



(7:HD TUNE测试金士顿32G固态硬盘随机读取)

同样的测试条件,金士顿的固态硬盘的随机读取的速度达到了惊人的128MB/S!平均读取时间为0.48MS,IO达到2061,这个性能是sata硬盘的30多倍,也是sas硬盘的10多倍.
结论:sata硬盘的性能远不如我们想象的那样,在实际应用当中,sata硬盘往往只有7-8MB/S的读取性能,1.5万转的SAS硬盘确实比sata要快,性能大概能达到sata2-3,而最快的硬盘式固态硬盘,能达到sata硬盘的30倍性能.
因此, 为虚拟盘服务器挑选硬盘时,如果仅从性能上考虑的话, SSD是最好的选择,sas硬盘次之.
下一节,我们继续就硬盘的随机读取性能进行深入的分析.
(未完待续)



第五篇:<随机读取性能分析>



在第三篇的时候,我讲到了一个观点,就是在应用中多数的情况都是有部分数据是随机读取的,部分数据是连续读取的,我还讲到,少量的随机读取的比例就会导致硬盘的性能大幅度的降低,现在我们来看看随机数据的比例对硬盘的确切影响.
我们使用IOMETER来进行这项测试.IOMETER是专业的磁盘测试工具,因为可以灵活的设定测试的详细条件,因此在很多专业评测中采用.大家有兴趣的话也可以研究研究.
先看看sata硬盘的测试情况.测试对象是一个西数的80G SATA硬盘.


下载 (52.75 KB)
2009-8-31 10:08



(5-1:IO Meter测试西数80G硬盘读取,0%随机)
第一图是全顺序读取的结果,这个硬盘连续读取的能力为55MB/S.IOps877.测试区块仍是64K.


下载 (61.98 KB)
2009-8-31 10:08



(5-2:IO Meter测试西数80G硬盘读取,5%随机)
仅仅是加入了5%的随机数据,性能已经衰减到20MB/S,iops降低到474

后面的测试图我就不一一张贴了,整理成下图

下载 (51.82 KB)
2009-8-31 10:08


下载 (24.82 KB)
2009-8-31 10:08



下载 (31.33 KB)
2009-8-31 10:08



接下来看看SAS 硬盘的情况

全顺序读取:


下载 (74.39 KB)
2009-8-31 10:08



(7:IOmeter测试希捷15000sas硬盘顺序读取)


25%的随机数据读取:


下载 (68 KB)
2009-8-31 10:08



(7:IOmeter测试希捷15000sas硬盘25%随机读取)



50%的随机数据读取:


下载 (77.19 KB)
2009-8-31 10:08




(7:IOmeter测试希捷15000sas硬盘50%随机读取)



100%的随机数据读取:


下载 (80.53 KB)
2009-8-31 10:08




(7:IOmeter测试希捷15000sas硬盘100%随机读取)


整理成图表:








下载 (13.5 KB)
2009-8-31 10:08





下载 (24.65 KB)
2009-8-31 10:08





下载 (22.17 KB)
2009-8-31 10:08





综上,只要有少量的随机数据,硬盘的性能就会急剧的下降,satasas硬盘都不例外.



在来看看对固态硬盘来说,随机数据的影响.



讲完了硬盘,下一节,我们来看看虚拟盘的性能.
(未完待续)

第六篇:<虚拟盘的性能分析>


虚拟盘:


虚拟盘是一种虚拟的网络存储空间,它是通过网络来管理和使用的远程硬盘空间,可用于传输、存储、下载和备份计算机数据文件,聊天软件绑定的网络硬盘与传统的存储方式相比较,具有管理和使用方便的特点。
虚拟盘工作过程:
客户机发出读取需求à指令通过网络传输到服务器à服务器去读取数据à通过网络将数据发送给客户机,整个环节中,最有可能造成延迟的部分就是后2个环节.
服务器读取数据的环节,一般是服务器先在缓存中寻找,如果缓存中没有,则到相应的硬盘中去读取.缓存命中的数据,其延迟是微乎其微的,所以主要延迟还是硬盘的延迟.
通过网络将数据发送给客户机这个环节,还要经历软件处理à网卡à网线à交换机à网线à客户机网卡à客户机,这么多的过程中,虚拟盘软件的传输协议,网卡的性能,交换机的性能,网线的性能都会影响到最终的虚拟盘性能.
总结起来,影响虚拟盘性能的主要因素就是:硬盘性能,软件性能,网络性能.下面逐个来分析一下.

首先来说说网络,典型的千兆网络,使用超5类网线传输,经过我们测试,其实延迟是非常之低的,看看这个测试图:
下载 (92.99 KB)
2009-9-2 11:32


(8:交换机性能测试)

这个测试表明,64字节这样的极限条件下,2个交换机的通过率都超过99%以上,请注意测试单位是64字节,而不是64kb,普通硬盘如果用512字节来测试的话,连续数据也只有3-4MB/S,随机数据就只有几十KB/S.交换机上单个包的延迟仅为4微秒,比硬盘的15毫秒的寻道时间少了3000.尽管网吧里的状况不可能象实验室中的测试条件那么好,但是实际上,网络上真正的延迟还是远比硬盘的延迟要低的多的多!

我们再来看看虚拟盘软件
在客户机用HDTUNE测试网维大师5.0版本虚拟盘的速度.我们将数据全部缓存在内存当中,以屏蔽硬盘对虚拟盘速度的影响,64K的条件来测试,结果如下:
下载 (33.03 KB)
2009-9-2 11:32


(9:虚拟盘在缓存命中情况下随机读速度(客户机测试))

测试方法是随机读取,在64K的条件下,速度约55MB/S左右,很好理解,服务器每次按64KB大小进行发包,1秒钟要达到55MB的流量,需要发880个包(普通硬盘每秒只能处理60个64K的数据),因而我们可以计算出虚拟盘软件+网络最终造成的延迟:64KB/55MB*1024=每个64K包的延迟=1.1毫秒


由此可见,软件性能和网络性能导致的延迟相加不过是1.1毫秒而已,远比普通硬盘的10毫秒-20毫秒的延迟小的多.所以:真正要提高虚拟盘的性能,关键还是在于硬盘,硬盘才是整个环节中的最大瓶颈.


我们加上硬盘的影响,做个直接的对比测试吧:




下载 (40.1 KB)
2009-9-2 11:32


(10:虚拟盘在有缓存和无缓存情况下随机读速度(客户机测试))


蓝色的是完全没有内存缓存的情况,所有的数据都是直接从硬盘中读取.在同样的测试条件下,同样的虚拟盘,缓存命中和缓存未命中带来的差异是惊人的.除了固态硬盘,其他2个硬盘的测试结果都非常的糟糕.希捷7200.11虚拟盘速度只有缓存命中情况下的1/10,超过90%的时间都损耗在硬盘的寻道时间上了.



分析到这里,要获得好的虚拟盘性能,对应的方法就很简单了:
1、尽可能的减少硬盘的读取,用内存对常用数据进行缓存.
2、尽可能提高服务器硬盘的性能,比如使用SSD硬盘
3、使用好的虚拟盘软件
4、网络性能不能太差


OK.下一节我们开始讲该怎么做.
(未完待续)
.第七篇:<虚拟盘的负载能力:上篇>


&#61656;        回答一些朋友的问题
22楼的朋友说: 为了更好的利用客户机硬盘空间,我等还是采用本地加虚拟盘这种方式为客户提供游戏服务。

我的回答:如果你喜欢游戏运行的慢一点,如果你喜欢让顾客等着游戏更新,如果你喜欢那些麻烦事情,我是不会拦着你的,只要你喜欢,你安心,我没有意见的.


42楼的朋友说:楼主 洋洋洒洒一大篇理论,感觉都是纸上谈兵而已。就像无凭无据,做什么说什么都是拼自己脑袋瓜想出来的.

我的回答:我的理论我都实践过,从07年下半年开始,我就在自己的网吧里使用这样的方案,那时候的虚拟盘软件没有一个能符合我的需求,于是我尝试了很多种软件,最终在我组合了3种虚拟盘软件,加上SUPERCACHE,做出了一个无比复杂的庞大体系,虽然最终效果很好,但是过于复杂的体系导致完全不能推广,直到今天,我能将方案简化到人人都能看懂的时候,才能拿出这篇文章.
为了能把这个问题说的更加简单明了,我从初稿开始,到现在一共修改了12次,测试那些数据,至少花费了近2个月的时间.如果这样纸上谈兵的话,只能说我的能力实在太差了,您实在是对我期望太高了点.


43楼的朋友说:….
我的回答:同上

44楼的朋友说:你SA不SA啦,人家在顺网论坛发,这篇文章一看就知道是为顺网的虚拟盘写的,我觉得下几篇肯定就是为网维大师漂白的.

我的回答:这种方法是可以用在任何虚拟盘软件上得到,虽然我拿网维大师的虚拟盘举例,但是你完全可以用别的软件.需要理解的是思路和方法,懂得方法,用别的软件也可以达到同样的效果.网维大师的虚拟盘是完全免费的东西,用或者不用,只是你自己的选择.


50楼的朋友说: …………….(太长了,我不引用了)
我的回答:你的方法,我只能说,像是做梦一样.你最后一句话,让我被雷到了…这样奢侈疯狂的投资,居然只是和本地硬盘差不多?大哥,你看了我的文章了吗?你知道本地硬盘有多慢吗?


60楼的朋友问:IOPS是什么

我的回答:IOPS意思就是指每秒硬盘所能完成的IO次数,就是读取或者写入的次数,这个数值随着测试条件不同,会有很大的差别,我按照单线程,64k的条件来测试.一般的专业测试是32线程,512字节的条件来测试.IOPS可以用IOMETER这个软件来测试.


64楼的朋友问:那么硬盘到底用多少字节的好呢?
我的回答:格式化的时候字节越小越省空间,字节越大,出盘越快.参考值:500G用8K,1T用16K,1.5T用32K.


72楼的朋友说:请推荐个150台电脑的虚拟盘配置和做法~!
我的回答:我在文章最后会给大家一些具体的配置参考,但是只是照单抓药是没有用的,每个人的具体情况不同,正确的方法应该是理解方案的思想和精神,自己根据实际情况进行灵活的组合.


83楼的朋友说:讲了这么多,还没讲到重点了。。以上讲的就是随机读取是很重要的,普通硬盘随便性能是很差的。。阵列是没有用的,SSD才是牛B的。

我的回答: 请允许我表达对您的敬意,我洋洋洒洒写了万余字,您用乐5句话,40个字,就能说的明明白白,清清楚楚,由衷的佩服啊!


86楼的朋友说:这个方案感觉不怎么对劲
我的回答:希望您能告诉我哪里不对劲,我赶紧再改改.

以上,希望朋友们能踊跃提问,我当尽力解答,本人工作繁忙,如不能及时回复,还请谅解.
以下,继续上一篇的话题,补充一张测试截图.
&#61656;        
虚拟盘的速度实测


由上一节,我们得到一些基本的结论,在虚拟盘读取的所有环节里,硬盘是速度上的最大瓶颈,所有其他的因素,包括网卡,网线,交换机,软件性能,操作系统平台等等,它们加起来所造成的延迟不到硬盘的1/10,所以,要提高虚拟盘最终读取速度的关键就在于硬盘.
我们来看一个典型的测试,在客户机上,用HDTUNE对虚拟盘进行随即读取测试.我们用内存进行读取数据的缓存,这样测试到的数据全部是从服务器中的缓存发出的,结果如下:
下载 (92.72 KB)
2009-9-12 04:17



结果可以清晰的看到,在64K区块测试的时候,延迟1.2毫秒,是sata硬盘的1/10,同时流量也达到了53.6MB/S,这个速度是普通的SATA硬盘绝对无法望其项背的.是SATA硬盘的10多倍,是SAS硬盘的5倍,已经非常接近于固态硬盘的读取速度了.

虚拟盘有多少的负载能力呢?
要回答这个问题,我们先讲几个概念,如果不能明白这几个概念,那就难以理解整个体系的奥秘所在.

&#61656;        基本名词解释
&#61548;        什么是缓存?
   在网维大师的虚拟盘中,会将部分物理内存用于存储最常被读取的数据,当客户机请求读取数据时,服务器会先在这些内存中进行寻找,如果在内存中有这些数据,则直接由内存发出,只有内存中没有该数据,才会去硬盘中读取.

&#61548;        什么是缓存命中率?
是指所有服务器发出的数据当中,有多少比例的数据是从内存中发出的,越高意味着性能越好. 比如50%的命中率意味着,每从服务器发出100M数据,其中50M是从内存中发出的,只有50M是从硬盘中发出的,这就意味着与不使用缓存的服务器而言,我们服务器的负载能力扩大了2倍.

&#61548;        如何提高缓存命中率?
要想得到一个较高的缓存命中率,首先得有一个好的缓存算法,有了好的缓存算法能很大的提高命中率。其次,就是装上尽可能多的内存。

&#61656;        网吧中的真实负载情况

要想明白一个虚拟盘服务器到底能带多少机器,首先得知道负荷会有多大,在一个典型的中型网吧里,装了1.8T的游戏,究竟在营业的时候,会读取多少的数据呢?这是很关键的问题,不知道朋友们是否认真的研究过这个问题,但是至少我在做这个测试之前,我还真的不知道这个准确的数字.

好吧,我们来看看这个测试,这个测试网吧是个典型的中型网吧,机器110台,来的客户有学生,有民工,还有些上班族,生意一般,不好也不差.我们将所有的游戏均部署在虚拟盘上,统计了2天的数据. 注意:是所有1.8T的游戏,在客户机的本地硬盘上,一个游戏都不装!

2天内所有的游戏读取数据量为448G.
根据收费系统的统计,2天内所有的客户机在线机时总共为1730小时.
这样计算下来每秒每客户机的流量为: 448G/(1730小时*3600秒)= 75K/S
后来我们也测试了一些其他的网吧,虽然不同的网吧,不同的玩家行为会造成一些差异,但是大体上结果是相似的.

&#61656;        传统的虚拟盘的负载能力

根据上述的一个网吧用户平均读取流量,我们就可以评估一下,传统的虚拟盘的负载能力.
我们考虑一个简单的模型,假设这个传统的虚拟盘服务器,只有一个希捷7200.11硬盘,同时没有任何缓存机制,这种情况下,我们简单的算一下,这个服务器能带起多少机器.
对这样一台服务器来说,因为硬盘的随机读取的能力仅为4MB/S, 网络和其他因素应该可以轻松的达到4MB/S的能力,因此我们完全可以认为该服务器的性能瓶颈集中在硬盘上.
按照4MB/S的硬盘能力,我们计算硬盘的极限承受能力:
4M(硬盘随机性能)/75K=54台.
意思就是说,按照75KB/S的平均读取需求,该服务器的硬盘最多能承受54台机器在线.
实际上,为了应付突发的情况,我们应该为服务器留点余量,不能让服务器总是工作在满负荷情况下,假设按3倍的余量计算:
54/3=18台.
结论:这样的虚拟盘服务器,在18台机器的负载情况下,大部分的时候,性能和本地硬盘相当.这样的结论和我们经验值是比较接近的.在实际网吧应用当中,我们是不敢将所有游戏都部署在这台机器上,这点负载能力,太不够用了,那么,怎么办呢?

89楼的朋友在看到第六篇的时候,已经给出结论了,要提高虚拟盘的性能,出路就2个: 一个是用固态硬盘,二是用高内存做缓存,但是这两种办法都是非常昂贵的手段,网吧花的起这个钱吗?
我的办法就在下一篇: 第八篇:<虚拟盘的负载能力:下>
未完待续

第八篇:<虚拟盘的负载能力:下>



神奇的2/8原则

首先,我来解释一下什么2/8原则.
二八原则是19世纪末20世纪初意大利经济学家帕累托提出的,这个原则很简单:
任何一组事物中,最重要的只占其中约20%,其余的80%虽然是多数,但是却是次要的。
比如:

  80%的销售额是源自20%的顾客;


  80%的电话是来自20%的朋友;


  80%的总产量来自20%的产品;


80%的财富集中在20%的人手中;
非常简单的一个原则,但是现实生活中,你会发现这样的规则几乎是无所不在的.
基于2/8原则,在虚拟盘的应用上,我们可以引申出内容分级存储管理的概念.


什么是内容分级存储?

是指我们将所有可以用来存储内容的介质,按照性能的不同,分成多个级别,在进行存储的时候进行优化选择,将最常用的数据存储在性能最高的介质中,依次类推,将最少用到的数据存储在最廉价的介质上,实现速度和容量并重,同时造价尽可能的低廉.
根据2/8原则.80%的顾客只玩20%的游戏,那么我们只要把这20%的游戏搞的很快,就能满足80%的顾客需求.这点,可以根据网维大师上的DP值排行就看的出来.
再根据2/8原则,大部分的游戏,80%的运行时间里,往往只读取其中20%的数据.这一点有根据吗?,好好的观察一下,我们会得到这么一个结果:
魔兽世界这个游戏虽然有10来个G,但是进一次游戏,从启动图标开始一直到游戏画面中,需要读取多少数据呢?
答案是:只要200M!在游戏里玩上1-2个小时,总共读取的数据也就500M而已!
XP装完要至少1.5G,但是启动一个XP到桌面,需要读取多少数据呢?
答案是:只要250M!

同样的例子还有很多,我们对市面上几个常见的游戏均进行了测试,结果如下:

永恒之塔 500MB         
穿越火线
600MB
QQ飞车
95 MB
反恐
OL 240 MB
QQ炫舞
200 MB
QQ三国
100 MB
天龙八部
130 MB
魔兽争霸
3 100 MB
梦幻西游
30 MB
诛仙
100 MB
QQ寻仙
470 MB
传奇 50 MB


魔兽世界 200M


除了穿越火线,QQ寻仙等几个腾讯出的BT游戏之外,大部分游戏需要读取的数据都非常的小.在实际游戏过程中也是一样的,除了切换地图,绝大多数的时间,游戏基本都不读什么数据的.


结论就是,尽管游戏容量非常之大,但是其中经常会用到的数据其实非常非常少.




根据上述分析,我们的答案就很简单了.

目前的常见介质的特性如下表所示:

介质种类


性能(64K随机读取IOPS)


容量


价格


内存


10万以上


常见4-8G


1XX元/2G


固态磁盘(OCZ SSD)


2000


常见32G-128G


11XX元/60G


SAS硬盘(15K转速)


200


常见74G-300G


9XX元/147G


SATA迅猛龙(10K转速)


120


150G或300G


9XX元/150G


普通SATA


60


常见160G-2000G


7xx/1500G




(
1)

内存是性能最好的存储介质,那么我们就应该将最常被读取的数据放在内存里.
其次固态硬盘也是非常好的介质,那么我们就应该将最热门的游戏放在固态硬盘里.
…………………………………
最后,SATA硬盘容量又大又便宜,那么我们就把那些最冷门的游戏放在SATA.


内容分级存储的典型应用

来看看上次网吧流量测试当中的服务器截图.
下载 (135.01 KB)
2009-9-13 02:34



这就是非常典型的内容分级存储的案例.
服务器内存共8G,我们拿出了7G内存用作虚拟盘缓存,游戏放在3个硬盘上,G盘为120G的固态硬盘,H盘和I盘是普通的希捷11代的1T硬盘,安装游戏一共1.8T左右.
根据上面这个图,我们看到了什么结果呢?
1)
7G的内存,产生了平均74%的缓存命中率.就是说,虚拟盘74%的负荷被内存解决了.

2)
放在固态硬盘上的100G游戏,被读取的数据量为86616M,这个数据量是所有硬盘读取数据量的86/(86+22+9)=73.4%

3)
H盘和I,2个硬盘读取的数据总量相加,只负载了整个虚拟盘负荷的7.1%


结论:在这个服务器上,我们成功的利用了2/8原则,7G内存和100G固态硬盘的代价,解决了虚拟盘服务器中93%的负载.93%的数据,有着比本地硬盘快的多的速度,剩下那7%的数据,也拥有和本地硬盘相近的速度. 这就是分级存储的惊人效率!

这个案例非常完美的解决了虚拟盘的速度问题,那么负载能力会成问题吗?


内容分级存储服务器的负载能力


这么一台典型的,采用了分级存储的服务器,能负载多少的机器?
还是采用上面的分析方法,先找服务器瓶颈.
服务器的瓶颈有可能存在这些方面:
1.
CPU

2.
网络(包括交换机,网卡,网线等)

3.
软件(虚拟盘软件,WINDOWS操作系统本身)

4.
各个硬盘

仔细分析一下:
1.
CPU:以酷睿5200这样CPU来说, 在绝大多数时候,CPU占用不超过10%,所以CPU不会成为瓶颈.

2.
网络:前几篇的分析结果至少说明,单个网卡输出50MB/S是没有任何问题的,那么如果流量不超过50M,网卡也不会是瓶颈.如果超过50M,我们还可以通过多网卡绑定,汇聚,分流等方式来解决.事实上我们测试网维大师的虚拟盘服务器上网卡是可以输出90MB/S以上的.所以,网络也不会是瓶颈.

3.
软件:,网维大师在WIN2003上可以输出200MB/S以上的速度(多网卡情况下),同时,网维大师的新虚拟盘可以同时负载上千个连接,所以这个也不是瓶颈.

4.
硬盘:固态硬盘的负载量是SATA硬盘的爱生活 爱顺网,按照SATA硬盘4MB/S的性能,那么固态硬盘性能只要超过4*爱生活 爱顺网=30MB/S,那么固态硬盘就不会是瓶颈.根据前几节的测试,固态硬盘的随机读取能力可以达到100MB/S以上,所以SATA硬盘还是瓶颈.


结论:如果网络没有大问题,如果我用多个网卡分载,那么这个虚拟盘的瓶颈仍然是SATA硬盘,如果客户机不断的增加,在其他部分出问题之前,SATA硬盘已经顶不住了.那么我们就只要计算一下,SATA硬盘在这个案例中的极限负荷能力就行了.

还记得上一篇中,我们计算的传统虚拟盘的负荷能力吧?
单硬盘的负荷能力为18台机器.
这个服务器有2SATA硬盘,,那么就能负荷36.
2个硬盘负荷的数据量为总数据量的7%,那么该服务器的负荷能力为36/0.07=517!
就是说,当客户机达到517台时,2SATA硬盘的负荷能力达到极限.
这还是留了3倍性能余量的结果!
就算是真的达到517台客户机,Sata硬盘到达阀值,受影响的也仅仅是7%的数据,另外93%的数据仍然流畅无比!
,是真的吗?

如果你仍有怀疑,那我们反过来再算一次.看看517台客户机的时候,工作情况是怎样的.

每用户平均流量为75KB/S


那么500台客户机在线时,总平均流量为75*517=38.4MB/S


我们留出三倍余量,突发速度就是38.4*3=115MB/S

那么我们用两张网卡分流就完全可以应付!

115MB/S的流量,内存缓存掉74%,还剩下:115*26%=29.9MB/S


29.9MB/S的流量,固态硬盘分掉73%,还剩下:29.9*27%=8.07MB/S

8.07MB/S的流量,2SATA硬盘平分流量,刚好是SATA硬盘的极限.

现在,我的朋友,您还有怀疑吗?
那么,我再安全一点,考虑到用户太多以后造成的突发情况可能会更大,那我不留3倍余量了,我留5倍的余量,让这台服务器去带300台机器.
就这样,只带300,您放心了吗?您敢带吗?
我敢!我在5月份的时候,在我自己的网吧里,就用这么一台机器带了275台客户机跑所有的游戏!很流畅,很舒服,很安心! 一直到8月底,现在,我有了更好的方案.才把这台服务器换了下来.

这一篇的最后,我们来算个帐,这么一台可以稳定的带300台机器的虚拟盘服务器,装了1.8T的海量的游戏,还能让你的顾客在93%的时间里,都能感受到本地硬盘还要快的速度,这个机器要多少钱呢?


主板:intel3000 (1200左右)


Cpu:酷睿5200 (420左右)


内存:DDR II 2G*4 8G (600左右)


硬盘:OCZ 120G固态硬盘*1 (2000左右)


希捷7200.11硬盘1T*2 (1400左右)


机箱,电源等 (500左右)

-----------------------------------------

总计:6120



一些结论和建议

1.
在我们的方案中,
内存是最最最最最最值得去投资的部分,想要虚拟盘性能好,无论如何请尽可能的加大服务器的内存数量,4G是最起码的,一般达到8G才会开始产生质的飞跃.如果你的老板真的很穷,穷到连8G内存都买不起的话,请告诉他,把服务器机箱卖了吧,宁可让服务器裸奔,也要加满内存!
2.
不要迷信SAS硬盘,把买SAS硬盘的钱换成内存吧!1300GSAS硬盘要1500,把它换成10G内存,效果会好10!

3.
网维大师的虚拟盘程序足够稳定,区区500台机器搞不垮虚拟盘.

4.
除了最热门的100G游戏,其他2T的游戏只要用SATA硬盘就足够了,看见有人用SAS300G硬盘*6的方案,我的心在滴血,为网吧老板滴血!

5.
缓存命中率决定了虚拟盘的速度以及负载能力. 是虚拟盘中最有价值的指标. 命中率取决于算法和内存大小,基于网维大师及其优秀的缓存算法,剩下唯一要做的,还是那件事情:不顾一切的增加服务器的内存吧!

6.
一般建议使用内存+小容量固态硬盘+大容量SATA硬盘这样的组合方式.大家也可以根据自己的喜好来自由搭配.内存和固态硬盘的效果是非常好的,但是既昂贵,容量也有限,我们不可能把所有的游戏数据都放在里面,我们要做的,就是要把最常用的数据放在内存中,次常用的放在固态硬盘里,不常用的数据放在SATA硬盘里.这就是所谓的分级存储管理.


这一篇的最后,我提一个问题吧.
这样的方案已经是最好的方案了吗?
我的答案是:NO!
下一篇,我来讲讲另一种更有意思的方案.


未完待续




第九篇:<终极的虚拟盘方案>


因为前段时间本人的硬盘坏了,结果辛苦积累很久的数据和文章一起报销,文章可以重新写,但是收集那些数据确实太过麻烦了.下了很久的决心,终于决定重新开始写吧,因此续文这次拖了这么久,内心非常的愧疚.闲话少说,就开始正文吧.




在前几篇文章中,我们已经将虚拟盘中的几大因素都做了一些剖析,我们提出了分级存储管理的方法,用来更有效的提高虚拟盘的效能,以及有效的控制成本.
内容分级管理中最重要的因素是内存,常见的服务器多数只支持到8G左右,8G内存情况下,缓存的命中率一般都在70%-80%左右,我们也知道,如果命中率越高,那么虚拟盘的效能和负载能力也就越高,那么,如果增大内存,最终我们会得到什么效果呢?
理论上,愈大的内存,缓存命中率就会越高,但是命中率和内存大小并非是线性的关系,当内存大到一定程度以后,就渐渐的失去了性价比. 那么,多少的内存数量是合适的呢?

为了得到答案,我采购了一台拥有64G内存的服务器.先介绍一下这个服务器.服务器主板是泰安的S5397,拥有16个内存插槽.CPU是志强E5405.

服务器安装了164G一条的FBD内存,看以下截图:


下载 (62.28 KB)
2009-10-18 15:05



志强E5405CPU,64G内存,win2003 sp2(32)版本


下载 (176.87 KB)
2009-10-18 15:05







Everest,可以清楚的可以看到16FBD内存,我们选取了其中8条来监控内存温度,显示在系统的右下角,温度一直在60-70度之间.对这个服务器来说,内存散热是非常关键的问题,在室温下,这堆内存能在3分钟之内迅速达到90度以上的高温,这是非常恐怖的,最后我们找到了212寸的暴力风扇直接对准内存猛吹,才最终将温度降到70度左右.


下载 (180.65 KB)
2009-10-18 15:05


在网维大师虚拟盘服务端上设置了60G的内存缓冲,系统还剩余4642M内存.服务器上只安装了一个游戏盘,容量为1.5T的希捷11代盘.把游戏拷满.
我们来猜一下,这样命中率能到达多少?
(说明:这组数据我不太满意,因为第一天的时候做了大量的虚拟盘测试,从而多读了很多的硬盘数据,在后来的测试中,命中率比这个高很多,但是后来积累的数据遗失了,我们以此为例,道理是一样的.)
第一天:
下载 (147.84 KB)
2009-10-18 15:05




发送数据150G,硬盘读取数据15G,因为缓存设置了60G,所以这15G数据全部被缓存.但是命中率只有89%,因为:不管内存多大,第一次读取总要从硬盘读吧!

第四天:


下载 (131.59 KB)
2009-10-18 15:05




第四天:发送数据494G,硬盘读取数据26G,没有超过60G,所以这26G数据全部被缓存.命中率提高到94%.

第六天




下载 (143.21 KB)
2009-10-18 15:05



第六天:发送数据800G,硬盘读取数据33G, 没有超过60G,所以这33G数据全部被缓存.命中率提高到95%.

第十天:




下载 (153.83 KB)
2009-10-18 15:05





第十天:发送数据1387G,硬盘读取数据45G, 仍然没有超过60G,所以这45G数据全部被缓存.命中率提高到96%.
我们用HDTUNE来观察硬盘的运行情况,如下图所示,硬盘在多数时候都是完全空闲的状态.


下载 (164.2 KB)
2009-10-18 15:05




除了第一次访问必须读取硬盘,以后所有要用到的数据都是从内存中发出的,如果排除掉第一次读取,其他的缓存命中率几乎是100%,对这种超级服务器而言,唯一的瓶颈只是网络了,只要网络占用不超过2G(使用双网卡绑定),这个服务器不会感觉到有任何瓶颈,多少台机器都带的起,带的快!

综合以上数据,结论就是,网吧中那么多游戏里,那些需要被读取的数据仅仅不超过50G,而常常被读取的数据,也许连30G也不到.相信如果你有机会配置32G内存的服务器的话,除了第一次必须读取的数据,应该就可以获得近乎99%的命中率.在这种命中率下,任何硬盘都是可以胜任的,什么SSD,SAS统统靠边站,我只要最廉价的SATA就够了,内存大才是王道!



下一篇:选择合适的服务器



(
未完待续)



第十篇:<选择合适的服务器>

因为这段时间工作比较忙,所以文章连载持续了半年未能更新,这里先向关注文章的同学们致歉了,大家久等了,闲话就不多说了,继续我欠了半年的方案连载吧!


在上一篇我们看了一个64G的服务器,当时我就说数据拿的不太好,等了几天,我截取了一些新的数据给大家.先来观赏一下:

下载 (346.8 KB)
2010-5-15 16:37


这是另外一个服务器,使用了3个希捷1.5T的硬盘.64G内存,然后,所有的游戏均下载安装了,游戏总量约3T左右.这个服务器负载量还是比较大的,一天下来发送的数据达到1千G左右.E盘放的热门游戏较多,大部分数据都从E盘读取的,第一天运行下来,命中率约98%.
下载 (349.92 KB)
2010-5-15 16:38




这是当天晚上人较多的时候截取的数据,共有248人在线,连接数达到744个.运行情况依然很好,命中率一直维持在98%.发送数据达到1156G,当时读硬盘的总数据量不过30G左右.
下载 (332.19 KB)
2010-5-15 16:39



第三天晚上的数据
下载 (323.53 KB)
2010-5-15 16:39



第七天的数据,共运行6天12小时,发送数据6454G,从硬盘读取数据170G,命中率约98%.

最后看一张最近的运行数据,运行了5天半之后.我们终于看到了惊人的99%的命中率!
下载 (350.7 KB)
2010-5-15 16:40



发送4000G数据,从硬盘读取67G数据,总命中率98.38%,在数据最密集的E盘,命中率达到99.07%!

好了,言归正传,今天来说说服务器.这块东西比较少有技术含量,更多的是性能,价格,稳定性的综合评判,没有准确的标准,网吧老板的丰俭各有不同,重视程度亦有不同,所以,这个部分只能是作为简单的参考,切勿迷信我的建议,本来并不打算写这块,因为只要理解了上面我讲的思想,剩下的问题就不是技术问题了,是根据实际情况的变通,资金和性能之间的平衡,现实的妥协.但是情况下看到很多人有需求,也会起到一定的指导作用,那就粗浅的提一下吧.
先说明我考虑问题的立场,我本人也是网吧老板,有自己的网吧,又懂得一定的技术,所以我的角度会考虑很多资金问题,我自己采用的方案会尽力避免浪费,但是对于性能的关键部位,我的投入绝不含糊.我愿意投资近2万元去采购64G的服务器,原因就是我认定了,内存大就是王道!

在这个配置中,我并没列出主板与CPU之类的硬件推荐是因为要想游戏快,内存够大就可以了,对于主板的要求就是能支持大内存就好,而cpu则是能主板上能用就行了,所以这里没列出主板和cpu的选择,大家完全可以自己随意配置。

下载 (19.61 KB)
2010-5-15 16:29



在上面配置方案里,32G或64G的服务器基本上只能用来做虚拟盘服务器,做别的都是浪费。而且速度几乎可以到极致,理论上带多少都行,但是方案也要理论还要结合实际,给大家一个规模数字,相信大家更容易理解和消化!如果客户机超过300台以上的话,在网络上得花点功夫,比如做双网卡绑定才行,否则网络肯定是要吃不消的。

为了挑战下服务器带机极限,我联系到了一个朋友,他也是几家网吧老板,后来和他沟通了下方案的来龙去脉,听的他非常兴奋,因此迅速的采购了一台32G内存的服务器,分别在几家200到300台机器的网吧测试,32G内存的服务器带二、三百台机器简直就是太浪费了,服务器的2块普通sata硬盘基本是没压力的,看到服务器“闲”到如此程度,实在是太浪费了,于是我们又大胆的尝试了他最后一家860台机器的网吧,同样是32G内存,2块SATA硬盘,而且没加SSD硬盘,因为他网吧之前就是用的网维大师,除了中途拷贝游戏时把硬盘拷贝挂掉一块,整体施工过程非常顺利!而且测试效果是非常理想的,服务器运行了两天零七个小时,缓存命中率基本都是95%以上,但是因为机器太多,网络传输压力太大,当网吧上座达到五六百人的时候就会感觉到内网有些延迟,但是看服务器性能是完全没有问题的,只可能是骨干网络顶不牢了,于是直接买了2台支持堆叠并支持自动汇聚的交换机,然后用Intel自带的网卡工具进行了双网卡汇聚,汇聚后的网络带宽为2Gbps理论传输速度为125MB/S*2,也就是250MB/S了,说实话,这么高级的设备我也是第一次用了,2Gbps的速度理论中经常见,这次终于也算有幸见识一次真正的2Gbps的链路效果!
我们为了准确的测试出网络性能,客户机用hd-speed进行了多次连续读取测试,以便让测试数据全部缓存,不受磁盘性能的干扰,而我们也可以通过图片看到,测试时缓存命中率达到了99%,磁盘是100%空闲,而网络传输速度也达到惊人的215MB/S,可以说网维大师虚拟盘的网络传输性能还是比较不错的,大家可以欣赏下图:

下载 (735.64 KB)
2010-5-15 16:31



(此图为网络性能测试,双网卡汇聚可以达到215MB/S的传输速度,已经与网卡理论传输速度不相上下)
其实任何方案做的时候,说的时候都可以说的很华丽,但是用的时候咋样才是最重要的,那么我们就来看下,这台32G内存的服务器,服役情况怎么样,因为平时工作比较忙,晚上空下来的时候抽时间看了下,当时在线680人,游戏全部部署在服务器上,服务器连续运行了两天,读盘一共313G,总共发送数据4684G数据,而2块普通的SATA硬盘,缓存命中率均在94%以上!而通过图片我们也可以看到,当时性能监视器的磁盘负载只有24%左右,可以说服务器轻松的一塌糊涂……


下载 (65.9 KB)
2010-5-15 16:32




服务器运行了4天后,缓存命中率仍然保持在94%,之后最后加上去的1T盘缓存命中60%,主要是因为这块盘上只是放了几个新下的游戏,玩的人也并不多,所以缓存命中比较低,如下图:
下载 (46.01 KB)
2010-5-15 16:33



那么至于服务器配置大概就这几类,再多的不见得有什么意义,只要大家认真看过以上的文章,相信大家自己配置服务器完全没什么问题,如果你实在是不愿意浪费眼细胞,再多看几遍的话,就按照上面我给出的配置去配也没什么问题,不过最近内存价格实在是涨的太离谱了,2G DDR2 800要330左右一条,单条4G
667 ECC服务器内存要900块左右,如果配置一台32G内存的服务器,只是内存就要花去7200块大洋了,虽然大内存效果非常明显,但是考虑到性价比问题,因为每个老板对投资大小的接受程度不同,选择也要适度,因为并不是所有网吧都要配置32G内存的服务器的,如果是100台机器的网吧,8G内存+2块SATA就够了,100-300台机器的网吧用8G内存+一块SSD硬盘+2块SATA硬盘也可以,如果是400台机器以上的网吧,想必花2w大洋买台高性能的服务器应该也不会太困难,毕竟让顾客玩的爽了人家才愿意来你网吧消费!有人消费了难道还怕服务器投资赚不回来吗?
要知道这样一台服务器可以给顾客带来飞一样的感觉,就算服务器质量再烂,用3年也是没问题的,如果一个400台机器的网吧,购买这样一台服务器,3年的成本1.5w块钱,平均每天每台机器多赚4毛钱成本就肯定回来了,这点投资都可以给顾客带来飞一样的感觉了,每台机器每天多赚4毛钱我想是不会有任何难度的了。

       好了,写到这里,我想大家认为游戏虚拟盘方案应该是完结了,但事实上还有有一部分没有些出来,那就是无盘,因为前面我们就提到过无盘也是虚拟盘的一种,那么将虚拟盘方案怎么能少了无盘呢?
通过对方案的了解,游戏虚拟盘部分可以通过服务器添加大内存方式来解决负载能力,那么对于无盘,这个系统的虚拟盘来说是否也可以通过这种方式来解决负载能力呢? 敬请期待!

下一篇:另外一种虚拟盘——无盘
(未完待续)



第十一篇:<另外一种虚拟盘——无盘>

估计大家看到本章的标题有点疑问或者不解,无盘就无盘呗,干嘛还加个“另外一种虚拟盘”?难道是故弄玄虚?其实不然,那么首先希望大家不要误会,我不是来讲有盘好还是无盘好的问题,因为在我看来只要你能做好,有盘无盘都一样,之所以和大家讲无盘就是希望能通过我的讲解让大家能够像了解虚拟盘一样,来了解无盘,从而能为网吧提供更全面的服务,因为最初我就说过了,任何技术,工具都是为网吧的经营而服务的,所以说只要你能用你的技术协助网吧从技术层面提升网吧的经营业绩,你用啥,老板不会去管的,当然我的这些说法可能也会很多人不认同,不过没关系,因为技术的讨论本来就是博弈之后达到统一认知的过程,如果你感觉我说的对,那就多多支持,如果感觉说的不对,提出鄙视,我也接受。
既然虚拟盘我们已经有解决方案,那么下面我就再来谈下如何在网吧用好无盘这个方案,接下来的文章会从以下几个方面展开!
1)无盘的一些名词解释。
2)虚拟盘和无盘的差别。
3)无盘的回写到底有多大。
4)硬盘的写入性能分析。
5)如何解决无盘的回写压力。


一、无盘的一些名词解释。

为了方便后面详细讲解无盘的一些问题,首先让我们来了解下无盘的一些名词含义。
1、PXE: 它的中文翻译是“预启动执行环境”,我们这里可以理解为是网卡的一种功能,而我们表面上看到的现象就是网卡支持网络启动,比如过去无盘使用的网卡都会带一个BootRom的插槽,如果插槽里插入一块启动芯片后,就可以网络启动了,而这也是无盘必须环境要求。不过随着技术的发展,现在主板集成的网卡都会支持这个功能。
2、DHCP:它的中文名叫“动态主机设置协议”,而他的作用就是为客户机分配IP地址,而我们平时在做无盘时,在客户机输入客户机的IP和计算机名,就是为了确定这台机器的IP地址和(MAC)网卡地址对应关系。
3、TFTP:简单文件传输协议,是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。我们可以看到的典型应用就是在弄网络GHOST的时候用到的tftp32,实际上就是个TFTP服务器,用在无盘上时,主要是为了传输客户机的网卡驱动以及其它一些系统启动文件。
4、PNP:它的中文名称叫做“即插即用”,而在无盘上来说实际上就是为网卡添加一个支持网络启动的驱动文件,而我们在做无盘系统时,经常发现系统启动时XP滚动条,有的网卡滚动条就半圈,有的网卡要两三圈,甚至更多,实际上就和PNP这个过程有关系。
5、回写:因为无盘客户机是没有硬盘的,所以顾客在使用的过程对系统或游戏所做的添加,删除,修改,都会临时写回无盘的服务器上,而这个将数据写回服务器的过程就叫做回写,存放这些回写数据的硬盘就叫做回写盘了。其实虚拟盘同样存在回写,只是这些文件都写在本地硬盘了,因为量比较小,我们基本感觉不到,所以,一般提到回写只存在于无盘上。


二、虚拟盘和无盘的差别。

因为之前我们就说,无盘只是另外一种虚拟盘而已,可能有些人还不太相信,那么问问我们的网管,无盘和虚拟盘的差别到底是啥?估计得到的答案也是不尽相同,那么虚拟盘到底和无盘有什么不同?我是这样来理解的,从虚拟盘和无盘的作用和工作流程来区分,主要存在以下不同。

下载 (10.65 KB)
2010-5-27 21:46



通过这个对比我们可以很容易看出无盘和虚拟盘的差别,比如系统启动部分虚拟盘是不需要这个过程的,因此我们可以得出一个初步结论,无盘和虚拟盘的主要差别,就是在是否支持系统启动。支持系统启动的虚拟盘就叫无盘了。而这种虚拟盘解决的问题之一就是系统启动。

接下来我们再来看下无盘和虚拟盘在使用阶段有什么不同,在客户机正常使用阶段,无盘和虚拟盘相同的部分是数据读取部分,而唯一存在差别的地方就是写入数据,因为虚拟盘在过去主要是应用在有盘网吧的,而在有盘网吧客户机本地也是有硬盘的,为了减少虚拟盘服务器的压力,虚拟盘不允许客户机向虚拟盘写入任何文件,同时对于客户机来说,往虚拟盘写入数据的几率并不是非常大,数据也不是非常多,所以向虚拟盘写入数据时,都会写到客户机本地硬盘里,而网维大师虚拟盘就是将写向虚拟盘服务器的文件,直接写到客户机的D盘。

但是这个数据写入过程在无盘上就变的麻烦了,因为这个写入数据的量是完全不一样的,一般顾客上机1天,可能对虚拟盘的写入也不会超过200MB,但是对于无盘来说这个数据写入量将会放大十倍,甚至几十倍,同时对于无盘的回写来说并不是数据写到服务器上就完事了,可能还会有相当一部分会再被客户机读出来使用,而且回写的这些数据多半是细碎,无法像虚拟盘一样进行缓存的,而这就是无盘这种虚拟盘解决的第二个问题——回写!


三、无盘回写到底有多大?

为了能深入了解无盘的压力到底有多大,我拿自己的网吧做了一个万恶的测试,这个网吧有110台机器,网吧的顾客群体主要是学生,上班族,民工,以及一些组团电影族,可以说是顾客群体比较全面,但是因为种种原因,目前网吧的上座率并不是不高,平均每天上座率大概在60%左右,所以我们暂且把这个网吧理解为60台机器满座好了。

之所以说这是个万恶的测试,是因为我为了模拟最古老的无盘环境,无论是服务器还是客户机都设置成了0缓存,因为开始服务器准备不充足,一台1读3写的服务器带所有机器,结果上达到50几个人的时候就开始出现偶尔的秒卡,甚至大卡,开机慢,游戏进入速度慢问题。后来又临时加了一台同样的服务器,才得以让让这些现象消失,并完成这次测试,为了避免周六周日造成的数据影响,我连续测试了一周,测试数据如下:
下载 (127.76 KB)
2010-5-27 21:48


(服务器运行一周的截图)

在测试的一周里,通过计费软件统计,这一周里所有的客户机平均每天上机759小时,平均每天上机169人次,通过上图我们看到,在这一周里,所有客户机一共向服务器回写了3221G数据。平均到每天是回写460G左右,如果再平均到每台客户机的话,每台客户机每天将会向服务器写入约7.7G之多的数据,这个数字对于有盘来说简直是小菜一碟,但是对于无盘来说可能就会出现致命的问题,比如之前我说的,秒卡。而这个回写量只是在60台机器的网吧产生的,如果是100台机器的网吧,每天将产生770G的回写量,200台机器的网吧每日将产生1540G回写,当你的网吧规模达到500台机器时,客户机每日的回写量将达到3850G之巨!那么为什么会产生这么大的回写?其实原因很简单,因为客户机没有硬盘,客户机在使用过程中产生的一切数据都要写到服务器上,比如电影,下载mp3,游戏读下来的数据,游戏更新不及时产生的游戏更新问题等等,而我刚好遇到了一个关于游戏造成的回写问题。

下载 (144.23 KB)
2010-5-27 21:49


这就是我网吧的留言板,有个顾客在我网吧玩了好久终于忍不住留言了,他说:

帮忙下一下(勇士OL)谢谢,要么每天来都要花30分钟下载这个游戏,谢谢了!

我看到这个留言后说实话,感觉是有点晕的,因为我到这个游戏的官方网站看了下,这个游戏安装包是729MB,安装完成后2308MB,在这个过程中,下载这个过程就是纯回写,而安装这个过程就是读取+写入的,因为安装包就是回写的数据,当安装包解压时,肯定是要把之前写入的数据再拿回来用,所以这组可以证明我们之前说的,无盘的回写中,是读写并存的。而这只是这一个顾客因为没有这个游戏就要产生3037MB的回写,从留言上来看,他一个人每天就可以产生这么多回写,如果再往细了说,安装包肯定不是最新版本,安装完了还要自动更新一下,产生一定的回写,下载安装过程太慢,他再看看电影,下下mp3,那就真有的搞了,所以说,对于无盘网吧你可千万把游戏搞多一点,最好把顺网游戏中心的3500G游戏都下载下来,否则太恐怖了!

好了,有点扯偏了,那么通过以上的数据我们可以看出,无盘网吧的回写量确实蛮恐怖的,我不知道大家如何看待这个数据,至少在我没仔细观察过之前,我确实不知道会有这么多回写。现在我们知道产生回写的一些因素,那么我们排除掉这些特别因素之外,还会有哪些回写数据产生呢?带着这个疑问,我又做了一个测试,我测试了一下一些比较热门的游戏,还有xp启动这些网吧必备应用的数据,那么看似不起眼的一些应用,将会产生什么数量级别的回写呢?让我们一起看一组数据!我们的测试环境是这样的:主板P31 内存2G CPU:E2180显卡9600GT。
以下测试均是进入到游戏画面后,为了等待回写完全结束,均等待了5分钟后的回写数据,测试数据如下。
下载 (16.21 KB)
2010-5-27 21:51


从上面的数据我们可以看到,PPlive的回写量名列前茅,启动PPlive只需要读16MB的数据,但是启动好后产生的回写却达到了400多MB,而导致PPlive会产生如此多的回写数据的原因是,它每次启动都会产生一个512MB的缓存文件,所以才会产生这么多的回写,那么虽然PPlive会产生如此多的回写,但是因为他比较占带宽,很多网管都把他给禁止掉了,而且也并不是每位顾客都会去看PPlive,所以对于PPlive的问题我们暂且搁置不多说。那么让我们看下顾客上机必须用到的应用有哪些!

1、XP启动:要上网,系统总是要开机的,通过上面的数据我们会看到,XP启动一次,读取数据209MB,而写入数据却达到了130MB左右,说到这里肯定有同学要说了,你系统做的太烂了,回写竟然这么多,其实对于纯净的XP启动造成的回写确实很少,大概在50MB~80MB左右,但是当你安装好各种软件后,回写量基本可以达到这个级别,不信的话大家自己都可以测试下!
2、QQ2010“在我观察到的情况,几乎99%的顾客在上机后,第一件事肯定是登陆QQ,我们也可以看到QQ2010版本启动后会读取113MB,而回写却有136MB,而且我只是登陆QQ而已,并没再做其他任何操作。
3、结账下机后造成的垃圾回写,我相信绝大多数的网吧,顾客下机后的操作方式一定是,结账后自动重启:

下载 (57.99 KB)
2010-5-27 21:52



(结账下机操作)当我们看到到这里,基本上不需要再看其他的数据了,因为只是XP启动,和QQ这两个顾客上网100%都会用到的操作,就足以产生非常巨大的垃圾回写了!而对于游戏也好,PPlive也好,毕竟不是每个顾客都会去用,实际上我们只要去解决xp启动和QQ的回写,就可以很大程度降低无盘的回写压力了,那让我们看下这些操作一共会产生多少回写。顾客一次完整的上机包含,开机,上QQ,结账下机后客户机自动重启一次,在这一次完整的上机过程中,一台客户机将会产生:开机产生的130MB回写+启动QQ产生的130MB回写+顾客下机后,客户机再次开机产生的回写130MB=396MB。我们之前的测试数据是,所有客户机平均1天的回写量是460G,平均每天的上机次数为169次,那么在这一天只是顾客上机一次的回写就达到396MB*169次≈65G。而在一天中,顾客上机产生的回写量就要占总回写量的14%左右。同时有些无盘网吧的维护人员,或者是有盘刚开始做无盘的技术人员,为了避免少开超级用户,或者习惯了有盘的维护方式,会采取一些开机命令更新,安装软件之类的操作,而这又无意造成了多余的回写!所以说在无盘网吧里,这个结账后的操作一定要设置成关机,同时尽量少使用开机命令以及开机安装软件来减少无盘不必要的回写。


四、硬盘的写入性能分析

那么如此之多的回写数据在过去都是要回写到服务器的硬盘里的,那磁盘在这种应用环境中的性能是怎样的呢?之前我们已经说过,对于无盘的回写盘来说,不只是单纯的写那么简单,还会有一定量的读取数据,比如之前提到的顾客自己下载游戏的例子,顾客下载了一个游戏安装包,这个下载过程就是100%的回写,然后他再安装游戏时,就是读+写的过程,那么这个读取与写入的比例是怎么样的呢?在这种读写比例下,磁盘的写入性能又会是怎样的呢?为了得到这个数据,我用硬盘哨兵对回写盘的读取数据进行了监控,先给大家简单介绍下硬盘哨兵这个软件吧。
下载 (201.75 KB)
2010-5-27 21:55



这个软件可以监控硬盘的温度,以及硬盘的健康状况,比如是否有坏道等问题他都能告诉你,可以说是个非常不错的小工具,推荐大家使用。我用这个软件监视了一下回写盘中,写入后又读取出来的数据量,由于这个软件无法总览数据,所以只能把所有服务器,所有硬盘的数据累加起来再进行统计,一周下来发现总的数据读取量为1351G左右,也就是在所有的回写数据中有1351G的数据又被客户机再次读回来使用,结合我们之前得到的3221G的写的数据,可以得出读和写的比例大概是3:7左右。

那么传统无盘在这种读写比例情况下,就不能只是考虑磁盘的写入性能了,而是考验磁盘同时读写的性能,也就是IOPS(每秒同时输入输出)的性能了,因为对于一块回写盘来说,他不只是要写入数据,写入的过程可能还伴随着其他客户机的读,不过好在的是,如今的无盘技术已经可以很好的缓解这种压力了,因此在今天我们就不再需要去考验IOPS性能,而是只要根据磁盘的写入或读取性能即可评估出回写盘的性能了下面我们一起来看下在无盘中视为“神器”的SAS和其他存储介质的一些测试数据。

参与测试的介质一共有3种,我们一样继续按照写入性能来排序,分别为: 1.5万转的 SAS盘,1万转的迅猛龙硬盘,7200转的SATA硬盘。看到这里可能有些同学会问,为什么这次对比没有SSD硬盘?
因为SSD虽然读取和写入性能都很快,但是因为固态硬盘的写入寿命是累计写入47TB数据就会挂掉了,根据我们之前的数据一周写入3221G数据,一块MLC的固态硬盘最多就能用15周,也就是105天左右,同时还因为固态硬盘的容量比较小,而且造价较高,完全不是适合无盘回写这种环境下使用,所以此次测试没讲SSD列入测试范围。

下载 (30.58 KB)
2010-5-27 22:18



西部数据 150G 迅猛龙
下载 (28.41 KB)
2010-5-27 22:19



普通的西部数据500G硬盘
下载 (28.76 KB)
2010-5-27 22:19



对比数据如下:
下载 (10.78 KB)
2010-5-27 22:20



下载 (11.37 KB)
2010-5-27 22:21



看到这里估计大家会有疑问,为什么同样是机械硬盘,随机写入速度会被随机读取速度快?其实这个答案很简单,因为磁盘是有写入缓存的,但是并没有读取缓存,所谓的磁盘写缓存就是我们平时买硬盘时提到的16M,32M,或64M缓存的硬盘,而这个缓存就是为提升磁盘的写性能而提供的,因此磁盘的随机写入速度会高过磁盘的随机读取速度,但实际上并不是缓存越大就越好,因为对于硬盘的回写缓存来说,一样存在着算法的问题,如果算法不够好,缓存越大,可能速度越慢!同时通过设备管理器->磁盘驱动器右键我们可以看到写缓存的存在,如下图:

下载 (16.44 KB)
2010-5-27 22:21



当你将“启用磁盘上的写缓存”的勾取消掉之后,随机速度就会与随机写速度一样了,这里就不多说了,大家只需要做个了解就好了。

因为之前我们得出一个结论,那就是回写盘上的的工作环境不只是100%单纯的写,而是读写比例为3:7的情况,那么回写盘在这种读写比例的时候,数据的读写一定是随机的,而不是连续的,因为即便单台客户机是连续写入,当多台客户机同时写入时,也就变成了随机写入。那么几种硬盘在随机比例为3:7的情况下,性能是怎样的呢?让我们再来看一组测试数据。

这个测试我是用iometer进行测试的,因为只有这款软件才能按读写比例进行速度测试,测试条件为100%随机状态下,30%的读取,70%的写入,测试截图如下:

15000转 SAS硬盘。
下载 (24.24 KB)
2010-5-27 22:22



10000转迅猛龙硬盘
下载 (28.46 KB)
2010-5-27 22:23



7200转SATA硬盘
下载 (24.3 KB)
2010-5-27 22:23



为了方便我们对比,我把以上数据做成了图表。

下载 (11.5 KB)
2010-5-27 22:24



下载 (10.07 KB)
2010-5-27 22:25



综上,100%的完全随机写入速度都是比较快的,但是只要加入一定量的随机写读取,那么硬盘的写入性能就会下降,无论是15000转的SAS盘和10000转的硬盘速度相差还是比较大的,如果为无盘选择回写盘,如果只根据性能来选择肯定是首选SAS,其次迅猛龙,除非非常小的网吧才能选择SATA盘了。

那么Raid是否对回写有帮助呢?让我们看一组简单的数据:
迅猛龙单盘随机写入:
下载 (28.41 KB)
2010-5-27 22:25



3块迅猛龙组Raid0随机写入:
下载 (34.06 KB)
2010-5-27 22:26



Iometer单盘100%随机写入:
下载 (23.21 KB)
2010-5-27 22:27



Iometer 3块迅猛龙组Raid0随机写入:
下载 (28.94 KB)
2010-5-27 22:27



30%读,70%写,单块迅猛龙:
下载 (28.46 KB)
2010-5-27 22:28



30%读,70%写,3块迅猛龙组Raid0
下载 (28.56 KB)
2010-5-27 22:29



速度对比如下:
下载 (9.36 KB)
2010-5-27 22:30



IOPS对比如下
下载 (11.23 KB)
2010-5-27 22:30



从上图我们可以得出一个结论,那就是Raid对于回写盘来说有一定的价值,同时又因为传统无盘只支持一个设置一个回写分区,因此在传统无盘上无盘的回写大家都会去做Raid,但现在已经越来越多的无盘厂商开始支持一种分盘回写的一种模式,比如100台机器,有3块回写盘,那就是1-30号机器用A盘,31-60号用B盘,61-100用C盘。其实大家都来支持分盘回写一定是有原因的,而这个原因从测试数据中我们就可以得出。
以例子中的迅猛龙硬盘来说,1块盘的随机写入速度为9MB/S,那么如果组了Raid后,你会发现他的随机写入速度仍然只有13MB/S,那么如果我们3块单盘,使用分盘回写的方式,这三块盘的回写负载能力将为9MB/S*3=27MB/S,而如果组成Raid就只有13MB/S,将近损失了50%多的性能,所以对于无盘来说,我们一样不建议大家组Raid,同时不组Raid还有以下好处:
1、性能提升,随之而来的就是带机量提升。
2、如果一块回写盘盘坏了,不至于所有机器都无法使用。
3、扩容变的简单,压力大了,大不了加一块硬盘上去就搞定了。
4、设备更换简单,组Raid必须为磁盘型号,大小,速度一样才行,而分盘负载不存在这种要求。
5、成本下降,不组Raid时,阵列卡不需要了,即便普通SATA接口万转硬盘即可胜任,不一定非要用SAS盘了。


五、如何解决无盘的回写压力

那么从文章开始到现在,我们已经取得了很多非常有用的数据,那现在让我们来总结下根据这些数据我们都可以得出哪些结论:
在测试的一周中,所有客户机平均每天的回写量约为460G,通过计费软件显示,每天上机时间为759小时,那么此时我们就可以得出:  
每客户机每秒向服务器写入数据的平均速度为(460G*1024*1024)/(759H*3600)=177KB/S,但是因为是在无任何缓存情况下进行测试的,为了避免回写速度突发,导致卡机问题,因此我们需要为回写盘预留三倍性能余量,也就是177 *3=531KB/S。

接下来让我们算下回写盘的负载能力大概是怎样的。

一块SAS盘的极限带机量约为:11*1024/177=64台,预留三倍性能余量后可带机64/3=21台,三块回写盘大概带机63。
一块迅猛龙硬盘的极限带机量约为:9*1024/177=52台,预留三倍性能余量后可带机52/3=17台,三块回写盘大概带机54台。
一块SATA硬盘的极限带机量约为:6*1024/177=35台,预留三倍性能余量后可带机35/3=11台,三块回写盘盘可带机35台。

以SAS盘为例,在客户机和服务器都没缓存的情况下,1块盘只能带机21台,那么如果100台机器就需要5块硬盘,200台机器就需要10块回写盘,当机器台数达到500台时,就需要100块回写盘才能搞定,这实在是太夸张了,平均1台服务器放4块回写盘,按照这种负载能力,我们将需要25台服务器才能搞定……且不说投资问题,就连管理也是给非常麻烦的事,那对于现在的硬盘用将采取什么样的技术方案来解决无盘的回写问题呢?

结论就是本地回写缓存!

先来了解下本地回写缓存的概念:所谓本地回写缓存,就是将客户机物理内存拿出一部分做客户机的“回写盘”,而这部分缓存只能作为回写用,客户机是无法使用这部分缓存来做其他事的,因此我们在设置本地回写缓存后会看到一个现象,比如你是2G内存,设置了512M的本地回写缓存,那么系统开机后的内存占用就变成了系统自身的内存占用量+512MB的样子。

我们既然说本地回写缓存可以有效解决无盘的回写问题,让我们来看下本地回写缓存到底能解决哪些问题?
1、XP启动的回写可以消灭。
2、启动QQ的回写可以消灭。
3、玩一些游戏时,基本在玩1-3个小时都不会向服务器产生或写。
4、无盘的回写基本不再需要考虑突发导致的卡机。

如果本地回写缓存再有一些好的算法的话,还可以继续优化回写的问题,那么我们架设本地回写缓存没有任何算法时,可以解决多大的问题。
接下来让我们按照之前的一个公式来计算下客户机回写缓存的作用,目前市面上一些新的无盘支持的回写缓存大概为32MB~1.5G左右,让我们看下这些本地缓存能解决多大的问题:
以我们的测试环境为例,这个60台机器的网吧,每天回写数据为460G左右,平均上机人次在169次左右,平均上机时间759小时,我们假设这些缓存全部用完的情况下,可有效减少回写量多少G,计算公式为:
例如:
512M的本地回写缓存可减少回写多少G
上机次数169次*本地回写缓存大小512M*1024=85G
有了512M缓存时,客户机的回写量G
平均一天的回写量460G-缓存可减少的回写量85G=375G
求出平均回写速度,因为客户机有了缓存,所以可以排除突发速度造成的影响。
512M缓存的回写量375G/(上机时间759*3600)=144KB/S
得出结果。
SAS回写盘3:7比例的随机读取速度9MB/S*1024/144KB/S=单块SAS盘带机64台。


客户机内存容量与回写盘“单盘”带机量

客户机内存

SAS

迅猛龙

SATA

1GB

60台

50台

30台

2GB

70台

60台

40台

3GB

100台

80台

50台

4GB

140台

110台

70台



那么在与回写460G的数据相比之下,如果你的本地回写缓存达到1G以上,那么服务器压力就已经变的非常小了,如果客户机可以有1.5G的本地回写缓存,无盘服务器将会出现0回写!当达到0回写时就意味着,无盘上的回写问题已经不复存在,即便是有,我们也可以忽略不计了,因为造成这么多回写的人一定是看电影或者下载软件的人,那么我们完全可以通过路由对客户机限速,来解决他们短时间造成大量回写的问题!

我想到这里结论已经变的非常简单了!

对于无盘来说,解决回写问题的方法不再是服务器加大内存,因为即便你服务器加到32G内存,60台客户机的话,平均每台客户机最多就分到600MB,而32G,按照我们的计算方式,600MB可减少回写600*169/1024=99G的回写,而相对每日460G的回写量,仍然是杯水车薪,而一个60台机器的网吧,就让老板投资一台32G内存的服务器来解决无盘的回写问题,性价比差距就太大了,如果是把钱投资在客户机内存上,现在DDR 800 2G内存也就320块,买60条加上造价也就1.9W,而一个32G的的服务器也基本这个价格了,但是如果这个钱花在客户机上将会是什么样?

1、服务器投资下降,百台客户机6k上下的服务器就可轻松搞定。
2、如果客户机内存4G内存,服务器回写盘全部普通sata硬盘即可,只要网卡不成为瓶颈,理论上带多少机器都行。
3、游戏游戏虚拟盘缓存方案,本地客户机缓存方案,那么客户机的速度基本就等同于网络的最大传输极限速度,让无盘网吧的卡机现象彻底消失。


五、选择合适的服务器:

当我们了解了本地回写缓存的作用后,其实对于服务器的回写配置已经变的非常简单,因为过去的硬件环境比较差,几乎所有的压力都要由服务器来承担,那么现在客户机环境逐渐转好了,其实客户机已经可以分配很大的服务器压力,所以服务器配置也不再像过去一样2w多块的服务器只能带100多台机器。

不过这里和大家要说的是,即便是服务器带机量上升,也不推荐大家用一台服务器带太多机器,单服务器带机控制在120~160这个范围就已经很高了。如果你非要用一台服务器带个2,3百台机器,估计网吧老板也不会允许的,因为这个太恐怖了,毕竟那么多机器的硬盘钱都剩下了,多投入个1,2台服务器不再是问题,而我们作为维护人员,更不应该去拼带机数是怎样的,因为我们要解决的问题很简单,让客户机稳定运行,让网吧游戏多一点,然顾客坐下来就可以玩到自己喜欢的游戏,而且玩的很流畅就可以了!

因此对于无盘来说,我们只需要一种服务器配置就够了,而这台服务器4G内存情况下可带机120左右,如果服务器内存加到8G,根据我个人经验最高单台可带机到180左右,但是再高的话网络就顶不劳了,所以基本上这一种配置就可以搞定全部了!

60台左右机器的网吧。
主板:Intel S3200SH(1150左右)
内存:4G DD2 8G(660左右)
CPU:E5300(410左右)
硬盘:SATA 500G 7200转 *1(330左右)
回写盘:迅猛龙 150G 10000转 *3(2850左右)
机箱电源:500(左右)
总价:5900左右

另外大家可能会奇怪,为什么这套配置里没有游戏盘,因为之前我们就说过了,无盘最擅长的肯定是解决无盘网吧的系统和回写,而游戏用虚拟盘来解决就可以了,而这就是本方案的最大亮点!

方案写到这里,基本上就要暂时告于段落了,那么再最后我还是要和大家说的一句话说,有盘也好,无盘也好,只要你用的好,那就都好,如果用不好谁都不好,而对于选择什么完全是网吧老板自己的想法,而我们的技术最终都是要为了网吧经营而服务的,如何通过技术来满足网吧顾客的需求,才是我们真正需要追求的,方案讲到这里后,我相信技术能为网吧提供的一些东西就都已经讲完了,因为你会发现,无论是系统,还是游戏我们都已经有了接近较为完美的解决方案。

最后感谢大家对这篇帖子的支持,也正因为有大家的支持才得以让这篇文章继续下来,虽然持续了很久,但最终还是写完了,而今天,我宣布,终极虚拟盘方案到今天正式连载完成!谢谢大家的支持!
衷心的祝愿天下网吧的生意能越来越红火,谢谢!
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 29041 个
  • 话题数: 9629 篇
  • 巅峰数: 5500 人