• 提升Exadata 计算节点本地IO性能


     

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

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

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

    7.2.1 解决方案

    1. 方案思路

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

    如果方案选择使用SSD固态硬盘,则后续的一系列问题必须进行确认,具体需要确认的信息如下所示。

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

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

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

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

    Disk Backplane

     

    Option #

    Manufacturing  Part #

    Description

    Previous  Part #

    n/a

    7051678[F]

    8-Slot Disk Backplane, SATA DVD

    511-1283[F]

    图8.1 SUN X4170 M2硬盘背板参数指标

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

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

    3. 硬盘背板是否支持SSD

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

    Disk

     

    Option #

    Manufacturing Part #

    Description

    7101423[S]

    7017183[C]

    100GB Solid State SATA Drive Assembly

    7017177

    Intel SSDSA2BZ100G3 [Inquiry Unknown] (100GB - 2.5" Solid State - SATA Disk)

    541-2123

    Marlin 2.5" Bracket

    7101469[S]

    7017184[C]

    300GB Solid State SATA Drive Assembly

    7017181

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

    541-2123

    Marlin 2.5" Bracket

    XRA-ST2CF32G2SSD-N[S]

    540-7841[C]

    32GB Solid State SATA Drive Assembly

    371-4196

     

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

    541-2123

    Marlin 2.5" Bracket

    图8.2 SUN X4170 M2 PN号为7051678的硬盘背板支持的SSD硬盘类型

    从图8.2可以看出,最大支持300GB SSD固态硬盘。实际上最大支持的SSD固态硬盘容量并不仅仅是300GB,经过测试,1TB的SSD固态硬盘同样都是支持的。

    4. 方案选择

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

    下面,我们来对比方案一和方案二两种方案的优缺点,具体如表8.2所示。

    表8.2 Exadata计算节点提升IOPS方案对比

    方案一(四个插槽的SAS盘全部更换为SSD盘)

    方案二(只在剩余的插槽上新插入一块SSD盘)

    优点

    缺点

    优点

    缺点

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

     

    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软件使用。

    7.2.2 添加SSD硬盘

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

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

    在对新的SSD盘创建RAID0之前,我们必须先了解当前主机上插入的物理硬盘的情况,见代码清单8.3所示。

    代码清单8.3 查看计算节点物理磁盘信息

    [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,创建RAID0的命令如下所示。

    [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成功。

    7.2.3 创建vg及文件系统

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

    代码清单8.4 将新插入的SSD盘创建vg

    [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]#

    7.2.4 性能对比

    我们知道使用SSD后,IO性能肯定会比以前有大幅提升,但到底能提升多少,我们最好能进行量化。下面,我们使用FIO工具进行IO的读测试,见代码清单8.5所示。

    代码清单8.5 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盘和机械硬盘进行IO性能测试,从测试得到的数据来看,SSD硬盘随机读的IOPS和MBPS比本地盘提升在30倍以上,但顺序读的性能变化不大,具体如表8.3所示。

    表8.3 机械盘和SSD盘的IO性能对比

     

    MBPS(顺序读)

    IOPS(顺序读)

    MBPS(随机读)

    IOPS(随机读)

    SSD(RAID0)

    397564KB/s

    388

    74975KB/s

    18743

    本地盘(RAID5)

    380608KB/s

    371

    2342.7KB/s

    585

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

  • 相关阅读:
    动态规划2.1 矩阵中的最短路径
    动态规划3.3 最长递增子序列
    动态规划3.2 最长公共子串
    动态规划3.1 求两个字符串的莱文斯坦编辑距离
    大数相乘
    科大讯飞C++面试经验
    存储世界的两个祖师爷和他们的后代们!!!
    读写(I/O)辩论
    集线器(HUB)、交换机、路由器的区别和联系 及OSI七层模型 及TCP/IP通信协议
    HTTP协议
  • 原文地址:https://www.cnblogs.com/missyou-shiyh/p/12887105.html
Copyright © 2020-2023  润新知