高性能MySQL - RAID性能优化

时间:2021-05-29 06:06:09

前言:

今天网易数据库管理员笔试考了RAID的题目,之前不够了解。所以写得很差。现在根据高性能MySQL书上的内容来总结一下。

什么是RAID:

Redundant Array of Independent Disk
独立冗余磁盘阵列

由美国加州大学伯克利分校提出。简单地解释,就是将N台硬盘通过RAID Controller(分Hardware,Software)结合成虚拟单台大容量的硬盘使用。RAID的采用为存储系统(或者服务器的内置存储)带来巨大利益,其中提高传输速率和提供容错功能是最大的优点。
高性能MySQL - RAID性能优化

RAID 可以帮助做冗余、扩展存储容量、缓存、以及加速。

根据磁盘陈列的不同组合方式,可以将RAID分为不同的级别。磁盘阵列中针对不同的应用使用的不同技术,称为RAID level,而每一level都代表着不同技术,目前业界公认的标准是RAID 0~RAID 5。

RAID0 - 5

1. RAID 0

RAID 0 是成本最低和性能最高的RAID配置(不考虑数据恢复的因素),因为RAID 0 没有冗余,建议只在不担心数据丢失的时候使用。

2. RAID 1

RAID 1 在很多情况下提供很好的读性能,并且在不同的磁盘间冗余数据,所以有很好的冗余性。RAID1 在读上比RADI 0快一些。非常适合存放日志或者类似的工作,顺序写性能比较好通常也是只有两块磁盘又需要冗余的低端服务器的选择。
3. RAID 5
通过奇偶检验块把数据分散到多个磁盘,这样,如果任何一个盘的数据失效,都可以从奇偶校验块中重建。但如果两个盘失效了,则整个卷的数据无法恢复。就每个存储单元的成本而言,这是最经济的冗余配置,整个阵列只额外消耗了一块盘的存储空间。

RAID5 随机写是昂贵的,每次写需要在底层磁盘发生两次读和两次写以计算和存储校验位。顺序写,随机读,顺序读会好一些。所以RAID 5用于存放数据或者日志,最好是以读为主的业务。

RAID 5最大的性能消耗发生在磁盘失效时,因为数据需要重分布到其他磁盘。如果重建数据时还保持服务器在线服务,性能就会比较差,最好有一些机制可以做故障迁移,一台有问题不再提供服务,由另一台接管。

RAID 10

对读写都有良好的扩展性。相对于5,重建简单快速。并且可以在软件层很好地实现。失去一块磁盘时,性能下降还是很明显的,因为条带可能成为瓶颈。(少了一块只能去一块盘读)

RAID 50

RAID 50 由条带化的RAID 5 组成。如果有很多盘的话,这可能是RAID 5 的经济性和RAID 10的高性能之间的一个折中。主要用处是存放庞大的数据集,例如数据仓库或非常庞大的OLTP系统。

说了那么多,不如一张图:
高性能MySQL - RAID性能优化

RAID的故障转移、恢复和镜像
RAID除了0之外都提供了冗余,但不要低估磁盘同时发生故障的可能性。RAID不能消除甚至减少备份的需求。并且需要监控系统来监控磁盘。