1、问题概述

某客户有一台Exadata X2-2,每个计算节点是4块普通的本地SAS硬盘做成的RAID5,然后在RAID5的本地硬盘上创建了一个文件系统来存放DSG数据同步软件,在后续的运维过程中,发现DSG数据同步软件在进行数据同步时的延时非常严重。

DSG进行检查和性能分析后,确认是由于Exadata的本地硬盘提供的IOPS无法满足DSG软件的要求,大量的时间都在等待本地磁盘的读写IO上。

通过磁盘性能分析工具也可以发现,本地盘的IO使用率基本上是在90%以上,严重时长时间100%,客户希望提供一个完整的解决方案,能解决Exadata上本地磁盘性能太差的问题。

2、解决方案

2.1 方案思路

我们知道,X2-2的计算节点使用的是4块转速为10k的SAS盘,这样的低性能磁盘,无论怎样折腾,它的性能也不会太高,肯定无法满足DSG软件的要求,这就只能选择在计算节点上选择SSD固态硬盘。

如果方案选择使用SSD固态硬盘,则后续的一系列问题必须进行确认:

1、计算节点的硬盘背板是否有多余的插槽?

2、计算节点是否支持SSD固态硬盘?

3、计算节点的RAID卡支持哪些RAID类型?

2.2 硬盘背板是否存在空余插槽

查看SUN X4170 M2的官方手册,我们可以找到计算节点硬盘背板的一些参数指标,如下图所示:

 

Disk Backplane

Option #

Manufacturing Part #

Description

Previous Part #

n/a

7051678 9 [F]

8-Slot Disk Backplane, SATA DVD

511-1283 [F]

从以上指标信息,我们可以看出,exadata x2-2计算节点的硬盘背板上一共有8个硬盘插槽,目前raid 5的四块硬盘已经用掉四个槽位,还有四个空余槽位可以用来扩容新的硬盘。

同样,也可以看出SUN X4170 M2计算节点硬盘背板的pn 号为:7051678。

2.3 硬盘背板是否支持SSD

继续查看SUN X4170 M2的官方手册,我们可以看到PN号为7051678的硬盘背板支持的SSD硬盘类型,具体如下图所示:

 

