数据库最终总是要将数据储存到可以长久保存的

作者: 网络时代  发布:2019-12-05

二 .磁盘阵列

       RAID是 Redundant array of inexpensive disks的缩写,通常叫磁盘阵列。 RAID就是按照一定策略将数据分布到若干物理磁盘上,这样不仅增强了数据存储的可靠性,而且可以提高数据读写的整体性能,因为能过分布实现了数据的"并行"读写。

  常见的RAID级别比较如下图所示:
    图片 1

  2.1 如何选择RAID级别

              了解各种RAID级别的特性后,我们就可以根据数据读写的特点,可靠性要求,以及投资预算等来选择合适的RAID级别比如:

              (1) 数据读写都很频繁,可靠性要求也很高,最好选择RAID 10。

              (2) 数据读很频繁,写相对较少,对可靠性有一定要求,可以选择RAID 5。

              (3) 数据读写都很频繁,可靠性要求也很不高,最好选择RAID 0。

  2.3 软RAID和硬 RAID

              最初,RAID都是由硬件实现的,要使用RAID,至少需要有一个RAID卡。现在一些操作系统中提供的软件包,也模拟实现了一些RAID特性,虽然性能上不如硬RAID,但相比单个磁盘,性能和可靠性都有改善。
  RAID卡如下图所示:
图片 2

  关于软RAID,这篇中有介绍:

   转载来源 Windows Server 2008 R2做软RAID实战文章  

  总结:现在公司一般都是用硬RAID。以我们公司来说是用RAID 10,也就是RAID 1 RAID 0组合。    

mysql学习记录(二十一)--调整linuxI/O以提高mysql运行效率

一、概念:
1.使用磁盘阵列
RAID译成中文为“廉价磁盘冗余阵列”。简称“磁盘阵列”
2.常见raid级别:
a.raid 0:条带化,将数据依次分布
b.raid 1:磁盘镜像,两个磁盘一组,写入时两个一起写入,读时从任意一个磁盘读
c.raid 10:先做磁盘镜像又做条带化,既有raid 1的可靠性和raid 0的优良并发性能
d.raid 4:像raid 0一样对磁盘组条带化,另需要加一个磁盘用来写各Stripe的校验纠错数据
e.raid 5:将每一个条带的校验纠错数据块也分别写到各个磁盘,各不是写到一个特定的磁盘
3.选择raid级别:
a.读写频繁,可靠性要求高,raid 10
b.读频繁而写较少,对可靠性有一定要求,raid 5
c.读写频繁,可靠性要求不高,rand 0
4.虚拟文件卷或软raid
a.linux下的逻辑卷系统lvm2,支持条带化
b.linux下的md驱动,支持raid 0,raid 1,raid 4,raid 5,raid 6
5.使用symbolic links分布I/O
a.可以利用操作系统的符号连接将不同的数据库、表或索引指向不同的物理磁盘,从而达到分布磁盘I/O的目的
b.将一个数据库指向其他物理磁盘
c.将MyISAM(其他存储引擎的表不支持)表的数据文件或索引文件指向其他物理磁盘
1)对于新建的表可以在create table中增加data directory和index directory
2)对于已有的表可以将数据文件或索引文件转移到目标磁盘,但表定义文件必须位于mysql数据文件目录下,不能用符号连接
6.禁止操作系统更新文件的atime属性
7.调整I/O调度算法:
a.NOOP算法:不对I/O请求排序,更适合随机设备。
b.最后期限算法:当系统存在大量顺序请求的时候,Deadline可能导致请求无法被很好的排序,引发频繁寻道。
c.预期算法:基于预测的I/O算法,适合写入较多的环境,不适合Mysql等随机读取较多的数据库环境
d.完全公平队列:将I/O请求按照进程分别放入进程对应的队列中。CFQ以时间片算法为前提,轮转调动队列
8.RAID卡电池充放电问题:
a.raid卡电池会自动充放电
9.RAID卡缓存策略:
10.RAID卡电池充放电带来的I/O性能波动
a.根据raid卡电池下次充放电的时间,定期在业务量较低的时候,提前进行充放电。
b.设置Forced WriteBack写策略,此时一定要有UPS之类的后备电源
11.NUMA架构优化:
a.多处理器结婚(SMP):对此进行扩展的方法有增加内存、使用更快的CPU、增加CPU、扩充I/O、增加更多的磁盘
b.SMP架构导致在扩展能力上被限制,NUMA架构出现了。NUMA把一台计算机分成多个节点,每个节点内部拥有多个CPU,节点内部使用共有的内存控制器,节点之间是通过互联模块进行连接和信息交互
c.NUMA的内存分配策略有以下4种:
1)缺省:总是在本地节点分配
2)绑定:强制分配到指定节点上
3)交叉:在所有节点或者指定节点上交叉分配内存
4)优先:在指定节点上分配,失败则在其他节点上分配
d.若单机只运行一个mysql实例,可以选择关闭NUMA
1)在BIOS中设置关闭
2)在/etc/grub.conf的kernel行追加numa = off
二、实践:
[email protected]:~$ dmesg | grep -i scheduler
[ 1.124750] io scheduler noop registered
[ 1.124754] io scheduler deadline registered (default)
[ 1.124837] io scheduler cfq registered
[email protected]:~$ more /sys/block/sda/queue/scheduler

