专利名称::I/o平衡处理方法和设备的制作方法
技术领域:
:本发明涉及计算机技术,尤其涉及一种I/O平衡处理方法和设备。
背景技术:
:事务处理性能委员会(TransactionProcessingPerformanceCouncil;简称TPO-C测试是测试建立在关系型数据库的在线事务处理性能的基本程序。由于存储单元的输入输出anput/output;简称1/0)性能能够提高存储利用率,降低总所有成本((Totalcostofownership;简称TC0),并且有效地避免数据库的性能问题,因此,该存储单元的1/0性能是TPC-C测试中主要考虑的因素。目前,1/0平衡部署能够充分发挥存储单元的1/0性能,因此数据库厂家和存储厂家均有针对数据库和存储的1/0平衡部署方案,例如某些厂家采用甲骨文(oracle)数据库(database)的自动存储管理(AutomaticStorageManagement;简称ASM)实现1/0平衡部署,具体的,在一组独立的磁盘上创建一个单独的磁盘组,实现单个磁盘组的1/0平衡。但是,由于现有的1/0平衡部署方案是对数据进行完全平衡部署,即绝对平衡部署,因此,占用了磁盘的存储空间较大,并难以分析具体的热点表和热点数据。
发明内容本发明的第一个方面是提供一种1/0平衡处理方法,包括对磁盘上的N个LUN进行划分处理,将m个LUN设置为数据磁盘,将N_m个LUN设置为预留磁盘;接收存储请求消息,所述存储请求消息包括数据表、所述数据表的预计容量、所述数据表对应的数据块的大小以及存储所述数据表的磁盘标识;其中,所述数据表包括至少一个数据文件;根据所述数据表的预计容量、数据表对应的数据块的大小以及所述磁盘标识对应的磁盘的总数量,获取数据库信息,所述数据库信息包括所述数据表在每个所述磁盘标识对应的磁盘中的预计容量、每个所述磁盘标识对应的磁盘中数据文件的个数以及所述数据文件的大小;根据所述存储请求消息和所述数据库信息,生成第一shell脚本,并根据所述第一shell脚本,创建数据库;其中,N和m均为整数,且均大于等于1。本发明的另一个方面是提供一种1/0平衡处理设备,包括划分模块,用于对磁盘上的N个LUN进行划分处理,将m个LUN设置为数据磁盘,将N-m个LUN设置为预留磁盘;接收模块,用于接收存储请求消息,所述存储请求消息包括数据表、所述数据表的预计容量、所述数据表对应的数据块的大小以及存储所述数据表的磁盘标识;其中,所述数据表包括至少一个所述数据文件;I/O平衡处理模块,用于根据所述数据表的预计容量、数据表对应的数据块的大小以及所述磁盘标识对应的磁盘的总数量,获取数据库信息,所述数据库信息包括所述数据表在每个所述磁盘标识对应的磁盘中的预计容量、每个所述磁盘标识对应的磁盘中数据文件的个数以及所述数据文件的大小;数据库创建模块,用于根据所述存储请求消息和所述数据库信息,生成第一shell脚本,并根据所述第一shell脚本,创建数据库;其中,N和m均为整数,且均大于等于1。本发明的技术效果是通过对磁盘上的N个LUN进行划分处理,将m个LUN设置为数据磁盘,将N-m个LUN设置为预留磁盘;接收存储请求消息,并根据存储请求消息中的数据表的预计容量、数据表对应的数据块的大小以及磁盘标识对应的磁盘的总数量,获取数据库信息,再根据该存储请求消息和数据库信息,生成第一shell脚本,并根据该第一shell脚本,创建数据库,由于对磁盘进行了划分,将容量从而实现了相对平衡部署,占用了磁盘的存储空间较少,进而提高了存储利用率。图1为本发明I/O平衡处理方法的一个实施例的流程图;图2为关系型数据库中存储划分的示意图;图3为本发明I/O平衡处理方法的另一个实施例的流程图;图4为本发明I/O平衡处理设备的一个实施例结构示意图;图5为本发明I/O平衡处理设备的另一个实施例的结构示意图。具体实施例方式图1为本发明I/O平衡处理方法的一个实施例的流程图,如图1所示,本实施例的方法主要应用在关系型数据库中,则该方法包括步骤101、对磁盘上的N个LUN进行划分处理,将m个LUN设置为数据磁盘,将N_m个LUN设置为预留磁盘。其中,N和m均为整数,且均大于等于1。在本实施例中,对关系型数据库中的存储对应的硬盘进行分组,每组均有一个冗余磁盘阵列(RedundantArrayofIndependentDisk;简称RAID)控制器控制,并将分组后的硬盘映射到主机服务器上,再将映射到主机服务器上的每组硬盘分别划分成至少一个逻辑单元号码(LogicalUnitNumber;简称LUN)。举例来说,图2为关系型数据库中存储划分的示意图,如图2所示,将关系型数据库中的存储对应的硬盘分成四组,每组均有RAID控制器控制,并将四组硬盘映射到主机服务器上,再将映射到主机服务器上的每组硬盘分别划分成四个LUN,则主机服务器上可以共显示16个LUN。另外,可以将16个LUN进行划分处理,例如将15个LUN设置为数据磁盘,将剩余的1个LUN设置为预留磁盘。在本实施例中,优选地,数据磁盘可以存储容量较大,且性能较高的数据表(table);预留磁盘可以存储容量较小,且性能要求较低的数据表。步骤102、接收存储请求消息,该存储请求消息包括数据表、该数据表的预计容量、该数据表对应的数据块的大小以及存储该数据表的磁盘标识;其中,该数据表包括至少一个数据文件。在本实施例中,数据表包括至少一个数据文件。数据表的预计容量是指数据表中所记录的所有数据文件要占用的存储空间。数据表对应的数据块的大小是指存储该数据表中的数据文件的数据块。步骤103、根据该数据表的预计容量、数据表对应的数据块的大小以及该磁盘标识对应的磁盘的总数量,获取数据库信息,该数据库信息包括该数据表在每个该磁盘标识对应的磁盘中的预计容量、每个该磁盘标识对应的磁盘中数据文件的个数以及该数据文件的大小。步骤104、根据该存储请求消息和该数据库信息,生成第一shell脚本,并根据该第一shell脚本,创建数据库。在本实施例中,通过对磁盘上的N个LUN进行划分处理,将m个LUN设置为数据磁盘,将N-m个LUN设置为预留磁盘;接收存储请求消息,并根据存储请求消息中的数据表的预计容量、数据表对应的数据块的大小以及磁盘标识对应的磁盘的总数量,获取数据库信息,再根据该存储请求消息和数据库信息,生成第一shell脚本,并根据该第一shell脚本,创建数据库,由于对磁盘进行了划分,将容量从而实现了相对平衡部署,占用了磁盘的存储空间较少,进而提高了存储利用率。图3为本发明I/O平衡处理方法的另一个实施例的流程图,如图3所示,本实施例的方法主要应用在关系型数据库中,则该方法包括步骤201、对磁盘上的N个LUN进行划分处理,将m个LUN设置为数据磁盘,将N_m个LUN设置为预留磁盘。其中,N和m均为整数,且均大于等于1。步骤202、接收存储请求消息,该存储请求消息包括数据表、该数据表的预计容量、该数据表对应的数据块(block)的大小以及存储该数据表的磁盘标识;其中,该数据表包括至少一个数据文件。步骤203、根据数据表的预计容量和磁盘标识对应的磁盘的总数量,获取数据表在每个磁盘标识对应的磁盘中的预计容量。步骤204、根据该数据表对应的数据块的大小,查询数据块大小与单个数据文件最大容量的映射关系,获取该数据块的大小对应的单个数据文件最大容量;并根据该数据表的预计容量、该磁盘标识对应的磁盘的总数量和该单个数据文件最大容量,获取每个该磁盘标识对应的磁盘中数据文件的个数。步骤205、根据该数据表的预计容量、该磁盘标识对应的磁盘的总数量和每个该磁盘标识对应的磁盘中数据文件的个数,获取该数据文件的大小。步骤206、根据该存储请求消息和该数据库信息,生成第一壳(shell)脚本,并根据该第一shell脚本,创建数据库;其中,该数据库信息包括该数据表在每个该磁盘标识对应的磁盘中的预计容量、每个该磁盘标识对应的磁盘中数据文件的个数以及该数据文件的大小。在本实施例中,举例来说,以N为20,m为19为例,详细介绍本实施例的技术方案。具体的,接收存储请求消息,该存储请求消息包括四个数据表,分别为数据表1、数据表2、数据表3和数据表4,其中,数据表1的预计容量为524288M,该数据表1对应的数据块的大小为观,存储该数据表1的磁盘标识为数据磁盘标识;数据表2的预计容量为1048576M,该数据表2对应的数据块的大小为16K,存储该数据表2的磁盘标识为数据磁盘标识;数据表3的预计容量为50M,该数据表3对应的数据块的大小为2K,存储该数据表3的磁盘标识为预留磁盘标识;数据表4的预计容量为20480M,该数据表4对应的数据块的大小为2K,存储该数据表4的磁盘标识为预留磁盘标识。对于数据表1,根据数据表1的预计容量和数据磁盘的总数量,数据表1在每个数据磁盘中的预计容量=524288M/19=27594.10526M;根据该数据表1对应的数据块的大小,查询数据块大小与单个数据文件最大容量的映射关系,获取该数据块的大小对应的单个数据文件最大容量。优选的,在本实施例中,数据块大小与单个数据文件最大容量的映射关系可以如下表一所示表一权利要求1.一种I/O平衡处理方法,其特征在于,包括对磁盘上的N个逻辑单元LUN进行划分处理,将m个LUN设置为数据磁盘,将N_m个LUN设置为预留磁盘,其中,N和m均为整数,且均大于等于1;接收存储请求消息,所述存储请求消息包括数据表、所述数据表的预计容量、所述数据表对应的数据块的大小以及存储所述数据表的磁盘标识;其中,所述数据表包括至少一个数据文件;根据所述数据表的预计容量、所述数据表对应的数据块的大小以及所述磁盘标识对应的磁盘的总数量,获取数据库信息,所述数据库信息包括所述数据表在每个所述磁盘标识对应的磁盘中的预计容量、每个所述磁盘标识对应的磁盘中数据文件的个数以及所述数据文件的大小根据所述存储请求消息和所述数据库信息,生成第一shell脚本,并根据所述第一shell脚本,创建数据库。2.根据权利要求1所述的I/O平衡处理方法,其特征在于,所述根据所述数据表的预计容量、数据表对应的数据块的大小以及所述磁盘标识对应的磁盘的总数量,获取数据库信息,所述数据库信息包括所述数据表在每个所述磁盘标识对应的磁盘中的预计容量、每个所述磁盘标识对应的磁盘中数据文件的个数以及所述数据文件的大小,包括根据所述数据表的预计容量和所述磁盘标识对应的磁盘的总数量,获取所述数据表在每个所述磁盘标识对应的磁盘中的预计容量;根据所述数据表对应的数据块的大小,查询数据块大小与单个数据文件最大容量的映射关系,获取所述数据块的大小对应的单个数据文件最大容量;并根据所述数据表的预计容量、所述磁盘标识对应的磁盘的总数量和所述单个数据文件最大容量,获取每个所述磁盘标识对应的磁盘中数据文件的个数;根据所述数据表的预计容量、所述磁盘标识对应的磁盘的总数量和每个所述磁盘标识对应的磁盘中数据文件的个数,获取所述数据文件的大小。3.根据权利要求1所述的I/O平衡处理方法,其特征在于,还包括接收I/O性能检测请求消息,所述I/O性能检测请求消息包括检测磁盘标识;当所述磁盘标识为预留磁盘标识时,采用输入输出状态,在设置的抽样时刻点,分别采集数据磁盘中的第一I/O信息,并分别采集预留磁盘中的第二I/O信息;将各个所述抽样时刻的所述第一I/O信息与所述第二I/O信息进行识别处理和分析处理,获取第一检测结果。4.根据权利要求3所述的I/O平衡处理方法,其特征在于,所述第一I/O信息和所述第二I/O信息均包括读I/O信息和写I/O信息,所述读I/O信息包括读IOPS信息和读带宽信息;所述写I/O信息包括写IOPS信息和写带宽信息。5.根据权利要求4所述的I/O平衡处理方法,其特征在于,还包括当所磁盘标识为数据磁盘标识时,采用公式toi’=(toi-foiaVfoia,获取每个所述数据磁盘的第一I/O信息中的读I/O信息toi’;采用公式Wni’=(ffni-ffna)/ffna,获取每个所述数据磁盘中的第一I/O信息中的写I/0信息Wni,;采用公式Pn=Krni*|Rni,|+Kwni*|Wni,|,获取加权平均数Pn;其中,Krni=Rni'|/(|Rni,|+|Wni,),Kwni=Wni'/(|Rni'|+|Wni,|),n表示抽样时刻,i表示数据磁盘标识,Rni表示在抽样时刻η时第i个数据磁盘的第一I/O信息中的读I/O信息,toa表示在抽样时刻η所有数据磁盘的第一I/O信息中的读I/O信息的平均值;Wni表示在抽样时刻η时第i个数据磁盘的第一I/O信息中的写I/O信息,Wna表示在抽样时刻η时所有数据磁盘的第一I/O信息中的写I/O信息的平均值。6.根据权利要求3或5所述的I/O平衡处理方法,其特征在于,还包括根据所述第一检测结果和/或所述加权平均数Ρη,调整所述存储请求消息和数据库信息;根据调整后的存储请求消息和数据库信息,生成第二shell脚本,并根据所述第二shell脚本,重新创建数据库。7.—种I/O平衡处理设备,其特征在于,包括划分模块,用于对磁盘上的N个LUN进行划分处理,将m个LUN设置为数据磁盘,将N_m个LUN设置为预留磁盘;接收模块,用于接收存储请求消息,所述存储请求消息包括数据表、所述数据表的预计容量、所述数据表对应的数据块的大小以及存储所述数据表的磁盘标识;其中,所述数据表包括至少一个数据文件;I/O平衡处理模块,用于根据所述数据表的预计容量、数据表对应的数据块的大小以及所述磁盘标识对应的磁盘的总数量,获取数据库信息,所述数据库信息包括所述数据表在每个所述磁盘标识对应的磁盘中的预计容量、每个所述磁盘标识对应的磁盘中数据文件的个数以及所述数据文件的大小;数据库创建模块,用于根据所述存储请求消息和所述数据库信息,生成第一shell脚本,并根据所述第一shell脚本,创建数据库;其中,N和m均为整数,且均大于等于1。8.根据权利要求7所述的I/O平衡处理设备,其特征在于,I/O平衡处理模块包括预计容量获取单元,用于根据所述数据表的预计容量和所述磁盘标识对应的磁盘的总数量,获取所述数据表在每个所述磁盘标识对应的磁盘中的预计容量;数据文件的个数获取单元,用于根据所述数据表对应的数据块的大小,查询数据块大小与单个数据文件最大容量的映射关系,获取所述数据块的大小对应的单个数据文件最大容量;并根据所述数据表的预计容量、所述磁盘标识对应的磁盘的总数量和所述单个数据文件最大容量,获取每个所述磁盘标识对应的磁盘中数据文件的个数;数据文件的大小获取单元,用于根据所述数据表的预计容量、所述磁盘标识对应的磁盘的总数量和每个所述磁盘标识对应的磁盘中数据文件的个数,获取所述数据文件的大9.根据权利要求7所述的I/O平衡处理设备,其特征在于,所述接收模块还用于接收I/O性能检测请求消息,所述I/O性能检测请求消息包括检测磁盘标识;则当所述磁盘标识为预留磁盘标识时,所述设备还包括预留磁盘检测模块,包括采集单元,用于采用输入输出状态,在设置的抽样时刻点,分别采集数据磁盘中的第一I/O信息,并分别采集预留磁盘中的第二I/O信息;检测单元,用于将各个所述抽样时刻的所述第一I/O信息与所述第二I/O信息进行识别处理和分析处理,获取第一检测结果;其中,所述第一I/O信息和所述第二I/O信息均包括读I/O信息和写I/O信息,所述读I/O信息包括读IOPS信息和读带宽信息;所述写I/O信息包括写IOPS信息和写带宽信息。10.根据权利要求8所述的I/O平衡处理设备,其特征在于,则当所述磁盘标识为预留磁盘标识时,所述设备还包括数据磁盘检测模块,包括读I/O信息获取单元,用于采用公式foli,=(Rni-Rna)/Rna,获取每个所述数据磁盘的第一读I/O信息中的读I/O信息foii’;写I/O信息获取单元,用于采用公式Wni’=(Wni-Wna)/Wna,获取每个所述数据磁盘中的第一写I/O信息中的写I/O信息Wni’;加权平均数1获取单元,用于采用公式Pn=Krni*|foii,|+Kwni*|Wni,|,获取加权平均数Ph;其中,Krni=Rni'|/(|Rni,|+|Wni,),Kwni=Wni'/(|Rni'|+|Wni,|),n表示抽样时刻,i表示数据磁盘标识,Rni表示在抽样时刻η时第i个数据磁盘的第一I/O信息中的读I/O信息,toa表示在抽样时刻η所有数据磁盘的第一I/O信息中的读I/O信息的平均值;Wni表示在抽样时刻η时第i个数据磁盘的第一I/O信息中的写I/O信息,Wna表示在抽样时刻η时所有数据磁盘的第一I/O信息中的写I/O信息的平均值。11.根据权利要求9或10所述的I/O平衡处理设备,其特征在于,还包括调整模块,用于根据所述第一检测结果和/或所述加权平均数Ρη,调整所述存储请求消息和数据库信息;则所述数据库创建模块还用于根据调整后的存储请求消息和数据库信息,生成第二shell脚本,并根据所述第二shell脚本,重新创建数据库。全文摘要本发明提供一种I/O平衡处理方法和设备,该方法包括对磁盘上的N个LUN进行划分处理,将m个LUN设置为数据磁盘,将N-m个LUN设置为预留磁盘;接收携带有数据表、数据表的预计容量、数据表对应的数据块的大小以及存储数据表的磁盘标识的存储请求消息;其中所述数据表包括至少一个数据文件;根据数据表的预计容量、数据表对应的数据块的大小以及磁盘标识对应的磁盘的总数量,获取数据库信息,根据存储请求消息和数据库信息生成第一shell脚本,并根据第一shell脚本创建数据库,其中N和m均为整数,且均大于等于1。文档编号G06F3/06GK102566940SQ201110432300公开日2012年7月11日申请日期2011年12月21日优先权日2011年12月21日发明者赵春阳申请人:华为技术有限公司