一种数据访问方法及装置的制造方法

文档序号:9687375阅读:349来源:国知局
一种数据访问方法及装置的制造方法
【技术领域】
[0001]本发明涉及网络存储技术领域,尤其涉及一种数据访问方法及装置。
【背景技术】
[0002]存储区域网(Storage Area Network, SAN)是一个集中式管理的高速存储网络,由多供应商存储系统、存储管理软件、应用程序服务器和网络硬件组成,能够帮助用户充分利用该用户所拥有的存储信息的价值。
[0003]如图1所示,为SAN网络的存储结构示意图。多路径软件所属应用服务器通过主机总线适配器(Host Bus Adapter, HBA)及SAN网络中的传输设备向SAN中的存储设备发送数据访问请求,也即输入/输出(Input/Output, I/O)请求,存储设备中的控制器(Controller)在接收到该数据访问请求后,根据该数据访问请求访问的逻辑单元号(Logical Unit Number, LUN)及逻辑地址对相应位置的存储数据执行1/0操作。
[0004]多路径软件通常会将主机下发给存储设备的1/0请求分摊到不同链路和存储控制器上,以实现负载均衡的目的。在进行负载均衡时,多路径软件通常会以I/o为颗粒进行负载均衡,访问一个逻辑单元的多个I/o请求通常会被平均分发到所有控制器上。如图2所示,访问每个逻辑单元号LUN(LUN1?LUN4)所标识的逻辑单元的多个1/0请求被平均分配到每个存储控制器上,具体可以采用轮询分配的方式。
[0005]将访问每个逻辑单元的1/0请求平均分配到每个存储控制器上,会导致存储控制器的缓存(Cache)命中率降低,也即从存储控制器的缓存中读取到数据的几率变低。如图3所示,主机连续下发4个请求的数据量相同(都为4k)的1/0请求,地址空间为连续的4k?16K,其中,1/0请求1?4请求访问的逻辑块地址(Logical Block Address, LBA)分别为4k、8k、12k、16k。图3中,每个存储控制器的缓存均未命中,存储控制器只能发起读盘并预读 1MB。
[0006]显然,这种负载分担方式将会严重降低将数据从存储设备中输入输出的效率;不仅如此,在这种负载分担方式下,一旦一个存储控制器出现故障,将会影响到所有逻辑单元的数据的正常输入输出,导致故障域范围太大。

【发明内容】