noop [deadline] cfq

备注:由于各种原因,其他本节相关实验等过段时间再做。

一、概念: 1.使用磁盘阵列 RAID译成中文为廉价磁盘冗余阵列。简称磁盘阵列 2.常...

RAID的实现模式

Software RAID:

软件磁盘阵列,由CPU处理和协调一个RAID里面各个硬盘的作业,这样就会给CPU带来较多的运算压力,分为3种:

1)基于主板的的磁盘阵列:通常上是由主板上的芯片组提供RAID功能。

2)硬件辅助磁盘阵列:需要RAID卡和相关厂商提供的驱动程序,RAID功能是由驱动程序和CPU运算来提供

3)操作系统的RAID功能:Linux、windows Server等操作系统内置的RAID功能

虽然软RAID实现的有多种,但是在生产环境还是不建议使用的。

Hardware RAID:
硬件磁盘阵列,在RAID卡上内置了CPU处理器,这样就不占用服务器的CPU了。一般硬件磁盘阵列都会有备份的电源模块和NVRAM(非易失性内存),当系统断掉后,备份电源开始供电,将硬盘读写的日志保存在内存中,当系统恢复,备份电源关闭供电,再在NVRAM读取日志数据,继续完成上次断电前没有完成的作业。

 

● 支持RAID0、RAID1、RAID4、RAID5、RAID6;

一.概述

  作为应用系统的持久化层,不管数据库采取了什么样的Cache机制,数据库最终总是要将数据储存到可以长久保存的I/O设备磁盘上。但磁盘的存取速度显然要比cpu,ram的速度慢很多。因此,对于比较大的数据库,磁盘I/0 一般总会总为数据库的一个性能瓶颈。
  ram:又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
  我们章节前面提到的sql优化,数据库对象优化,数据库参数优化,以及应用程序优化等。大部分都是想通过减少或延缓磁盘读写来减轻磁盘I/O的压力及对性能的影响。本章从硬件方面出发,描述下磁盘陈列(RAID),从等更底层的方面来介绍提高磁盘I/O能力。

RAID的硬盘组合方式有:RAID-0,RAID-1,RAID-2,RAID-3,RAID-4,RAID-5,RAID-6,RAID-7,RAID10,RAID-01,RAID-50,RAID-53,RAID-60,JBOD。

磁盘利用数:n(假设有n个磁盘)。

