RAID在数据库存储上的应用

御弟哥哥 等级 797 0 0

随着单块磁盘在数据安全、性能、容量上呈现出的局限,磁盘阵列(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在数据库存储上的应用
对于有容灾模式的RAID阵列,某块磁盘损坏时,只要换上新的硬盘即可,阵列系统会自动同步数据到新的硬盘。(不支持热插拔的话,需要先关机再开机)

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

RAID在数据库存储上的应用

3. RAID5
RAID 5 是一种数据安全、性能、容量、成本、可行性都相对兼顾的解决方案,正因此,类似的RAID2、RAID3、RAID4、RAID6很少得以实际应用。
RAID5需要3块及以上的硬盘, 它不是对存储的数据直接进行备份,而是把数据和相对应的奇偶校验信息存储到组成阵列的各个磁盘上,简单来说就是:任意坏掉一块盘时,另外的N-1块盘可以利用奇偶校验信息,把这块坏掉的磁盘上的数据恢复出来。
RAID 5可以理解为是RAID 0和RAID 1的折衷方案,有和RAID 0相近似的数据读取速度,有比RAID1低的容灾能力(RAID5只允许一块磁盘损坏),因为多了奇偶校验信息,写入数据的速度比RAID1慢。

RAID在数据库存储上的应用

4. RAID10
RAID10,名称上便可以看出是RAID0与RAID1的结合体,显然需要至少4块磁盘。不过,先RAID0后RAID1,还是先RAID1后RAID0,是不一样的。

RAID01,是先做RAID0,然后对2组RAID0再做RAID1,假设此时某个RAID0坏掉一块磁盘,这个RAID0随即不可用,所有的IO全部指向剩下的那个RAID0;

RAID在数据库存储上的应用

RAID10,是先做RAID1,然后对2组RAID1再做RAID0,假设此时某个RAID1坏掉一块磁盘,当前RAID1仍然能提供服务,并且另一个RAID1也同时可以坏掉一块磁盘。
RAID在数据库存储上的应用
所以,我们通常选择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. 磁盘读写与数据库的关系**”_中有详细的方法,但通常这个值是相对固定的,不需要重复计算,参考如下:
RAID在数据库存储上的应用
可以发现,同样转数,不同型号的单块磁盘,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开销如下:
RAID在数据库存储上的应用
从图中得到公式:用户读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。

收藏
评论区

相关推荐

RAID在数据库存储上的应用
随着单块磁盘在数据安全、性能、容量上呈现出的局限,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks,RAID)出现了,RAID把多块独立的磁盘按不同的方式组合起来,形成一个磁盘组,以获得比单
5分钟进阶3Par RAID
大家周三好。 今天在贵阳和网友聚会未果(网友临时去紧急处理ORACLE RAC问题去了,哎,IT都是苦逼的命啊)。西瓜哥空着肚子去了机场,发现机场居然有临时工位,太贴心了。本来打算写今天的文章,但是好像不能上传图片,罢了。 回到帝都,发现空中看夜景真是漂亮,灯火通明,美轮美奂。可惜不能开手机拍照。看来APEC和风的效果一样,O(∩\_∩)O哈!
HDD机械硬盘的性能
HDD机械硬盘的性能 ---------- 性能指标: IOPS = 1000 / (寻道时间 Average Seek Time + 旋转延迟 Average Latency ) * **寻道时间**(`Average Seek Time`) 是指将读写磁头(`Disk Head`)移动至正确的磁道上所需要的时间。从公式可以得出
MySQL运维之
**1、mysqldump备份一个数据库** mysqldump命令备份一个数据库的基本语法: mysqldump -u user -p pwd dbname > Backup.sql 我们来讲解一下备份的文件都包含了什么?\-- MySQL dump 10.13 Distrib 5.5.20, for Win32 (x86)\--
Mysql优化理论知识
参考文章 http://blog.51cto.com/lizhenliang/2095526 (1)硬件优化 如果有条件一定要SSD固态硬盘代替SAS机械硬盘,将RAID级别调整为RAID1+0,相对于RAID1和RAID5有更好的读写性能,毕竟数据库的压力主要来自磁盘I/O方面。 Linux内核有一个特性,会从物理内存中划分
Docker在Linux上运行NetCore系列(三)在Linux上使用Docker运行Asp.NetCore
原文: [Docker在Linux上运行NetCore系列(三)在Linux上使用Docker运行Asp.NetCore](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.cnblogs.com%2Falunchen%2Fp%2F10139356.html) > 转发请注明此文章作
Fio
Linux使用FIO测试磁盘的IOPS =================== FIO 安装 ------ wget http://brick.kernel.dk/snaps/fio-2.2.5.tar.gz tar zxvf fio-2.2.5.tar.gz cd fio-2.2.5 ./configure m
Git@OSC 服务器关于 RAID 的一个问题处理
R720 存储服务器配置了 8 个磁盘,购买的时候要求不做任何 RAID,可是出厂的时候还是变成 4 个 RAID 0,在 RAID 管理器里删除 RAID 的时候安装系统无法识别到磁盘。打了戴尔的金牌客服电话了解到具体的解决办法如下: 配置阵列卡遇到的问题:在删除所有的raid后,重启系统,安装时不能识别到物理硬盘。   这个问题是由于阵列卡的不
LVM和RAID
RAID: Redundant Arrays of Inexpensive Disks Independent Berkeley: A case for Redundent Arrays of Inexpensive Disks RAID 提高IO
Linux就该这么学
#### **内容简介** 本书源自日均阅读量近万次火爆的线上同名课程,口碑与影响力俱佳,旨在打造简单易学且实用性强的轻量级 Linux 入门教程。 本书基于红帽 RHEL 系统编写,且内容通用于 CentOS、Fedora 等系统。本书共分为20章,内容涵盖了部署虚拟环境、安装 Linux 系统;常用的 Linux 命令;与文件读写操作有关的技术;使用
Linux运维常见面试题之精华收录
Linux运维常见面试题之精华收录 ================= **1、什么是运维?什么是游戏运维?** 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常, 在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术 运维又包括很多种,有DBA运维、网站运维、虚
OpenStack块存储nova
对swift对象存储的内部原理和相关技术可以查找对象存储、一致性哈希等文章,新浪有几篇技术分享介绍的很好,推荐看一看。 **一、相关概念** **LVM存储常用术语** 物理存储介质(Physical Media):物理存储设备,如磁盘或者磁盘上的分区,是存储系统的最底层实体。 **物理卷(PV,Physical Volume)**:硬盘分区或从逻
物联网的基本概念及其实际运用
物联网(The Internet of things)的定义于1999年明确提出,其界定非常简单,全部物件都根据射频识别技术等信息内容感测器设备与网络联接,进而完成智能识别和管理方法。就是指各种各样信息内容感知机器设备,如射频识别技术(RFID)机器设备,红外线传感器,卫星导航系统,激光扫描仪等设施与网络融合产生的极大互联网。在其中最重要的工艺之一是射频识别
物联网的基本概念及其实际运用
(The Internet of things)的定义于1999年明确提出,其界定非常简单,全部物件都根据射频识别技术等信息内容感测器设备与网络联接,进而完成智能识别和管理方法。物联网就是指各种各样信息内容感知机器设备,如射频识别技术(RFID)机器设备,红外线传感器,卫星导航系统,激光扫描仪等设施与网络融合产生的极大互联网。在其中最重要的工艺之一是射频识别