[0007]本发明实施例提供一种数据访问方法及装置,用以解决从存储设备输入输出数据的效率较低的问题,以及一个存储控制器发生故障时,会影响到存储设备中所有逻辑单元的数据的正常输入输出的问题。
[0008]第一方面,提供一种数据访问方法,该方法应用于存储系统中,所述存储系统包括主机和存储设备,所述存储设备包括多个存储控制器,包括:
[0009]所述主机生成数据访问请求,所述数据访问请求包括访问的存储设备的逻辑单元号 LUN ;
[0010]所述主机根据该LUN与存储控制器的映射关系,确定控制访问该LUN所标识的逻辑单元的存储控制器;
[0011]所述主机将生成的所述数据访问请求发送给确定的所述存储控制器。
[0012]结合第一方面,在第一种可能的实现方式中,所述主机将生成的所述数据访问请求发送给确定的所述存储控制器之后,还包括:
[0013]所述主机监测到确定的所述存储控制器的负载超过设定阈值;
[0014]所述主机针对确定的所述存储控制器控制访问的每个逻辑单元,执行:
[0015]根据各存储控制器当前的负载,和当前访问该逻辑单元的单位时间访问量,从各存储控制器中选择分担处理访问该逻辑单元的数据访问请求的协作存储控制器;其中,所述单位时间访问量为单位时间内执行数据访问请求的次数或单位时间内访问的数据量;
[0016]所述主机将后续生成的访问该逻辑单元的数据访问请求发送给所述协作存储控制器。
[0017]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,根据各存储控制器当前的负载,和当前访问该逻辑单元的单位时间访问量,从各存储控制器中选择分担处理访问该逻辑单元的数据访问请求的协作存储控制器,包括:
[0018]根据各存储控制器当前的负载,和当前访问该逻辑单元的单位时间访问量,判断所述各存储控制器中是否存在单个存储控制器能够分担处理访问该逻辑单元的全部数据访问请求;
[0019]如果存在,则选择存在的单个存储控制器作为所述协作存储控制器;
[0020]否则,根据各存储控制器当前的负载,和当前访问该逻辑单元的单位时间访问量,在各存储控制器中选择最少数量的存储控制器、且选择的存储控制器能共同分担处理访问该逻辑单元的全部数据访问请求,将选择的最少数量的存储控制器作为所述协作存储控制器。
[0021]结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述主机将后续生成的访问该逻辑单元的数据访问请求发送给所述协作存储控制器,包括:
[0022]所述主机根据选择的最少数量的存储控制器各自当前的负载,以及当前访问该逻辑单元的每个分片的单位时间访问量,确定选择的最少数量的存储控制器中的每个存储控制器分担处理访问该逻辑单元中的至少一个分片的全部数据访问请求;其中,每个逻辑单元包括多个设定大小的分片;
[0023]所述主机针对该逻辑单元中的每个分片执行:将后续生成的访问该逻辑单元的每个分片的数据访问请求,发送给确定的分担处理访问该分片的全部数据访问请求的存储控制器。
[0024]结合第一方面的第二或第三种可能的实现方式,在第四种可能的实现方式中,所述主机将选择的最少数量的存储控制器作为所述协作存储控制器之后,还包括:
[0025]当监测到各存储控制器中存在单个存储控制器能够处理访问该逻辑单元的全部数据访问请求后,重新选择该单个存储控制器作为所述协作存储控制器。
[0026]第二方面,提供一种数据访问装置,该装置位于存储系统的主机中,所述存储系统包括所述主机与存储设备,所述存储设备包括多个存储控制器,该装置包括:
[0027]生成模块,用于生成数据访问请求,所述数据访问请求包括访问的存储设备的逻辑单元号LUN ;
[0028]确定模块,用于根据该LUN与存储控制器的映射关系,确定控制访问该LUN所标识的逻辑单元的存储控制器;
[0029]发送模块,用于将生成的所述数据访问请求发送给确定的所述存储控制器。
[0030]结合第二方面,在第一种可能的实现方式中,所述装置还包括:
[0031]监测模块,用于在所述发送模块将生成的所述数据访问请求发送给确定的所述存储控制器之后,监测到确定的所述存储控制器的负载超过设定阈值;
[0032]执行模块,用于针对确定的所述存储控制器控制访问的每个逻辑单元,执行:根据各存储控制器当前的负载,和当前访问该逻辑单元的单位时间访问量,从各存储控制器中选择分担处理访问该逻辑单元的数据访问请求的协作存储控制器;其中,所述单位时间访问量为单位时间内执行数据访问请求的次数或单位时间内访问的数据量;
[0033]所述发送模块还用于,将后续生成的访问该逻辑单元的数据访问请求发送给所述协作存储控制器。
[0034]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述执行模块具体用于:
[0035]根据各存储控制器当前的负载,和当前访问该逻辑单元的单位时间访问量,判断所述各存储控制器中是否存在单个存储控制器能够分担处理访问该逻辑单元的全部数据访问请求;
[0036]如果存在,则选择存在的单个存储控制器作为所述协作存储控制器;
[0037]否则,根据各存储控制器当前的负载,和当前访问该逻辑单元的单位时间访问量,在各存储控制器中选择最少数量的存储控制器、且选择的存储控制器能共同分担处理访问该逻辑单元的全部数据访问请求,将选择的最少数量的存储控制器作为所述协作存储控制器。
[0038]结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述发送模块具体用于:
[0039]根据选择的最少数量的存储控制器各自当前的负载,以及当前访问该逻辑单元的每个分片的单位时间访问量,确定选择的最少数量的存储控制器中的每个存储控制器分担处理访问该逻辑单元中的至少一个分片的全部数据访问请求;其中,每个逻辑单元包括多个设定大小的分片;
[0040]针对该逻辑单元中的每个分片执行:将后续生成的访问该逻辑单元的每个分片的数据访问请求,发送给确定的分担处理访问该分片的全部数据访问请求的存储控制器。
[0041]结合第二方面的第二或第三种可能的实现方式,在第四种可能的实现方式中,所述执行模块还用于,将选择的最少数量的存储控制器作为所述协作存储控制器之后,当所述监测模块监测到各存储控制器中存在单个存储控制器能够处理访问该逻辑单元的全部数据访问请求后,
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1