作者简介

潘国林, 高级软件工程师。目前就职于DELL EMC,存储设备研发,文件系统相关。
早期在诺基亚上海贝尔从事通信板卡研发,主要涉及驱动,内核,通信以及平台服务等领域。
娱乐爱好:看喜剧小品,听相声。

引子

晴空万里,草长莺飞。人们纷纷走出户外,感受大自然馈赠的这一段不冷不热的时光。他站在窗边,遥望街头,人群熙熙攘攘。突然想到了什么,杯子里剩下的咖啡一饮而尽,拉窗帘,关门,打开电脑,启动浏览器,输入那个在脑海中再熟悉不过的网址,动作一气呵成。紧张、兴奋。或许只有这个,或许才能填补内心的空虚和生活的迷茫。太认真了,竟然没有注意到一只手悄悄按在他的肩头,一个低沉的声音随即过来:“你在看什么呢?”

送人玫瑰,手有余香。这个时代需要分享,有交流,有碰撞,才有进步。今天我要分享的主题的是“存储设备那点事”,这句话中需要高亮的关键词是什么?是“存储”?是“设备”?都不是,是“那点”。作为一个刚进入存储行业不到两年的小学生,能力有限水平一般,全靠房贷的压力走到今天。存储涉及方方面面,受到能力和篇幅的限制,实在难以言尽。本文主要目的是让大家对存储方面有些感性的认识,没有很深入的技术细节。读者中肯定会有行业前辈、技术大牛、开源社区达人、非洲部落的酋长,都保不齐的事,有不足之处还请多多批评指教。

说到存储设备,各位有些人可能会想起这些:磁带,软盘,硬盘,U盘,以及早期街边中年妇女兜售的光盘(都买过吧?随着互联网的发展,这个行业没落了,唉!)。今天我们要说的存储设备比这些略显高级,但终究也没有脱离它们。

我有一个1TB的移动硬盘,已经差不多装满了,最近有些担忧,万一哪次不小心摔在地上,可就报废了,多年积攒的资料和回忆将付之东流,得想个办法。那位说了,为啥不存在云盘?坦诚的讲,我不太信任云盘服务商,不仅仅是局限于技术层面的不信任,谁在乎他们是不是背锅的。又有人给建议,整个RAID吧。对,我们就从RAID说起。

什么是RAID?

RAID的洋文描述是Redundant Array of Independent Disks,国语通常翻译成:独立磁盘冗余阵列。打仗亲兄弟,上阵父子兵,一个硬盘可能出现种种问题,RAID就是将一组硬盘通过各种组合,呈现出一个逻辑上的硬盘,弥补一些单个硬盘的缺陷(如IO性能,数据保护),这个逻辑上的硬盘从用户角度看来和单个硬盘使用方式几乎一样,对用户透明。

总结起来一句话:基友一生一起走,单身的痛苦不再有。

RAID的等级

RAID的等级就是硬盘以何种形式组合在一起,比如:RAID 0、RAID 1、RAID10、RAID 01、RAID 3、RAID 5、RAID 6等等,很多,相声演员可以写个贯口上台表演了,这次就挑常见的说几个。

RAID0

最简单的RAID0由两块硬盘组成,如图1所示,当用户写入数据的时候,例如数据块A,实际上是将数块A分为两个部分,分别写入Disk1和Disk2,B、C、D是同样的操作。可以看到,RAID0并没有解决前面我遇到的问题,Disk1或Disk2任何一块盘坏了,保存的数据就会丢失,数据得不到保护。当然,优点也是显然的,数据并行的写入两块盘,花费时间缩短了,理论上节省50%的时间,IO性能好。我们也可以使用更多的盘组成RAID0,那样的话数据块就会被分为更多分,并行写入多块盘,用时会更少。组成RAID0的各个硬盘地位是平等的,有任务兄弟们一起分担,没有谁的角色是特别的。

RAID1

你有我有全都有哇,哎嗨依儿呀,这就是那RAID1,不相信就往下看那。

只要2块硬盘就可以组成一个RAID1,如图2所示。RAID1的特点是用户写入的数据块会被同时写到组成RAID1的每一个硬盘,这些硬盘保存的数据一模一样。所以,其中一块硬盘损坏了,不要害怕,另外一块硬盘仍旧保存完整的数据。有人要问了:”那要是两块硬盘都坏了呢?”,朋友,咱们好好聊天行吗?本质上RAID1是在做备份,我们不也经常将电脑的文件拷贝到U盘或移动硬盘备份嘛。只不过这个备份是实时的,用户每写一个数据就立即备份。增加更多硬盘组成RAID1,也就增加备份数量,更保险,但需要花更多的钱买硬盘,当然,阿聪这样的土豪另说。

RAID3

在说RAID3之前,先往回倒个三言两语。前面的RAID0和RAID1的插图中,每个硬盘都画了一些小格子,保存A、B或A1、A2等。划分这些小格子的行为称为磁盘的条带化(striping),又是一个新名词,没办法,新的事物诞生总归要取一个名字吧。早年间,管理论坛的人叫版主,维护博客的人叫博主。现在呢,建立微信群的人叫群主,建立并维护公众号的人呢?公主?宋老师答应吗?

