1. RAID在数据库存储上的使用51CTO博客 - AG环亚娱乐

1. RAID在数据库存储上的使用51CTO博客

2019-03-06 10:20:29 | 作者: 奥然 | 标签: 数据,磁盘,存储 | 浏览: 1591

跟着单块磁盘在数据安全、功能、容量上呈现出的限制,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks,RAID)呈现了,RAID把多块独立的磁盘按不同的办法组合起来构成一个磁盘组,以取得比单块磁盘更高的数据安全、功能、容量。


一. 常见的RAID 等级

RAID有RAID0~RAID7几种等级,别的还有一些复合的RAID形式,比方:RAID10、RAID01、RAID50、RAID53。常用的RAID形式有RAID0、RAID1、RAID5、RAID10。


1. RAID0

RAID0也就是常说的数据条带化(Data Stripping),数据被涣散存放在阵列中的各个物理磁盘上,需求2块及以上的硬盘,本钱低,功能和容量随硬盘数递加,在一切的RAID等级中,RAID 0的速度是最快的,可是RAID 0没有供给冗余或过错修正才干,假如一个磁盘(物理)损坏,则一切的数据都无法运用。

关于有容灾形式的RAID阵列,某块磁盘损坏时,只需换上新的硬盘即可,阵列体系会主动同步数据到新的硬盘。(不支持热插拔的话,需求先关机再开机)


2. RAID1

RAID1也就是常说的数据镜像(Data Mirroring),2块及以上的硬盘(偶数个),被分为2组,数据在每组磁盘中各有一份,若其间一组有磁盘损坏,另一组能够确保数据拜访不会中止。RAID1同RAID0相同,有很好的读取速度,可是写的速度,有所下降。


3. RAID5

RAID 5 是一种数据安全、功能、容量、本钱、可行性都相对统筹的解决方案,正因而,相似的RAID2、RAID3、RAID4、RAID6很少得以实践运用。

RAID5需求3块及以上的硬盘, 它不是对存储的数据直接进行备份,而是把数据和相对应的奇偶校验信息存储到组成阵列的各个磁盘上,简略来说就是:恣意坏掉一块盘时,别的的N-1块盘能够运用奇偶校验信息,把这块坏掉的磁盘上的数据康复出来。

RAID 5能够理解为是RAID 0和RAID 1的折衷方案,有和RAID 0附近似的数据读取速度,有比RAID1低的容灾才干(RAID5只允许一块磁盘损坏),由于多了奇偶校验信息,写入数据的速度比RAID1慢。



4. RAID10

RAID10,称号上便能够看出是RAID0与RAID1的结合体,明显需求至少4块磁盘。不过,先RAID0后RAID1,仍是先RAID1后RAID0,是不相同的。


RAID01,是先做RAID0,然后对2组RAID0再做RAID1,假定此刻某个RAID0坏掉一块磁盘,这个RAID0随即不可用,一切的IO悉数指向剩余的那个RAID0;


RAID10,是先做RAID1,然后对2组RAID1再做RAID0,假定此刻某个RAID1坏掉一块磁盘,当时RAID1依然能供给效劳,而且另一个RAID1也一起能够坏掉一块磁盘。

所以,咱们一般挑选RAID10,而不是RAID01。


5. 不同RAID等级的读写功能

假定都用4块磁盘,RAID0,RAID1,RAID5,RAID10在多线程/多CPU情况下,都能够一起读取多块磁盘,读的功能都很不错;

写的功能(IOPS)顺次递减,大致是:RAID0 > RAID10 > RAID1 > RAID5。


二. RAID的空间核算

在做RAID时,一般挑选一致规范的磁盘,假如真的有不同空间巨细、不同读写速度的磁盘,阵列体系会以空间小、速度低的为规范,空间大、速度高的磁盘向下兼容。比方:100G,50G的2块磁盘做RAID0,得到的空间为50G*2 = 100G。

RAID的空间核算公式:

RAID0的空间:Disk Size * N

RAID1的空间:(Disk Size * N)/2

RAID5的空间:((N-1)/N) * (Disk Size * N) = (N-1) * Disk Size

RAID10的空间:(Disk Size * N/2)/2 + (Disk Size * N/2)/2 = (Disk Size * N)/2


假定都用4块磁盘,每块磁盘都为100G

RAID0的空间:100G * 4 = 400G

RAID1的空间:(100G * 4)/2 = 200G

RAID5的空间:(4-1) * 100G = 300G

RAID10的空间: (100G * 4)/2 = 200G


三. RAID的IOPS核算

1. 单块硬盘的IOPS是固定的

关于单块磁盘IOPS的核算,在” 0. 磁盘读写与数据库的联系”中有具体的办法,但一般这个值是相对固定的,不需求重复核算,参阅如下:

能够发现,相同转数,不同类型的单块磁盘,IOPS都维持在一个相似的数量级。


2. RAID的IOPS核算

有了单块磁盘的IOPS,那么多块磁盘的IOPS核算就很简略了,比方,关于RAID0或许单纯串联磁盘(JBOD: just a bunch of disks)的存储来说,10块175 IOPS的磁盘的总IOPS就是10*175 = 1750 IOPS。

可是关于其他RAID等级并不是这样,由于RAID有屡次写IO的开支存在,简略来说就是:对RAID主张一次写IO,RAID内部会有不止一次的写IO发作,RAID内部的IO开支如下:

从图中得到公式:

用户读IO+N*用户写IO = 总IOPS (N就是RAID内部的IO开支次数)


假定用户读写恳求各一半(50%),相同仍是以10块175 IOPS的磁盘为例:

50% * 用户总IO恳求数  + N * (50% * 用户总IO恳求数) = 175 IOPS * 10


以RAID1为例,那么N = 2,上式变为:1.5 *用户总IO恳求数 = 1750 IOPS

用户总IO恳求数 = 1167 IOPS

这就是10块175 IOPS的磁盘做了RAID1,所能供给的IOPS。


3. RAID的IOPS核算在实际中的运用

在实践运用中,咱们一般不是核算现有RAID的IOPS,而是反过来:挑选好磁盘规范,RAID形式,测验出体系的读写份额,体系需求到达的IOPS,然后看看,需求多少块硬盘来完结阵列,才干到达这样的IOPS需求?

假定:挑选了175 IOPS的磁盘,做RAID1,体系读写份额为60%:40%,体系需求到达2000 IOPS

问:要装备多少块这样规范的硬盘?

把上面的公式改为通用公式:

reads * Workload_IOPS  + writes_impact * (writes * Workload_IOPS) = 175 * M

60% * 2000 + 2 * (40% * 2000) = 175 * M

M = 16 (也就是说,要到达指定的2000 IOPS,RAID1需求装备16块175 IOPS的磁盘)


或许有人会觉得,体系的读写恳求份额,体系需求到达多少IOPS,并不知道,假如没有前期测验的话,那么只能依据经历来估测了。


四. RAID在数据库存储上的运用

以SQL Server数据库为例,看下不同的RAID等级适用于什么场景:

RAID0,由于没有容灾机制,很少被独自运用。

有人提到过tempdb能够放在RAID0,由于tempdb不必忧虑丢数据,事实上tempdb毛病了,SQL Server是不能正常运转的,所以这么做是不引荐的,主张把tempdb当成用户数据库来对待;


RAID1,操作体系、SQL Server实例、日志文件;

RAID5,数据文件,备份文件;

RAID10,一切类型都适用,不过考虑本钱,一般不会悉数运用RAID10。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章