我们使用的计算机的全称叫电子计算机,前面有电子两个字,这说的是整个计算机中的核心元器件基本上都是电子单元组成的。但机械硬盘却是一个特殊的例外,它更多是用机械技术做出来的一个产品。当把带有机械技术基因的磁盘搭到计算机,尤其是再应用到服务器领域的时候,暴露出了机械技术的两个严重问题:

  • 第一,速度慢。 如果把内存和CPU的速度比作汽车和飞机的话,这个大哥毫秒级别的延迟几乎就是牛车级别的。
  • 第二,容易坏。 经常听说谁谁的磁盘坏了,很少有听说过谁的内存条,CPU坏了。笔者就有在读研期间实验室里正在拷贝资料,突然一个断电直接费了一块硬盘的经历。

要想保证服务器运转的稳定和高速,就必须解决硬盘从娘胎里带出来的这两个缺陷。

多硬盘连接

问题简单明了,我们要解决速度慢、容易坏两个问题。很自然,单兵作战不行,那我们就想到往上怼一个班,多块硬盘一起上。但问题是,假如给你N块硬盘,让你来出一个技术方案,你会怎么设计呢?

第一个方案就是,把一个文件分成N片,每一片都散列在不同的硬盘上。这样当文件进行读取的时候,就可以N块硬盘一起来工作,从而达到读取速度提高到N倍的效果,这就是RAID 0。

图1 Raid 0方案

不过这个方案没有解决容易坏的问题,任何一块硬盘坏了都会导致存储系统故障。

第二个方案就是,仍然把文件分片,但是所有的分片都存在一块硬盘上,其它的硬盘只存拷贝。 这既提高了硬盘的访问速度,也解决了坏的问题。任意一块硬盘坏了,存储系统都可以正常使用,只不过速度会打一点折扣。

图2 Raid 1方案

不过这个方案又带来了新的问题,那就是实现成本有点高了。假如我们用256G硬盘想实现512G的存储容量的话,最少得需要4块硬盘才能实现。

有没有折中一点的方案呢?有,而且很多。我们这里只说下最常见的raid5 RAID 5同样要对文件进行分片,但是不对存储的数据进行备份,而是会再单独存一个校验数据片。 假如文件分为A1 A2 A3,然后需要再存一个校验片到别的磁盘上。这样不管A1,A2还是A3那一片丢失了,都可以根据另外两片和校验片合成出来。 既保证了数据的安全性,又只用了一块磁盘做冗余存储。

图3 Raid5 方案

假如我们有8块256GB的硬盘,那么RAID5方案下的磁盘阵列从用户角度来看可用的存储空间是7*256GB,只“浪费”了一块盘的空间,所以目前RAID5应用比较广泛~~

Raid卡缓存

硬盘延迟是毫秒级别的,即使是多快硬盘并行,也只能提升数倍而已,不能够达到量级的提升。和CPU内存的纳秒级别工作频率比起来,还是太慢了。 在计算机界,没有缓存解决不了的速度问题,如果有,那就再加一层。现代磁盘本身也基本都带了缓存,另外在一些比较新的raid卡里,硬件开发者们又搞出来了一层“内存”,并且还自己附带一块电池,这就是RAID卡缓存。 我们看下几款主流RAID卡的配置:

  • PERC S120 入门软件阵列卡,主板集成无缓存 支持RAID0 1
  • PERC H330 入门硬件RAID卡,无板载缓存, 支持RAID 0 1 5 10 50
  • PERC H730 主流硬件RAID卡带有1G缓存和电池 支持RAID 0 1 5 6 10 50 60
  • PERC H730P 高性能硬件RAID卡带有2G缓存和电池 支持RAID 0 1 5 6 10 50 60
  • PERC H830 同H730P,没有内置接口,使用外置接口连接附加存储磁盘柜用

拿目前服务器端出镜率比较高的H730和H730P来看,他们分别带了1G和2G的缓存卡,并且自带电池。 电池的作用就是当发现主机意外断电的时候,能够快速把缓存中的数据写回到磁盘中去。对于写入,一般操作系统写到这个RAID卡里就完事了,所以速度快。对于读取也是,只要缓存里有,就不会透传到磁盘的机械轴上。

另外想再补充说一点的就是文件相关函数里设置DIRECT I/O仅仅只能绕开操作系统本身的Page Cache,而RAID卡里的缓存,对于Linux来说,可以说算是一个黑盒。换句话说,就是操作系统并不清楚RAID卡是从缓存里吐的数据,还是真正从硬盘里读的。

动手查看你的RAID配置

