第三十八讲——磁盘存储 本文共有6537个字,关键词: 我们这一讲说一说硬盘,硬盘时很常见的,应该在每一台主机中都存在,且以多种形式存在,硬盘作为一种存储介质,我们有必要了解其结构以及存储形式。 我们常见的硬盘分为机械硬盘和固态硬盘。 简单地说,机械硬盘中有机械结构,固态硬盘中无机械结构。 按接口划分,可分为IDE、SATA、SCSI、USB等等 IDE是一种比较老的接口形式,传输方式为并行传输。其理论传输速度为133Mbps。 SATA是一种新的接口,但也分为SATA1、SATA2、SATA3,即1/2/3代,STAT口为串行传输。 SATA1:理论传输值为300Mbps SATA2:理论传输值为600Mbps SATA3:理论传输值为6Gbps。 USB接口的硬盘一般用于外存,方便携带。 USB3.0的接口传输速度为480Mbps,采用串行传输。 我们之前说了串行传输、并行传输,按道理来说串行传输相当于一条双向车道的马路,并行传输相当于双向12车道的马路,但是为什么并行传输速度低且在IDE时代作为接口使用? 我们知道,信息在计算机中表示为电路的通断,当线路中有磁场时就会对周围的线路产生影响,所以并行传输不可避免的会遇到干扰,这就使得传输效率大大降低,串行传输虽然只是一条路,但是不产生大的干扰,不会产生拥堵,所以速度上就会有优势,因此,很多的设备采用的都是串行传输。 SCSI:Small Computer System Interface采用串行传输。 SCSI接口的硬盘很特别,其硬盘内部有一块芯片,用以辅助存储,即减少CPU的占用,这块芯片可以完成数据的读写操作,所以价格也很昂贵。 SCSI接口的硬盘通常使用在服务器中,且SCSI接口的机械硬盘转速较高,所以读写也会更快,但是在服务器上很多时候在同一时间需要访问多个文件(比如下载),这些操作对于硬盘来说负荷会比较大,此时就需要组合多块硬盘来同时完成一个动作。 组合多个设备需要一种特殊的设备接口,这个设备能够将一个设备接口分为多个接口。 这种特殊的设备我们称为RAID,Redundant Arrays of Inexpensive Disk,即廉价冗余磁盘阵列,这个阵列在系统看来,这几块组合起来的硬盘为一块硬盘。 但是当这个控制器制造出来的时候,因为其昂贵的成本消失廉价的意义,于是使用 Independent(独立的)代替inexpensive。 现在的RAID称为:独立冗余磁盘阵列,这已经称为了事实上的众多存储解决方案的工业标准。 讲到RAID就得讲一讲条带化技术,为什么?因为条带化技术解决了RAID独立冗余磁盘阵列的存储问题。 条带化技术,解决了RAID磁盘阵列的存储问题,不是按数据块存储,而是将一个大文件类似于以32MB为单位存储,阵列中的每一个磁盘存储32MB,并且都是存放在同一位置。 即数据通过控制芯片发向底层控制芯片并存储在磁盘上的时候,数据是经过条带化以后分割存储在磁盘上的,在操作系统看来依然是一个一个的文件。 根据磁盘的组织方式不同,RAID有所谓的RAID级别之分,RAID level:级别,级别并不意味着性能先进,级别只是为了表述磁盘的组合方式不同,没有上下之分。 在有了RAID之后,因为每一个磁盘都分担了一部分的数据,所以数据的存取速度有了保障,但是我们不能只考虑存取速度,还要考虑数据的可靠性,即数据不能损坏、丢失,换句话说要保证数据的可用(可用性)。 对于数据的可用性,也有相应的机制作为保证: 1 磁盘镜像技术(mirror) 镜像技术指的是,两块磁盘存储相同的数据,如果其中的一块损坏,另一块还能继续工作。 2 校验码机制 校验码机制会将数据平均分配到N-1块磁盘上去,另一块盘存放循环冗余校验码,例如,第一块盘上存放的为2,第二块盘上存放的为5,那么校验位存放为7,当然这样说太简单暴力了,其实际情况比这复杂的多得多。 在校验码机制中,允许其中的一块盘损坏,通过其他盘都可以进行恢复,但是损坏数量大于一,则校验码机制也无力回天。 校验码机制的优势在于,一是提高了数据的存取速度,二是允许其中的一块盘损坏,其数据的存取速度和数据的可用性都有提高。 替换坏盘的过程称为硬盘的修复过程,如果在此过程中硬盘挂掉了,所有数据将失效。这在数据可用性较高的场景下是不适用的。 先讲一讲RAID level即RAID级别: RAID 0 表示条带存储 RAID 1 表示镜像 RAID 2/3/4很少使用 RAID 5 在使用校验码的机制的基础上,将校验码轮流在数据盘上存储,使得每一块磁盘被访问的量是均等的。,也只能允许损坏一块硬盘。 RAID 6 使用两块校验盘,将数据校验两次存储,允许损坏两块磁盘,但是应用较少。 我们单独的使用RAID级别各有优缺点,我们能不能结合其中的两种发挥出优势呢?事实上这是完全可以的,并且给出了RAID结合的方式。 下面来分别讲一讲每一个RAID级别的差别: RAID 0:条带化 至少需要两块盘 读写性能提升 无冗余能力,不能保证数据的完整性 空间利用率为100% RAID 1:镜像 至少两块盘 读性能提升,写性能下降 有冗余能力 空间利用率为50% RAID 5: 至少三块盘才有意义 读写性能提升 有冗余能力 空间利用率为(n-1)/n RAID 10 至少需要四块盘 读写性能提升 有冗余能力 空间利用率为50% RAID 01 至少需要四块盘 读写性能提升 有冗余能力 空间利用率为50% Jbod 一中将小硬盘组合成大空间的技术。 至少需要两块盘 性能无提升 冗余能力无 空间利用率为100% RAID 01以六块磁盘为例,先拿三块磁盘做成条带,即RAID 0,另外的三块盘做成此RAID的镜像。 RAID 10 以六块磁盘为例,先将磁盘分为三组镜像,即三组RAID1,然后对三组RAID1做条带,即RAID 0. RAID01 和RAID10 从性能上来说,两种方式都相差不多,但是如果其中的一块损坏其修复的速度就会产生很大的差距,企业中一般使用RAID10来进行数据的存储,就实用性来说,RAID10优于RAID01。 对于RAID硬件设备来说,只要能识别硬盘的接口就能够组合,一般来说,我们要求RAID阵列里的镜像盘的规格要求相同。 我们需要知道的是SCSI与IDE是同时代的产物,都是并行的接口 SAS:串行口的SCSI接口 SATA接口的盘比SAS接口的盘便宜的多,SAS盘单盘容量为73G、146G等等,其存储空间十分有限且价格高昂,这是由于SAS盘的转速较高,其盘片的密度要做的很大,另外SAS盘还需要一块强大的控制芯片。 SAS或者SCSI硬盘是一种很独特的硬盘,与IDE或者SATA不同的是,这种硬盘一根总线上可以接多块硬盘,总线上的每一个接口称为“目标(target)”,每一个target能够连接一块硬盘。 SCSI总线分为两类: 窄线(带):可以有八个target,适配器占用一个,还能连接七个目标(tartget)。 宽线(带):可以有十六个target,适配器占用一个,还能连接十五个target。 适配器的接口称为:initiator,数据请求的发起者。 对于工业生产的服务器上,窄带下的硬盘接口是远远不够的,于是人们将每一个目标(target)一分为多个子接口,为了区分是那个接口下的哪一块盘,数据在发送时会在数据前面加一段控制信息,数据包首部。 数据报文的首部(head),和TCP/IP协议的首部一样,这个报文也称为协议数据单元(协议报文),每一块盘都有自己的标记,地址。即每一块盘都有一个LUN:逻辑单元号码:logic unit number。 我们之前讲过RAID的级别,还讲了有RAID这种硬件设备。其实RAID有两种形式。 一是硬件RAID 二是软件RAID 公司、企业中使用的大多是硬件RAID,硬件RAID的芯片可能在服务器的主板上集成(RAID控制器),将插满磁盘的RAID阵列机箱连接到RAID控制器,如果主板上集成了RAID控制器,或者外部插入了适配器,则需要通过BIOS来进行设置。 如果要在RAID阵列上装操作系统,这个操作系统一定要能够识别RAID才行,如果识别不了得在安装操作系统之前提供驱动程序,U盘或者光盘,安装程序能够驱动硬件。 RAID阵列安装完操作系统后,在操作系统看来,RAID其实就是一个串口的设备,识别为/dev/[sh]d[a-z]# 的磁盘。 RAID 1 、RAID 0分别是在硬件配置好的基础上有硬件完成的。 现在很多的PC机的主板也都支持RAID和Jbod等等 有的RAID控制芯片为了使系统看起来会更快,会附带一个内存,多以RAID设备比单块硬盘性能要好得多,但可能会造成数据丢失,如果给RAID设备提供电源,保证意外断电情况数据不丢失。 软RAID: 例如在主板上插五块硬盘,其中的一块用于安装操作系统,另外四块组合成一个软RAID,这需要操作系统内核提供次功能。 linux中有一个模块:md:multi disks 在md工作起来后可以读取配置文件,按照配置文件中的信息将哪些磁盘组成一个RAID。md模拟一个RAID(逻辑RAID)设备,每一个创建的逻辑设备在/dev下都有一个设备文件,通常都以md开头,/dev/md# /dev/md0 用于标识不同的RAID设备,与RAID级别无关系。 通过MD模块访问(根据配置文件),是一个RAID设备,不通过md模块访问时,其实就是正常的硬盘设备。 软件RAID的性能取决于CPU的能力,如果操作系统坏了,有软RAID存放的数据就不能进行访问,这个问题可以通过对设备的标记解决。 RAID模块在设备上必须要标记为内核可以识别的类型,这种类型比较独特,我们称为fd(16进制),即软RAID必须将磁盘类型标记为fd类型,将磁盘标记为fd类型后,模块(md)在存放数据的时候会在数据之外存放一些元数据,就算将来重装操作系统,只要载入模块重新扫描即可重新组合起来,除非万不得已不建议在生产环境中架设软RAID。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-01-07 评论 1502 次浏览