关于硬盘和几种RAID
1 硬盘的基本工作原理
1.1 硬盘部件结构图
1.2 主要参数术语解释
磁头:在与硬盘交换数据的过程 中,读操作远远快于写操作,硬盘厂商开发一种读/写分离磁头。
转速(Rotationl Speed):是硬盘内电机主轴的旋转速度,也就是硬盘盘片在一分钟内所能完成的最大转数。硬盘的转速越快,硬盘寻找文件的速度也就越快,相对的硬盘的传输速度也就得到了提高。 目前市场上常见的硬盘转速一般有5400rpm、7200rpm、10000rpm、15000rpm。理论上,转速越快越好。因为较高的转速可缩短硬盘的平均寻道时间和实际读写时间。可是转速越快发热量越大,不利于散热。现在的主流硬盘转速一般为7200rpm以上。至于SCSI硬盘的主轴转速可达一般为7200-10000RPM,而最高转速的SCSI硬盘转速高达15000RPM。
单碟容量: 是硬盘相当重要的参数之一,一定程度上决定着硬盘的档次高低。硬盘是由多个存储碟片组合而成的,而单碟容量就是一个存储碟所能存储的最大数据量。
盘片数: 盘片是硬盘中承载数据存储的介质,硬盘是由多个盘片叠加在一起,互相之间由垫圈隔开。一个硬盘的盘片数越多,厚度越大,发热也越大。
随机寻道时间(单位:毫秒): 转速的不同,性能差别直接反映在随机读取/写入寻道时间这个性能上。随机寻道性能这个参数的数值是越低越好,也是日常硬盘应用在速度上最能直接体验的一个性能。
平均寻道时间(Average seek time):指硬盘在盘面上移动读写头至指定磁道寻找相应目标数据所用的时间,它描述硬盘读取数据的能力,单位为毫秒。当单碟片容量增大时,磁头的寻道动作和移动距离减少,从而使平均寻道时间减少,加快硬盘速度。
数据缓存:指在硬盘内部的高速存储器,在电脑中就像一块缓冲器一样将一些数据暂时性的保存起来以供读取和再读取。早期的硬盘的高速缓存一般为512KB-2MB,目前主流SATA硬盘的数据缓存为32MB。
道至道时间(single track seek):指磁头从一磁道转移至另一磁道的时间,单位为毫秒(ms)。
全程访问时间(max full seek):指磁头开始移动直到最后找到所需要的数据块所用的全部时间,单位为毫秒(ms)。
连续无故障时间(MTBF):指硬盘从开始运行到出现故障的最长时间。一般硬盘的MTBF至少在30000或40000小时。
1.3 硬盘的种类和优缺点
按硬盘发展的时间先后顺序分别是:
1.3.1 IDE硬盘
IDE(Integrated Drive Electronics)是指把控制器与盘体集成在一起的硬盘驱动器,是硬盘的传输接口, 另一个名称叫做ATA(Advanced Technology Attachment),指的是相同的东西,采用并行多路复用技术(PATA)。
一般使用16-bit数据总线, 每次总线处理时传送2个字节,一般是100Mbytes/sec带宽,数据总线必须锁定在50MHz。普通的IDE硬盘转速在5400/7200RPM。传输速率止步在133MB/s左右。由于并行技术的限制而逐渐被淘汰。
1.3.2 SATA硬盘
SATA(Serial ATA)口的硬盘又叫串口硬盘. SATA以它串行的数据发送方式得名。在数据传输的过程中,数据线和信号线独立使用,并且传输的时钟频率保持独立,因此同以往的PATA相比,SATA的传输速率可以达到并行的30倍。
早期SATA-1能达到150MB/s,后期的SATA-2标准能达到300MB/s,而第三代的SATA-3协议标准传输速率可以到达600M/s,转速在7200RPM。
SATA硬盘支持热插拔,但硬盘损坏时,并不能显示具体的坏盘,导致热插拔技术意义不大,在单线程或者少量线程工作时,性能已经非常的好,但在多任务或者大数据量传输时,性能急剧下降,原因是机械底盘比较低下。
1.3.3 SCSI硬盘
SCSI英文全称:Small Computer System Interface,是一种专门为小型计算机系统设计的存储单元接口模式,SCSI计算机可以发送命令到一个SCSI设备,磁盘可以移动驱动臂定位磁头,在磁盘介质和缓存中传递数据,整个过程在后台执行。这样可以同时发送多个命令同时操作,适合大负载的I/O应用。在磁盘阵列上的整体性能也大大高于基于ATA硬盘的阵列。
主流SCSI硬盘都采用了Ultra 320 SCSI接口,能提供320MB/s的接口传输速度,平均寻道时间为4-5ms,CPU占用率低、并行处理能力强,可以异步的方式处理传输数据,普通的SCSI硬盘转速在10000/15000RPM,但是价格昂贵。
1.3.3 SAS硬盘
SAS(Serial Attached SCSI)即串行连接SCSI,是新一代的SCSI技术。和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短链接线改善内部空间等。SAS 也是对SCSI技术的一项变革性发展SAS 也是对SCSI技术的一项变革性发展。
传输速率支持600MB/s,每个SAS端口提供3Gb带宽,传输能力与4Gb光纤相差无几,足够和FC硬盘媲美,不仅可以连接SCSI硬盘,还兼容SATA硬盘,平均寻到时间为3-4ms,但是价格太贵,比起同容量的Ultra 320 SCSI硬盘,SAS硬盘要贵了一倍还多,但造价也很昂贵,如果组RAID,还需要买SAS卡。
1.3.4 FC硬盘
FC(Fibre Channel)通常人们认为它是系统与系统或者系统与子系统之间的互连架构,它以点对点(或是交换)的配置方式在系统之间采用了光缆连接。(硬盘本身是不具备FC接口的, 插硬盘的机柜上带有FC接口, 通过光纤与光纤交换机互联)。
传输速率可以达到200MB/s-400MB/s,平均寻到时间为3ms左右,高性能传输、稳定性极好,但是价格极其昂贵,除了极高端企业级应用,基本没有市场,SAS的兴起也给FC带来非常大的压力。
1.3.5 SSD硬盘
固态硬盘(Solid State Disk或Solid State Drive),也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的硬盘。
抗震性极佳,芯片的工作温度范围很宽(-40~85℃)。成本很高。
SSD有两种:
(1)基于闪存的固态硬盘(IDE FLASH DISK、Serial ATA Flash Disk):这种SSD可以移动,而且数据保护不受电源控制,能适应于各种环境,但是使用年限不高,适合于个人用户使用。
(2)基于DRAM的固态硬盘:它仿效传统硬盘的设计、可被绝大部分操作系统的文件系统进行卷设置和管理,并提供FC接口和PCI接口,应用方式可分为SSD硬盘和SSD硬盘阵列两种。
2 RAID
上面介绍了一些关于硬盘的东西,都是网上翻出来的。在实际应用中,对于我们的程序的性能影响最大的也就是网络和磁盘IO了,因为现在CPU的速度已经很快了,内存IO速度也已经达到了非常快的地步了(差不多应该有5G每秒),但是我们的数据都存储在磁盘上,程序的运行需要不断的读取数据、存储数据,因为磁盘的性能是影响最大的因素之一(先不说网络)。
现代磁盘的缺陷就是:I/O性能极差,稳定性极差。我们这里只讨论关于定性方面的东西,至于性能,肯舍得花钱,就去买贵的。涉及到稳定性,如果一个硬盘发生了故障或者损坏,那么这块硬盘就已经不能再使用了,这如果是在对数据保存要求特别高的地方来说,其是不可想象的。正因为如此,就诞生了一种新的技术--RAID。
2.1 RAID概念
独立磁盘冗余数组(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余数组(RAID, Redundant Array of Inexpensive Disks),简称硬盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说, 看起来就像一个单独的硬盘或逻辑存储单元。分为RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50,RAID-60。
评价一种RAID的形式主要靠三个指标,分别是:速度、磁盘使用率、冗余性。
2.2 RAID0
将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。如果一个磁盘(物理)损坏,则所有的数据都会丢失。
2.3 RAID1
两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,另外写入速度有微小的降低。除非拥有相同数据的主磁盘与镜像同时损坏,否则只要一个磁盘正常即可维持运作,可靠性最高。是RAID中单位成本最高的。
2.4 RAID2
RAID 0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分区为独立的比特,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些,可以在数据发生错误的情况下将错误校正,以保证输出的正确。数据传送速率相当高。RAID2最少要三台磁盘驱动器方能运作。需要多个磁盘存放检查及恢复信息,使得RAID2技术实施更复杂。因此在商业环境中很少使用。
2.5 RAID3
带奇偶校验码的并行传送。采用Bit-interleaving(数据交错存储)技术,只能查错不能纠错。主要用于图形(包括动画)等要求吞吐率比较高的场合。对大量的连续数据提供很好的传输率,但对于那些经常需要执行大量写入操作的应用来说,奇偶盘会成为写操作的瓶颈。利用单独的校验盘来保护数据虽然没有镜像的安全性高,但是硬盘利用率得到了很大的提高。需要实现时用户必须要有三个以上的驱动器,写入/读出速率都很高。因为校验位比较少,所以计算时间相对而言比较少。
2.6 RAID4
带奇偶校验码的独立磁盘结构。与RAID3类似,对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。在失败恢复时,它的难度比RAID3大得多,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。主机访问RAID卡应该都是以Block为单位的、读取的时候,RAID3就要访问所有磁盘来拿数据,RAID4只需要访问某个磁盘。考虑到磁盘寻道时间 很长,在大数据量读取的时候,RAID4更容易做并发,因此性能应该好一点。写入的时候,RAID3可以直接算校验值,然后把数据和校验值分别写到磁盘 上,RAID4则需要读取旧数据和旧校验值,用旧数据、旧校验值、新数据算出新校验值,然后写新数据和新校验值。
2.7 RAID5
分布式奇偶校验的独立磁盘结构。使用的是Disk Striping(硬盘分区)技术,是一种储存性能、数据安全和存储成本兼顾的存储解决方案。把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。读出效率很高,写入效率一般,块式的集体访问效率不错。但是对数据传输的并行性解决不好,而且控制器的设计也相当困难。每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。但当掉盘后,运行效率大幅下降。
2.8 RAID6
带有两种分布存储的奇偶校验码的独立磁盘结构。与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。主要用于要求数据绝对不能出错的场合。对控制器的设计变得十分复杂,写入速度也不好,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载。RAID 6必须具备四个以上的磁盘才能生效。RAID 6在硬件磁盘阵列卡的功能中,也是最常见的磁盘阵列等级。
2.9 RAID10/01
RAID 1+0是先映射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。
RAID 0+1则是跟RAID 1+0的程序相反,是先分区再将数据映射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。
性能上,RAID 0+1比RAID 1+0有着更快的读写速度。
可靠性上,当RAID 1+0有一个硬盘受损,其余三个硬盘会继续运作。RAID 0+1 只要有一个硬盘受损,同组RAID 0的另一只硬盘亦会停止运作,只剩下两个硬盘运作,可靠性较低。
2.10 RAID50
RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0,也就是对多组RAID 5彼此构成Stripe访问。由于RAID 50是以RAID 5为基础,而RAID 5至少需要3台硬盘,因此要以多组RAID 5构成RAID 50,至少需要6台硬盘。以RAID 50最小的6台硬盘组态为例,先把6台硬盘分为2组,每组3台构成RAID 5,如此就得到两组RAID 5,然后再把两组RAID 5构成RAID 0。
RAID 50在底层的任一组或多组RAID 5中出现1台硬盘损坏时,仍能维持运作,不过如果任一组RAID 5中出现2台以上硬盘损毁,整组RAID 50就会失效。
RAID 50由于在上层把多组RAID 5构成Stripe,性能比起单纯的RAID 5高,而容量利用率则与RAID 5相同。
2.11 RAID60
RAID 6与RAID 0的组合:先作RAID 6,再作RAID 0。换句话说,就是对两组以上的RAID 6作Stripe访问。RAID 6至少需具备4台硬盘,所以RAID 60的最小需求是8台硬盘。
由于底层是以RAID 6组成,所以RAID 60可以容许任一组RAID 6中损毁最多2台硬盘,而系统仍能维持运作;不过只要底层任一组RAID 6中损毁3台硬盘,整组RAID 60就会失效,当然这种情况的机率相当低。
比起单纯的RAID 6,RAID 60的上层通过结合多组RAID 6构成Stripe访问,因此性能较高。不过使用门槛高,而且容量利用率低是较大的问题。
2.12 磁盘阵列对比
RAID等级 |
需要硬盘数 |
最小容错硬盘数 |
可用容量 |
性能 |
安全性 |
目的 |
应用产业 |
0 |
≧2 |
0 |
n |
最高 |
一个硬盘异常,全部硬盘即跟着异常 |
追求最大容量、速度 |
3D产业实时渲染、视频剪接高速缓存用途 |
1 |
≧2 |
总数的一半 |
总容量的一半 |
稍有提升 |
最高 |
追求最大安全性 |
个人、企业备份 |
10 |
≧4 |
总数的一半 |
总容量的一半 |
高 |
安全性最高 |
综合RAID 0/1优点,理论速度较快 |
大型数据库、服务器 |
5 |
≧3 |
1 |
n-1 |
高 |
高 |
追求最大容量、最小预算 |
个人、企业备份 |
6 |
≧4 |
2 |
n-2 |
比RAID 5稍慢 |
安全性较RAID 5高 |
同RAID 5,但较安全 |
个人、企业备份 |
关于硬盘和几种RAID的更多相关文章
- RAID5和RAID10,哪种RAID更适合你(上)
[IT168 专稿]存储是目前IT产业发展的一大热点,而RAID技术是构造高性能.海量存储的基础技术,也是构建网络存储的基础技术.专家认为,磁盘阵列的性能优势得益于磁盘运行的并行性,提高设备运行并行度 ...
- 阅读:RAID5和RAID10,哪种RAID更适合你
阅读:RAID5和RAID10,哪种RAID更适合你-------------------------------------------2013/10/06 存储是目前IT产业发展的一大热点,而RA ...
- 转载:RAID5和RAID10,哪种RAID更适合你
转自 http://storage.it168.com/h/2007-06-28/200706281204046_3.shtml 存储是目前IT产业发展的一大热点,而RAID技术是构造高性能.海量存储 ...
- 几种RAID技术比较
http://book.51cto.com/art/201310/412862.htm RAID(廉价磁盘冗余阵列)技术主要是为了改善磁盘的访问延迟,增强磁盘的可用性和容错能力.目前服务器级别的计算机 ...
- 几种RAID介绍(总结)
概念 RAID是Redundent Array of Inexpensive Disks的缩写,简称为“磁盘阵列”.后来RAID中的字母I被改作了Independent,RAID就成了“独立冗余磁盘阵 ...
- 七种RAID技术
想把好多硬盘组在一起使用的基本方式为:连接所有硬盘,先向第一个硬盘中写数据,满了之后,再向第二个硬盘上写数据,如此只是简单的连通了多个硬盘. 再此基础上发展了RAID技术:由独立磁盘组成的具有冗余特性 ...
- 从硬盘设计思想到RAID改良之道
监控硬盘的前生今世关于桌面硬盘.企业级近线硬盘(NL-SAS/SATA)和监控硬盘的差别,我们在前文中已经讲得很详细,这里再换一个角度来看看. "监控硬盘是希捷和西数为视频监控定制的,典型的 ...
- 几种RAID级别的比较
等级 概要 冗余 盘数 读快 写快 RAID 0 便宜.快速.危险 No N Yes Yes RAID 1 高速度.简单.安全 Yes 2(通常) Yes No RAID 5 安全(速度)成本折中 Y ...
- 快速理解几种常用的RAID磁盘阵列级别
我发现周围不少人在学习和理解RAID磁盘阵列的原理时,找了很多专业的资料来看,但是因为动手的机会比较少,因此看完以后还是似懂非懂,真正遇到实际的方案设计的时候,还是拿不定主意. 因此,我结合自己在过去 ...
随机推荐
- PHP 5.3连接sql server 2008 R2
我的机器为: xp sp3 sql server 2008 developer apache 2.2.2 php 5.3 从5.3开始,php就不再提供mssql.dll了,所以要php连接sql ...
- 找出程序cpu使用率高的原因
确定是CPU过高 使用top观察是否存在CPU使用率过高现象 找出线程 对CPU使用率过高的进程的所有线程进行排序 ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |g ...
- snoopy(强大的PHP采集类) 详细介绍
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单,可以用来开发一些采集程序和小偷程序,本文章详细介绍snoopy的使用教程. Snoopy的一些特点: 抓取网页的内容 fe ...
- cocos2d-x 常规库的图文件配置
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS) LOCAL_MODULE := cocos_lua_static LOCAL_MODULE_FILE ...
- MyBatis的CRUD操作
MyBatis的两个主要配置文件 mytatis.xml:放在src目录下,常见的配置如下 <?xml version="1.0" encoding="UTF-8& ...
- Linux信号列表
我们运行如下命令,可看到Linux支持的信号列表: ~$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) ...
- http连接
一.http over tcp over ip
- poj3694Network(tarjan+lca)
http://poj.org/problem?id=3694 用tarjan算出桥,用lca算出公共祖先 把路上的边更新掉 原来的桥变为不是桥 看一解题报告感觉有一部分是不用加的 不知道是不是数据水 ...
- Is there a way for me to run Adb shell as root without typing in 'su'?
Orginal artical :http://android.stackexchange.com/questions/5884/is-there-a-way-for-me-to-run-adb-sh ...
- sdut Message Flood(c++ map)
用字典树没过,学习了一下map; 参考博客:http://blog.csdn.net/zhengnanlee/article/details/8962432 AC代码 #include<iost ...