了解了raid基本原理以后,我们可以实际动手查看一下机器上的raid情况。这里拿我手头的一台服务器举例。 通过cat /proc/scsi/scsi,我们可以查看到raid卡的型号

Host: scsi10 Channel: 02 Id: 01 Lun: 00  Vendor: DELL     Model: PERC H730 Mini   Rev: 4.27  Type:   Direct-Access                    ANSI  SCSI revision: 05

可以看到我的这台服务器raid卡使用的是PERC H730, 这块RAID卡带有1G缓存和电池。

再看我们的硬盘阵列

# /opt/MegaRAID/MegaCli/MegaCli64  -LDInfo -Lall -aALLVirtual Drive: 1 (Target Id: 1)Name                :RAID Level          : Primary-5, Secondary-0, RAID Level Qualifier-3Size                : 1.633 TBSector Size         : 512Is VD emulated      : NoParity Size         : 278.875 GBState               : OptimalStrip Size          : 128 KBNumber Of Drives    : 7Span Depth          : 1

RAID Level列标明的就是当前RAID组的RAIN级别。对照下面

  • RAID 1: Primary-1, Secondary-0, RAID Level Qualifier-0 RAID 1
  • RAID 0: Primary-0, Secondary-0, RAID Level Qualifier-0 RAID 0
  • RAID 5: Primary-5, Secondary-0, RAID Level Qualifier-3 RAID 5
  • RAID 10: Primary-1, Secondary-3, RAID Level Qualifier-0 RAID 10

可以看到,本机RAID Level是RAID5。

另外Strip Size叫做条带大小,我机器上的配置是128KB。假如有一个512KB的文件,它就会被分成4个条带,每个128KB。这些条带可能会分散在不同的磁盘上,如果一次性读取的话,多个硬盘就可以一起转动机械轴,读取速度就会提高到原来的数倍。不过要说明的是,如果文件小于这个条带大小,小于128K,那么RAID下的多块硬盘对于该文件的读取耗时也不会有帮助。

继续查看组成RAID的所有的磁盘的状况

#/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL......Drive's position: DiskGroup: 1, Span: 0, Arm: 0Device Id: 1...Raw Size: 279.396 GB [0x22ecb25c Sectors]Non Coerced Size: 278.896 GB [0x22dcb25c Sectors]Coerced Size: 278.875 GB [0x22dc0000 Sectors]Sector Size:  512Logical Sector Size:  512Physical Sector Size:  512Inquiry Data: SEAGATE ST300MM0008     TT31S42310JR.........Drive's position: DiskGroup: 1, Span: 0, Arm: 6Device Id: 7Raw Size: 279.396 GB [0x22ecb25c Sectors]Non Coerced Size: 278.896 GB [0x22dcb25c Sectors]Coerced Size: 278.875 GB [0x22dc0000 Sectors]

看到属于DiskGroup 1的总共有7块硬盘,每块的大小都是278GB左右。6块盘的总容量大小就是1.6T左右,确实是只“浪费”了一块硬盘的容量来保障数据的安全性!

另外Inquiry Data也显示了硬盘的制造商,已经型号。这些磁盘都是希捷的300G的机械硬盘,经Google查询其转速为1万转每分钟。

本文小结

机械技术和电子技术比较起来,稳定性要差很多。所以机械背景出身的硬盘既慢又容易坏。为了解决这个问题,RAID技术应运而生。通过一定的冗余原始存储或者校验数据提供安全性的保障,通过增加带电子基因的缓存,合理调度多块磁盘的机械轴,提高了磁盘IO的读写速度。在Linux下可以通过MegaCli工具来查看你的RAID组情况,强烈你建议实际动手查看一下!

欢迎关注微信公众号开发内功修炼!

