数据存取方法及服务器的制作方法

文档序号:7722645阅读:158来源:国知局
专利名称:数据存取方法及服务器的制作方法
技术领域
本发明涉及存储技术领域,尤其涉及一种数据存取方法及服务器。
背景技术
单路径存储系统中,服务器和存儲阵列之间只有一条I/0路径,服务器与存储阵列之间的数据存取,只能在一条1/0路径上进行。为了提高存储系统中数据存取的可靠性,
出现了多路径存储系统。在多路径存储系统中,服务器与存储系统之间采用多条1/o路径
连接,并通过多路径软件管理多条I/O路径。多路径软件指定一条首选I/O路径和一组备用1/0路径,其中备用1/0路径按优先级顺序排列。当服务器的上层应用发出访问存储阵列的I/O请求时,在首选I/O路径发生故障的情况下,多路径软件将I/O路径切换到优先级最高的备用1/0路径中,以使服务器仍然能访问存储阵列。此外,为保证系统的1/0负载均衡,多路径软件可将I/O请求分配到多条I/O路径上。当首选I/O路径和备用I/O路径都发生故障时,多路径软件向服务器报错,并周期性地检测故障I/O路径是否已恢复。
在实现本发明过程中,发明人发现在短时间内所有1/0路径都发生故障的情况下,若服务器的上层应用发出访问存储阵列的1/0请求,采用现有技术中的处理方式,都会致使发出1/0请求的上层应用的业务发生中断,从而影响存储系统的可靠性。

