对于数据库这种特殊应用IOPS往往会成为瓶颈,突破的这个瓶颈的有效方法不多,软件方面主要是读写分离,垂直拆分,分区表技术,cluster。硬件方面主要是raid,和SSD。
通常都是软件和硬件同时优化,相对于成考考虑,硬件使用raid的情况较多,今天分享下硬件raid知识。
什么是raid?
raid可以提供数据备份技术、扩展存储空间和提高存储性能。以下是常用的RAID raid 0,raid 1,raid0+1,raid1+0,raid 5简单介绍,详细的知识可以google下,或参照:http://www.cnblogs.com/Frank-Zhao/archive/2012/04/26/2471229.html。
RAID 0
这种RAID级别从写操作方面提供最高的吞吐量,但是它存在内部冗余。因为备份文件是你保护数据的底线,而数据集却没有冗余,所以我不推荐采用这种类型。
RAID 1
这种RAID级别也提供了较高级别的I/O吞吐量和一份冗余拷贝。缺点是采用RAID 1的数据分区大小会受你的物理磁盘大小的限制。一种选择是把你的备份文件写到多个彼此独立的RAID 1阵列,可能通过利用不同的控制器或者通道来进一步提高I/O吞吐量。
RAID 5
采用RAID 5会有一定的写操作性能损失,因为需要做奇偶性校验。如果你真的想让备份过程运行的更快,这种RAID级别可能行不通。
RAID 10
采用RAID 10方案,你会同时得到RAID 0和RAID1两种方案的优点。缺点是实施成本非常昂贵。但是优点是你的I/O吞吐量会非常快。既然RAID 10使用了阵列中的所有驱动器,来获得更高的I/O利用率,阵列中的驱动器越多,就越能增加性能。
除了RAID级别,这里还有一些其他因素需要考虑:
控制器
在设置你的RAID阵列时,要尽量把不同类型的I/O交互孤立到不同的控制器卡或控制器卡的不同通道上。而且,控制器卡越好,性能就越好。
磁盘速度
磁盘驱动器有多种速度。SCSI驱动器目前运行速度最快可以达到每分钟15千转,比IDE驱动器更快。在大部分情况下,企业级服务器可能采用SCSI技术,这是更好的选择。
磁盘容量
你现在可以得到几个GB大的驱动器。如果你想存储大量不经常访问的数据,那这没有问题。但是对于要尽可能快速地写大量数据的操作,磁盘容量大并不能带来帮助。增加阵列中磁盘数比增加几块容量非常大的磁盘会更有优势。
对于数据库应用,通常我们会选择raid1+0。他在磁盘空间成本和安全性方面和raid5差不多,但是在性能方面(IOPS)却明显优越于raid5,所以对于OLTP系统,我们一般使用raid1+0。
下面我们开始进入正题,raid硬件知识,当然,我们只是站在应用的角度去探讨raid硬件设备的性能和安全。
缓存
对于一块中高端的RAID,缓存是必不可少的。一般raid卡使用的DDR2内存颗粒,和我们的内存条几乎相同,adaptec的缓存叫DRAM,根据硬件技术的发展DDR3肯定会跟上的。
说到缓存技术就必须说一下两种缓存模式。
write through 系统的写入请求直接写入硬盘,安全性很高,性能很低。
write back 系统的写入请求先存放到缓存,再根据时机统一回写到硬盘中,由于缓存的写速度远远高于磁盘,所以这种方式性能可以大大提高。
BBWC
为了挖掘更好的RAID写入性能,饥渴的DBA肯定想打开write back功能,让咱的数据库飞起来。但是这个时候出现了一个非常严重的安全问题,就是突然断电导致数据丢失的问题(上面提过raid卡使用的是RAM存储器,断电丢失数据,但是系统层已经认为这些数据已经写入硬盘,所以系统层不能提供任何保护措施),数据丢失对于DBA的亲们肯定是不能接收的。那该如何呢?
针对这个问题出现了BBWC–Battery-Backed Write Cache.BBWC的核心就是BBU电池备份单元,它就是一块锂电池,在系统开机的情况下处于充电状态,一旦遇到断电,就会给缓存提供刷新所需的电流,保持数据不丢失,直到下次开机时把数据写回到磁盘上。有的BBU和raid卡的内存做在一个模块上,有些是raid卡通过一个连接线连接一个电池。
BBWC的缺点:
1、每隔1-2年需要跟换电磁,维护麻烦,管理员容易忘记这个事情,如果机器不很远的机房单独去机房换电池,成本就高了。
2、更换电磁需要停机,并且需要把机器下架,拆开。
3、由于电池也是一个故障点,所以需要管理员花更多的时间来关心电磁的工作情况
4、电池能够提供的供电时间最多72小时,初始化需要充电数小时才能使用
5、电池不环保
FBWC
针对BBWC的缺点,出现了FBWC –Flash-Based Write Cache。
FBWC的原理就是再系统以外停电的时候,利用一组“超级电容”中存储的电量,在较短的时间内(大约1分钟),将缓存中的数据备份到RAID卡上的大容量FLASH闪存中,直到下次开机再把数据回写到硬盘中。
FBWC和BBWC几乎完成的目的是一样的,但是实现方式不同。
FBWC的优点:
1、不需要维护,这点就把管理员们解决出来了
2、数据可以在flash中保存很多年
3、系统启动即可用
4、环保