raid卡缓存对硬盘性能_我们怎么解决机械硬盘既慢又容易坏的问题相关推荐

  1. raid卡缓存对硬盘性能_我们怎么解决机械硬盘既慢又容易坏的问题?

    我们使用的计算机的全称叫电子计算机,前面有电子两个字,这说的是整个计算机中的核心元器件基本上都是电子单元组成的.但机械硬盘却是一个特殊的例外,它更多是用机械技术做出来的一个产品.当把带有机械技术基因的 ...

  2. Linux查看MegaSAS raid卡缓存策略

    查看MegaSAS RAID卡的缓存策略 [root@localhost ~]# MegaCli -LDInfo -Lall -aALLAdapter 0 -- Virtual Drive Infor ...

  3. linux raid卡缓存,RAID卡的缓存与磁盘自带的缓存的关系

    RAID卡的缓存与磁盘自带的缓存的关系 RAID卡是否有(启用)缓存对"随机读写"性能有巨大的影响.中高端的RAID卡都有缓存(价格也高). 那么RAID卡的缓存与磁盘自带的缓存是 ...

  4. matlab 固态 机械_电脑是固态+机械硬盘好??纯固态硬盘好?

    今天小五就给大家细细讲讲 机械硬盘 ✍️ 机械硬盘顾名思义就是机械结构的硬盘 啥叫机械结构呢?其实就是内部用N个高速旋转的磁性通碟来储存数据,再通过一个磁头对相应的磁盘进行读取和写入,像这样(够机械吧 ...

  5. 笔记本电脑硬盘不见了_为什么电脑的机械硬盘突然不见了?

    电脑重装系统后只有主硬盘显示不见机械硬盘显示你可以按照如下办法尝试: 1.首先右键计算机,然后选择管理. 2.然后进入,就可以看到目前分区只有固态硬盘有分区,而机械硬盘的内存并没有分配,这就导致了,我 ...

  6. 台式计算机硬盘英寸,2.5英寸的机械硬盘,能安装到台式机里面用么?

    昨天有个朋友问我,他家里的台式机硬盘空间有点不够用了,想把他之前旧笔记本电脑拆下来的一块闲置硬盘拿来用,又不确定这样做是否可行,那么,把笔记本硬盘放到台式机里面使用,这样可以么? 答案当然是可以的,所 ...

  7. 硬盘是办公设备还是计算机设备,机械硬盘价格与区别【详细介绍】

    导语:今天给大家介绍一下关于机械硬盘的相关知识,对于大家来说可能机械硬盘并不熟悉,其实这里所说的机械硬盘就是我们所说的传统的普通硬盘.主要是由控制电台.磁头.盘片.盘片转轴组成,特点就是所有的盘片都装 ...

  8. 服务器固态硬盘优缺点,为什么服务器使用的机械硬盘比固态硬盘多

    描述 固态硬盘与机械硬盘相比较起来,读写速度更快.所以固态硬盘替代机械硬盘是指日可待的.目前很多用户都是使用固态硬盘的,但是却还有很多服务器仍然在使用机械硬盘,这是什么原因呢? 虽然固态硬盘在速度上能 ...

  9. 希捷服务器硬盘15k有几代,硬盘巨头推最后一代15k机械硬盘:再见,机械硬盘

    原标题:硬盘巨头推最后一代15k机械硬盘:再见,机械硬盘 近日,希捷发布了最新一款机械硬盘15K HDD v6超能盘(15K.6),这款机械硬盘号称全球最快的机械硬盘,主要是服务于数据中心.高性能服务 ...

最新文章

  1. java xml中的冒号_Java jdom解析xml文件带冒号的属性
  2. python openvc 裁剪、剪切图片 提取图片的行和列
  3. keepalived+nginx安装与配置
  4. 4.6 前向和反向传播-深度学习-Stanford吴恩达教授
  5. python 调试命令
  6. Elasticsearch技术解析与实战(五)Document解析
  7. 如何分辨 SAP Fiori Launchpad 里的真假 Fiori 应用
  8. Java笔记-重写JsonSerializer中serialize方法使Json中时间戳/1000
  9. 笨办法学 Python · 续 练习 8:`cut`
  10. #CSP 201912-2 回收站选址(C语言)(100分)
  11. Lwip协议netif结构体详解
  12. 电赛公开课整理(二),电路基础,截图+模电知识【16000字】【原创】
  13. 简易抽奖软件逻辑实现
  14. 所谓的原创内容对于seo的意义在何方?
  15. Hi3516A开发--电阻分压阻值计算
  16. 衍射在微波遥感中的作用
  17. 高等数学-向量代数与空间解析几何
  18. websocket简单聊天室
  19. 【python】OpenCV—RGB, Rectangle, Circle, SS(1)
  20. canvas多彩粒子星空背景

热门文章

  1. 利用ClaudiaIDE插件在VS中插入图片
  2. librtmp windows编译
  3. MMDetection2.17-权重模型转推理模型(pth转onnx)详细步骤及前向推理(Win10、Linux均适用)
  4. Unity通过相机控制场景模型的移动和缩放
  5. 【嵌入式物联网】NodeMCU开发板引脚介绍和主要技术参数
  6. 复盘在项目管理中的应用
  7. 删除下拉框只找23火星软件_下拉框软件找24火星软件
  8. 论文写作中常用工具和格式排版
  9. linux常用工具awk,linux中awk工具
  10. 微信unionid的获取踩到的坑