感受一下磁盘条带化的效果,图3所示,两个盘没有条带化,用户数据过来先写Disk1,写满Disk1之后再写Disk2,看到这样的RAID你有什么感受?既没有使得IO性能得到提升,也没有数据保护功能,然后冠冕堂皇包装成RAID。谁要是推销这个RAID,作为有素质的人,咱不能爆粗口,叫个代骂服务先骂他100块钱的。

有人问了(对,就是前面问问题的那个人):“这个例子太极端,如果我有一个很大的文件,我可以计算出6~10部分最终会保存到Disk2内,那么我就可以并行的写入1~5到Disk1,6~10到Disk2”。如果Disk1是1TB的硬盘,你的文件有多大?大于1TB,现实世界又有多少场景存在这么大的文件呢?

我们继续。图4展示了条带化之后的磁盘格式,如果说未经过条带化是以盘为单位存储的,即一个盘写满再写下一个盘。那么条带化之后,则是按照条带为单位存储的,写满一个条带之后再写下一个条带。RAID的各个盘的同样区域(偏移位置和大小确定的区域)组成了一个条带。

接着看RAID3,图5所示。Disk4是与众不同的,作为校验盘,它不保存用户数据,而是保存用户数据的校验值。Ap是A1、A2和A3的异或逻辑运算校验值。同理Bp~Dp类似。这样做的好处是:如果4块盘有一块盘坏了,我们可以从其它3块盘读出数据,再次进行异或逻辑运算,计算出损坏盘的数据,这一过程称为数据重建。

举个栗子:

假设初始A1=1,A2=0,A3=1,在存盘时候计算Ap=A1^A2^A2=1^0^1=0。

现在Disk3损坏,我们要计算A3,A3=A1^A2^Ap=1^0^0=1。得到了正确的A3!

考察一下RAID3特点,其一,可以并行的写。其二,有校验盘,允许一块盘故障。其三,特别的,如果损坏的是校验盘,不会影响此时用户的读操作。缺点也是有的,那就是用户写数据的时候,不管是向哪一个数据盘写入数据,都需要同时重写校验盘,对于写操作频繁的应用,校验盘的负载很大,成为瓶颈。

那么,对于校验数据的保存这个费时费力的工作能否均衡一下呢?不能老可一个人霍霍啊。

RAID5

RAID5没有独立的校验盘。从下图中找找Ap、Bp、Cp和Dp的位置,发现什么了吗?对,每个盘同时扮演数据盘和校验盘,校验值写入这个负载就分摊到每个盘上,前面RAID3遇到的校验盘瓶颈就不存在了。

当一块盘出现故障后,RAID将无法继续提供服务,一般情况,运维人员会更换故障盘,新盘到位后,RAID进行数据重建,借助校验算法,将丢失的数据恢复到新的盘中,然后RAID可以继续提供服务。一些系统中支持热备盘,当RAID中一块硬盘(Disk2)故障后,系统从热备盘中选择一块(Disk5),顶替故障盘角色,然后RAID立即进行数据重建,这样就最大限度的减少了RAID停止服务的时间。没错,热备盘就是备胎。

RAID5可以并行IO提升性能,数据校验起到数据保护作用,也不存在校验盘瓶颈,看起来不错。

有人问了(对,还是前面问问题的那个人):“如果同时有2块盘故障怎么把办?”

“那就用RAID6,可以容忍有2块盘故障。”

“如果同时有3块盘故障怎么把办?”

喂,代骂公司吗?我再加100块钱,马上过来骂个人。

对的,要蛋定。RAID虽然比单个硬盘有很多优势,但也不是牛逼透顶的,也有解决不了的问题,也有Hold不住的极端情况。

RAID6以及其它RAID形式就不再展开了。您可以访问这里继续深造:

https://en.wikipedia.org/wiki/Standard_RAID_levels

顺便提一下,RAID发展后期出现了RAID2.0,一个不以单个盘为RAID组成基本单位的技术。

花开两朵,各表一枝。说了这么多关于RAID的内容,对于终端用户呢?如何使用RAID呢?这是个问题。用户当然可以买几块硬盘组成一个RAID,当成“大硬盘”来使用,对于台式机还可以忍受,机箱大随便装。那么,笔记本电脑用户呢?没地方装啊。USB外接式?你很优雅的走进了星巴克,要了一杯咖啡,拿出高大上的苹果电脑,傍边的桌子上一堆硬盘,你告诉别人别碰,说是你的RAID?这是休闲呢还是摆摊呢。

这个世界上,只要有需求,哪怕变态的需求,都会有商家满足你。想强身健体,有的商家就把中药和酒混在一起,来吧,药酒,可补可补了。

关于块存储的细节,请听下回分解........


关于Linuxer公众号:

