租号玩代理申请
A-A+

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇(让你深刻理解硬盘原理和性能)。

2020年11月22日 问题教程 暂无评论 阅读 222 次

上次我们说到了第4到6篇,点击查看:最具有权威性的虚拟盘终极教程连载(共9篇)—-第4到6篇(让你深刻理解硬盘原理和性能)

第七篇:<虚拟盘的负载能力:上篇>

虚拟盘的速度实测

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

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

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

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

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

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

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

网吧中的真实负载情况

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

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

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

传统的虚拟盘的负载能力

根据上述的一个网吧用户平均读取流量,我们就可以评估一下,传统的虚拟盘的负载能力.
我们考虑一个简单的模型,假设这个传统的虚拟盘服务器,只有一个希捷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游戏之外,大部分游戏需要读取的数据都非常的小.在实际游戏过程中也是一样的,除了切换地图,绝大多数的时间,游戏基本都不读什么数据的.

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

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

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

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

喜欢这篇文章的同学,我们已经在论坛成立了网维知识库,对于大家在这篇文章中不解的部分又一次做了详细说明,欢迎大家浏览知识库,更加相信的了解每个细节:http://bbs.icafe8.com/forum-107-1.html

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

我本人从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进行测试,结果如下:

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

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

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

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

(图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分析成图表如下:

(图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
这段视频展示了我们在删除,复制粘贴,快速格式化时,磁头的相应工作情况,印象最深的是磁头疯狂摆动的样子.

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

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

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

扇区

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

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

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

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

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

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

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

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

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

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

(图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%的顺序读取很罕见,多半都是部分是顺序的,部分是随机的,只要有少量的随机读取的比例,磁盘的性能就会急速的衰减.

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

(图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做了以下的对比测试:

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

(图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硬盘究竟有多快,

先看看顺序读取的情况:

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

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

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

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

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

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

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

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

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

顺序读取:

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

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

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

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

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

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

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

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

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

接下来看看SAS 硬盘的情况

全顺序读取:

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

25%的随机数据读取:

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

50%的随机数据读取:

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

100%的随机数据读取:

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

整理成图表:

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

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

讲完了硬盘,下一节,我们来看看虚拟盘的性能.
(未完待续)
第六篇:<虚拟盘的性能分析>

虚拟盘:

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

首先来说说网络,典型的千兆网络,使用超5类网线传输,经过我们测试,其实延迟是非常之低的,看看这个测试图:

(图8:交换机性能测试)

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

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

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

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

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

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

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

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

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

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

 回答一些朋友的问题
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楼的朋友说:这个方案感觉不怎么对劲
我的回答:希望您能告诉我哪里不对劲,我赶紧再改改.

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

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

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

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

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

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

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

 网吧中的真实负载情况

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

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

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

 传统的虚拟盘的负载能力

根据上述的一个网吧用户平均读取流量,我们就可以评估一下,传统的虚拟盘的负载能力.
我们考虑一个简单的模型,假设这个传统的虚拟盘服务器,只有一个希捷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里.

内容分级存储的典型应用

来看看上次网吧流量测试当中的服务器截图.

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

这就是非常典型的内容分级存储的案例.
服务器内存共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台机器.
这个服务器有2个SATA硬盘,,那么就能负荷36台.
这2个硬盘负荷的数据量为总数据量的7%,那么该服务器的负荷能力为36/0.07=517台!
就是说,当客户机达到517台时,2个SATA硬盘的负荷能力达到极限.
这还是留了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的流量,2个SATA硬盘平分流量,刚好是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硬盘的钱换成内存吧!1个300G的SAS硬盘要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.
服务器安装了16根4G一条的FBD内存,看以下截图:

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

志强E5405的CPU,64G内存,win2003 sp2(32位)版本

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

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

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

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

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

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

第四天:

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

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

第六天

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

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

第十天:

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

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

最具有权威性的虚拟盘终极教程连载(共11篇)----第7到9篇

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

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

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

(未完待续)

点击查看下一篇:最具有权威性的虚拟盘终极教程连载(共11篇)—-第10到11篇(让你深刻理解硬盘原理和性能)

京东空调大促销