Intel SSDSA2BZ300G3 [Inquiry Unknown] (300GB - 2.5" Solid State - SATA Disk)

n/a

541-2123

Marlin 2.5" Bracket

n/a

XRA-ST2CF32G2SSD-N [S]

540-7841 [C]

32GB Solid State SATA Drive Assembly

n/a

371-4196

Intel SSDSA2SH032G1SB [Inquiry Unknown] (32GB - 2.5" Solid State - SATA Disk)

n/a

541-2123

Marlin 2.5" Bracket

n/a

从以上表格可以看出,最大支持300GB SSD固态硬盘。

注:其实上是否最大只支持300GB的SSD?其实不是这样的,经过测试,1TB的SSD固态硬盘都是支持的。

2.4 方案选择

通过以上收集的信息,我们有两种方案可供选择。方案一:将当前计算节点操作系统的四个插槽的SAS盘全部更换为SSD盘。方案二:只是在富余的插槽上新插入一块SSD盘。下面,我们来对比方案一和方案二两种方案的优缺点。

方案一:

优点:

1、系统中仍然只会存在一个RAID5的逻辑盘,这个RAID5由4块SSD组成,这种方式对日后的运维和升级基本没有影响。

2、4块SSD组成的逻辑盘,所以整体的IOPS和MBPS非常高。

缺点:

1、一个计算节点就需要4块SSD盘,所以整体的费用会比较高。

2、整个方案操作过程会比较复杂,风险也相对较高。因为需要在线拔盘,插盘,磁盘重组,且一次只能操作一块硬盘,如果在插盘并重组过程中,其它磁盘出现故障,则会导致整个RAID5损坏,操作系统无法启动。

方案二:

优点:

1、一个计算节点只需要1块SSD盘,所以整体费用比较便宜。

2、整个方案操作过程简单且无风险。因为只会对新插入的SSD进行操作创建成RAID0,并创建VG和文件系统,对操作系统所在的RAID5无任何影响。

缺点:

1、因为新插入的SSD盘会做成RAID0,所以系统中会有一个RAID5,还有一个RAID0。这种定制的方式会影响后期的存储软件升级。同时,日常的巡检工具exachk也会出现误报。

基于综合考虑,最终选择了第二种方案,即每个计算节点只增加1块SSD盘,做成RAID0给DSG软件使用。

3、添加SSD硬盘

3.1 raid卡支持的raid类型

当进行虚拟驱动器(Virtual Drive)RAID创建时,我们需要注意的是RAID对底层物理磁盘个数的要求,具体如下图所示:

RAID型号

最少磁盘数

RAID0

1

RAID1

2

RAID5

3

RAID6

4

在方案中,我们在每个计算节点只插入一块SSD磁盘,对应上面的图可以看出,只能做成RAID0方式,RAID0其实是对磁盘做条带化,而没有数据的保护措施,也即这块磁盘损坏,则对应的RAID0也损坏,会造成数据丢失。而在方案中,我们仍然选择每个计算节点只插入1块SSD盘,是因为DSG软件的数据冗余由DSG软件自身来保证,或者也可以说是DSG软件的丢失不会影响到后期的数据同步工作。

3.2 SSD盘添加过程

将SSD盘插入计算节点的空闲插槽,盘托的硬盘指示灯变绿即表示SSD盘插入成功。这时,在操作系统层面是无法识别到这块新的SSD盘的,只能通过RAID管理软件来识别这块SSD硬盘。

3.3 对SSD盘创建RAID 0

在对新的SSD盘创建RAID0之前,我们必须先了解当前主机上插入的物理硬盘的情况,具体如下所示:

[root@sddxdb01 MegaCli]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll

Adapter #0

 

Enclosure Device ID: 252

Slot Number: 0

……(略)

 

Enclosure Device ID: 252

Slot Number: 5

Enclosure position: 0

Device Id: 12

WWN: 50025388700813CF

Sequence Number: 1

Media Error Count: 0

Other Error Count: 0

Predictive Failure Count: 0

Last Predictive Failure Event Seq Number: 0

PD Type: SATA

Raw Size: 953.869 GB [0x773bd2b0 Sectors]

Non Coerced Size: 953.369 GB [0x772bd2b0 Sectors]

Coerced Size: 952.742 GB [0x7717c000 Sectors]

Firmware state: Unconfigured(good), Spun Up

Is Emergency Spare : NO

Device Firmware Level: 2B6Q

Shield Counter: 0

Successful diagnostics completion on : N/A

SAS Address(0): 0x4433221106000000

Connected Port Number: 4(path0)

Inquiry Data: S2BANWAG100576K Samsung SSD 850 PRO 1TB EXM02B6Q

FDE Enable: Disable

Secured: Unsecured

Locked: Unlocked

Needs EKM Attention: No

Foreign State: Foreign

Foreign Secure: Drive is not secured by a foreign lock key

Device Speed: 6.0Gb/s

Link Speed: 6.0Gb/s

Media Type: Solid State Device

Drive Temperature :23C (73.40 F)

PI Eligibility: No

Drive is formatted for PI information: No

PI: No PI

Drive's write cache : Disabled

Drive's NCQ setting : Disabled

Port-0 :

Port status: Active

Port's Linkspeed: 6.0Gb/s

Drive has flagged a S.M.A.R.T alert : No

Exit Code: 0x00

[root@sddxdb01 MegaCli]#

从以上的命令输出可以看出,新插入的这块SSD硬盘的插槽号为5,但它的"Foreign State"为" Foreign",表示这块新插入的SSD盘自带了RAID配置信息,也即这块SSD硬盘以前被使用过,曾经加入到过其它的RAID组中。

此时,如果直接对该SSD硬盘创建RAID 0,则肯定会失败,报错信息如下:

[root@sddxdb01 MegaCli]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0 [252:5] -a0

 

The specified physical disk does not have the appropriate attributes to complete

the requested command.

 

Exit Code: 0x26

[root@sddxdb01 MegaCli]#

通过如下命令即可验证是否存在外部的信息:

[root@sddxdb01 MegaCli]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Scan -a0

There are 1 foreign configuration(s) on controller 0.

Exit Code: 0x00

[root@sddxdb01 MegaCli]#

可见,这块SSD盘以前被创建过RAID,所以磁盘中残余有RAID信息,清除掉以前的RAID信息即可:

[root@sddxdb01 MegaCli]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign -Clear -a0

 

Foreign configuration 0 is cleared on controller 0.

 

Exit Code: 0x00

[root@sddxdb01 MegaCli]#

再次确认是否还存在外部信息:

[root@sddxdb01 MegaCli]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL | egrep -i 'Adapter|Enclosure|Slot|Inquiry|state'

Adapter #0

Enclosure Device ID: 252

Slot Number: 0

Enclosure position: 0

Firmware state: Online, Spun Up

Inquiry Data: HITACHI H106030SDSUN300GA2B01215N77LAB

Foreign State: None

Enclosure Device ID: 252

Slot Number: 1

Enclosure position: 0

Firmware state: Online, Spun Up

Inquiry Data: HITACHI H106030SDSUN300GA2B01214N68GZB

Foreign State: None

Enclosure Device ID: 252

Slot Number: 2

Enclosure position: 0

Firmware state: Online, Spun Up

Inquiry Data: HITACHI H106030SDSUN300GA2B01214N6MX3B

Foreign State: None

Enclosure Device ID: 252

Slot Number: 3

Enclosure position: 0

Firmware state: Online, Spun Up

Inquiry Data: HITACHI H106030SDSUN300GA2B01215N6HL3B

Foreign State: None

Enclosure Device ID: 252

Slot Number: 5

Enclosure position: 0

Firmware state: Unconfigured(good), Spun Up

Inquiry Data: S2BANWAG100576K Samsung SSD 850 PRO 1TB EXM02B6Q

Foreign State: None

Media Type: Solid State Device

[root@sddxdb01 MegaCli]#

从以上的命令输出可以看出,插槽号为5的SSD硬盘,外部信息已经被清除,现在可以正常使用该硬盘创建RAID。

[root@sddxdb01 MegaCli]# /opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r0 [252:5] -a0

Adapter 0: Created VD 1

 

Adapter 0: Configured the Adapter!!

 

Exit Code: 0x00

[root@sddxdb01 MegaCli]#

可见,在SSD硬盘上创建RAID0成功。

4、创建vg及文件系统

RAID0创建成功后,在操作系统层面就可以看到这块SSD硬盘,命令为/dev/sdb。下面,我们需要将/dev/sdb创建成VG和文件系统来给DSG软件使用。

[root@sddxdb01 MegaCli]# pvcreate /dev/sdb1

Writing physical volume data to disk "/dev/sdb1"

Physical volume "/dev/sdb1" successfully created

 

[root@sddxdb01 MegaCli]# vgcreate datavg /dev/sdb1

Volume group "datavg" successfully created

 

[root@sddxdb01 MegaCli]# vgdisplay

--- Volume group ---

VG Name datavg

System ID

Format lvm2

Metadata Areas 1

Metadata Sequence No 1

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 0

Open LV 0

Max PV 0

Cur PV 1

Act PV 1

VG Size 952.74 GB

PE Size 4.00 MB

Total PE 243901

Alloc PE / Size 0 / 0

Free PE / Size 243901 / 952.74 GB

VG UUID EF8cbh-rDCd-iQpz-BSS8-VXAZ-k3d2-nmNacV

 

--- Volume group ---

VG Name VGExaDb

System ID

Format lvm2

Metadata Areas 1

Metadata Sequence No 8

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 6

Open LV 4

Max PV 0

Cur PV 1

Act PV 1

VG Size 834.89 GB

PE Size 4.00 MB

Total PE 213731

Alloc PE / Size 200704 / 784.00 GB

Free PE / Size 13027 / 50.89 GB

VG UUID p1Nq1d-5lz7-deCd-1y0k-Yzzi-jeIB-ecgzIh

 

[root@sddxdb01 MegaCli]#

5、性能对比

我们知道使用SSD后,IO性能肯定会比以前有大幅提升,但到底能提升多少,我们最好能进行量化。

下面,我们使用FIO工具进行IO的读测试:

# fio --filename=/dev/sdb --direct=1 --rw=read --bs=1m --size=1g --numjobs=4 --group_reporting --name=test-sequential-read

# fio --filename=/dev/sdb --direct=1 --rw=randread --bs=4k --size=1g --numjobs=4 --group_reporting --name=test-rand-read

 

# fio --filename=/dev/sda --direct=1 --rw=read --bs=1m --size=1g --numjobs=4 --group_reporting --name=test-sequential-read

# fio --filename=/dev/sda --direct=1 --rw=randread --bs=4k --size=1g --numjobs=4 --group_reporting --name=test-rand-read

如下图表,是FIO工具进行测试的数据,从得到的数据来看,SSD硬盘随机读的IOPS和MBPS比本地盘提升在30倍以上。

 

MBPS(顺序读)

IOPS(顺序读)

MBPS(随机读)

IOPS(随机读)

SSD(RAID0)

397564KB/s

388

74975KB/s

18743

本地盘(RAID5)

380608KB/s

371

2342.7KB/s

585

整个的IO提升效果还是非常明显的。客户后期将DSG软件迁移至SSD硬盘所在的文件系统中,再也没有出现过因为本地磁盘IO性能影响数据同步延时的情况。

提升Exadata 计算节点本地IO性能的更多相关文章

  1. Exadata 18.1新特性--计算节点升级增强

    新的计算节点升级增强能大幅缩短升级花费的时间,最快能减少40%的时间,具体的增强主要体现在以下方面: 1.计算节点操作系统的备份工作. 以前计算节点操作系统的备份工作是在正式升级之前执行,在滚动升级过 ...

  2. 通过数据库评估存储设备IO性能-Oracle11gIO校准功能介绍

    通过数据库评估存储设备IO性能 ---------Oracle11g IO校准功能介绍 前言 I/O子系统是ORACLE数据库的一个重要组成部分,因为I/O操作是贯穿数据库管理全过程,它操作的对象包括 ...

  3. 超千个节点OpenStack私有云案例(1):CERN 5000+ 计算节点私有云

    CERN:欧洲核子研究组织 本文根据以下几篇文章整理而来: https://www.openstack.org/summit/tokyo-2015/videos/presentation/unveil ...

  4. 磁盘工作原理与IO性能分析

    最近,在研究如何优化产品设备的磁盘IO性能,需要深入研究磁盘及文件系统原理和工作机制,下面简要总结下关于磁盘方面的东西,下篇文章再分享文件系统的. 机械磁盘结构: 无论哪种机械硬盘,都主要由盘片.磁头 ...

  5. 采用alluxio提升MR job和Spark job性能的注意点

    1. 介绍 2. 实验说明 2.1 实验环境 2.2 实验方法 2.3 实验负载 3. MapReduce on alluxio 3.1 读取10G文件(1G split) 3.2 读取20G文件(1 ...

  6. 浅谈Java两种并发类型——计算密集型与IO密集型

    转载:https://blog.csdn.net/u013070853/article/details/49304099 核心是可以分别独立运行程序指令的计算单元.线程是操作系统能够进行运算调度的最小 ...

  7. SQL Server中一个隐性的IO性能杀手-Forwarded record

    简介     最近在一个客户那里注意到一个计数器很高(Forwarded Records/Sec),伴随着间歇性的磁盘等待队列的波动.本篇文章分享什么是forwarded record,并从原理上谈一 ...

  8. Linux的IO性能监控工具iostat详解

    Linux系统出现了性能问题,一般我们可以通过top.iostat.free.vmstat等命令来查看初步定位问题.其中iostat可以提供更丰富的IO性能状态数据. . 基本使用 $iostat - ...

  9. 性能调优之访问日志IO性能优化

    性能调优之访问日志IO性能优化   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...

随机推荐

  1. Android终端与服务器数据传输解决方案

    Android终端与服务器数据传输解决方案 Android终端三种与服务器传输方式:   Socket传输 WebService传输 Post/Get获取数据方式 网络实现条件 端口:指定 协议:TC ...

  2. Simple Rtmp Server的安装与简单使用

    Simple Rtmp Server是一个国人编写的开源的RTMP/HLS流媒体服务器. 功能与nginx-rtmp-module类似, 可以实现rtmp/hls的分发. 有关nginx-rtmp-m ...

  3. CodeForces - 1019D(BZOJ3707圈地):Large Triangle (几何,找面积为S的三角形)

    题意:给定平面上N个点,问是否存在三角形,其面积为S. 思路:选择Y轴,枚举这个Y轴,面积大小只与|y-Y|有关,然后二分,具体的可以先去做BZOJ3707. 具体的: 1,先对点排序,X坐标为第一关 ...

  4. Android 开发:开源库Speex支持arm64的动态库文件

    随着处理器制造工艺的不断进步,和Android系统的不断发展,最近出了arm64-v8a的架构,由于项目中用到了speex的第三方语音编解码的动态库,其他架构的处理器暂不用说,一切正常,唯独到arm6 ...

  5. iPhone白苹果怎么办?白苹果各种解决办法方法

    iPhone白苹果怎么办?白苹果各种解决办法方法 日期:2014-07-16 来源:爱思助手 浏览次数:60962 越狱后大家也疯狂的装入各种插件,由于一些插件会产生冲突,造成白苹果现象,无法进入手机 ...

  6. html中插入css和js

    插入css: HTML周明华添加css样式的方法有很多种,常见的有一下几种:. 1.直接标签后添加如: <html> <div style="background:red; ...

  7. 九 fork/join CompletableFuture

    1: Fork/join fork/join:  fork是分叉的意思, join是合并的意思. Fork/Join框架:是JAVA7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务 ...

  8. RS485波特率问题

    转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/51683648 最近再做一个项目,发现485不能发送数据,感到非常奇怪!后来查阅相关 ...

  9. 快速搭建SpringBoot项目

    Spring Boot简介: Spring Boot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目.它使用习惯优于配置的理念让你的项目快速运行起来,使用Spring Bo ...

  10. tcpdump网络数据抓包

    tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头”完全截获下来提供 ...