发明内容
本发明实施例提供一种数据存取方怯及服务器,用以在所有I/0路径都发生暂时故障的情况下,处理1/0请求,使得在不存在可用的1/0路径的情况下,仍然可以处理I/O
请求,降低了业务发生中断的概率,从而提高存储系统的可用性。 本发明实施例提供一种数据存取方法,包括
向存储阵列发送第一 I/O请求; 在与存储阵列之间不存在可用的1/0路径的情况下,根据第一 1/0请求在备用存储区进行数据存取操作。 本发明实施例提供一种服务器,包括 第一 1/0请求模块,用于向存储阵列发送的第一 1/0请求; 存取操作模块,用于在与所述存储阵列之间不存在可用的1/0路径的情况下,根据所述第一 I/O请求在备用存储区进行数据存取操作。 本发明实施例提供的数据存取方法及服务器,当短时间内服务器与存储阵列所有I/O路径都发生故障时,通过在服务器的备用存储区进行I/O请求对应的数据存取操作,完成了 1/0请求,使得在不存在可用的1/0路径的情况下,仍然可以处理1/0请求,降低了业
务发生中断的概率,从而提高存储系统的可用性。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本 领域普通技术人员来说,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他 的附图。 图la为本发明实施例提供的一种数据存取方法的流程图; 图lb本发明实施例提供的一种数据存取方法中所有VO路径都可用时的应用场 景图; 图lc本发明实施例提供的一种数据存取方法中同时存在故障I/O路径和可用1/ O路径时的应用场景图; 图ld本发明实施例提供的一种数据存取方法中所有1/0路径都故障时的应用场 景图; 图le为本发明实施例提供的一种数据存取方法中处理第一 1/0请求的流程图; 图2为本发明实施例提供的另一种数据存取方法的流程图; 图3为本发明实施例提供的又一种数据存取方法的流程图; 图4为本发明实施例提供的一种服务器的结构示意图; 图5为本发明实施例提供的另一种服务器的结构示意图; 图6为本发明实施例提供的又一种服务器的结构示意图。
具体实施例方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图la为本发明实施例提供的一种数据存取方法的流程图。本实例的应用场景可 为服务器上的主机总线适配器,通过光纤与存储阵列中的两个磁盘控制器相连,从而在服 务器与存储阵列之间形成二条I/0路径。当服务器发出1/0请求时,服务器上设有的多路 径控制模块从二条1/0路径中选择一条可用的1/0路径供执行1/0操作。如图la所示,本 实施例包括 步骤10 :向存储阵列发送第一 I/O请求; 服务器需要访问存储阵列进行读或写数据操作时,向存储阵列发送第一 1/0请 求。 步骤11 :在与存储阵列之间不存在可用的1/0路径的情况下,根据第一 1/0请求 在备用存储区进行数据存取操作。 服务器与存储阵列之间有可能有多条路径,比如服务器与存储阵列之间有两条1/ O路径,但在某些异常情况下,可能存在所有1/0路径的物理链路都发生故障的情况。比如, 服务器与存储阵列之间使用基于IP的基于网络的小型计算机系统接口 (Internet Small Computer System Interface,简称iSCSI)组网时,如果IP网络质量不好,例如延迟长、丢
包率高、交换机或路由器故障等,可能出现i/o路径时断时恢复甚至短时间全断的情况。 若确定服务器与存储阵列之间的两条1/0路径,都没有发生物理链路故障,即都 处于可用状态时,从两条可用的1/0路径中选择一条以供1/0操作访问存储阵列。如图lb所示,本发明实施例提供的一种数据存取方法中所有1/0路径都可用时的应用场景图。
若确定服务器与存储阵列之间的两条1/0路径,有一条发生物理链路故障,即只 有一条1/0路径处于可用状态时,选择该条可用的1/0路径供1/0操作访问存储阵列。如 图lc所示,图1c本发明实施例提供的一种数据存取方法中同时存在故障I/0路径和可用 1/0路径时的应用场景图。 若确定当前两条I/0路径的物理链路都发生故障,印没有可用的I/0路径时,则将 服务器自身的存储区,例如内存和硬盘,作为第一I/0请求的备用存储区,使第一 1/0请求 对应的数据存取操作在备用存储区中执行。如图ld所示,图ld本发明实施例提供的一种 数据存取方法中所有1/0路径都故障时的应用场景图。具体数据存取操作如下
若第一 1/0请求为写请求,在备用存储区中写入第一 1/0请求的数据。即存取操 作模块将第一 1/0请求需要写入存储阵列中的数据,写入备用存储区。 若第一 1/0请求为读请求,且在备用存储区中查找到第一 1/0请求的访问区域存 储有数据时,在备用存储区读取第一 1/0请求的数据。读1/0请求时,多路径软件先在备用
存储区查找第一i/o请求的访问区域是否存储有数据,若查找到,则存取操作模块在备用
存储区中读取第一 1/0请求的数据。 以上根据确定1/0路径的不同状况,对服务器发送的第一 1/0请求的处理流程,参 见图le所示,图le为本发明实施例提供的数据存取方法中处理第一 1/0请求的流程图。
本实施例中,在所有1/0路径都发生故障的情况下,将访问存储阵列的1/0请求, 先缓存到服务器自身的存储区中,从而保证了服务器的业务不中断。由于这种缓存机制对 于读1/0请求有限,因此,本实施例较适合于大部分甚至所有1/0都是写I/O的场景。例如, 视频监控应用中有相当一部分的1/0请求,都是将摄像头捕获的数据写入存储;又例如,许
多文件操作的场景,读i/o只发生在最初打开文件的时刻,其后的编辑、保存等都不会发送
读I/O。 本发明实施例数据存取方法,当短时间内服务器与存储阵列所有I/O路径都发生 故障时,通过在服务器的备用存储区进行1/0请求对应的数据存取操作,完成了 1/0请求, 没有不中断服务器正在处理的业务,使得在不存在可用的1/0路径的情况下,仍然可以处
理i/o请求,降低了业务发生中断的概率,从而提高存储系统的可用性。 图2为本发明实施例提供的另一种数据存取方法的流程图。在上述步骤21之后, 如图2所示,本实施例还包括 步骤20 :确定与存储阵列之间是否恢复可用的I/O路径; 上述二条1/0路径都发生物理链路故障后,访问存储阵列的第一 1/0请求所对应 的数据存取操作,在服务器自身的存储区即备用存储区中执行。周期性检测上述二条I/O 路径的物理链路状况,以确定是否有一条或两条I/O路径物理链路的故障已恢复即处于可 用状态。 步骤21 :在确定与存储阵列之间恢复可用的1/0路径的情况下,通过可用的I/O 路径将备用存储区中数据下发到存储阵列。 若确定至少有一条I/O路径的物理链路故障已恢复,即服务器与存储阵列之间当 前存在可用的1/0路径,此时,服务器发送第一线程开始执行如下操作遍历备用存储区, 依次将备用存储区中数据,通过当前可用的1/0路径下发到存储阵列中。具体地,先从备用存储区中读出所有1/0路径故障时根据第一 1/0请求所写入到备用存储区中的数据,再将 这些数据通过当前可用的1/0路径下发到存储阵列中。其中,将备用存储区的数据下发到 存储阵列时,每次写入的数据块尽可能是连续的,且数据块的个数是不固定。每次写入连续 数据块的个数取决于备用存储区上实际连续的数据块数,以及一次1/0操作可存取的数据 块的最大长度。例如,系统一次1/0操作可存取的数据块的最大长度为IO,数据块1至10 的存储情况为数据块1、2内存储有有效数据,数据块3、4内没有存储有效数据,数据块5、 6、7、8内存储有有效数据,数据块9、10内没有存储有效数;则先将数据块1、2写入存储阵 列,再将数据块5、6、7、8写入存储阵列。 需要指出的是本发明实施例中,数据块的编号、1/0请求访问的区域均为数据块 的逻辑地址。本发明实施例中"将备用存储区中数据下发到存储阵列"均包括两个操作将 备用存储区中数据复制到存储阵列中,再将备用存储区中相应数据从备用存储区中清除。
第一线程将备用存储区中数个连续的数据块写入存储阵列中的操作,具体包括两 个步骤首先通过当前可用的1/0路径将备用存储区中数个连续的数据块复制到存储阵列 中,再将备用存储区中该数个连续的数据块删除。上述两个步骤为原子操作,即只有上述两 个步骤都操作成功,才能使备用存储区中数个连续的数据块成功写入存储阵列中。
本发明实施例数据存取方法及服务器,当短时间内服务器与存储阵列所有I/O路
径都发生故障时,通过在服务器的备用存储区进行i/o请求对应的数据存取操作,完成了
1/0请求,没有不中断服务器正在处理的业务。在确定服务器与存储阵列之间恢复可用的 I/O路径后,再将备用存储区中的数据写入存储阵列中,从而提高了存储系统的可靠性,并 保证了存储阵列中数据的有效性。 图3为本发明实施例提供的又一种数据存取方法的流程图。本实施例是在上述第 一线程将备用存储区的数据依次写入存储阵列(图2所示的步骤21)的过程中,向存储阵 列发送第二 1/0请求时,第二线程对该第二 1/0请求的处理流程。即第一线程和第二线程 同时执行。如图2所示,在图2对应实施例的基础上,本实施例还包括
步骤30 :向存储阵列发送第二 I/O请求; 在服务器与存储阵列之间的所有I/O路径都发生故障且在备用存储区中执行第
一 1/0请求对应的存储操作之后,服务器向存储阵列发送第二 1/0请求。 步骤31 :根据第二 1/0请求,在备用存储区中查找第二 1/0请求访问的区域是否 存储有数据; 由于此时,第一线程已开始将备用存储区的数据写入存储阵列,则说明服务器与 存储阵列之间已有一条或多条故障1/0路径恢复,因此当发送第二 1/0请求时,则在备用存 储区中查找第二 1/0请求访问的区域是否存储有数据。 步骤32 :若备用存储区中第二 1/0请求访问的区域没有存储数据,直接在存储阵 列进行第二 1/0请求对应的数据存取操作。 由于此时第一线程有可能还没有将备用存储区中数据都下发到存储阵列中,考虑
到存储阵列中数据的有效性、以及从备用存储区向存储阵列中传送数据的效率,在处理第
二 1/0请求时必须确定备用存储区中第二 1/0请求访问的区域,是否存储有数据。若备用 存储区中第二 1/0请求访问的区域存储有数据,如果直接在存储阵列中进行1/0请求对应 的存取操作,有可能会导致存储阵列中的数据无效。
例如,第二 I/O请求访问的区域为数据块5、6和7,则在备用存储区中查找数据块 5、6和7是否则存储有数据;若有数据,则说明第一线程还没有将数据块5、6和7的数据写 入存储阵列。 若第二 I/O请求为写I/O请求,如果直接将第二 I/O请求对应的数据写入存储阵 列的数据块5、6和7的数据块中,有可能造成如下情况第二线程先将第二 I/O请求的数据 写入了存储阵列的数据块5、6和7中,而第一线程后将备用存储区的数据块5、6和7中数 据写入存储阵列,则会导致存储阵列的数据块5、6和7中数据不是对第二 I/O请求处理后 的数据,而是第二 1/0请求之前的数据。 若第二 1/0请求为读请求时,若备用存储区中第二 1/0请求访问的区域存储有数 据,说明此时第一线程还没有将备用存储区的数据块5、6和7中数据写入到存储阵列。第 二 1/0请求访问的区域存储有数据时,可能存在两种情况 第一种备用存储区中第二 1/0请求访问的区域有可能只存在第二 1/0请求的部 分数据。例如,第二I/0请求访问的区域为数据块5、6和7,在备用存储中,数据块5、6中存 储有数据,而数据块7中没有存储数据。说明在全部1/0路径都发生故障的时间段,没有在 数据块7中执行过存取操作。此时,必须在存储阵列的数据块7中读取相应的数据。另外, 还可使第二线程在读取第二 I/O请求的数据后,将第二 I/O请求访问的区域中数据,以及第 二 I/O请求访问的区域的相邻区域中数据一起下发到存储阵列。 第二种也有可能备用存储区中第二 1/0请求访问的区域存在第二 1/0请求的全 部数据。此时,例如,第二 1/0请求访问的区域为数据块5、6和7,数据块5、6和7都存储有 数据。可先在备用存储区的数据块5、6和7中读取第二I/0请求的数据,再将备用存储区 中编号51至60的数据块中数据下发到存储阵列,从而提高备用存储区向存储阵列传送数 据的效率。 第二 I/O请求为写请求时的处理流程 根据以上分析,在第二I/0请求访问的区域存儲有数据的情况下,第二线程对第
二 1/0请求为写请求时的处理流程,根据具体情况可有以下四种处理方式 写请求的第一种处理流程通过可用的I/O路径将备用存储区中第二 I/O请求访
问的区域中数据下发到存储阵列,再将第二 1/0请求的数据写入存储阵列。 上述下发操作包括复制操作和清除操作。例如,第二 1/0请求访问的区域为数据
块5、6、7和8,而备用存储区的数据块5、6中存储有效数据,而数据块7、8中没有存储数据。
第二线程的具体流程为第一步复制操作先将备用存储区的数据块5、6复制到存储阵列; 第二步清除操作再清除备用存储区的数据块5、6中数据;第三步写入操作然后在存储阵 列的数据块5、6、7和8中写入第二 1/0请求的数据。第二线程的上述三个操作复制操作、 清除操作和写操作,按序组成一个原子操作。即复制操作、清除操作和写操作按顺序执行, 且如有一个操作在执行过程中被中断,则系统回滚到复制操作之前的状态;下一次执行时, 重新从复制操作开始执行,直到清除操作、写操作依次完成,则系统进入写入操作之后的状 态。 又例如,第二I/0请求访问的区域为数据块5、6、7和8,备用存储区的数据块5、6、 7和8中均存储有数据。第二线程的具体处理流程为第一步复制操作先将备用存储区的 数据块5、6、7和8中数据复制到存储阵列;第二步清除操作再清除备用存储区的数据块5、 6、7和8中数据;第三步写入操作然后在存储阵列的数据块5、6、7和8中写入第二 I/O
请求的数据。同上,第二线程的上述三个操作复制操作、清除操作和写操作、按序组成一个
原子操作。
写请求的第二种处理流程(优选的处理流程) 步骤33 :在备用存储区中清除第二 1/0请求访问的区域中数据, 步骤34 :通过可用的I/O路径,将第二 I/O请求的数据写入存储阵列。 例如,第二 I/O请求访问的区域为数据块5、6、7和8,不论备用存储区中数据块5、
6、 7和8是否均存储有数据,第二线程的具体流程均可为第一步清除操作先清除备用存 储区的数据块5、6、7和8中数据;第二步写入操作然后在存储阵列的数据块5、6、7和8中 写入第二 1/0请求的数据。 写请求的第三种处理流程在备用存储区中写入第二 1/0请求的数据,再通过可 用的I/O路径将第二 I/O请求访问的区域中数据下发到存储阵列。 上述下发操作包括复制操作和清除操作。例如,第二 1/0请求访问的区域为数据 块5、6、7和8,不论备用存储区中数据块5、6、7和8是否均存储有数据,第二线程的具体流
程均可为第一步写操作在备用存储区的数据块5、6、7和8中写入第二 I/O请求的数据; 第二步复制操作再将备用存储区的数据块5、6、7和8中数据复制到存储阵列中;第三步
清除操作然后清除备用存储区的数据块5、6、7和8中数据。同上,第二线程的上述三个操
作写操作、复制操作和清除操作、按序组成一个原子操作。
写请求的第四种流程(对第三种处理流程进行改进后得到第四种处理流程)
若查找出第二I/0请求访问的区城的相邻区域中存储有数据,在备用存储区中写 入第二 1/0请求的数据;通过可用的1/0路径将第二 1/0请求访问的区域中数据,以及第二 1/0请求访问的区域的相邻区域中数据,下发到存储阵列。 上述下发操作包括复制操作和清除操作。例如,第二 1/0请求访问的区域为数据 块5、6、7和8,与第二 I/O请求访问的区域相邻的区域数据块3、4中也存储有数据(不论备 用存储区中数据块5、6、7和8是否均存储有数据),第二线程的具体流程可为第一步写操 作在备用存储区的数据块5、6、7和8中写入第二 1/0请求的数据;第二步复制操作再将 备用存储区的数据块3、4、5、6、7和8中数据复制到存储阵列中;第三步清除操作然后清 除备用存储区的数据块3、4、5、6、7和8中数据。同上,第二线程的上述三个操作写操作、 复制操作和清除操作、按序组成一个原子操作。 上述第一处理流程和第三处理流程的相同之处在于完成一次写请求均要执行三 个操作写操作、复制操作和清除操作;不同之处在于上述三个操作的执行顺序不同,因 此,第一处理流程和第三处理流程在效率上相同的。
第二种处理流程,完成一次写请求只需执行两个操作清除操作和写操作,因此, 第二种处理流程的处理效率高于第一种处理流程和第三种处理流程。第四种处理流程与第 三处理流程的不同之处在于,第四种流程将备用存储区中第二 1/0请求访问的区域相邻的 区域数据块中,也下发到存储阵列中,以提高从备用存储区向存储阵列传送数据的效率。
第二 I/O请求为读请求时的处理流程 在第二 1/0请求访问的区域存储有数据的情况下,第二线程对第二 1/0请求为读 请求时的处理流程,根据具体情况可有以下六种处理方式
读请求的第一种处理流程 若第二 1/0请求访问的区域中数据为第二 1/0请求的部分数据,执行如下步骤 步骤35 :将备用存储区中第二 I/O请求访问的区域中数据下发到存储阵列; 通过可用的1/0路径将备用存储区中第二 1/0请求访问的区域中数据下发到存储 阵列。 步骤36 :从存储阵列中读取第二 I/O请求的数据。 上述下发操作包括复制操作和清除操作。例如,第二 1/0请求访问的区域为数据 块5、6、7和8,而备用存储区的数据块5、6中存储有效数据,而数据块7、8中没有存储数据。
第二线程的具体流程为第一步复制操作先将备用存储区的数据块5、6复制到存储阵列; 第二步清除操作再清除备用存储区的数据块5、6中数据;第三步读操作然后在存储阵列 的数据块5、6、7和8中读取第二I/0请求的数据。同上,第二线程的上述三个操作复制操
作、清除操作和读操作、按序组成一个原子操作。
读请求的第二种处理流程 若第二 1/0请求访问的区域中数据为第二 1/0请求的全部数据,通过可用的I/O 路径将备用存储区中第二 1/0请求访问的区域中数据复制到存储阵列,从备用存储区中读 取第二 1/0请求的数据后,再从备用存储区中清除第二 1/0请求访问的区域中数据;
例如,第二 1/0请求访问的区域为数据块5、6、7和8,备用存储区的数据块5、6、7 和8中均存储有数据。第二线程的具体处理流程为第一步复制操作先将备用存储区的数 据块5、6、7和8中数据复制到存储阵列;第二步读操作从备用存储区的数据块5、6、7和8 中读取第二 I/O请求的数据;第三步清除操作再清除备用存储区的数据块5、6、7和8中 数据。同上,第二线程的上述三个操作复制操作、读操作和清除操作,按序组成一个原子操 作。
读请求的第三种处理流程 若第二 1/0请求访问的区域中数据为第二 1/0请求的全部数据,执行如下步骤
步骤37 :从备用存储区中第二 I/O请求的访问区域读取第二 I/O请求的数据;
步骤38 :将备用存储区中第二 I/O请求访问的区域中数据下发到存储阵列。
通过可用的1/0路径将备用存储区中第二 1/0请求访问的区域中数据下发到存储 阵列。 上述下发操作包括复制操作和清除操作。例如,第二 1/0请求访问的区域为数据 块5、6、7和8,备用存储区的数据块5、6、7和8中均存储有数据。第二线程的具体处理流程
为第一步读操作从备用存储区的数据块5、6、7和8中读取第二 1/0请求的数据;第二步 复制操作先将备用存储区的数据块5、6、7和8中数据复制到存储阵列;第三步清除操作 再清除备用存储区的数据块5、6、7和8中数据。同上,第二线程的上述三个操作读操作、 复制操作和清除操作,按序组成一个原子操作。
读请求的第四种处理流程(对第一种流程改进后得到第四种处理流程)
若第二 1/0请求访问的区域中数据为第二 1/0请求的部分数据,查找出第二 I/O 请求访问的区域的相邻区域中存储有数据;通过可用的1/0路径,将备用存储区中第二 1/ O请求访问的区域中数据,以及第二 1/0请求访问的区域的相邻区域中数据,下发到存储阵 列;从存储阵列中读取第二 1/0请求的数据。
上述下发操作包括复制操作和清除操作。例如,第二 1/0请求访问的区域为数据 块5、6、7和8,而备用存储区的数据块5、6中存储有效数据,数据块7、8中没有存储数据,并 且与第二 1/0请求访问的区域相邻的区域数据块3、4中存储有数据。第二线程的处理流程
可为第一步复制操作先将备用存储区的数据块3、4、5和6中数据复制到存储阵列;第二 步清除操作再清除备用存储区的数据块3、4、5和6中数据;第三步读取操作然后在存储
阵列的数据块5、6、7和8中读取第二 1/0请求的数据。上述下发操作包括复制操作和清除
操作。同上,第二线程的上述三个操作复制操作、清除操作和读操作、按序组成一个原子操作。 读请求的第五种处理流程(对第二种流程改进后得到第五种处理流程)
若第二 1/0请求访问的区域中数据为第二 1/0请求的全部数据,查找出第二 I/O 请求访问的区域的相邻区域中存储有数据;通过可用的1/0路径,将备用存储区中第二 1/ O请求访问的区域中数据,以及第二 1/0请求访问的区域的相邻区域中数据,复制到存储阵 列;从备用存储区中读取第二 1/0请求的数据;从备用存储区中清除第二 1/0请求访问的 区域中数据,以及第二 1/0请求访问的区域的相邻区域中数据。 例如,第二 1/0请求访问的区域为数据块5、6、7和8,备用存储区的数据块5、6、7 和8中均存储有数据,并且数据块3、4中也存储有数据。第二线程的具体处理流程为第一 步复制操作先将备用存储区的数据块3、4、5、6、7和8中数据复制到存储阵列;第二步读
操作从备用存储区的数据块5、6、7和8中读取第二 I/O请求的数据;第三步清除操作再
清除备用存储区的数据块3、4、5、6、7和8中数据。同上,第二线程的上述三个操作复制操 作、读操作和清除操作,按序组成一个原子操作。 读请求的第六种处理流程(对第三种处理流程改进后得到第六种处理流程)
若第二 1/0请求访问的区域中数据为第二 1/0请求的全部数据,查找出第二 I/O 请求访问的区域的相邻区域中存储有数据;从备用存储区中第二 1/0请求访问的区域读取 第二 1/0请求的数据;通过可用的1/0路径,将备用存储区中第二 1/0请求的访问区域中数 据,以及第二 1/0请求访问的区域的相邻区域中数据,下发到存储阵列。
上述下发操作复制操作和清除操作。例如,第二 I/O请求访问的区域为数据块5、 6 、 7和8 ,备用存储区的数据块5 、 6 、 7和8中均存储有数据,数据块3 、 4中也存储有数据。第 二线程的具体处理流程为第一步读取操作从备用存储区的数据块5、6、7和8中读取第 二I/0请求的数据;第二步复制操作先将备用存储区的数据块3、4、5、6、7和8中数据复制 到存储阵列;第三步清除操作再清除备用存储区的数据块3、4、5、6、7和8中数据。上述下 发操作包括复制操作和清除操作。同上,第二线程的上述三个操作读操作、复制操作和清 除操作,按序组成一个原子操作。 上述对读请求的处理过程可知,第一种处理流程是在备用存储区只存储有第二I/
o请求的部分数据时的处理方式。在备用存储区只存储有第二i/o请求的全部数据时,采用
第二种处理流程和第三种处理流程。第二种处理流程和第三种处理流程的相同之处在于, 完成一次读请求均需执行三个操作读操作、复制操作和清除操作;不同之处在于,三个操 作的执行顺序不同。第四种流程、第五种流程和第六种处理流程,分别在第一种处理流程、 第二种处理流程和第三处理流程的基础上,将备用存储区中第二 1/0请求访问的区域相邻 的区域数据块中,也下发到存储阵列中,以提高从备用存储区向存储阵列传送数据的效率。
本实施例数据存取方法,在将备用存储区的数据下发到存储阵列的过程中(即步 骤21执行过程中),根据第二 1/0请求的类型,分别在备用存储区和存储阵列中执行第二 1/0请求对应的存取操作,以提高从备用存储区向存储阵列传送数据的效率,同时保证存取 阵列中数据的有效性。 图4为本发明实施例提供的一种服务器的结构示意图,如图4所示,本实施例包 括第一 I/O请求模块40和存取操作模块41。 第一 I/O请求模块40用于向存储阵列发送第一 I/O请求;存取操作模块41用于 在与存储阵列之间不存在可用的1/0路径的情况下,根据第一 1/0请求在备用存储区进行 数据存取操作。 其中,存取操作模块41包括读操作子模块411和写操作子模块412。 读操作子模块411,用于若第一I/0请求为读请求,且在备用存储区中查找到第一
1/0请求的访问区域存储有数据时,在备用存储区读取第一 1/0请求的数据;写操作子模块
412,用于若第一 1/0请求为写请求,在备用存储区中写入第一 1/0请求的数据。 具体地,服务器周期性检测与存储阵列之间是否存在可用的I/O路径,并保存检
测结果。当第一 1/0请求模块40向存储阵列发送第一 1/0请求时,若服务器保存的检测结
果表明服务器与存储阵列之间存在可用的1/0路径时,存取操作模块41在存储阵列中进
行第一 1/0请求对应的操作;若服务器中保存的检测结果表明服务器与存储阵列之间不
存在可用的1/0路径,存取操作模块41根据第一 1/0请求在备用存储区进行数据存取操
作。其中,第一 1/0请求为读请求,且在备用存储区中查找到第一 1/0请求的访问区域存储
有数据时,读操作子模块411在备用存储区读取第一I/0请求的数据;若第一I/0请求为写
请求,写操作子模块412在备用存储区中写入第一 1/0请求的数据。本实施例中各模块的
工作机理参见图la对应实施例中步骤10至步骤21的描述,在此不再赘述。 本实施例服务器,当第一 1/0请求模块发送1/0请求时,若短时间内若服务器与存
储阵列所有1/0路径都发生故障,存取操作模块在服务器的备用存储区进行1/0请求对应
的数据存取操作,完成了 1/0请求且不中断服务器正在处理的业务,使得在不存在可用的
1/0路径的情况下,仍然可以处理I/0请求,降低了业务发生中断的概率,从而提高存储系
统的可用性。 图5为本发明实施例提供的另一种服务器的结构示意图。在图5对应实施例的基 础上,如图5所示,本实施例还包括下发模块42。 下发模块42用于在确定与存储阵列之间恢复可用的I/0路径的情况下,通过可用 的1/0路径将备用存储区中数据写入存储阵列。 具体地,当服务器确定与存储阵列之间恢复可用的I/O路径时,下发模块42通过 可用的1/0路径将备用存储区中数据写入存储阵列。 本实施例中各模块的工作机理参见图2对应实施例中步骤21的描述,在此不再赘 述。 本实施例服务器,在存取操作模块41在服务器的备用存储区进行1/0请求对应的
数据存取操作之后,若确定服务器与存储阵列之间存在可用的1/0路径,下发模块42将备
用存储区中的数据写入存储阵列中,从而保证了存储阵列中数据的有效性。 图6为本发明实施例提供的又一种服务器的结构示意图。在图5所示实施例的基础上,如图6所示,本实施例还包括写请求模块43、第一查找模块44、第一操作模块45、第 二操作模块46、第三操作模块47,读请求模块48、第二查找模块49、第四操作模块410和第 三查找模块411以及第五操作模块412。 在图5对应实施例中下发模块42通过可用的1/0路径将备用存储区中数据写入 存储阵列的过程中,写请求模块43发送了访问存储阵列的第二 I/O请求,该第二 I/O请求 为写请求。写请求模块43发送第二I/0请求后,在服务器确定与存储阵列之间存在可用的 1/0路径的情况下,若查找出在备用存储区中查找出第二I/0请求的访问区域没有存储数 据,则直接在存储阵列中执行第二 1/0请求的存取操作。 需要指出的是以下各模块中的下发操作均包括复制操作和清除操作。
在第二 1/0请求为写请求的情况下,第一查找模块44根据第二 1/0请求,在备用 存储区中查找出第二 1/0请求的访问区域存储有数据时,第一操作模块45通过可用的I/O 路径将备用存储区中第二 1/0请求访问的区域中数据下发到存储阵列,再将第二 1/0请求 的数据写入存储阵列;或者,第二操作模块46在第二I/0请求为写请求时,在备用存储区中 清除第二 I/O请求访问的区域中数据,再通过可用的I/O路径,将第二 I/O请求的数据写入 存储阵列;或者,第三操作模块47,在第二 1/0请求为写请求时,在备用存储区中写入第二 1/0请求的数据,再通过可用的I/0路径将备用存储区中第二I/0请求访问的区域中数据下 发到存储阵列。 对第三操作模块47进行改进后,第三操作模块47还具有以下功能查找出第二 1/0请求访问的区域的相邻区域中存储有数据,在备用存储区中写入第二 1/0请求的数据; 通过可用的1/0路径将第二 1/0请求访问的区域中数据,以及第二 1/0请求访问的区域的 相邻区域中数据,下发到存储阵列。 在图5对应实施例中下发模块42通过可用的1/0路径将备用存储区中数据写入 存储阵列的过程中,读请求模块48发送了访问存储阵列的第二 I/O请求,该第二 I/O请求 为读请求。读请求模块48发送了访问存储阵列的第二 1/0请求后,第二查找模块49在备 用存储区中查找出第二 1/0请求的访问区域存储有第二 1/0请求的部分数据时,第四操作 模块410通过可用的1/0路径将备用存储区中第二 1/0请求访问的区域中数据,下发到存 储阵列。 对第四操作模块410改进后,第四操作模块410还可有以下功能查找出第二I/0 请求访问的区域的相邻区域中存储有数据;通过可用的I/0路径,,将备用存储区中第二1/ O请求访问的区域中数据和第二 1/0请求访问的区域的相邻区域中数据,下发到存储阵列; 再从存储阵列中读取第二 I/O请求的数据。 第三查找模块411在备用存储区中查找出第二I/0请求的访问区域存储有第二I/ 0请求的全部数据时,第五操作模块412通过可用的1/0路径第五操作模块,从备用存储区 中第二 1/0请求的访问区域读取所述第二 1/0请求的数据,并将备用存储区中第二 1/0请 求访问的区域中数据。 对第五操作模块412改进后,第五操作模块412还可有以下功能查找出第二 1/ O请求访问的区域的相邻区域中存储有数据;通过可用的1/0路径,将备用存储区中所述第 二 1/0请求的访问区域中数据和第二 1/0请求访问的区域的相邻区域中数据,下发到存储 阵列。
本实施例中各模块的工作机理参见图3对应实施例中的描述,在此不再赘述。
本实施例服务器,在下发模块将备用存储区的数据写入存储阵列的过程中,根据 第二 1/0请求模块发送的第二 1/0请求的类型,分别在备用存储区和存储阵列中执行存取 操作,以提高从备用存储区向存储阵列传送数据的效率,同时保证存取阵列中数据的有效 性。 本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括ROM、 RAM、磁碟或者 光盘等各种可以存储程序代码的介质。 最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
一种数据存取方法,其特征在于,包括向存储阵列发送第一I/O请求;在与所述存储阵列之间不存在可用的I/O路径的情况下,根据所述第一I/O请求在备用存储区进行数据存取操作。
2. 根据权利要求l所述的数据存取方法,其待征在于,根据所述第一I/0请求在备用存储区进行数据存取操作包括若所述第一 1/0请求为读请求,且在所述备用存储区中查找到所述第一 1/0请求的访问区域存储有数据时,从所述备用存储区读取所述第一 1/0请求的数据;或,若所述第一 1/0请求为写请求,在所述备用存储区中写入所述第一 1/0请求的数据。
3. 根据权利要求1所述的数据存取方法,其特征在于,还包括在与所述存储阵列之间恢复可用的1/0路径的情况下,通过所述可用的1/0路径将所述备用存储区中的数据下发到所述存储阵列。
4. 根据权利要求1所述的数据存取方法,其特征在于,还包括在与所述存储阵列之间存在可用的1/0路径的情况下,向所述存储阵列发送第二 1/O请求,若所述第二 1/0请求为写请求,且当根据所述第二 1/0请求,在所述备用存储区中查找出所述第二 1/0请求访问的区域存储有数据时,将所述备用存储区中所述第二 1/0请求访问的区域中数据下发到所述存储阵列,再将所述第二i/o请求的数据写入所述存储阵列;或,在所述备用存储区中清除所述第二 1/0请求访问的区域中的数据,再将所述第二 I/O请求的数据写入所述存储阵列;或,在所述备用存储区中写入所述第二 1/0请求的数据,再将所述备用存储区中所述第二1/0请求访问的区域中的数据下发到所述存储阵列,或,将所述备用存储区中所述第二I/0请求访问的区域中的数据和所述第二 I/O请求访问的区域的相邻区域中的数据下发到所述存储阵列。
5. 根据权利要求1所述的数据存取方法,其特征在于,还包括在与所述存储阵列之间存在可用的1/0路径的情况下,向所述存储阵列发送第二 I/O请求,若所述第二 1/0请求为读请求,且当根据所述第二 1/0请求,在所述备用存储区中查找出所述第二 1/0请求访问的区域存储有第二 1/0请求的部分数据时,将所述备用存储区中所述第二 I/O请求访问的区域中的数据或所述备用存储区中所述第二 I/O请求访问的区域中的数据和所述第二 1/0请求访问的区域的相邻区域中的数据,下发到所述存储阵列;从所述存储阵列中读取所述第二 1/0请求的数据;或,在与所述存储阵列之间存在可用的1/0路径的情况下,向所述存储阵列发送第二 I/O请求,若所述第二 1/0请求为读请求,且当根据所述第二 1/0请求,在所述备用存储区中查找出所述第二 1/0请求访问的区域存储有第二 1/0请求的全部数据时,从所述备用存储区中所述第二 1/0请求的访问区域读取所述第二 1/0请求的数据,并将所述备用存储区中所述第二 1/0请求访问的区域中的数据,或所述备用存储区中所述第二 1/0请求的访问区域中的数据和所述第二 I/O请求访问的区域的相邻区域中的数据,下发到所述存储阵列。
6. —种服务器,其特征在于,包括第一 1/0请求模块,用于向存储阵列发送的第一 1/0请求;存取操作模块,用于在与所述存储阵列之间不存在可用的1/0路径的情况下,根据所述第一 1/0请求在备用存储区进行数据存取操作。
7. 根据权利要求6所述的服务器,其特征在于,所述存取操作模块包括读操作子模块,用于在所述第一 I/O请求为读请求,且在所述备用存储区查找到所述第一 1/0请求的访问区域存储有数据时,在所述备用存储区读取所述第一 1/0请求的数据;写操作子模块,用于在所述第一i/o请求为写请求时,在所述备用存储区中写入所述第一 1/0请求的数据。
8. 根据权利要求6所述的服务器,其特征在于,还包括下发模块,用于在与所述存储阵列之间恢复可用的1/0路径的情况下,通过所述可用的I/O路径将所述备用存储区中数据下发到所述存储阵列。
9. 根据权利要求6所述的服务器,其特征在于,还包括写请求模块,用于在与所述存储阵列之间存在可用的1/0路径的情况下,向所述存储阵列发送第二 I/O请求,所述第二 I/O请求为写请求;第一查找模块,用于在所述备用存储区中查找所述第二 1/0请求访问的区域是否存储有数据;第一操作模块,用于将所述备用存储区中所述第二 1/0请求访问的区域中数据下发到所述存储阵列,再将所述第二 1/0请求的数据写入所述存储阵列;或,第二操作模块,用于在所述备用存储区中清除所述第二i/o请求访问的区域中数据,再将所述第二 1/0请求的数据写入所述存储阵列;或,第三操作模块,用于在所述备用存储区中写入所述第二 I/O请求的数据,再将所述备用存储区中所述第二I/0请求访问的区域中数据,或,将所述备用存储区中所述第二I/0请求访问的区域中数据和所述第二i/o请求访问的区域的相邻区域中数据下发到所述存储阵列。
10. 根据权利要求6所述的服务器,其特征在于,还包括读请求模块,用于在与所述存储阵列之间存在可用的1/0路径的情况下,向所述存储阵列发送第二 I/O请求,所述第二 I/O请求为读请求;第二查找模块,用于在所述备用存储区中查找所述第二 1/0请求访问的区域是否存储有第二 1/0请求的部分数据;第四操作模块,用于将所述备用存储区中所述第二 1/0请求访问的区域中数据,或,将所述备用存储区中所述第二 1/0请求访问的区域中数据和所述第二 1/0请求访问的区域的相邻区域中数据,下发到所述存储阵列,再从所述存储阵列中读取所述第二 I/O请求的数据;或,第三查找模块,用于在所述备用存储区中查找所述第二 1/0请求访问的区域是否存储有第二 1/0请求的全部数据;第五操作模块,用于从所述备用存储区中所述第二 1/0请求的访问区域读取所述第二I/O请求的数据,并将所述备用存储区中所述第二 I/O请求访问的区域中数据,或将所述备用存储区中所述第二 1/0请求的访问区域中数据和所述第二 1/0请求访问的区域的相邻区域中数据,下发到所述存储阵列。
全文摘要
本发明实施例提供一种数据存取方法及服务器。该数据存取方法包括触发访问存储阵列的第一I/O请求;在与存储阵列之间不存在可用的I/O路径的情况下,根据第一I/O请求在备用存储区进行数据存取操作。本发明实施例在短时间内所有I/O路径都发生故障时,在备用存储区中完成了I/O请求,没有中断发出I/O请求的服务器正在处理的业务,使得在不存在可用的I/O路径的情况下,仍然可以处理I/O请求,降低了业务发生中断的概率,从而提高存储系统的可用性。
文档编号H04L29/08GK101714064SQ20091025887
公开日2010年5月26日 申请日期2009年12月29日 优先权日2009年12月29日
发明者张力 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1