Linuxer公众号周期性分享最好的Linux原创技术文章,提供最好的Linux招聘职位;并连接企业和Linux人才,提供企业和人才匹配服务。扫描二维码关注Linuxer:

EMC潘国林: 大话存储系列之磁盘娶亲(RAID)相关推荐

  1. EMC潘国林: 大话存储系列之月光宝盒(块存储)

    作者简介 潘国林, 高级软件工程师.目前就职于DELL EMC,存储设备研发,文件系统相关. 早期在诺基亚上海贝尔从事通信板卡研发,主要涉及驱动,内核,通信以及平台服务等领域. 娱乐爱好:看喜剧小品, ...

  2. 大话存储系列3——磁盘原理

    1.磁头扫描方式 FCFS(First Come First Serve):先来先服务 SSTF(Shortest Seek Time First):控制器会先让磁头跳到离当前磁头位置最近的一个IO磁 ...

  3. emc存储设备型号_西安服务器行业中EMC产品存储系列主要都有哪些类型?

    随着互联网的发展,在西安服务器行业中,EMC产品的存储系列属于顶尖产品,它不仅具有非常完整的产品线,而且不管是最普通的磁盘列阵,还是高端大气上档次的SSD存储矩阵,EMC产品都能为用户提供满意的服务. ...

  4. 11.2 RAC 系列-安装新主机,识别老存储-识别ASM磁盘

    在有些场景下,RAC环境中如果主机出现问题,比如硬件故障等,不能启动,我们需要尽快存储上的启动数据库,恢复业务,那么就需要迁移以前的RAC环境到新的主机环境下,我测试了11.2和12.1的RAC,恢复 ...

  5. 【大话存储】多CPU架构变迁, SMP,NUMA,MPP

    多CPU架构演进 对称多处理器结构:(SMP,Symmetric Multi-Processor) 服务器最开始的时候是单CPU,然后才进化到了双CPU甚至多CPU的SMP架构.所谓SMP架构指的是多 ...

  6. 运维监控之HP存储监控及hp存储系列产品

    随着云计算.大数据的发展,存储越来越受到我们的关注,磁盘存储设备已经成为企业IT支撑系统越来越重要的一个分支.目前全球范围公认的主流存储解决方案供应商主要有HP.EMC.IBM.HDS等.惠普在存储市 ...

  7. 海量存储系列下--转载,值得一读

    海量存储系列之八 http://qing.blog.sina.com.cn/1765738567/693f0847330008ii.html 首先来回答一个问题:为什么在磁盘中要使用b+树来进行文件存 ...

  8. 海量存储系列上--转载,值得一读

    海量存储之序言 http://qing.blog.sina.com.cn/1765738567/693f0847330005sk.html 今天玩微薄的时候有人问我有没有数据存储的相关资料,我想了想. ...

  9. 云原生存储系列文章(一):云原生应用的基石

    作者| 郡宝 阿里云技术专家 参与文末留言互动,即有机会获得赠书福利! 导读:存储服务支撑了应用的状态.数据的持久化,是计算机系统中的重要组成部分,也是所有应用得以运行的基础,其重要性不言而喻.在存储 ...

最新文章

  1. iOS 中的CoreImage框架(framework)
  2. boost::adaptors相关的测试程序
  3. 解决VirtualBox里Ubuntu的共享文件夹无法访问(终极解决方案)
  4. stm32 火灾自动报警及联动控制源码_中级消防设施操作员关键技能之十四:能测试火灾自动报警系统联动功能...
  5. 使用ubuntu过程中遇到的问题汇总
  6. 【perl】simpleHTTP
  7. json tcl_确定TCL中变量的类型
  8. react html编辑器,react项目中使用富文本编辑器
  9. JavaSE基础笔记十二
  10. Linux学习总结(28)——Linux主机加固
  11. 每天CookBook之Python-048
  12. php如何安装源码包,php源码包安装步骤是什么
  13. 手机便携版_智能体验醇音随行 哈曼卡顿音乐琥珀便携版评测
  14. 随机森林分类算法python代码_随机森林的原理及Python代码实现
  15. javascript中object的运算符操作使用
  16. 书信用语“商祺”是的意思
  17. BUAA北京地铁乘坐线路查询
  18. 单片微型计算机原理和应用答案,《单片微机原理及应用》 试卷A及参考答案
  19. 信息系统项目管理师考试相关介绍
  20. gif动图怎么制作?分享三个好用的方法

热门文章

  1. 华为无线设备配置动态负载均衡
  2. PB DES、3DES加密解密(简单便捷)
  3. 作业盒子生端AndrOid,作业盒子小学下载安装学生版
  4. iOS Masonry
  5. mtk设备模型之LCM--学习
  6. perl mysql 数据推拉_Perl Mysql数据库操作实现代码
  7. 李开复新生演讲的重点语段
  8. Qt之图形(简笔画-绘制卡通蚂蚁)
  9. Android 读取内存文件返回byte数组
  10. Oracle v$nls_parameters 和 nls_database_parameters 区别