那么什么是RAID呢?简单的来讲就是把多个硬盘组合起来,成为一个硬盘阵列组,操作系统会把它当做是一个硬盘,其性能能够达到甚至超过单个昂贵容量大的硬盘。RAID提供了多种硬盘组合的方式,相比单个硬盘来说,提高了硬盘得I/O能力。多个磁盘之间相互冗余,提高了耐用性。

特点:使用磁盘镜像(disk mirroring)的技术,在一个磁盘上存放数据的同时也在另一个磁盘上写一样的数据。因为有了备份磁盘,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。尽管其写入数据的速度比较慢,但因其数据是以分段的方式作储存,因而在读取时,它几乎和RAID 0有同样的性能。

常用RAID介绍

常用的RAID有:RAID0,RAID-1,RAID-5,RAID6,RAID-10,RAID50。

 

RAID0

RAID0,也称条带卷(striping)。在RAID0中,数据会被切成片,按一定顺序会被写到所有的磁盘里面,如下图:

若一片数据被切割成了A1-A8,将存储在一个由2块Disk组成的RAID0,那么第一段数据块A1会被存储在Disk0中,第二段数据块A2会被存储在Disk1中,第三段数据块会被存储在Disk0中,以此类推,这一片数据会被均分到2块磁盘上。

图片 3

RAID0的优缺点:

1)速度快,写和读的能力得到了提高;

2)RAID0没有冗余的能力,一旦一块磁盘出现了故障,则所有的数据都将不会恢复;

3)RAID0需要N块磁盘才能实现(N>=2);

4)能够存储数据的大小为N*min(S1,S2,S3,S4....)

在RAID0中有两个重要的参数:

条带宽度:stripe width,它指的是可以被并行写入的数据块的个数,也就是实现RAID0中磁盘的个数;

条带大小:stripe size,它指的是每次写入磁盘的数据块的大小,大小一般为2KB或者512KB甚至更大,size越小,数据被分割的次数就越多。stripe size对性能是有一定的影响的,在生产环境中,需要调整好。

 

 RAID1

RAID1,镜像化,在RAID1中,数据会被复制成多份,存储在多个磁盘上,如下图:

若一片数据将要被存储,数据会被复制成多份(取决RAID1的磁盘个数),然后存储到每一个磁盘上。

 图片 4

 RAID1的优缺点:

1)冗余性和数据的可靠性最高,只要不是磁盘同时损坏了,一般都不会带来数据丢失的问题;

2)RAID1的容量取决容量最小的那个磁盘,写入速度也是取决于最小的那个磁盘,较大的磁盘的剩余空间可       以分区使用,不会造成浪费;

3)RAID1的读取速度理论上来说是磁盘个数的倍数;

4)RAID1需要N块磁盘才能实现(N>=2)

5)能够存储数据的大小为min(S1,S2,S3...)

 

 RAID3

RAID3,数据类似于RAID0,被条带化的存储在多个磁盘中,数据以字节为单位,与RAID0不同的是,RAID3单独使用了一块独立的磁盘用来存储数据的奇偶校验值,如下图所示:

数据被切片存储在Disk0-2上,同时计算处奇偶校验值存储在Disk3上,这样即使Disk0-2中损坏一块磁盘,也能根据奇偶校验值得到损坏磁盘的数据。

 图片 5

RAID3的优缺点:
1.较高的容错能力;

2.不适合写入操作较多的情景,会给校验盘带来一定的负载,适合读取操作较多的应用环境;

3.RAID3需要N块磁盘(N>=3);

4.能够存储数据的大小为(N-1)*min(S1,S2,S3,S4....)。

 

 RAID4

和RAID3类似,RAID4不是以字节为存取单位,RAID4的数据以块(一般为512字节)为单位,如下图:

以块为单位带来的好处就是,减少了奇偶检验的次数,比如,如果一段数据的大小为10个字节,在RAID3上可能需要计算2次奇偶检验值了,但是在RAID4上,10个字节都会被放在第一个磁盘上,并不需要计算。

 图片 6

 RAID4的优缺点:

