在本地对象存储节点中同步对象的方法及装置的制造方法

文档序号:9791679阅读:408来源:国知局
在本地对象存储节点中同步对象的方法及装置的制造方法
【技术领域】
[0001]本发明涉及对象存储技术,更具体地,涉及一种在本地对象存储节点中同步对象的方法及装置。
【背景技术】
[0002]当前,对象存储系统越来越普遍。对象存储系统以对象为存储的基本单元,而每个对象是数据和数据属性集的综合。通常,对象被存储在对象存储设备中,而对象存储设备负责管理本地的对象。
[0003]在分布式对象存储系统中,多个对象存储设备可同步地存储同一个对象,这样,在多个对象存储设备中有该对象的多个复本。
[0004]然而,如果这些对象存储设备中的任何对象存储设备发生故障或者网络发生故障,则可能出现对象的复本只存在于部分对象存储设备而非全部对象存储设备的情形。因此,需要对这种只存在部分复本的不一致进行修复。
[0005]在现有技术中提供了一种后台复制方案以发现和修复这种只存在部分复本的不一致。例如,OpenStack Swift对象存储系统使用复制器以执行该服务。在每个复制周期,复制器从存储了特定对象的多个复本的多个对象存储设备中的每一个中检索所有对象的名称和时间戳,通过比较所获取的数据来查找各个对象存储设备中是否存在对象的复本的存在差异,并进而修复所查找到的存在差异。然而,该方案会导致高的输入/输出(I/O)开销,因为它需要扫描(读取)文件系统以获取每个对象的名称和时间戳。此外,如果对象存储设备中对象的数量非常大,则完成所有对象的全部比较将花费大量的时间,从而造成复制器的性能变得难以容忍。

【发明内容】

[0006]本发明的实施例提供了一种在本地对象存储节点中同步对象的方法及装置。
[0007]根据本发明的一个方面,提供了一种在本地对象存储节点中同步对象的方法,其中所述本地对象存储节点和远程对象存储节点存储了相同的对象,所述方法包括:获取所述本地对象存储节点中所述对象的最新的状态记录,作为所述对象的本地状态记录,所述状态记录包括改变对象的操作的名称、改变对象的操作的时间戳、第一状态标志和第二状态标志,所述第一状态标志指示是否执行了对象从当前对象存储节点到另一个对象存储节点的同步,所述第二状态标志指示是否执行了该对象从所述另一个对象存储节点到所述当前对象存储节点的同步;从所述远程对象存储节点获取所述对象的最新的状态记录,作为所述对象的远程状态记录;以及基于所述本地状态记录和所述远程状态记录,执行所述对象的同步。
[0008]根据本发明的另一个方面,提供了一种在本地对象存储节点中同步对象的装置,其中所述本地对象存储节点和远程对象存储节点存储了相同的对象,所述装置包括:本地状态记录获取模块,其被配置为获取所述本地对象存储节点中所述对象的最新的状态记录,作为所述对象的本地状态记录,所述状态记录包括改变对象的操作的名称、改变对象的操作的时间戳、第一状态标志和第二状态标志,所述第一状态标志指示是否执行了对象从当前对象存储节点到另一个对象存储节点的同步,所述第二状态标志指示是否执行了该对象从所述另一个对象存储节点到所述当前对象存储节点的同步;远程状态记录获取模块,其被配置为从所述远程对象存储节点获取所述对象的最新的状态记录,作为所述对象的远程状态记录;以及同步模块,其被配置为基于所述本地状态记录和所述远程状态记录,执行所述对象的同步。
[0009]根据本发明的实施例的方法和装置能够快速地检测在分布式对象存储系统中多个对象存储节点中存储的相同对象的复本之间的不一致,并修复所检测到的不一致,而不产生高的磁盘I/o开销。
【附图说明】
[0010]通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0011]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
[0012]图2是根据本发明的实施例的在本地对象存储节点中同步对象的方法的流程图;
[0013]图3是图2所示的实施例中执行对象的同步的过程的示意性流程图;
[0014]图4是说明在获取到对象远程状态记录时执行对象的同步的过程的示意性流程图;
[0015]图5是说明在未获取到对象的远程状态记录时执行对象的同步的过程的示意性流程图;
[0016]图6是根据本发明的实施例的在本地对象存储节点中同步对象的装置的示意性方框图。
【具体实施方式】
[0017]下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0018]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0019]如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0020]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0021]计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0022]系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM) 30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如⑶-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0023]具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0024]计算机系统/服务器12也可以与一个或多个外部设备14 (例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口 22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0025]现在参看附图,对本发明的实施例进行详细说明。
[0026]图2示出了根据本发明的实施例的在本地对象存储节点中同步对象的方法的流程图。下面结合附图,对本实施例进行详细描述。
[0027]本实施例的基本思想是利用在分布式对象存储系统中的各个对象存储节点的内存中存储的相同对象的状态记录,检查该对象的多个复本之间的差异,并进而修复差异。
[0028]在本实施例中,本地对象存储节点可以是分布式对象存储系统中的多个对象存储节点之一,相应地,多个对象存储节点中除了本地对象存储节点以外的其它对象存储节点可被称为远程对象存储节点。此外,本地对象存储节点和至少一个远程对象存储节点可存储有相同的对象。
[0029]对象的状态记录是用于记录与改变对象的操作有关的信息的条目,其在每次发生了改变对象的操作时生成,并可存储在存储了该对象的对象存储节点的内存中。改变对象的操作可例如包括创建对象、删除对象等影响对象存储节点的磁盘的操作。对象的状态记录可包括对象的名称、操作的名称、操作的时间戳和对象的同步状态。应当注意,在本实施例中,每一个时间戳仅对应于针对一个对象的一个操作,也就是说,对于同一个对象,在一个时间戳只有一个操作。
[0030]对象的同步状态可用于指示是否执行了对象从当前对象存储节点到其它对象存储节点的同步以及对象从其它对象存储节点到当前对象存储节点的同步。在本实施例中,可使用状态标志来表示同步状态。具体地,同步状态可包括第一状态标志和第二状态标志,其中,第一状态标志指示是否执行了对象从当前对象存储节点到其它对象存储节点的同步,第二状态标志指示是否执行了对象从其它对象存储节点到当前对象存储节点的同步。第一状态标志和第二状态标志可使用二值表示,例如“O”(表示未执行同步)和“I”(表示已执行同步)、“真”(表示已执行同步)和“假”(表示未执行同步)等。
[0031]在每个对象存储节点中可存储至少一个对象。对于每个对象,都可产生至少一个状态记录。因此,在每个对象存储节点中,可存储至少一个对象的至少一个状态记录。
[0032]在当前对象存储节点具有一个对象的情况下,可存在对应的一个或多个其它对象存储节点。在一个其它对象存储节点的情况下,当前对象存储节点的状态记录中的同步状态将包括一个第一状态标志以指示是否执行了对象从当前对象存储节点到该一个其它对象存储节点的同步和一个第二状态标志以指示是否执行了对象从该一个其它对象存储节点到当前对象存储节点的同步。在多个其它对象存储节点的情况下,当前对象存储节点的状态记录
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1