详解Linux 磁盘I/O优化(oracle RAC)

栏目: 数据库 · Oracle · 发布时间: 6年前

内容简介:分享下关于linux磁盘I/0方面的优化,中间插一个rac方面的报错解决。** 动态调整请求队列数来提高效率,默认请求队列数为:128, 可配置512 **

概述

分享下关于 linux 磁盘I/0方面的优化,中间插一个rac方面的报错解决。

详解Linux 磁盘I/O优化(oracle RAC)

文件系统优化

** 动态调整请求队列数来提高效率,默认请求队列数为:128, 可配置512 **

[root@bo queue]# cat /sys/block/sda/queue/nr_requests128 

** read_ahead, 通过数据预读并且记载到随机访问内存方式提高磁盘读操作,默认值 128,ceph配置:8192 **

[root@bo queue]# cat /sys/block/sda/queue/read_ahead_kb128 

** 关闭最后一次访问文件(目录)的时间戳 **

例如:

mount -t xfs -o defaults,noatime,nodiratime /dev/sda5 /data 

** 大文件,大容量,大量文件数建议使用xfs文件系统 **

调整I/O调度算法

详解Linux 磁盘I/O优化(oracle RAC)

磁盘IO调度算法

[root@bo queue]# cat /sys/block/sda/queue/scheduler 
noop anticipatory deadline [cfq] 

centos6.x默认为cfq

调整为deadline

[root@bo queue]# echo deadline > /sys/block/sda/queue/scheduler 
[root@bo queue]# cat /sys/block/sda/queue/scheduler 
noop anticipatory [deadline] cfq 

PS:这里在用redhat6部署rac的时候如果没配置会提示I/0 scheduler的警告,按上面配置就可以解决了。

详解Linux 磁盘I/O优化(oracle RAC)

I/0 scheduler报错

详解Linux 磁盘I/O优化(oracle RAC)

多少个盘写多少个

** I/O调度算法介绍 **

CFQ(完全公平排队I/O调度程序) 默认

特点:

CFQ试图均匀地分布对I/O带宽的访问,避免进程被饿死并实现较低的延迟,是deadline和as调度器的折中.

CFQ赋予I/O请求一个优先级,而I/O优先级请求独立于进程优先级,高优先级的进程的读写不能自动地继承高的I/O优先级.

工作原理:

CFQ为每个进程/线程,单独创建一个队列来管理该进程所产生的请求,也就是说每个进程一个队列,各队列之间的调度使用时间片来调度,

以此来保证每个进程都能被很好的分配到I/O带宽.I/O调度器每次执行一个进程的4次请求.

NOOP(电梯式调度程序)

特点:

在Linux2.4或更早的版本的调度程序,那时只有这一种I/O调度算法.

NOOP实现了一个简单的FIFO队列,它像电梯的工作主法一样对I/O请求进行组织,当有一个新的请求到来时,它将请求合并到最近的请求之后,以此来保证请求同一介质.

NOOP倾向饿死读而利于写.

NOOP对于闪存设备,RAM,嵌入式系统是最好的选择.

电梯算法饿死读请求的解释:

因为写请求比读请求更容易.

写请求通过文件系统cache,不需要等一次写完成,就可以开始下一次写操作,写请求通过合并,堆积到I/O队列中.

读请求需要等到它前面所有的读操作完成,才能进行下一次读操作.在读操作之间有几毫秒时间,而写请求在这之间就到来,饿死了后面的读请求.

Deadline(截止时间调度程序)

特点:

通过时间以及硬盘区域进行分类,这个分类和合并要求类似于noop的调度程序.

Deadline确保了在一个截止时间内服务请求,这个截止时间是可调整的,而默认读期限短于写期限.这样就防止了写操作因为不能被读取而饿死的现象.

Deadline对数据库环境(ORACLE RAC,MYSQL等)是最好的选择.

AS(预料I/O调度程序)

特点:

本质上与Deadline一样,但在最后一次读操作后,要等待6ms,才能继续进行对其它I/O请求进行调度.

可以从应用程序中预订一个新的读请求,改进读操作的执行,但以一些写操作为代价.

它会在每个6ms中插入新的I/O操作,而会将一些小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.

AS适合于写入较多的环境,比如文件服务器

AS对数据库环境表现很差.

** I/O调度算法总结 **

Anticipatory I/O scheduler 适用于大多数环境,但不太合适数据库应用

Deadline I/O scheduler 通常与Anticipatory相当,但更简洁小巧,更适合于数据库应用, DATA/SAS盘

CFQ I/O scheduler 为所有进程分配等量的带宽,适合于桌面多任务及多媒体应用,默认IO调度器

NOOP I/O scheduler 适用于SSD盘,有RAID卡,做了READ的盘

** sysctl.conf针对磁盘优化 **

vm.swappiness = [0 - 10] 默认是60,太高了,如果是缓存服务器建议配置为0

针对固态硬盘优化

1、关闭日志功能

2、fstab里加挂载参数data=writeback

3、启用 TRIM 功能

Linux内核从2.6.33开始提供TRIM支持,所以先运行“uname -a”命令,查看自己的内核版本,如果内核版本低于2.6.33的,请先升级内核。

然后运行“hdparm -I /dev/sda”查看自己的硬盘支不支持TRIM技术,如果支持,你会看到

Data Set Management TRIM supported

如果上面两个条件都满足了,就可以在fstab中添加discard来开启TRIM功能,如:

原始的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 defaults,errors=remount-ro 0 1

改后的UUID=2f6be0cf-2f54-4646-b8c6-5fb0aa01ef23 / ext4 discard,defaults,errors=remount-ro 0 1


以上所述就是小编给大家介绍的《详解Linux 磁盘I/O优化(oracle RAC)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithm Analysis in Java

Data Structures and Algorithm Analysis in Java

Mark A. Weiss / Pearson / 2006-3-3 / USD 143.00

As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop wel......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试