1.较高的容错能力;

2.提高了小量数据的I/O能力;

3.RAID4需要N块磁盘(N>=3);

4.能够存储数据的大小为(N-1)*min(S1,S2,S3,S4....)。

 

RAID5

RAID5可以理解成是RAID0和RAID1的折中方案,把数据条带化后存储,并且将数据奇偶检验值存储在所有的硬盘上,如下图:

数据被条带化存储到了磁盘上,并且每个磁盘上都能够存储奇偶检验值,其读写速度和RAID0差不多,可能写的时候要慢一点,比较要计算奇偶检验,这样,即使坏掉一块磁盘,只需要更换上好的磁盘,RAID会利用剩下奇偶检验去重建磁盘上的数据。

 图片 7

 RAID5的优缺点:

1)较高的容错能力;

2)读写速度快;

3)RAID4需要N块磁盘(N>=3);

4)能够存储数据的大小为(N-1)*min(S1,S2,S3,S4....)。

 

 RAID6

与RAID5类似,只是增加了第二个独立的奇偶检验信息块,使用了两种不同的奇偶检验算法,如下图所示:

数据仍然是被条带化得存储在磁盘上,但是会计算出两个独立的奇偶检验值,相对于RAID5来说有更多的I/O操作和计算量,所以RAID6通常不会以软件来实现,一般会使用硬件实现,RAID6也是最常见的磁盘阵列。

 图片 8

 RAID6的优缺点:

1)较高的容错能力

2)同一RAID6中最多运行同时损坏2块磁盘,更换磁盘后,数据将被重新计算写入;

3)RAID6需要N个磁盘(N>=4);

4)RAID容量为(N-2)*min(s1,s2,s3,...)

 

 RAID 01

RAID 01是一种混合的磁盘阵列,即是RAID0和RAID1的混合,先做条带,再做镜像:

RAID01中,同组RAID0只要出现一个磁盘损坏,那么这个RAID 0就不能你使用了,值剩下其他组的磁盘运作,可靠性较低。

 图片 9

 RAID01的优缺点:

1)数据可靠性低

2)RAID01需要N个磁盘(N>=4)

更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2017-09/146900p2.htm

图片 10

应用领域:数据库、金融系统等一些对数据有着高可靠性要求的领域。再者就是系统中写数据量比较少,而读数据量又比较多的情况下可以采用这一模式。

独立硬盘冗余阵列(RAID,Redundant Array of Independant Disks),旧称为廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks)。1987年美国加州伯克利分校的一篇名为《A Case for Redundant Arrays of Inexpensive Disk(RAID)》论文诞生,这标志着RAID技术的开始。

磁盘阵列根据其使用的技术不同而划分了等级,称为RAID level,目前公认的标准是RAID 0~RAID 5。其中的level并不代表技术的高低,RAID 5并不高于RAID 4 ,RAID 0并不低于RAID 2 ,至于选择哪一种RAID需视用户的需求而定。下面分别对常用的RAID 0、RAID 1、RAID 5进行简单的介绍。

 

特点:以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个磁盘上。这样,任何一个磁盘损坏,都可以根据其他磁盘上的校验位来重建损坏的数据。并行读写数据,性能也很高。

● 内核版本为2.6.9-5.EL;

作为一个面向服务器的网络型操作系统,Linux对数据的安全和存取速度给予了高度重视,从2.4版内核开始Linux就实现了对软件RAID 的支持,这让我们可以不必购买昂贵的硬件RAID设备,就能享受到增强的磁盘I/O性能和可靠性,进一步降低了系统的总体拥有成本。下面就让我们看一个 Redhat Linux AS 4下的软件RAID配置实例吧。

本文由巴黎人游戏官网发布于网络时代,转载请注明出处:数据库最终总是要将数据储存到可以长久保存的

关键词: