我们使用的计算机的全名称为电子计算机,其前面带有电子一词。这意味着整个计算机的核心组件基本上由电子单元组成。但是机械硬盘是一个特殊的例外,它更多是采用机械技术制造的产品。当将具有机械技术基因的磁盘放在计算机上时,尤其是将其应用于服务器领域时,就会暴露出两个严重的机械技术问题:
为了确保服务器的稳定和高速运行,有必要解决硬盘从子宫中带出的这两个缺陷。
多个硬盘驱动器连接
问题很简单清楚。我们必须解决速度慢和容易失败的两个问题。自然地,单兵作战是不够的,因此我们将一个小队和多个硬盘一起考虑。但是问题是,如果给您N个硬盘驱动器,并要求您提出一个技术解决方案,您将如何设计它?
第一个解决方案是将文件分成N个片段,每个片段散列在不同的硬盘上。这样,读取文件时,N个硬盘可以协同工作,从而达到将读取速度提高到N倍的效果,即RAID 0。
但是,此解决方案无法解决容易破解的问题。任何硬盘故障都会导致存储系统发生故障。
第二种解决方案是仍然将文件分成多个片段,但是所有片段都存储在一个硬盘上,而其他硬盘仅存储副本。这不仅提高了硬盘的访问速度,而且解决了坏问题。如果任何硬盘损坏,则存储系统可以正常使用,但速度会有所降低。
但是,该解决方案带来了一个新问题,即实现成本有点高。如果要使用256G硬盘驱动器实现512G的存储容量,则至少需要4个硬盘驱动器才能实现。

有没有妥协的地方?是的,还有很多。我们只在这里谈论最常见的raid5
RAID 5还需要切片文件,但是不备份存储的数据,而是存储一个单独的奇偶校验数据切片。
如果文件分为A1 A2 A3,则需要将奇偶校验块保存到另一个磁盘。这样,无论丢失了一块A1,A2或A3,都可以根据其他两块和校验块进行合成。它不仅保证了数据的安全性,而且只使用一个磁盘进行冗余存储。
如果我们有8个256GB硬盘,从用户的角度来看,RAID5方案的可用存储空间为7 * 256GB,这仅“浪费”了一个磁盘空间,因此RAID5目前被广泛使用〜〜
袭击卡缓存
硬盘延迟为毫秒级。即使硬盘以尽可能快的速度并行,它也只能增加数倍,并且不能达到数量级的增加。与CPU内存的纳秒级运行频率相比,它仍然太慢。
在计算机世界中,没有没有缓存就无法解决的速度问题。如果存在,请添加另一层。现代磁盘基本上配备了缓存。此外,在一些相对较新的RAID卡中,硬件开发人员创建了一层“内存”,并且还附带了一块自己的电池,即RAID卡缓存。让我们看一下几种主流RAID卡的配置:
H730和H730P在服务器端的出现率较高,它们分别携带1G和2G高速缓存卡,并且具有自己的电池。当发现主机意外断电时,电池的功能是将高速缓存中的数据快速写回到磁盘。对于写入,通常操作系统将完成对该RAID卡的写入,因此速度很快。为了进行读取,只要高速缓存中存在,它就不会透明地传输到磁盘的机械轴上。

我要补充的另一件事是,在与文件相关的功能中设置DIRECT I / O只能绕过操作系统本身的页面缓存,而RAID卡中的缓存对于Linux来说是一个黑匣子。 。换句话说,操作系统不知道RAID卡是从高速缓存中呕吐数据还是实际上从硬盘中读取数据。
用手检查您的RAID配置
了解袭击的基本原理后,我们实际上可以检查机器上的袭击。这是我手边的服务器示例。
通过cat / proc / scsi / scsi,我们可以检查突袭卡的型号
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 -aALL
Virtual Drive: 1 (Target Id: 1)
Name :
RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3
Size : 1.633 TB
Sector Size : 512
Is VD emulated : No
Parity Size : 278.875 GB
State : Optimal
Strip Size : 128 KB
Number Of Drives : 7
Span Depth : 1RAID Level列指示当前RAID组的RAIN级别。在下面比较

如您所见,本地RAID级别为RAID5。
此外,“条带大小”称为“条带大小”,我的机器上的配置为128KB。如果有512KB的文件,它将分为4条,每条128KB。这些条带可能分散在不同的磁盘上。如果立即读取它们,则多个硬盘可以一起旋转机械轴,并且读取速度将提高几倍。但是,应注意的是,如果文件小于此条带大小且小于128K,则RAID下的多个硬盘将无助于耗时的文件读取。
继续检查组成RAID的所有磁盘的状态:
#/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL
......
Drive's position: DiskGroup: 1, Span: 0, Arm: 0
Device 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: 512
Logical Sector Size: 512
Physical Sector Size: 512
Inquiry Data: SEAGATE ST300MM0008 TT31S42310JR
...
...
...
Drive's position: DiskGroup: 1, Span: 0, Arm: 6
Device Id: 7
Raw Size: 279.396 GB [0x22ecb25c Sectors]
Non Coerced Size: 278.896 GB [0x22dcb25c Sectors]
Coerced Size: 278.875 GB [0x22dc0000 Sectors]总共有7个属于DiskGroup 1的硬盘,每个硬盘的大小约为278GB。 6个磁盘的总容量约为1. 6T,实际上仅“浪费”了一个硬盘的容量以确保数据安全!
查询数据还显示了硬盘驱动器的制造商和型号。这些磁盘是希捷的300G机械硬盘,由Google以每分钟10,000转的速度查询。
本文部分
将机械技术与电子技术相比,其稳定性要差得多。因此,具有机械背景的硬盘驱动器运行缓慢且容易损坏。为了解决这个问题,RAID技术应运而生。一定数量的冗余原始存储或验证数据可确保安全性,并且通过添加带有电子基因的缓存,合理安排多个磁盘的机械轴,可以提高磁盘IO的读写速度。在Linux下,您可以使用MegaCli工具检查RAID组情况。强烈建议您自己检查一下!
开发内部力量训练的硬盘相册:
我的官方说法是“开发内在力量训练”,在这里我不仅在介绍技术理论,也不在介绍实践经验。它是将理论与实践相结合,利用实践来加深您对理论的理解,并利用理论来提高您的技术实践能力。欢迎您关注我的官方帐户,并与您的朋友分享~~~
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/dianqi/article-371148-1.html
降息不会对股市产生任何作用
千千