CN108509153A - Osd选择方法、数据写入和读取方法、监控器和服务器集群 - Google Patents
Osd选择方法、数据写入和读取方法、监控器和服务器集群 Download PDFInfo
- Publication number
- CN108509153A CN108509153A CN201810246478.0A CN201810246478A CN108509153A CN 108509153 A CN108509153 A CN 108509153A CN 201810246478 A CN201810246478 A CN 201810246478A CN 108509153 A CN108509153 A CN 108509153A
- Authority
- CN
- China
- Prior art keywords
- osd
- read
- auxiliary
- target
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种OSD选择方法、数据写入和读取方法、监控器和服务器集群,涉及计算机的技术领域,该方法包括:检测目标OSD的存储利用率,目标OSD为Ceph集群中的OSD;如果检测到目标OSD的存储利用率达到第一门限值,则将目标OSD标记为只读OSD,并为只读OSD选择辅助OSD,在将目标OSD标记为只读OSD之后,目标OSD不允许执行写入操作;建立只读OSD和所述辅助OSD之间的关联关系。在本申请实施例中,通过建立只读OSD和辅助OSD之间的关联关系,能够通过辅助OSD来协助目标OSD执行数据的各类操作,能够在充分利用存储资源的同时,避免出现OSD处于只读状态之后对集群业务带来的不利应用,缓解了现有技术中存在当对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题。
Description
技术领域
本申请涉及计算机的技术领域,尤其是涉及一种OSD选择方法、数据写入和读取方法、监控器和服务器集群。
背景技术
Ceph集群对外提供分布式存储服务,当集群中存储的数据越来越多,未能及时扩容时,OSD(Object Storage Device,中文名称对象存储设备)已用容量将达到存储上限,此时OSD将停止工作,导致Ceph集群中无法继续写入数据,严重影响了对外提供的存储服务。另外,当Ceph集群中已用容量占集群总容量的比例达到一定程度时,发生部分存储节点故障或部分OSD故障,集群将开始数据恢复的工作,重新组织发生故障的存储节点或OSD上的数据,数据将被重新分布到正常的OSD上。在数据重新分布的过程中就有可能导致部分OSD已用容量达到存储上限,如此严重影响了集群的功能,造成一系列严重后果。
当Ceph集群中有存储节点上的OSD已用容量接近或者达到存储上限时,可以为该存储节点增加OSD,使数据及时迁移到新加入的OSD上,达到平衡数据的目的。但是单个OSD达到存储上限时,就需要对集群进行扩容操作。实际上集群内部的OSD之间的存储利用率是存在差异的,这无疑是存储资源上的严重浪费;同时频繁扩容也加剧了运维管理的负担;删除集群的数据来降低OSD的已用容量方法更不可取,无法保证集群中有无用的数据可供删除。
发明内容
有鉴于此,本申请的目的在于提供一种OSD选择方法、数据写入和读取方法、监控器和服务器集群,以缓解了现有技术中存在当对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题。
第一方面,本申请实施例提供了一种OSD选择方法,应用于对象存储系统Ceph集群的监控器中,所述Ceph集群中包括多个对象存储设备OSD,包括:检测目标OSD的存储利用率,其中,所述目标OSD为所述Ceph集群中的OSD;如果检测到所述目标OSD的存储利用率达到第一门限值,则将所述目标OSD标记为只读OSD,并为所述只读OSD选择辅助OSD,其中,在将所述目标OSD标记为只读OSD之后,所述目标OSD不允许执行写入操作;建立所述只读OSD和所述辅助OSD之间的关联关系。
进一步地,为所述只读OSD选择所述辅助OSD包括:将所述目标OSD的标识信息和所述目标OSD所在故障域中其他OSD的标识信息作为CRUSH算法的输入进行计算,得到待选OSD;在所述待选OSD满足预设条件的情况下,确定所述待选OSD为所述只读OSD的辅助OSD,其中,所述预设条件包括:所述待选OSD未被标记为只读OSD,所述待选OSD和所述只读OSD处于相同故障域中,且所述待选OSD不是所述Ceph集群中其他OSD的辅助OSD。
进一步地,所述方法还包括:判断所述只读OSD是否满足恢复条件,其中,所述恢复条件为假设所述辅助OSD中代替所述只读OSD存储的数据恢复到所述只读OSD后所述只读OSD的存储利用率小于或者等于第二门限值,所述第二门限值小于所述第一门限值;如果满足,则向所述辅助OSD发送触发消息,以使所述辅助OSD基于所述触发消息将其代替所述只读OSD存储的数据恢复到所述只读OSD中;在检测到所述辅助OSD代替所述只读OSD存储的数据全部恢复到所述只读OSD中之后,解除所述只读OSD和所述辅助OSD之间的关联关系。
进一步地,在建立所述只读OSD和所述辅助OSD之间的关联关系之后,所述方法还包括:如果检测到所述只读OSD发生故障,则解除所述辅助OSD和所述只读OSD之间的关联关系,其中,在解除所述关联关系之后,所述只读OSD对其中已存储对象进行恢复。
进一步地,在建立所述只读OSD和所述辅助OSD之间的关联关系之后,所述方法还包括:如果所述辅助OSD失效,则通过CRUSH算法从所述多个OSD中为所述只读OSD确定新的辅助OSD,以使所述新的辅助OSD获取差异化列表,并基于所述差异化列表进行已存储对象的恢复操作;其中,所述差异化列表中包括所述辅助OSD协助所述只读OSD进行存储操作时所存储的对象的标识信息。
第二方面,本申请实施例提供了一种数据写入方法,应用于对象存储系统Ceph集群中的对象存储设备OSD,包括:在接收到客户端发送的写入请求之后,检测第一OSD是否已经被标记为只读OSD,其中,所述写入请求为在所述第一OSD中写入待操作对象的请求,所述第一OSD为所述客户端在发起所述写入请求之前的PG寻址映射阶段为所述待操作对象所对应的PG选取的OSD;如果检测出所述第一OSD被标记为所述只读OSD,则确定所述只读OSD的辅助OSD,并在所述辅助OSD中对所述待操作对象执行写入操作。
进一步地,确定所述只读OSD的辅助OSD,并在所述辅助OSD中对所述待操作对象执行写入操作包括:在映射关系表中确定所述只读OSD的辅助OSD,其中,所述映射关系中包括PG和OSD之间的映射关系,以及只读OSD和辅助OSD之间的关联关系;向所述辅助OSD发送通知信息,以使所述辅助OSD对所述待操作对象执行写入操作。
第三方面,本申请实施例提供了一种数据读取方法,应用于对象存储系统Ceph集群中的对象存储设备OSD,包括:在接收到客户端发送的在第一OSD中读取待读取对象的读取请求后,判断所述第一OSD是否已经被标记为只读OSD;如果是,则确定所述第一OSD中是否存在所述待读取对象;在确定出不存在的情况下,所述第一OSD将所述读取请求重定向至所述第一OSD的辅助OSD,以使所述第一OSD的辅助OSD查找所述待读取对象。
进一步地,在确定出所述第一OSD中存在所述待读取对象的情况下,所述第一OSD基于所述读取请求查找所述待读取对象。
进一步地,所述方法还包括:在获取到客户端发送的读取所述待读取对象的读取请求后,在所述第一OSD未被标记为所述只读OSD的情况下,则所述第一OSD基于所述读取请求查找所述待读取对象。
第三方面,本申请实施例提供了一种监控器,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法。
第四方面,本申请实施例提供了服务器集群,所述服务器集群上设置有对象存储系统Ceph集群,其中,所述服务器集群的每个服务器上包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行,以实现任一项所述的方法。
在本申请实施例中,通过Ceph集群的监控器检测目标OSD的存储利用率,其中,目标OSD为所述多个对象存储设备OSD中的OSD;如果监控器检测到目标OSD的存储利用率达到第一门限值,则将目标OSD标记为只读OSD,并为只读OSD选择辅助OSD,其中,在将目标OSD标记为只读OSD之后,目标OSD不允许执行写入操作;最后,监控器建立只读OSD和辅助OSD之间的关联关系。在建立该关联关系之后,辅助OSD就能够协助只读OSD进行数据的存储操作。在本申请实施例中,当目标OSD被标记为只读OSD之后,通过选择辅助OSD来协助目标OSD执行数据的各类操作的方式,能够在充分利用存储资源的同时,避免出现OSD被标记为只读OSD之后对Ceph集群业务带来的不利应用,进而缓解了现有技术中存在的对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题,从而实现了提高了数据操作效率的技术效果。
本申请的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种基于Ceph的寻址流程的示意图;
图2是根据本申请实施例的一种OSD选择方法的流程图;
图3是根据本申请实施例的一种选择辅助方法的流程图;
图4是根据本申请实施例的另一种OSD选择方法的流程图;
图5是根据本申请实施例的一种数据写入方法的流程图;
图6是根据本申请实施例的一种数据写入流程的流程图;
图7是根据本申请实施例的一种数据读取方法的流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
Ceph是一种软件定义存储技术,它是一个开源项目,为块存储、对象存储和文件存储提供软件定义的、统一的存储解决方案,具备可大规模扩展、高性能、无单点故障的分布式存储系统,对外提供海量、无差别以及统一的分布式存储服务。Ceph自上而下分为4个层次,分别是:基础存储系统(Reliable Autonomic Distributed Object Storage,简称RADOS),基础库Librados,高层应用接口和应用层。Ceph的底层是RADOS由连个组件组成:对象存储设备(Object Storage Device,简称OSD)和若干个负责完成系统状态检测和维护的Monitor。
如图1所示的为一种基于Ceph的寻址流程示意图。在图1中,包括以下映射关系:文件到对象的映射关系,对象到逻辑集合(Placement Group,简称PG,PG一般也称为归置组)的映射关系,以及PG到OSD的映射关系。其中,文件(也即,File)是用户需要存储或者访问的文件,对于一个基于Ceph开发的对象存储应用而言,对象(也即,Ojbect)为将文件切分成统一大小的一系列Ojbect之后的数据。PG是若干个对象的逻辑集合,为保证数据的可靠性,这些对象被复制到多个OSD上。Ceph的OSD由一个已经存在物理磁盘驱动器和OSD服务组成。Ceph的核心特性(可靠性、平衡性、自恢复和一致性)都始于OSD。
下面将结合图1具体介绍上述三次映射的具体实现方式:
(1)文件到对象的映射
文件到对象的映射是将用户要操作的file,映射为RADOS能够处理的对象object。文件到对象的映射的本质就是按照object的最大size对file进行切分。每一个切分后产生的object将获得唯一的标识信息oid,即object id。oid可以由ino和ono构成,ino是待操作file的元数据,可以简单理解为该file的唯一id。ono则是由该file切分产生的某个object的序号。而oid就是将这个序号简单连缀在该file id之后得到的。举例而言,如果一个id为filename的file被切分成了三个object,则其object序号依次为0、1和2,而最终得到的oid就依次可以为filename0、filename1和filename2。
(2)对象到PG的映射关系
在file被映射为一个或者多个object之后,就需要将每个object独立的映射到一个PG中去。该映射可以通过hash(哈希)算法实现,计算公式为:hash(oid)&mask->pgid。该算法主要由两步组成:首先是使用Ceph系统指定的一个静态哈希函数(hash)计算oid的哈希值,将oid映射成为一个近似均匀分布的伪随机值。然后,将这个伪随机值和掩码mask按位相与,得到最终的PG序号(pgid),其中,每个object对应一个PG,但一个PG可对应多个object。
(3)PG到OSD的映射关系
PG到OSD的映射关系就是将object对应的逻辑单元PG映射到数据的实际存储单元,即OSD。如图1所示,RADOS采用一个名为CRUSH(Controlled Replication UnderScalable Hashing)的算法,将Pgid代入其中,然后,得到一组共n个OSD。这n个OSD即共同负责存储和维护一个PG中的所有object。
当Ceph集群中的对象存储设备OSD获取数据的写入请求时,对象存储设备OSD会对待操作对象进行相关操作。当多个OSD中的任意一个OSD的存储率达到存储上限时,将无法再进行数据的写入操作。本申请所提供的方法中,为达到存储上限的OSD选择出一个辅助OSD,该辅助OSD的作用是协助该OSD执行数据的读写操作。在此情况下,当Ceph集群获取到将待存储对象写入至该OSD的写入请求时,可以通过该辅助OSD执行数据的写入操作,也即,将待存储对象写入至辅助OSD,直至该OSD退出只读状态,以缓解了现有技术中存在当对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题,从而实现了提高了数据操作效率的技术效果。下面将结合具体的实施例对本申请所提供的数据的处理方法进行详细的介绍。
根据本申请实施例,提供了一种OSD选择方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2是根据本申请实施例的一种OSD选择方法的流程图,如图2所示,应用于对象存储系统Ceph集群的监控器Monitor中,所述Ceph集群中包括多个对象存储设备OSD,该方法包括如下步骤:
步骤S202,检测目标OSD的存储利用率,其中,目标OSD为多个对象存储设备OSD中的OSD;
步骤S204,如果检测到目标OSD的存储利用率达到第一门限值,则将目标OSD标记为只读OSD,并为只读OSD选择所述辅助OSD,其中,在将目标OSD标记为只读OSD之后,目标OSD不允许执行写入操作;
步骤S206,建立只读OSD和辅助OSD之间的关联关系。
在本申请实施例中,只读OSD的英文名称可以为Master OSD,辅助OSD的英文名称可以称为Slave OSD。Master OSD和Slave OSD均为新增的定义,Master OSD是指达到第一门限值的OSD,也即,处于只读read-only(只读状态)状态的OSD,其中,本实施例中所描述的只读状态是指OSD不能执行写操作,但是能够执行数据读操作和数据删除操作。常规只读状态是指在对应的存储器中只能执行数据读操作,但是不能执行数据写操作和数据删除等操作。Slave OSD为通过借用CRUSH算法为只读OSD(也即,Master OSD)计算出来的一个辅助存储数据的辅助OSD。
在本申请实施例中,监控器Monitor检测目标OSD的存储利用率,其中,目标OSD为所述多个对象存储设备OSD中的OSD;如果监控器Monitor检测到目标OSD的存储利用率达到第一门限值,则将目标OSD标记为只读OSD,并为只读OSD选择辅助OSD,其中,在将目标OSD标记为只读OSD之后,目标OSD不允许执行写入操作;最后,监控器Monitor建立只读OSD和辅助OSD之间的关联关系。在建立该关联关系之后,辅助OSD就能够协助只读OSD进行数据的存储操作。例如,当Ceph客户端向只读OSD发送写入请求时,只读OSD可以向其辅助OSD发送通知信息,以使辅助OSD基于通知信息完成相应的写入操作。通过该方式,就能够通过将辅助OSD来协助只读OSD实现数据的存储操作。
在本申请实施例中,当目标OSD被标记为只读OSD之后,通过选择辅助OSD来协助目标OSD执行数据的各类操作的方式,能够在充分利用存储资源的同时,避免出现OSD被标记为只读OSD之后对Ceph集群业务带来的不利应用,进而缓解了现有技术中存在的对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题,从而实现了提高了数据操作效率的技术效果。
在本申请实施例中,将目标OSD标记为只读OSD,具体的,可以为该目标OSD设置只读标签,其中,只读标签用于表征目标OSD处于只读状态。本实施例中的只读状态表示针对该目标OSD不能执行数据的写入操作,但是,可以针对该目标OSD进行数据的读取操作。需要说明的是,本实施例中的只读状态与常规只读状态的不同之处在于,本实施例中处于只读状态的OSD可以执行用户发起的数据读取操作和数据删除操作,但是不提供数据写入操作。常规只读状态是指,在对应的存储器中,只能执行数据读操作,但是不能执行数据写操作和数据删除等操作。
在本实施例中,OSD进入只读状态的门限值为第一门限值V1,可选地,第一门限值可以选取为OSD容量的95%。也就是说,当监控器Monitor检测到Ceph集群中的任意一个OSD的存储利用率达到95%(即,大于或者等于95%)时,此时为OSD设置只读标签,即,read-only的标签,可选的,还可以将该OSD标记为Master OSD(也即,只读OSD)。
在一个可选的实施方式中,该方法还包括:判断只读OSD是否满足恢复条件,其中,恢复条件为假设在辅助OSD中代替只读OSD存储的数据恢复到只读OSD中后只读OSD的存储利用率小于或者等于第二门限值,第二门限值小于第一门限值;如果满足,则向辅助OSD发送触发消息,以使辅助OSD基于触发消息将其代替只读OSD存储的数据恢复到所述只读OSD中;在检测到辅助OSD代替只读OSD存储的数据全部恢复到只读OSD中之后,解除只读OSD和辅助OSD之间的关联关系。
在实际Ceph集群环境中,用户可能会通过删除OSD中的部分数据,或者,通过对Ceph集群进行扩容的方式,来改善Ceph集群的存储环境,以改善Ceph集群中只读OSD的存储利用率,以使只读OSD的存储利用率持续降低。
在本实施例中,监控器Monitor可以每隔一段时间来判断只读OSD是否满足恢复条件,例如,监控器Monitor可以每隔5分钟来判断只读OSD是否满足恢复条件。
例如,在删除只读OSD(Master OSD)的部分数据之后,假设,在辅助OSD中代替Master OSD存储的数据恢复到Master OSD中后,Master OSD的存储利用率小于或者等于第二门限值,那么就可以判断出Master OSD满足恢复条件,此时,可以触发辅助OSD将其代替Master OSD存储的数据恢复到Master OSD中。在假设辅助OSD中代替Master OSD存储的数据恢复到Master OSD中后,判断出Master OSD不满足恢复条件,则不将辅助OSD中代替Master OSD存储的数据恢复到Master OSD中,此时,可以继续删除Master OSD的部分数据。
在触发辅助OSD将其代替Master OSD存储的数据恢复到Master OSD中时,监控器Monitor可以向辅助OSD发送触发消息,以使辅助OSD将其代替只读OSD存储的数据恢复到只读OSD中。当监控器Monitor检测到辅助OSD代替只读OSD存储的数据全部恢复到只读OSD之后,就可以解除辅助OSD和只读OSD之间的关联关系。此时,监控器Monitor会在Ceph集群中扩散辅助OSD和只读OSD之间的关联关系解除的消息。
需要说明的是,当处于只读状态的OSD的存储利用率满足退出只读状态的门限值V2(也即,第二门限值)时,退出只读状态,可以理解为辅助OSD(Slave OSD)协助处于只读状态的只读OSD存储的数据恢复后的存储利用率低于退出门限值V2之后,退出只读状态。在数据恢复完成,以及退出只读状态之后,解除只读OSD与辅助OSD(Slave OSD)之间的关联关系。其中,第二门限值V2(也即,退出只读状态门限值)与第二门限值V1(也即,进入只读状态的门限值)可以保留一定的间隔,避免频繁进入退出门限,引起OSD状态震荡。
通过上述描述可知,在本申请实施例中,除了设置OSD进入只读状态的第一门限值之外,还设置了OSD退出只读状态的第二门限值V2。可选地,第二门限值V2选取为OSD容量的80%。假设处于只读状态的OSD中的部分数据被删除致使该OSD的存储利用率降低到第二门限值以下时,那么可以为该OSD去掉只读状态,也即,去掉只读标签。去掉只读标签的OSD就能够正常参与数据的读写操作。需要说明的是,OSD一旦退出只读状态,必然存在数据的恢复操作,因此,本实施例中,第二门限值表示的是数据恢复结束以后OSD的存储利用率需要满足的阈值。
在本申请实施例中,当某个OSD的存储利用率达到第一门限值时,无需为其对应的存储节点增加OSD,而是在其内部选择一个OSD来协同该OSD执行数据的写入操作。在能够在充分利用存储资源的同时,避免出现OSD处于只读状态之后对集群业务带来的不利应用,进而缓解了现有技术中存在当对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题,从而实现了提高了数据操作效率的技术效果。
在一个可选的实施方式中,如图3所示,为所述Master OSD选择所述辅助OSD包括如下步骤:
步骤S301,将所述目标OSD的标识信息和目标OSD所在故障域中其他OSD的标识信息作为CRUSH算法的输入进行计算,得到待选OSD;
步骤S302,在所述待选OSD满足预设条件的情况下,确定所述待选OSD为所述只读OSD的辅助OSD,其中,所述预设条件包括:所述待选OSD未被标记为只读OSD,且所述待选OSD和所述只读OSD处于相同故障域中,且所述待选OSD不是Ceph集群中其他OSD的辅助OSD。
在本申请实施例中,目标OSD与PG之间的映射关系是PG映射阶段通过CRUSH算法确定出的。在确定出该映射关系之后,监控器Monitor继续监控Ceph集群中目标OSD的存储利用率,其中,目标OSD可以为Ceph集群中的全部或者部分OSD。如果目标OSD的存储利用率达到第一门限值,则将目标OSD标记为只读OSD。此时,可以通过CRUSH算法为Master OSD选择辅助OSD。
在本申请实施例中,通过上述描述可知,存储利用率大于第一门限值的OSD(即read-only状态的OSD)称为Master OSD,Slave OSD为通过借用CRUSH算法为Master OSD计算出来的一个辅助存储数据的OSD。具体地,在目标OSD的存储利用率达到第一门限值时,该目标OSD被标记为只读OSD,此时触发辅助OSD(即,Slave OSD)的选择流程。Slave OSD的选择可以由CRUSH算法来实现,可选地,可以基于CRUSH算法来为该只读OSD计算出一个OSD作为Slave OSD。例如,将目标OSD的标识信息、目标OSD所在故障域中其他OSD的标识信息、以及随机数作为CRUSH算法的输入数据,以使CRUSH算法基于上述输入数据确定待选OSD。
在确定待选OSD时,可以从多个OSD中选择一个待选OSD,并判断该待选OSD是否满足预设条件,如果满足,则确定该待选OSD为Slave OSD,其中,预设条件为:所述待选OSD未被标记为只读OSD,所述待选OSD和所述只读OSD处于相同故障域中,且所述待选OSD不是Ceph集群中其他OSD的辅助OSD。
需要说明的是,在本申请实施例中,辅助OSD需要满足以下条件:所述辅助OSD未被标记为Master OSD,待选OSD和所述Master OSD处于相同故障域中,且所述待选OSD不是Ceph集群中其他OSD的辅助OSD。
例如,目标OSD为OSD.1,与OSD.1处于同一故障域的其他OSD分别为:OSD.2,OSD.3和OSD.4。
此时,当OSD.1处于只读状态时,可以从OSD.2,OSD.3和OSD.4中为OSD.1选择一个OSD作为辅助OSD。具体地,可以将OSD.1的标识信息,OSD.2的标识信息和随机数1作为输入数据输入至CRUSH算法中进行计算,得到一个计算值A;以及将OSD.1的标识信息,OSD.3的标识信息和随机数a1作为输入数据输入至CRUSH算法中进行计算,得到一个计算值B;以及将OSD.1的标识信息,OSD.4的标识信息和随机数a1作为输入数据输入至CRUSH算法中进行计算,得到一个计算值C。此时,比较A,B和C的大小,如果C最大,则将OSD.4作为OSD.1的待选OSD。此时,判断OSD.4是否满足预设条件,如果满足预设条件,则将OSD.4作为OSD.1的辅助OSD。
如果不满足预设条件,则可以将OSD.1的标识信息,OSD.2的标识信息和随机数2作为输入数据输入至CRUSH算法中进行计算,得到一个计算值A’;以及将OSD.1的标识信息,OSD.3的标识信息和随机数a2作为输入数据输入至CRUSH算法中进行计算,得到一个计算值B’;以及将OSD.1的标识信息,OSD.4的标识信息和随机数a2作为输入数据输入至CRUSH算法中进行计算,得到一个计算值C’。此时,比较A’,B’和C’的大小,如果B’最大,则将OSD.3作为OSD.1的待选OSD。此时,判断OSD.3是否满足预设条件,如果满足,则将OSD.3作为OSD.1的辅助OSD。
当然,选择辅助OSD的方式不限于上述示例所提供的方式。只要保证为Master OSD选出的辅助OSD满足预设条件即可。
在本实施例中,故障域是一种数据保护策略,数据的不同副本会放到不同的故障域内。故障域的划分是通过软件实现的,可以将一定数量的OSD集合认为是一个故障域。目前常见的是将一个主机认为是一个故障域,也就是说同一个主机上的OSD是处于同一个故障域,不同主机之间的OSD是被故障域进行隔离的。
举例说明故障域下数据的存储原则:
例如,有A、B、C三个主机,A主机内有OSD,即:A-OSD.1;A-OSD.2;A-OSD.3;同理B和C中分别有:B-OSD.1;B-OSD.2;B-OSD.3;C-OSD.1;C-OSD.2;C-OSD.3。当Ceph客户端向上述三个主机中的OSD发送数据存储请求时,假定为3副本的存储环境,此时,同一份数据需要存储三份。与该数据相映射的PG所对应的OSD可以为(A-OSD.1,B-OSD.2,C-OSD.1)。其中,由于故障域的限制,PG所对应的OSD的组合不允许出现多个A主机中的OSD,或者多个B机中的OSD,或者多个C机中的OSD。因此,由于数据的不同副本会放到不同的故障域内,因此,同一个数据和他的复制数据不会存在于同一个主机里。
假设由于多种原因,A-OSD.1已经被放满了数据,那么(A-OSD.1,B-OSD.2,C-OSD.1)这个组合就不能存放数据了。这时候发现A-OSD.2很空,那么可以选择A-OSD.2作为A-OSD.1的Slave OSD,此时,可以将A-OSD.1中的部分数据放到A-OSD.2里。但是当A-OSD.2也放满了,这个时候就不能再选择A-OSD.2作为A-OSD.1的Slave OSD来放数据了。由于B-OSD.1和C-OSD.1和A-OSD.1不在同一故障域下,因此即使B-OSD.1和C-OSD.1很空,也不能选择作为A-OSD.1的Slave OSD。
在选择出Master OSD的Slave OSD之后,就可以在Cluster map将Master OSD与Slave OSD关联起来,并扩散到整个集群。当执行数据的写入操作和数据的读取操作时,通过CRUSH算法计算出PG所映射的Master OSD后,就能够根据Master OSD与Slave OSD之间的关联关系选择出Master OSD的Slave OSD。
Cluster map(也即,集群map),用来描述集群状态,Cluster map包括monitormap、OSD map、PG map、CRUSH map及MDS map,维护着监控器Monitor节点间端到端的信息,OSD的相关信息(如数目、权重、状态等),归置组(PG)信息、集群故障域层次结构、数据存储规则及元数据服务器MDS(Metadata server)信息等。
通过上述描述可知,在本申请实施例中,在确定Master OSD的Slave OSD时,可以将Master OSD的标识信息,目标OSD所在故障域中其他OSD的标识信息和随机数作为CRUSH算法的输入,以通过CRUSH算法为Master OSD选择待选OSD,其中,在待选OSD满足预设条件时,该待选OSD确定为Master OSD的Slave OSD。
例如,在本申请中选择Slave OSD时,假设,目标OSD(也即,Master OSD)的标识信息为master osd_id,目标OSD所在故障域中其他OSD的标识信息为其他osd_id,此时,就可以将master osd_id、其他osd_id、随机数作为输入数据输入至CRUSH算法中进行计算,从而为Master OSD选择待选OSD。其中,其他osd id即Master OSD所在故障域内除了目标OSD(也即,Master OSD)之外的OSD。
需要说明的是,在本申请实施例中,Master OSD与Slave OSD之间的关联关系在目标OSD被标记为Master OSD后建立的。当目标OSD被标记为Master OSD期间,该关联关系一直保留,当Master OSD的存储利用率降低至第二门限值时,目标OSD将不再被标记为MasterOSD,此时,Master OSD与Slave OSD之间的关联关系会自动解除。具体的,可以在Clustermap中删除Master OSD与Slave OSD之间的关联关系,并扩散到整个集群,此时集群中的OSD节点,监控器,以及Ceph客户端就都能够知晓上述关联关系的变更。
上述步骤S202至步骤S206,以及步骤S301和步骤S302可以描述为如图4所示的流程图,如图4所示的流程图为选择Slave OSD方法的流程图,如图4所示,该方法包括如下步骤:
步骤S401,检测目标OSD的存储利用率;
步骤S402,判断目标OSD的存储利用率是否达到第一门限值,其中,如果是,则执行步骤S403,否则,返回步骤S401继续检测目标OSD的存储利用率;
步骤S403,为目标OSD设置只读标签;
步骤S404,标记目标OSD为Master OSD(即,只读OSD);
步骤S405,通过CRUSH算法为Master OSD选择待选OSD;
步骤S406,判断待选OSD是否满足预设条件,其中,预设条件为预设条件包括:所述待选OSD未被标记为只读OSD,且待选OSD和只读OSD处于相同故障域中,且所述待选OSD不是Ceph集群中其他OSD的辅助OSD;如果判断出满足,则执行步骤S407,否则返回执行步骤S405;
步骤S407,确定待选OSD为Master OSD的Slave OSD(即,辅助OSD);
步骤S408,将Master OSD与Slave OSD在Cluster map关联起来,并扩散到整个集群。
具体实现方式如上述步骤S202至步骤S206,以及步骤S301和步骤S302,此处不再赘述。
在通过上述方式选择目标OSD的辅助OSD之后,就可以通过该辅助OSD协助MasterOSD执行数据的写入操作。
在另一个可选的实施方式中,该方法还包括:如果检测到只读OSD发生故障之后,解除所述辅助OSD和所述只读OSD之间的关联关系,其中,在解除所述关联关系之后,所述只读OSD对自身已存储对象恢复至另外的OSD中。
在本申请实施例中,当检测到只读OSD(Master OSD)发生故障失效后,需要解除只读OSD(Master OSD)与其辅助OSD(Slave OSD)之间的关联关系。然后,通过正常的PG迁移完成object的恢复即可,其中,此时的object是指在Master OSD中已经存储的数据。
具体地,当监控器Monitor监控到只读OSD发生故障失效之后,则在Cluster map中解除只读OSD和辅助OSD之间的关联关系,并在解除其关联关系之后,只读OSD就可以对其中已存储对象进行恢复。
在另一个可选的实施方式中,该方法还包括:
如果所述辅助OSD失效,则通过CRUSH算法从所述多个OSD中为所述只读OSD确定新的辅助OSD,以使所述新的辅助OSD获取差异化列表,并基于所述差异化列表进行已存储对象的恢复操作;其中,所述差异化列表中包括所述辅助OSD协助所述只读OSD进行存储操作时所存储的对象的标识信息。
在本申请实施例中,当辅助OSD失效后,恢复流程与现有方案不同。PG进入降级状态,由CRUSH算法选举出一个新的Slave OSD(即,上述新的辅助OSD)与目标OSD进行关联,并由新的辅助OSD向目标OSD发送获取请求,以获取差异化列表(也即,差异object列表),并基于差异object列表进行数据的恢复。差异object列表由Master OSD与该PG映射的其他OSD实时通信并对比各PG关联的object的差异进行获取。新Slave OSD获取到差异object列表后,联系相应OSD进行object恢复即可。
例如,PG1映射有object1~10共10个;而PG1与OSD的映射关系为PG1[OSD.1,OSD.2,OSD.3,OSD.4(OSD.1的Slave OSD)];也就是说这10个object肯定会存储在OSD.2,OSD.3,部分存储在OSD.1,部分存储在OSD.4上;如果OSD.4失效了,那么需要将OSD.4上已存储的object存到OSD.5(即,新的辅助OSD)上,具体哪些对象需要恢复,就通过OSD.2上的10个object减去OSD.1上的已存储的几个object,来确定具体需要恢复的对象的标识信息。
也就是说,差异object列表中主要是OSD.4协助OSD.1进行存储操作时所存储的object的标识信息。具体地,OSD.4协助OSD.1进行存储操作时所存储的object的标识信息可以通过OSD.2和OSD.1进行差异化对比来进行获取。此时,可以将OSD.2中已存储的10个object的标识信息中去掉OSD.1上的已存储的object的标识信息来确定OSD.4协助OSD.1进行存储操作时所存储的object的标识信息。
图5是根据本申请实施例的一种数据写入方法的流程图,该方法应用于对象存储系统Ceph集群中的对象存储设备OSD,如图5所示,该方法包括如下步骤:
步骤S502,在接收到客户端发送的写入请求之后,检测第一OSD是否已经被标记为只读OSD;其中,所述写入请求为在所述第一OSD中写入待操作对象的请求,所述第一OSD为所述客户端在发起所述写入请求之前的PG寻址映射阶段为所述待操作对象所对应的PG选取的OSD;
步骤S504,如果检测出第一OSD为只读OSD,则确定只读OSD的辅助OSD,并在辅助OSD中对所述待操作对象执行写入操作。
在本申请实施例中,在检测到Ceph客户端发送的写入请求之后,检测待执行写入操作的第一OSD是否已经被标记为只读OSD;如果检测出是,则确定只读OSD的辅助OSD,并在辅助OSD中对待操作对象执行写入操作。
在本申请实施例中,当Ceph集群中的OSD处于只读状态时,通过辅助OSD来协助该OSD执行数据的各类操作的方式,能够在充分利用存储资源的同时,避免出现OSD处于只读状态之后对集群业务带来的不利应用,进而缓解了现有技术中存在当对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题,从而实现了提高了数据操作效率的技术效果。
可选地,在本实施例中,确定所述只读OSD的辅助OSD,并在所述辅助OSD中对所述待操作对象执行写入操作包括:
在映射关系表中确定所述只读OSD的辅助OSD,其中,所述映射关系中包括PG和OSD之间的映射关系,以及只读OSD和辅助OSD之间的关联关系;然后,向所述辅助OSD发送通知信息,以使所述辅助OSD对所述待操作对象执行写入操作。
可选的,映射关系表存储在Cluster map中,由此可以通过Cluster map扩散到整个集群中。
在本实施例中,如果检测出第一OSD被标记为所述只读OSD,则在映射关系表中确定该只读OSD的辅助OSD。其中,映射关系表可以为以下形式:PG---->[OSD.a(read-only)OSD.bOSD.cOSD.d(OSD.a的Slave OSD)],还可以为以下形式:PG---->[OSD.a(read-only)OSD.b OSD.c OSD.d(1)],其中,“(1)”表示为OSD.a的辅助OSD的标识信息。在该映射关系表中,包括PG和OSD之间的映射关系,即PG与OSD.a、OSD.b和OSD.c之间的映射关系,还包括只读OSD和辅助OSD之间的关联关系,即OSD.a和OSD.d之间的关联关系。在确定出辅助OSD之后,就可以辅助OSD发送通知信息,以使辅助OSD对待操作对象执行写入操作。
具体地,在一个PG所对应的OSD被标记为只读OSD后,该PG与OSD的映射关系表更新为上述所描述的形式,即:PG---->[OSD.a(read-only)OSD.bOSD.cOSD.d(OSD.a的SlaveOSD)],其中,OSD.d为OSD.a进入只读状态后通过CRUSH算法选择出来的Slave OSD,OSD.a为Master OSD(只读OSD)。因为Master OSD与Slave OSD的关系已经通过Cluster map扩散到整个集群。在Ceph客户端发起数据写入请求时,Ceph客户端将待写入的文件file切分为多个对象object,多个对象object通过哈希算法映射到对应的PG,然后,通过CRUSH算法计算出的PG映射到数据的实际存储单元OSD(也即,第一OSD)。需要说明的是,上述第一OSD的查找过程均为Ceph客户端来执行的。在确定出第一OSD之后,Ceph客户端就可以直接向第一OSD发起写入请求。第一OSD在获取到该写入请求之后,如果确定出自身已经被标记为只读OSD,那么将该写入请求转发至第一OSD的辅助OSD,进而,辅助OSD直接将待操作对象执行相应的写入操作即可。
如图6所示,当某个Ceph客户端需要向Ceph集群写入一个文件file时,首先需要在本地完成寻址流程,即,Ceph客户端首先将该文件file变为多个object,然后找出存储每个object的一组三个OSD。这三个OSD具有各自不同的序号,序号最小的那个OSD就是这一组中的第一OSD(也即,Primary OSD),而后两个则依次是第二OSD(也即,Secondary OSD)和第三OSD(也即,Tertiary OSD)。找出三个OSD后,Ceph客户端将直接和Primary OSD通信,发起写入请求。Primary OSD收到写入请求后,分别向Secondary OSD和Tertiary OSD发起写入操作。当Secondary OSD和Tertiary OSD各自完成写入操作后,将分别向Primary OSD发送确认信息。
但是当Primary OSD被标记为Master OSD之后,则基于Cluster map在Ceph集群中查找该Primary OSD的辅助OSD。如果查找到该Primary OSD的辅助OSD,可以将Master OSD与Slave OSD看作一个逻辑整体。此时,Primary OSD可以向辅助OSD发送Ceph客户端发送的写入请求,以使辅助OSD完成数据的写入操作。在辅助OSD完成数据的写入操作之后,辅助OSD分别向Secondary OSD和Tertiary OSD发起写入操作。当Secondary OSD和TertiaryOSD各自完成写入操作后,将分别向Primary OSD的辅助OSD发送确认信息。如果基于Cluster map在Ceph集群中未查找该Primary OSD的辅助OSD,则需要通过上述实施例中所描述方法为该Primary OSD选择辅助OSD。
在本申请实施例中,当OSD被标记为只读OSD时,通过该OSD的辅助OSD来协助该OSD执行数据的各类操作的方式,能够在充分利用存储资源的同时,避免出现OSD处于只读状态之后对集群业务带来的不利应用,进而缓解了现有技术中存在当对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题,从而实现了提高了数据操作效率的技术效果。
在本申请实施例中,被标记为只读OSD的OSD除了能够通过其辅助OSD来执行数据写入操作之外,还能够执行数据的读取和数据的删除操作。其中,数据的读取和数据的删除操作的流程相同,此处以数据的读取为例来介绍该处理流程。
在本申请中,还提供了一种数据读取方法的实施例。
在被标记为只读OSD的OSD读取数据时,主要包括两种情况,第一种是对该OSD被标记为只读OSD之前写入的数据的读取流程;第二种是对该OSD被标记为只读OSD之后写入的数据的读取流程。
在对该OSD被标记为只读OSD之前写入的数据的读取流程中,被标记为只读OSD不影响数据的读取过程。Ceph客户端发起一个读请求之前,Ceph客户端在本地通过object与PG,PG与OSD之间的两次映射找到待读取的第一OSD(例如,Primary OSD)。在查找到第一OSD之后,向该第一OSD发起读取请求。第一OSD在获取到该读取请求之后,第一OSD查找待读取对象,并将查找到的待读取对象返回至Ceph客户端。
在对该OSD被标记为只读OSD之后写入的数据的读取流程中,Ceph客户端对于待读取对象的读取请求的寻址过程与第一种情况中的过程一致。Ceph客户端在本地通过object与PG,PG与OSD之间的两次映射找到第一OSD(例如,Primary OSD)。在查找到Primary OSD以后,Ceph客户端向Primary OSD发送读取请求。该Primary OSD在接收到待读取对象的读取请求时,首先,按照正常读取流程进行处理,当Primary OSD发现该待读取对象在PrimaryOSD上不存在时,且Primary OSD被标记为只读OSD。此时Primary OSD不直接返回错误,而是基于Cluster map找出Primary OSD的Slave OSD的位置;并由Primary OSD将读取请求重定向到Slave OSD,以使Slave OSD执行数据的读取操作,Slave OSD收到重定向的读取请求后,读取带读取对象后返回Ceph客户端。
基于上述过程,在本申请实施例中,数据读取的操作流程可以总结为上述步骤S701至步骤S705所描述的过程。
在一个可选的实施方式中,如图7所示的即为一种数据读取的操作流程的流程图,如图7所示,该流程包括如下步骤:
步骤S701,接收到客户端发送的在第一OSD中读取待读取对象的读取请求;
步骤S702,判断所述第一OSD是否已经被标记为只读OSD;如果是,则执行步骤S703,否则执行步骤S704;
步骤S703,确定所述第一OSD中是否存在待读取对象;如果存在,则执行步骤S704,否则执行步骤S705和步骤S706;
步骤S704,第一OSD基于所述读取请求查找所述待读取对象,并向客户端返回待读取对象;
步骤S705,第一OSD将所述读取请求重定向至第一OSD的辅助OSD;
步骤S706,辅助OSD基于读取请求查找所述待读取对象,并向客户端返回所述待读取对象。
在本申请实施例中,集群Ceph中的第一OSD在获取到Ceph客户端发送的读取请求之后,则第一OSD判断自身是否被标记为只读OSD。在三副本存储环境中,Ceph客户端会直接向待读取对象所对应的Primary OSD发送读取请求,Primary OSD在获取到该读取请求之后,执行数据的读取操作。
当该Primary OSD未被标记为只读OSD时,则Primary OSD在获取到该读取请求之后,Primary OSD基于读取请求查找待读取对象,并在查找到待读取对象之后,向Ceph客户端返回该待读取对象。
当该Primary OSD被标记为只读OSD时,查找Primary OSD中是否存在该待读取对象。如果Primary OSD查找到该待读取对象,则向Ceph客户端返回该待读取对象。如果Primary OSD未查找到该待读取对象,则Primary OSD将读取请求重定向至Primary OSD的辅助OSD,以使辅助OSD基于读取请求查找待读取对象。
在本申请实施例中,将存储利用率高于第一门限值的OSD被标记为只读OSD,以及为该OSD选择辅助OSD之后,在保证数据正常执行写入操作的情况下,还能够支持数据的读取操作,以及支持数据的删除操作。通过上述设置方式,能够保证在充分利用存储资源的同时,避免出现OSD处于只读状态之后对集群业务带来的不利应用,进而缓解了现有技术中存在当对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题。
通过上述描述可知,在本申请实施例中,当Ceph集群出现存储利用率高于第一门限值的OSD时,为该OSD选择辅助OSD(也即,Slave OSD),然后,通过该OSD与Slave OSD的关联共同完成数据的读写操作,使OSD的容量达到存储上限不再成为集群正常业务的限制,同时也提高了集群的存储利用率。且能够在充分利用存储资源的同时,避免出现OSD处于只读状态之后对集群业务带来的不利应用,进而缓解了现有技术中存在当对处于门限上限的OSD进行扩容处理时资源浪费较严重的技术问题,从而实现了提高了数据操作效率的技术效果。
在另一个实施例中,本申请实施例还提供了一种监控器,该监控器包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述OSD选择方法实施例中所描述的步骤。
在另一个实施例中,本申请实施例还提供了一种服务器集群,所述服务器集群上设置有对象存储系统Ceph集群,其中,所述服务器集群的每个服务器上包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行,以实现上述数据读取方法实施例中所描述的步骤,或者,用于实现上述数据写入方法实施例中所描述的步骤。
本申请实施例提供的数据的处理装置,与上述实施例提供的数据的处理方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
另外,在本申请实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
在本申请的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种OSD选择方法,其特征在于,应用于对象存储系统Ceph集群的监控器中,所述Ceph集群中包括多个对象存储设备OSD,包括:
检测目标OSD的存储利用率,其中,所述目标OSD为所述Ceph集群中的OSD;
如果检测到所述目标OSD的存储利用率达到第一门限值,则将所述目标OSD标记为只读OSD,并为所述只读OSD选择辅助OSD,其中,在将所述目标OSD标记为只读OSD之后,所述目标OSD不允许执行写入操作;
建立所述只读OSD和所述辅助OSD之间的关联关系。
2.根据权利要求1所述的方法,其特征在于,为所述只读OSD选择所述辅助OSD包括:
将所述目标OSD的标识信息和所述目标OSD所在故障域中其他OSD的标识信息作为CRUSH算法的输入进行计算,得到待选OSD;
在所述待选OSD满足预设条件的情况下,确定所述待选OSD为所述只读OSD的辅助OSD,其中,所述预设条件包括:所述待选OSD未被标记为只读OSD,所述待选OSD和所述只读OSD处于相同故障域中,且所述待选OSD不是所述Ceph集群中其他OSD的辅助OSD。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
判断所述只读OSD是否满足恢复条件,其中,所述恢复条件为假设所述辅助OSD中代替所述只读OSD存储的数据恢复到所述只读OSD后所述只读OSD的存储利用率小于或者等于第二门限值,所述第二门限值小于所述第一门限值;
如果满足,则向所述辅助OSD发送触发消息,以使所述辅助OSD基于所述触发消息将其代替所述只读OSD存储的数据恢复到所述只读OSD中;
在检测到所述辅助OSD代替所述只读OSD存储的数据全部恢复到所述只读OSD中之后,解除所述只读OSD和所述辅助OSD之间的关联关系。
4.根据权利要求1或2所述的方法,其特征在于,在建立所述只读OSD和所述辅助OSD之间的关联关系之后,所述方法还包括:
如果检测到所述只读OSD发生故障,则解除所述辅助OSD和所述只读OSD之间的关联关系,其中,在解除所述关联关系之后,所述只读OSD对自身已存储对象恢复至其他OSD中。
5.根据权利要求1或2所述的方法,其特征在于,在建立所述只读OSD和所述辅助OSD之间的关联关系之后,所述方法还包括:
如果所述辅助OSD失效,则通过CRUSH算法从所述多个OSD中为所述只读OSD确定新的辅助OSD,以使所述新的辅助OSD获取差异化列表,并基于所述差异化列表进行已存储对象的恢复操作;
其中,所述差异化列表中包括所述辅助OSD协助所述只读OSD进行存储操作时所存储的对象的标识信息。
6.一种数据写入方法,其特征在于,应用于对象存储系统Ceph集群中的对象存储设备OSD,包括:
在接收到客户端发送的写入请求之后,检测第一OSD是否已经被标记为只读OSD,其中,所述写入请求为在所述第一OSD中写入待操作对象的请求,所述第一OSD为所述客户端在发起所述写入请求之前的PG寻址映射阶段为所述待操作对象所对应的PG选取的OSD;
如果检测出所述第一OSD被标记为所述只读OSD,则确定所述只读OSD的辅助OSD,并在所述辅助OSD中对所述待操作对象执行写入操作。
7.根据权利要求6所述的方法,其特征在于,确定所述只读OSD的辅助OSD,并在所述辅助OSD中对所述待操作对象执行写入操作包括:
在映射关系表中确定所述只读OSD的辅助OSD,其中,所述映射关系中包括PG和OSD之间的映射关系,以及只读OSD和辅助OSD之间的关联关系;
向所述辅助OSD发送通知信息,以使所述辅助OSD对所述待操作对象执行写入操作。
8.一种数据读取方法,其特征在于,应用于对象存储系统Ceph集群中的对象存储设备OSD,包括:
在接收到客户端发送的在第一OSD中读取待读取对象的读取请求后,判断所述第一OSD是否已经被标记为只读OSD;
如果是,则确定所述第一OSD中是否存在所述待读取对象;
在确定出不存在的情况下,所述第一OSD将所述读取请求重定向至所述第一OSD的辅助OSD,以使所述第一OSD的辅助OSD查找所述待读取对象。
9.根据权利要求8所述的方法,其特征在于,在确定出所述第一OSD中存在所述待读取对象的情况下,所述第一OSD基于所述读取请求查找所述待读取对象。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在获取到客户端发送的读取所述待读取对象的读取请求后,在所述第一OSD未被标记为所述只读OSD的情况下,则所述第一OSD基于所述读取请求查找所述待读取对象。
11.一种监控器,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述权利要求1至5中任一项所述的方法。
12.一种服务器集群,其特征在于,所述服务器集群上设置有对象存储系统Ceph集群,其中,所述服务器集群的每个服务器上包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行,以实现权利要求6和7中任一项所述的方法,或者,8至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810246478.0A CN108509153B (zh) | 2018-03-23 | 2018-03-23 | Osd选择方法、数据写入和读取方法、监控器和服务器集群 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810246478.0A CN108509153B (zh) | 2018-03-23 | 2018-03-23 | Osd选择方法、数据写入和读取方法、监控器和服务器集群 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108509153A true CN108509153A (zh) | 2018-09-07 |
CN108509153B CN108509153B (zh) | 2021-07-06 |
Family
ID=63378195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810246478.0A Active CN108509153B (zh) | 2018-03-23 | 2018-03-23 | Osd选择方法、数据写入和读取方法、监控器和服务器集群 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108509153B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284220A (zh) * | 2018-10-12 | 2019-01-29 | 深信服科技股份有限公司 | 集群故障恢复时长估算方法、装置、设备及存储介质 |
CN109558437A (zh) * | 2018-11-16 | 2019-04-02 | 新华三技术有限公司成都分公司 | 主osd调整方法及装置 |
CN109710456A (zh) * | 2018-12-10 | 2019-05-03 | 新华三技术有限公司 | 一种数据恢复方法及装置 |
CN109960470A (zh) * | 2019-03-28 | 2019-07-02 | 新华三技术有限公司 | 数据处理方法、装置及领导节点 |
CN110888779A (zh) * | 2019-11-18 | 2020-03-17 | 上海新炬网络信息技术股份有限公司 | 基于模拟写入的文件系统只读判断方法 |
CN111143183A (zh) * | 2019-12-27 | 2020-05-12 | 紫光云(南京)数字技术有限公司 | 一种基于librbd库测试rbd上传速度的方法 |
CN111381770A (zh) * | 2018-12-30 | 2020-07-07 | 浙江宇视科技有限公司 | 一种数据存储切换方法、装置、设备及存储介质 |
CN111506263A (zh) * | 2020-03-31 | 2020-08-07 | 新华三技术有限公司成都分公司 | 一种心跳连接的建立方法及装置 |
CN111711531A (zh) * | 2020-04-30 | 2020-09-25 | 福建天泉教育科技有限公司 | 集群数据管理方法、存储介质 |
CN112306815A (zh) * | 2020-11-16 | 2021-02-02 | 新华三大数据技术有限公司 | Ceph中OSD侧主从间IO信息监控方法、装置、设备及介质 |
CN112346667A (zh) * | 2021-01-07 | 2021-02-09 | 广东睿江云计算股份有限公司 | 一种ceph存储osd读均衡方法及其系统 |
CN112835511A (zh) * | 2019-11-25 | 2021-05-25 | 浙江宇视科技有限公司 | 分布式存储集群的数据写入方法、装置、设备和介质 |
WO2021189314A1 (en) * | 2020-03-25 | 2021-09-30 | Beijing Didi Infinity Technology And Development Co., Ltd. | Data server crash recovery in object storage system using enhanced meta structure |
WO2022105441A1 (zh) * | 2020-11-20 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种存储集群的扩容方法、系统及相关装置 |
US20230198828A1 (en) * | 2020-05-28 | 2023-06-22 | Inspur Suzhou Intelligent Technology Co., Ltd. | Cluster node fault processing method and apparatus, and device and readable medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823639A (zh) * | 2014-02-19 | 2014-05-28 | 曙光信息产业(北京)有限公司 | 迁移对象的方法和系统 |
US9886215B1 (en) * | 2014-05-15 | 2018-02-06 | Nutanix, Inc. | Mechanism for providing block storage and object storage functionality from an external storage environment to a networked virtualization environment for storage management |
CN107807794A (zh) * | 2017-10-31 | 2018-03-16 | 新华三技术有限公司 | 一种数据存储方法和装置 |
-
2018
- 2018-03-23 CN CN201810246478.0A patent/CN108509153B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823639A (zh) * | 2014-02-19 | 2014-05-28 | 曙光信息产业(北京)有限公司 | 迁移对象的方法和系统 |
US9886215B1 (en) * | 2014-05-15 | 2018-02-06 | Nutanix, Inc. | Mechanism for providing block storage and object storage functionality from an external storage environment to a networked virtualization environment for storage management |
CN107807794A (zh) * | 2017-10-31 | 2018-03-16 | 新华三技术有限公司 | 一种数据存储方法和装置 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284220A (zh) * | 2018-10-12 | 2019-01-29 | 深信服科技股份有限公司 | 集群故障恢复时长估算方法、装置、设备及存储介质 |
CN109558437A (zh) * | 2018-11-16 | 2019-04-02 | 新华三技术有限公司成都分公司 | 主osd调整方法及装置 |
CN109558437B (zh) * | 2018-11-16 | 2021-01-01 | 新华三技术有限公司成都分公司 | 主osd调整方法及装置 |
CN109710456A (zh) * | 2018-12-10 | 2019-05-03 | 新华三技术有限公司 | 一种数据恢复方法及装置 |
CN109710456B (zh) * | 2018-12-10 | 2021-03-23 | 新华三技术有限公司 | 一种数据恢复方法及装置 |
CN111381770A (zh) * | 2018-12-30 | 2020-07-07 | 浙江宇视科技有限公司 | 一种数据存储切换方法、装置、设备及存储介质 |
CN111381770B (zh) * | 2018-12-30 | 2021-07-06 | 浙江宇视科技有限公司 | 一种数据存储切换方法、装置、设备及存储介质 |
CN109960470B (zh) * | 2019-03-28 | 2022-07-29 | 新华三技术有限公司 | 数据处理方法、装置及领导节点 |
CN109960470A (zh) * | 2019-03-28 | 2019-07-02 | 新华三技术有限公司 | 数据处理方法、装置及领导节点 |
CN110888779B (zh) * | 2019-11-18 | 2023-07-07 | 上海新炬网络信息技术股份有限公司 | 基于模拟写入的文件系统只读判断方法 |
CN110888779A (zh) * | 2019-11-18 | 2020-03-17 | 上海新炬网络信息技术股份有限公司 | 基于模拟写入的文件系统只读判断方法 |
CN112835511A (zh) * | 2019-11-25 | 2021-05-25 | 浙江宇视科技有限公司 | 分布式存储集群的数据写入方法、装置、设备和介质 |
CN112835511B (zh) * | 2019-11-25 | 2022-09-20 | 浙江宇视科技有限公司 | 分布式存储集群的数据写入方法、装置、设备和介质 |
CN111143183A (zh) * | 2019-12-27 | 2020-05-12 | 紫光云(南京)数字技术有限公司 | 一种基于librbd库测试rbd上传速度的方法 |
WO2021189314A1 (en) * | 2020-03-25 | 2021-09-30 | Beijing Didi Infinity Technology And Development Co., Ltd. | Data server crash recovery in object storage system using enhanced meta structure |
CN111506263B (zh) * | 2020-03-31 | 2022-07-12 | 新华三技术有限公司成都分公司 | 一种心跳连接的建立方法及装置 |
CN111506263A (zh) * | 2020-03-31 | 2020-08-07 | 新华三技术有限公司成都分公司 | 一种心跳连接的建立方法及装置 |
CN111711531A (zh) * | 2020-04-30 | 2020-09-25 | 福建天泉教育科技有限公司 | 集群数据管理方法、存储介质 |
US20230198828A1 (en) * | 2020-05-28 | 2023-06-22 | Inspur Suzhou Intelligent Technology Co., Ltd. | Cluster node fault processing method and apparatus, and device and readable medium |
US11750437B2 (en) * | 2020-05-28 | 2023-09-05 | Inspur Suzhou Intelligent Technology Co., Ltd. | Cluster node fault processing method and apparatus, and device and readable medium |
CN112306815A (zh) * | 2020-11-16 | 2021-02-02 | 新华三大数据技术有限公司 | Ceph中OSD侧主从间IO信息监控方法、装置、设备及介质 |
CN112306815B (zh) * | 2020-11-16 | 2023-07-25 | 新华三大数据技术有限公司 | Ceph中OSD侧主从间IO信息监控方法、装置、设备及介质 |
WO2022105441A1 (zh) * | 2020-11-20 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种存储集群的扩容方法、系统及相关装置 |
CN112346667A (zh) * | 2021-01-07 | 2021-02-09 | 广东睿江云计算股份有限公司 | 一种ceph存储osd读均衡方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108509153B (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108509153A (zh) | Osd选择方法、数据写入和读取方法、监控器和服务器集群 | |
WO2018059032A1 (zh) | 一种虚拟节点的数据迁移方法和虚拟节点 | |
EP2998881B1 (en) | A computer implemented method for dynamic sharding | |
EP3502877B1 (en) | Data loading method and apparatus for virtual machines | |
US8429444B2 (en) | Multipurpose storage system based upon a distributed hashing mechanism with transactional support and failover capability | |
CN105933391A (zh) | 一种节点扩容方法、装置及系统 | |
CN101763321B (zh) | 数据容灾的方法、装置及系统 | |
US9612766B2 (en) | Systems and methods for shadow migration progress estimation | |
CN107704212B (zh) | 一种数据处理方法及装置 | |
JP6475304B2 (ja) | トランザクション処理方法および装置 | |
US9646023B1 (en) | Devices and methods configured for automated duplication of network shared folders | |
WO2014205847A1 (zh) | 一种分区平衡子任务下发方法、装置与系统 | |
US10031682B1 (en) | Methods for improved data store migrations and devices thereof | |
CN107085546B (zh) | 基于故障域技术的数据管理方法和装置 | |
JP2010129024A (ja) | データ分散制御プログラム、ストレージ管理プログラム、制御ノード、およびディスクノード | |
WO2019148841A1 (zh) | 一种分布式存储系统、数据处理方法和存储节点 | |
CN110888837A (zh) | 对象存储小文件归并方法及装置 | |
JP2020506444A (ja) | 期限切れバックアップ処理方法及びバックアップサーバ | |
CN104951475A (zh) | 分布式文件系统和实现方法 | |
CN116389233B (zh) | 容器云管理平台主备切换系统、方法、装置和计算机设备 | |
US20230205638A1 (en) | Active-active storage system and data processing method thereof | |
EP3995972A1 (en) | Metadata processing method and apparatus, and computer-readable storage medium | |
CN109241011B (zh) | 一种虚拟机文件处理方法及装置 | |
JP2011081830A (ja) | サーバ切替方法、プログラムおよび管理サーバ | |
JP2009163529A (ja) | データ多重化システムおよびデータ多重化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |