首先,希望楼主能够明确一个名词,这就是 I/O
硬件的I/O性能和硬件的处理速度直接相关.当然.硬盘有硬盘的I/O,网卡有网卡的I/O.raid卡也有raid卡的 I/O,甚至主板南北桥之间的通讯也有最大I/O。
当然,如果在这个硬件平带上有了操作系统。那这些又会和操作系统有关。
我想你问了那么多问题。就是因为把这些概念搅在了一起。才会让自己那么迷惑。
首先我要回答你的就是:raid对于提高磁盘系统的读写性能的效果是显而易见的。但是专业的raid卡一般只应用在服务器领域,价格昂贵。并且,raid有多种工作模式。常见的有raid0,raid1,服务器领域多用raid5,还有raid6。他们绝大部分的工作模式是会提高磁盘系统的I/O性能的。因此你可以简单理解为,raid卡会让所有硬盘并行运行,性能当然会有所提高,具体的知识,建议你单独去baidu一下。
下面我们来说硬盘的I/O,一块硬盘的I/O在出厂的时候就已经定死了。除非它坏了。不然它始终会是这种性能。无论是以前的IDE接口的硬盘,也就说排线的那种接口,还是串口SATA的硬盘。他们都是并联在了主板上的。它们是互相独立工作的。控制他们的芯片叫做南桥芯片。有些主办带raid功能就是在南桥芯片下再挂一块简单的raid控制芯片。他们虽然是并联。但是他们并不能像raid卡下面的磁盘阵列当中的磁盘一样协同工作。请注意我说的协同的意思。也就是说。他们顶多各干各的活。而不能同时去干一个活。
然后就是操作系统和磁盘系统之间的问题了。
简单来说就是读写的问题。但是当在高并发下,这个问题就变的不那么简单了。尤其是当硬件性能跟不上系统的要求的时候。这个问题在高端工作站和服务器领域有着昂贵的解决方法。一个是升级硬盘,换成SCISI硬盘或者是SAS硬盘。这一类硬盘的转速极高,在1万转到1.5万转之间,而普通硬盘只有7千多转。另一个就是使用raid卡。让高转速的硬盘并行协同工作。这样的话性能提升最为明显。再一个就是读写分离技术了。有读写分离卡,这个东西一般在网吧服务器上用的比较多,也是需要SCISI硬盘的。
下面我们就着你的问题来看看吧:
1,对的,因为raid卡可以让多硬盘协同工作。但需要有像对应的工作模式。
2,这是一个架构的问题,而不是raid的问题。因为raid本身就是一个整体。而另一种是两块硬盘独立工作。一个提供给操作系统使用,一个提供给大型程序使用。这两种在架构上就不同。除非你搭出来2套raid系统才具有可比性。
3,这里牵扯到多个I/O。首先,你这110的I/O是从哪来的呢?就让我们假设你是从局域网拷贝过来的,并且此时网卡和网络不会成为瓶颈限制,而且我们还要假设你至少分别在一块硬盘上进行了一个拷贝操作。此时110这个速度指的是你网卡的速度,而不是硬盘的速度,以为硬盘的速度还是一个50,一个60,这个怎么能简单的相加呢?作为多线程的操作系统来说。操作系统是可以同时往两块硬盘里面各写各的数据。而且他们肯定不会互相影响的。
而如果是系统内部,硬盘A与硬盘B之间互相拷贝。那速度就不是110,而是50了。因为一个当两个设备互相通讯时,他们传输速度就是速度最慢的那个。
4,我想在3问题中我已经回答了4问题的原理。
5,简直混淆得厉害。操作系统知道要优先用你那块硬盘读写数据吗? 这两块硬盘的负荷肯定是由你来指定的,看你各自往里面装了什么程序了。以我的经验来说。只要让操作系统独立占用一块硬盘。操作系统的速度首先是可以保证的。其它的大规模读写你可以放到另一块硬盘上。或者放到一个与系统硬盘互相独立的raid系统下。后者一般在服务器领域较为常用。最后,希望你再次明确。raid系统的I/O性能只会比单个磁盘要强。不会比单个磁盘弱。至于用了raid而系统卡,那是你的架构问题。
TO:jkr001
非常感谢您如此详细的答案,我想可能我确实没有表达清楚,导致大家对我的意思有一定误解.首先我这个问题就是单纯的对raid0和直接挂接双硬盘进行比较.我实际上想确定的问题就是"raid0状态下两个硬盘是协同工作的,所以在处理一个任务的时候可能会因为两个硬盘都满载而影响其他程序的运行和响应.而挂接硬盘是两个独立工作,硬盘负载也是跟据实际使用的盘符而定的,单一程序最多只能让运行这个程序的硬盘满载而不会影响到另外一个,所以也不会影响另外一个硬盘的程序运行响应(当然,我指的都是单纯的外部写入或者其中一个硬盘内部运行程序,不涉及到两个硬盘之间互相读写)."
我并不是要说raid的性能问题,我知道raid情况下肯定比独立硬盘好,我所想得到的效果是通过直接挂接,让两个独立的硬盘将硬盘的负载绝对分离.好比说我将系统安装在A硬盘,某大型程序安装在B硬盘,在运行程序的时候B硬盘满载,但是我的系统不会因为B满载了而变卡变慢,类似于双核处理器运行单线程程序时只会50%负载的情况一样.(当然,排除程序需要同时调用两个硬盘上面的数据,且让AB均满载的情况,另外也忽略其他硬件的性能情况).不知道我现在表达清楚没有.
通过您的答案我想我大概能总结出我所想要的:
1,这个没问题.
2,这个我并不是对性能进行对比,我就是想确认raid0和直接挂接两种方式下前者性能高,后者能够有效把读写负荷控制在其中一个硬盘上.即使那个硬盘达到最大负荷也不会去协同调用另外一个硬盘.我想您的第5点说明是对我这个问题的肯定答案吧?
3,是我没表述清楚,特指同时外部写入且所有硬件均不成为瓶颈的情况下.我想要的结论是,挂接的两个硬盘不会因为同时挂接在一台计算机上而造成任意硬盘性能降低,就比方说从盘实际性能只能到标称值的80%或者两个硬盘都只能到标称值的80%之类的情况.我想您的答案是告诉我"不会"?
4,这个问题现在想想我可能确实问得比较傻了,负荷依据程序运行的实际涉及到的硬盘读写而定,若绝对只读写一个硬盘则只会满负荷该硬盘,若涉及到两个硬盘相互读写,则跟据实际所需读写的硬盘数据量来决定两个各自的负荷大小.两个硬盘相互读写情况下,最大吞吐量以性能弱的硬盘为准.
5,直接挂接双硬盘,没有什么要注意的,sata接口直接插入到sata1和sata2即可.不会造成单个硬盘性能降低,系统和常驻程序放在硬盘A,临时运行的大型程序放在硬盘B,相对raid0而言,能够在使用大型程序的同时仍然让系统保持高速响应(假设该大型程序一定能让硬盘满载且其他硬件不存在性能瓶颈).当然,raid0虽然会因为两个盘同时满载而导致系统变卡,但是运行该大型程序的效率却会是直接挂接的两倍(实际使用肯定还是要看各种情况,只是简单地这样理解).
这些就是我通过您的答案总结出来的结论,如有什么理解错误麻烦您能够指正啊!万分感谢!
PS:恬着脸想顺便想再多请教您一个问题,您提到使用ICHR的芯片不能达到raid卡那种真正意义上的协同工作,就是说ICHR的raid和raid卡的raid性质不一样?(绕口...)但是我所看到的测试中前者和后者性能区别不大甚至后者不如前者啊,仅仅感觉raid卡的优势是在低系统占用率上面.(此问确实超出了我问题的讨论范围,您不愿意回答也罢,呵呵.)
你还是以RAID不是太懂,看过下面的内容你的问题也就迎刃而解了。
http://baike.baidu.com/view/7102.htm
RAID 0:无差错控制的带区组
要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。因为将数据分布在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的数据在不同的驱动器上效率最好。它不需要计算校验码,实现容易。它的缺点是它没有数据差错控制,如果一个驱动器中的数据发生错误,即使其它盘上的数据正确也无济于事了。不应该将它用于对数据稳定性要求高的场合。如果用户进行图象(包括动画)编辑和其它要求传输比较大的场合使用RAID0比较合适。同时,RAID可以提高数据传输速率,比如所需读取的文件分布在两个硬盘上,这两个硬盘可以同时读取。那么原来读取同样文件的时间被缩短为1/2。在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用
RAID 1:镜象结构
对于使用这种RAID1结构的设备来说,RAID控制器必须能够同时对两个盘进行读操作和对两个镜象盘进行写操作。通过下面的结构图您也可以看到必须有两个驱动器。因为是镜象结构在一组盘出现问题时,可以使用镜象,提高系统的容错能力。它比较容易设计和实现。每读一次盘只能读出一块数据,也就是说数据块传送速率与单独的盘的读取速率相同。因为RAID1的校验十分完备,因此对系统的处理能力有很大的影响,通常的RAID功能由软件实现,而这样的实现方法在服务器负载比较重的时候会大大影响服务器效率。当您的系统需要极高的可靠性时,如进行数据统计,那么使用RAID1比较合适。而且RAID1技术支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一个备份盘,可想而知,这种硬盘模式的安全性是非常高的,RAID 1的数据安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%,是所有RAID级别中最低的。
菜鸟还是让我来教你怎么搭建磁盘阵列吧:
第一步
1备份好硬盘中的数据
2准备好一张带Fdisk与Format命令的Windows 98启动盘[软盘或者带启动的98安装盘都行]
第二步
将两块硬盘的跳线设置为Master,分别接上IDE3、IDE4口(它们由主板上的HighPoint370芯片控制)顺序不考虑
第三步
对BIOS进行设置,打开ATA RAID CONTROLLER。我的板子是进入INTEGRATED PERIPHERALS选项并开启ATA100 RAID IDE CONTROLLER 最后设置软驱或光驱作为首选项。
第四步
接下来的设置步骤是创建RAID 0的核心内容。
1.系统BIOS设置完成以后重启电脑,开机检测时将不会再报告发现硬盘。
2.磁盘的管理将由HighPoint 370芯片接管。
3.下面是非常关键的HighPoint 370 BIOS设置,在HighPoint 370磁盘扫描界面同时按下“Ctrl”和“H”。
4.进入HighPoint 370 BIOS设置界面后第一个要做的工作就是选择“Create RAID”创建RAID。
5.在“Array Mode(阵列模式)”中进行RAID模式选择,这里能够看到RAID 0、RAID 1、RAID 0+1和Span的选项 选择RAID 0项。
6.RAID模式选择完成会自动退出到上一级菜单进行“Disk Drives(磁盘驱动器)”选择 直接回车就行了。
7.下一项设置是条带单位大小,缺省值为64kB不用修改
8.接着是“Start Create(开始创建)”的选项,在你按下“Y”之前,确认硬盘数据是不是备份好了 一旦开始创建RAID,硬盘上的所有数据都会被清除。
9.创建完成以后是指定BOOT启动盘,任选一个吧。
按“Esc”键退出,当然少不了按下“Y”来确认一下。
第五步
再次重启电脑以后,看到“Striping(RAID 0)for Array #0”字样了。这时候两块硬盘就被做成列阵了 就象对一块盘格式化一样 插入启动盘来格式化和分区
第六步
对于采用RAID的电脑,操作系统的安装和普通情况下不一样, Windows XP完成第一步“文件复制”重启以后,安装程序会以英文提示“按下F6安装SCSI设备或RAID磁盘”,这时候就要按下F6 出现安装选择,选择“S”安装RAID控制芯片驱动 按下“S”键会提示插入RAID芯片驱动盘。回车,安装程序自动搜索驱动盘上的程序,选择“WinXP”那一个并回车。
接下来是正常的系统安装,和普通安装没有任何区别。
安装完毕 进入系统 RAID 0 就安装好了
懂吗?
首先你的理解有点偏差,因为你说这种RAID只是其中一种,RAID分为好几种,比如RAID0 RAID1 RAID3 RAID5等,就拿RAID0来说吧,你说的应该是这种。还有其他的,只是看组建RAID你想要什么样的作用,有点只是为了保护数据,也就是要大容错性,比如你用了三个硬盘,A/B/C,在你装系统的时候,A盘是只存校验数据的,B盘和C盘类似RAID0共同组成一个完整的系统,如果B和C其中一个坏了,换一个硬盘,就可以根据A盘中的校验数据在这个硬盘上重新建立原来坏掉的盘上的数据。
而RAID0模式,如果其中一个盘坏了,只有借用相应工具或者只能重装系统了。
还有其他的一些RAID模式,在这里就不一一解说了,可以找相关网站查阅。