CN113486040B - 数据存储方法、装置、设备及介质 - Google Patents

数据存储方法、装置、设备及介质 Download PDF

Info

Publication number
CN113486040B
CN113486040B CN202110867929.4A CN202110867929A CN113486040B CN 113486040 B CN113486040 B CN 113486040B CN 202110867929 A CN202110867929 A CN 202110867929A CN 113486040 B CN113486040 B CN 113486040B
Authority
CN
China
Prior art keywords
osd
identification value
target
storage
updated
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.)
Active
Application number
CN202110867929.4A
Other languages
English (en)
Other versions
CN113486040A (zh
Inventor
毛鹏飞
万玉铸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN202110867929.4A priority Critical patent/CN113486040B/zh
Publication of CN113486040A publication Critical patent/CN113486040A/zh
Application granted granted Critical
Publication of CN113486040B publication Critical patent/CN113486040B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了数据存储方法、装置、设备及介质,由于本发明实施例中,在增加节点并将故障域由OSD切换为HOST后,更新了预先保存的Object与PG的映射关系以及预先保存的PG与OSD的映射关系,并基于更新后的映射关系确定Object对应的第一OSD的标识值与更新前Object对应的第二OSD的标识值,确定OSD指向发生变化的目标Object,并将该目标Object对应的目标OSD的标识值保持为第二OSD的标识值,以使目标Object仍然存储在添加节点之前的OSD中,避免了集群内部有大量的数据迁移,提高用户体验。

Description

数据存储方法、装置、设备及介质
技术领域
本发明涉及开源的分布式存储技术领域,尤其涉及数据存储方法、装置、设备及介质。
背景技术
分布式文件系统(Ceph)支持对象、块、文件存储,且适用于各种适用场景,同时具有数据均衡,负载分担,动态修复,计算寻址等优秀的特性,所以分布式文件系统在目前的云计算场景下被广泛应用,并且作为k8s,Openstack等官方支持的存储后端,在今后的云计算发展中必将发挥更重要的作用。
在一些场景中,一开始可能只有单节点的设备,此时若为多副本存储,则Object不能存储在不同节点对应的设备的对象存储设备(Object-based Storage Device,OSD)中,也就是说此时故障域只能选择OSD。存储一段时间后,由于存储空间有限,需要添加新的节点,也就是增加新的设备,由于多节点时,故障域可以选择HOST,其中,故障域为HOST时,相比于故障域为OSD,存储数据的安全等级更高。因此,可以在增加节点时,将故障域由OSD切换为HOST,但是将故障域切换至HOST的过程中,因为新节点的增加,存储池的PG个数也会相应增加,OSD也会增加,由于当PG的总数量发生变化时,Objects到PGs的映射随即发生变化,随着OSD个数增加和故障域切换,集群拓扑、crush规则都发生了变化,此时PGs到OSDs的映射也随即发生变化,则势必会导致集群内部有大量的数据迁移以实现数据重平衡,使得集群内各节点的cpu利用率、负载等加大,且数据重平衡的时间过长,则会导致用户处理业务不及时,影响用户体验。
发明内容
本发明提供了一种数据存储方法、装置、设备及介质,用以解决现有技术中增加节点并将故障域由OSD切换为HOST后,导致集群内部有大量的数据迁移,导致集群内各节点的cpu利用率、负载等加大,影响用户体验的问题。
本发明提供了一种数据存储方法,包括:
根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新;并根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新;
针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值;根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值;若所述第一OSD的标识值与所述第二OSD的标识值不相同,则将该Object确定为目标Object;
将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值。
进一步地,所述根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新之前,所述方法还包括:
判断存储是否为多副本存储;
若是,则将存储由多副本存储设置为单副本存储,并将集群状态设置为第一预设状态。
进一步地,若确定存储为多副本存储,所述根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新之后,所述针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值之前,所述方法还包括:
将所述存储由单副本存储恢复为多副本存储;
所述根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值包括:
根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的多个第三OSD的标识值,并确定该Object对应的多个第三OSD的标识值中的主OSD的标识值;
将所述主OSD的标识值确定为该Object对应的第一OSD的标识值。
进一步地,所述方法还包括:
将该Object存储在副OSD的标识值对应的第二目标OSD中,其中所述副OSD的标识值为第三OSD的标识值中除所述主OSD的标识值。
进一步地,所述将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值之后,所述方法还包括:
将集群状态设置为第二预设状态。
本发明提供了一种数据存储装置,包括:
更新模块,用于根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新;并根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新;
确定模块,用于针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值;根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值;若所述第一OSD的标识值与所述第二OSD的标识值不相同,则将该Object确定为目标Object;
保持模块,用于将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值。
进一步地,所述装置还包括:
处理模块,用于判断存储是否为多副本存储;若是,则将存储由多副本存储设置为单副本存储,并将集群状态设置为第一预设状态。
进一步地,所述处理模块,还用于将所述存储由单副本存储恢复为多副本存储;
所述确定模块,具体用于根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的多个第三OSD的标识值,并确定该Object对应的多个第三OSD的标识值中的主OSD的标识值;将所述主OSD的标识值确定为该Object对应的第一OSD的标识值。
进一步地,所述处理模块,还用于将该Object存储在副OSD的标识值对应的第二目标OSD中,其中所述副OSD的标识值为第三OSD的标识值中除所述主OSD的标识值。
进一步地,所述处理模块,还用于将集群状态设置为第二预设状态。
本发明还提供了一种电子设备,所述电子设备至少包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序时实现如上述任一所述数据存储方法的步骤。
本发明还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一所述数据存储方法的步骤。
由于本发明实施例中,根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新,并根据该目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新,针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值,根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值,若该第一OSD的标识值与该第二OSD的标识值不相同,则将该Object确定为目标Object,将该目标Object对应的目标OSD的标识值保持为该第二OSD的标识值。由于本发明实施例中,在增加节点并将故障域由OSD切换为HOST后,更新了预先保存的Object与PG的映射关系以及预先保存的PG与OSD的映射关系,并基于更新后的映射关系确定Object对应的第一OSD的标识值与更新前Object对应的第二OSD的标识值,确定OSD指向发生变化的目标Object,并将该目标Object对应的目标OSD的标识值保持为第二OSD的标识值,以使目标Object仍然存储在添加节点之前的OSD中,避免了集群内部有大量的数据迁移,提高了用户体验。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据存储方法的过程示意图;
图2为本发明实施例提供的一种存储变化的影响示意图;
图3为本发明实施例提供的一种Object指向变化的过程示意图;
图4为本发明实施例提供的一种数据存储的过程示意图;
图5为本发明实施例提供的一种Ceph映射结构示意图;
图6为本发明实施例提供的一种数据存储装置结构示意图;
图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了避免集群内部有大量的数据迁移以使得集群内各节点的cpu利用率、负载等加大,影响用户体验的问题,本发明实施例提供了一种数据存储方法、装置、设备及介质。
实施例1:
图1为本发明实施例提供的一种数据存储方法的过程示意图,该过程包括以下步骤:
S101:根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新;并根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新。
本发明实施例提供的数据存储方法应用于电子设备,该电子设备可以是智能终端、PC或者服务器等设备。
在本发明实施例中,在添加新的节点并将故障域由OSD切换为HOST后,集群拓扑会发生变化,该变化后的集群拓扑中的PG的数量、OSD的数量、预先保存的Object与PG的映射关系以及预先保存的PG与OSD的映射关系也会发生变化,其中,在本发明实施例中该变化后的集群拓扑称为目标集群拓扑。
为了确定变化后的Object与PG的映射关系,也就是为了对预先保存的Object与PG的映射关系进行更新,在本发明实施例中,根据目标集群拓扑中更新后的PG的数量,对该预先保存的Object与PG的映射关系进行更新,具体的,根据Hash(objectid)stablemod pgnum=pg_id,对该预先保存的Object与PG的映射关系进行更新,其中,该objectid为每个Object的标识值,Hash()为哈希函数,stablemod为取模运算,pgnum为该目标集群拓扑中更新后的PG的数量,pg_id为Object对应的PG的标识值。
其中,该根据更新后的PG数量对预先保存的Object与PG的映射关系进行更新的过程为现有技术,在此不做赘述。
为了确定变化后的PG与OSD的映射关系,也就是为了对预先保存的PG与OSD的映射关系进行更新,在本发明实施例中,根据目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新。由于该目标集群拓扑以及目标数据分布策略为基于CRUSH算法以及PG的标识值确定对应的OSD的标识值的影响因素,因此,在本发明实施例中,可以基于目标集群拓扑、目标数据分布策略以及该CRUSH算法对预先保存的PG与OSD的映射关系进行更新,其中,该目标数据分布策略是当前故障域对应的数据分布策略。由于在本发明实施例中,在添加节点之后,将故障域由OSD切换为HOST,因此,在对该预先保存的PG与OSD的映射关系进行更新时,该目标数据分布策略为HOST对应的数据分布策略。
具体的,基于目标集群拓扑以及目标数据分布策略对该CRUSH算法进行更新的过程为现有技术,在此不做赘述。
S102:针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值;根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值;若所述第一OSD的标识值与所述第二OSD的标识值不相同,则将该Object确定为目标Object。
在本发明实施例中,为了将数据进行存储,在获得待存储的文件(File)后,将该File进行切分,并在切分后获得该File对应的每个Object,具体的,在对File进行切分时,可以按照固定大小进行切分,其中,该对File进行切分的过程为现有技术,在此不做赘述。
为了确定添加节点并将故障域由OSD切换为HOST后,集群内部的数据是否会迁移,也就是说,确定Object指向的OSD是否发生变化,其中,若Object指向的OSD发生变化,则该Object待存储的OSD发生变化,则需要将该Object进行迁移,将该Object迁移到该Object指向的OSD中。
具体的,在本发明实施例中,针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值,并根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值。为了确定该Object指向的OSD是否发生变化,在本发明实施例中,确定该第一OSD的标识值与该第二OSD的标识值是否相同,若该第一OSD的标识值与该第二OSD的标识值相同,则说明不需要将该Object进行迁移,若该第一OSD的标识值与该第二OSD的标识值不相同,则说明需要对该Object进行迁移,将该需要进行迁移的Object确定为目标Object。
S103:将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值。
为了避免集群内部数据进行迁移,确定在添加节点并将故障域由OSD切换为HOST前,该目标Object指向的OSD的标识值,也就是说,确定第二OSD的标识值,并将该目标Object对应的目标OSD的标识值保持为该第二OSD的标识值,且将目标Object仍然存储在该第二OSD的标识值对应的OSD中。具体的,在将该目标Object对应的目标OSD的标识值保持为该第二OSD的标识值的过程中,电子设备可以接收指向保持命令,将指向保持命令用于将该目标Object对应的目标OSD的标识值保持为第二OSD的标识值,也就是说,将该目标Object对应的目标OSD的标识值保持为添加节点之前对应的OSD的标识值,以此保证该目标Object仍然存储在该第二OSD的标识值对应的OSD中。
具体的,电子设备在确定目标OSD的标识值后,可以输出该目标OSD的标识值,用户基于该输出的目标OSD的标识值,向电子设备发送指向保持指令,比如,若第一目标OSD为标识值为id2的OSD以及标识值为id3的OSD,则该指向保持命令可以为ceph osd pg-upmappg_id osd_previous osd_id2osd_id3,该指向保持命令使该目标Object指向的目标OSD的标识值保持为第二OSD的标识值,其中,该第二OSD的标识值id2和id3,以此保证该目标Object仍然存储在第二OSD的标识值对应的OSD中,也就是id2对应的OSD以及id3的OSD中。
此外,若待存储的Object过多,若为了保证每个Object都不进行内部迁移,基于用户向电子设备发送指向保持指令,则加重了用户的工作负担。在本发明实施例中,为了减小用户的工作负担,因此电子设备在确定该目标OSD的标识值后,电子设备可以基于预先保存的指向保持命令的模板以及该目标OSD的标识值,自动生成指向保持命令并运行该指向保持命令,比如,该指向保持命令的模板为ceph osd pg-upmap pg_id osd_previous osd_x,其中,该x为OSD的标识值对应的参数,若电子设备在确定该目标OSD的标识值为id7,则电子设备基于预先保存的指向保持命令的模板以及该目标OSD的标识值,自动生成指向保持命令为ceph osd pg-upmap pg_id osd_previous osd_id7,也就是说,将指向保持命令的模板中OSD的标识值对应的参数x替换为id7。
由于本发明实施例中,在增加节点并将故障域由OSD切换为HOST后,更新了预先保存的Object与PG的映射关系以及预先保存的PG与OSD的映射关系,并基于更新后的映射关系确定Object对应的第一OSD的标识值与更新前Object对应的第二OSD的标识值,确定OSD指向发生变化的目标Object,并将该目标Object对应的目标OSD的标识值保持为第二OSD的标识值,以使目标Object仍然存储在添加节点之前的OSD中,避免了集群内部有大量的数据迁移,提高用户体验。
实施例2:
为了保证集群内部数据不进行迁移,在上述实施例的基础上,在本发明实施例中,所述根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新之前,所述方法还包括:
判断存储是否为多副本存储;
若是,则将所述存储由多副本存储设置为单副本存储,并将集群状态设置为第一预设状态。
在数据存储的过程中,可以将Object存在一个OSD中,也就是将存储设置为单副本存储,也可以将该Object存在多个OSD中,也就是将存储设置为多副本存储,比如,三副本存储。
若该存储为多副本存储,例如为三副本存储,则在添加节点并将故障域由OSD切换为HOST后,一个Object需要存储在三个OSD中。由于对预先保存的Object与PG的映射关系以及预先保存的PG与OSD的映射关系进行了更新,则该Object对应的三个OSD的指向可能都发生了变化,则增大了后续迁移的工作量。
因此,为了减少后续迁移的工作负担,在发明实施例中,可以在根据目标集群拓扑中更新后的PG的数量,对预先保存的Object与PG的映射关系进行更新之前,也就是在增加节点之前,判断存储是否为多副本存储,若为多副本存储,则将存储由多副本存储设置为单副本存储。也就是说,将Object只保留在一个OSD中,该Object对应的多个OSD中的其余OSD中存储的Object删除。
为了保证在增加节点的过程中,集群内部数据不进行迁移,在本发明实施例中,对集群状态进行设置,将该集群状态设置为第一预设状态,该第一预设状态即为内部数据保持不迁移的状态。具体的,电子设备可以在接收到集群状态设置指令后,根据该集群状态设置指令携带的集群状态信息对该集群状态进行设置。
实施例3:
为了保证集群内部数据不进行迁移,在上述各实施例的基础上,在本发明实施例中,若确定存储为多副本存储,所述根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新之后,所述针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值之前,所述方法还包括:
将所述存储由单副本存储恢复为多副本存储;
所述根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值包括:
根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的多个第三OSD的标识值,并确定该Object对应的多个第三OSD的标识值中的主OSD的标识值;
将所述主OSD的标识值确定为该Object对应的第一OSD的标识值。
在本发明实施例中,为了减少后续迁移的工作负担,在根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新之前,存储为多副本存储时,将存储设置为了单副本存储,因此,为了保证后续将Object可以存储在多个OSD中,在根据目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新之后,针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值之前,将存储由单副本存储恢复为多副本存储。
图2为本发明实施例提供的一种存储变化的影响示意图,现针对图2进行说明:
为了方便描述,将Object1基于更新前的Object与PG的映射关系,确定的PG的标识值称为Pg_previous,将Object1基于更新前的PG与OSD的映射关系,确定的OSD的标识值称为OSD_previous;将Object1基于更新后的Object与PG的映射关系,确定的PG的标识值称为Pg_curret,将Object1基于更新后的PG与OSD的映射关系,确定的OSD的标识值称为OSD_curret。
在添加节点并将故障域由OSD切换为HOST之前,也就是更新Object与PG的映射关系以及PG与OSD的映射关系之前,由于将存储设置为单副本存储,则基于更新前的Object与PG的映射关系,确定Object1对应的PG的标识值为Pg_previous,并基于更新前的PG与OSD的映射关系,可以确定Pg_previous对应的OSD的标识值为OSD_previous,其中,由于存储为单副本存储,因此该OSD_previous的数量为一个。
在添加节点之后,也就是更新Object与PG的映射关系以及PG与OSD的映射关系之后,在根据所述PG的标识值以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新之后,所述针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值之前,将存储由单副本存储恢复为多副本存储,此时,基于更新后的Object与PG的映射关系,确定Object1对应的PG标识值为Pg_curret,并基于更新前的PG与OSD的映射关系,可以确定Pg_curret对应的OSD的标识值为OSD_curret,其中,由于存储已经由单副本存储恢复为多副本存储,因此该OSD_curret的数量为多个。
在本发明实施例中,存储为多副本存储时,将该Object存储在多个OSD中,其中,该多个OSD中包含一个主OSD,其余的为副OSD。比如,为三副本存储,将该Object存储在3个OSD中,其中,3个OSD包括一个主OSD以及两个副OSD。为了确定将Object存储的哪个OSD为主OSD,可以先根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的多个第三OSD的标识值。其中,该每个第三OSD的标识值中包含该Object对应的主OSD的标识值,还包含该Object对应的副OSD的标识值,因此,在确定该Object对应的多个第三OSD的标识值中的主OSD的标识值之后,从该多个第三OSD的标识值中确定主OSD的标识值。
由于为多副本存储,若针对每个Object对应的主OSD以及副OSD都进行指向调整的话,则大大加大电子设备的工作负担,因此为了减少电子设备的工作负担,若存储为多副本存储,可以将主OSD的标识值确定为该Object对应的第一OSD的标识值,并后续只针对主OSD中存储的Object进行指向调整。
为了实现将Object存储在该Object对应的副OSD中,在上述各实施例的基础上,在本发明实施例中,所述方法还包括:
将该Object存储在副OSD的标识值对应的第二目标OSD中,其中所述副OSD的标识值为第三OSD的标识值中除所述主OSD的标识值。
本发明实施例中,为了实现多副本存储,除了将Object存储在主OSD中以外,还需要将Object存储在副OSD中,为了确定将Object存储的哪个OSD为副OSD中,在本发明实施例中,确定该多个第三OSD的标识值中包含该Object对应的副OSD的标识值,并将该Object存储在副OSD的标识值对应的第二目标OSD中,其中该副OSD的标识值为第三OSD的标识值中除该主OSD的标识值。
图3为本发明实施例提供的一种Object指向变化的过程示意图,现针对图3进行说明:
将目标集群拓扑(Cluster map)、目标数据分布策略(placement rule)以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新后,抽取一组OSD,也就是说,根据Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该目标Object对应的第一OSD的标识值,该目标Object为更新前和更新后OSD指向发生变化的Object,其中,该第一OSD的标识值为添加节点后该目标Object对应的主OSD的标识值,则确定该主OSD的标识值对应的OSD,为了方便描述,将根据更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定的该目标Object对应的OSD的标识值称为osd_primary,将根据更新后的Object与PG的映射关系以及的更新后的PG与OSD的映射关系,确定的该目标Object对应的OSD的标识值称为osd_previous。在确定主OSD的标识值后,也就是说在确定osd_previous后,并将osd_previous替换为osd_primary,也就是说,将该目标Object对应的目标OSD的标识值保持为osd_primary。具体的,电子设备可以在接收到指向保持命令后,将该目标Object对应的目标OSD的标识值保持为osd_primary,也就是说,将该目标Object对应的目标OSD的标识值保持为更新前该目标Object指向的第二OSD的标识值,其中,该第二OSD的标识值为添加节点前该目标Object对应的OSD的标识值。
实施例4:
为了实现后续数据的重调整,在上述实施例的基础上,在本发明实施例中,所述将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值之后,所述方法还包括:
将集群状态设置为第二预设状态。
在本发明实施例中,为了实现后续数据的重调整,需要将该集群状态设置为第二预设状态,该第二预设状态即为内部数据允许进行迁移的状态。具体的,电子设备在接收到集群状态设置指令后,根据该集群状态设置指令携带的集群状态信息对该集群状态进行设置,且该第二预设状态与该第一预设状态不相同。
图4为本发明实施例提供的一种数据存储的过程示意图,现针对图4进行说明。
若确定存储为多副本存储,则降低副本数,也就是将副本存储设置为单副本存储,新增LOG模块记录映射关系,也就是说,将增加节点前的Object与PG的映射关系以及增加节点前的PG与OSD的映射关系进行保存,并设置集群状态,具体的,将集群状态预先设置为第一预设状态,然后增加节点,修改故障域,增加OSD数以及PG数之后,也就是说,添加节点并将故障域由OSD切换为HOST,获得目标集群拓扑后,恢复副本数,也就是说,将存储由单副本存储恢复成多副本存储,然后指定映射关系,也就是说,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值,并根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值,将第一OSD的标识值与第二OSD的标识值不相同的目标Object指向该更新前该目标Object对应的OSD中并存储,然后取消集群状态设置,也就是说,将该集群状态设置为第二预设状态。
图5为本发明实施例提供的一种Ceph映射结构示意图,现针对图5进行说明:
在获得用户需要读写的文件(File)后,将该File进行分割,获得多个Object,其中,预先保存File对应的标识值,也就是ino,且根据切分得到的每个Object对应的序号,也就是ono,以及该File对应的标识值,确定Object对应的标识值,也就是说(ino,ono)→oid,其中,oid也就是该Object对应的标识值,将该oid作为哈希函数的输入,并将该输出结果与集群拓扑中PG的数量进行按位与运算,获得对应的PG的标识值,具体过程为,hash(oid)&mask=pgid,其中,mask为集群拓扑中PG的数量,该pgid为PG的标识值,并在确定pgid后,根据pgid、集群拓扑、数据分布策略以及CRUSH算法,确定对应的OSD的标识值。也就是CRUSH(PGID)→(OSD1,OSD2)。
实施例5:
图6为本发明实施例提供的一种数据存储装置结构示意图,该装置包括:
更新模块601,用于根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新;并根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新;
确定模块602,用于针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值;根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值;若所述第一OSD的标识值与所述第二OSD的标识值不相同,则将该Object确定为目标Object;
保持模块603,用于将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值。
在一种可能的实施方式中,所述装置还包括:
处理模块604,用于判断存储是否为多副本存储;若是,则将存储由多副本存储设置为单副本存储,并将集群状态设置为第一预设状态。
在一种可能的实施方式中,所述处理模块604,还用于将所述存储由单副本存储恢复为多副本存储;
所述确定模块602,具体用于根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的多个第三OSD的标识值,并确定该Object对应的多个第三OSD的标识值中的主OSD的标识值;将所述主OSD的标识值确定为该Object对应的第一OSD的标识值。
在一种可能的实施方式中,所述处理模块604,还用于将该Object存储在副OSD的标识值对应的第二目标OSD中,其中所述副OSD的标识值为第三OSD的标识值中除所述主OSD的标识值。
在一种可能的实施方式中,所述处理模块604,还用于将集群状态设置为第二预设状态。
实施例6:
在上述各实施例的基础上,本发明实施例还提供了一种电子设备,如图7所示,包括:处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信。
所述存储器703中存储有计算机程序,当所述程序被所述处理器701执行时,使得所述处理器701执行如下步骤:
根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新;并根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新;
针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值;根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值;若所述第一OSD的标识值与所述第二OSD的标识值不相同,则将该Object确定为目标Object;
将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值。
进一步地,所述处理器701,还用于判断存储是否为多副本存储;若是,则将存储由多副本存储设置为单副本存储,并将集群状态设置为第一预设状态。
进一步地,所述处理器701,还用于将所述存储由单副本存储恢复为多副本存储;根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的多个第三OSD的标识值,并确定该Object对应的多个第三OSD的标识值中的主OSD的标识值;将所述主OSD的标识值确定为该Object对应的第一OSD的标识值。
进一步地,所述处理器701,还用于将该Object存储在副OSD的标识值对应的第二目标OSD中,其中所述副OSD的标识值为第三OSD的标识值中除所述主OSD的标识值。
进一步地,所述处理器701,还用于将集群状态设置为第二预设状态。
上述服务器提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口702用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字指令处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
实施例7:
在上述各实施例的基础上,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行时实现如下步骤:
所述存储器中存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行如下步骤:
根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新;并根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新;
针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值;根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值;若所述第一OSD的标识值与所述第二OSD的标识值不相同,则将该Object确定为目标Object;
将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值。
进一步地,所述根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新之前,所述方法还包括:
判断存储是否为多副本存储;
若是,则将存储由多副本存储设置为单副本存储,并将集群状态设置为第一预设状态。
进一步地,若确定存储为多副本存储,所述根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新之后,所述针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值之前,所述方法还包括:
将所述存储由单副本存储恢复为多副本存储;
所述根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值包括:
根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的多个第三OSD的标识值,并确定该Object对应的多个第三OSD的标识值中的主OSD的标识值;
将所述主OSD的标识值确定为该Object对应的第一OSD的标识值。
进一步地,所述方法还包括:
将该Object存储在副OSD的标识值对应的第二目标OSD中,其中所述副OSD的标识值为第三OSD的标识值中除所述主OSD的标识值。
进一步地,所述将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值之后,所述方法还包括:
将集群状态设置为第二预设状态。
由于本发明实施例中,在增加节点并将故障域由OSD切换为HOST后,更新了预先保存的Object与PG的映射关系以及预先保存的PG与OSD的映射关系,并基于更新后的映射关系确定Object对应的第一OSD的标识值与更新前Object对应的第二OSD的标识值,确定OSD指向发生变化的目标Object,并将该目标Object对应的目标OSD的标识值保持为第二OSD的标识值,以使目标Object仍然存储在添加节点之前的OSD中,避免了集群内部有大量的数据迁移,提高用户体验。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种数据存储方法,其特征在于,包括:
根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新;并根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新,其中,所述目标数据分布策略为HOST对应的数据分布策略;
针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值;根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值;若所述第一OSD的标识值与所述第二OSD的标识值不相同,则将该Object确定为目标Object;
将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值。
2.根据权利要求1所述的方法,其特征在于,所述根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新之前,所述方法还包括:
判断存储是否为多副本存储;
若是,则将存储由多副本存储设置为单副本存储,并将集群状态设置为第一预设状态。
3.根据权利要求2所述的方法,其特征在于,若确定存储为多副本存储,所述根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新之后,所述针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值之前,所述方法还包括:
将所述存储由单副本存储恢复为多副本存储;
所述根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值包括:
根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的多个第三OSD的标识值,并确定该Object对应的多个第三OSD的标识值中的主OSD的标识值;
将所述主OSD的标识值确定为该Object对应的第一OSD的标识值。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将该Object存储在副OSD的标识值对应的第二目标OSD中,其中所述副OSD的标识值为第三OSD的标识值中除所述主OSD的标识值。
5.根据权利要求2所述的方法,其特征在于,所述将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值之后,所述方法还包括:
将集群状态设置为第二预设状态。
6.一种数据存储装置,其特征在于,包括:
更新模块,用于根据目标集群拓扑中更新后的PG的数量对预先保存的Object与PG的映射关系进行更新;并根据所述目标集群拓扑、目标数据分布策略以及CRUSH算法对预先保存的PG与OSD的映射关系进行更新,其中,所述目标数据分布策略为HOST对应的数据分布策略;
确定模块,用于针对每个存储文件切分后获得的每个Object,根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的第一OSD的标识值;根据该Object的标识值、更新前的Object与PG的映射关系以及更新前的PG与OSD的映射关系,确定该Object对应的第二OSD的标识值;若所述第一OSD的标识值与所述第二OSD的标识值不相同,则将该Object确定为目标Object;
保持模块,用于将所述目标Object对应的目标OSD的标识值保持为所述第二OSD的标识值。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
处理模块,用于判断存储是否为多副本存储;若是,则将存储由多副本存储设置为单副本存储,并将集群状态设置为第一预设状态。
8.根据权利要求7所述的装置,其特征在于,所述处理模块,还用于将所述存储由单副本存储恢复为多副本存储;
所述确定模块,具体用于根据该Object的标识值、更新后的Object与PG的映射关系以及更新后的PG与OSD的映射关系,确定该Object对应的多个第三OSD的标识值,并确定该Object对应的多个第三OSD的标识值中的主OSD的标识值;将所述主OSD的标识值确定为该Object对应的第一OSD的标识值。
9.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-5中任一所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-5中任一所述方法的步骤。
CN202110867929.4A 2021-07-29 2021-07-29 数据存储方法、装置、设备及介质 Active CN113486040B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110867929.4A CN113486040B (zh) 2021-07-29 2021-07-29 数据存储方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110867929.4A CN113486040B (zh) 2021-07-29 2021-07-29 数据存储方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN113486040A CN113486040A (zh) 2021-10-08
CN113486040B true CN113486040B (zh) 2024-04-12

Family

ID=77944698

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110867929.4A Active CN113486040B (zh) 2021-07-29 2021-07-29 数据存储方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN113486040B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287669A (zh) * 2018-01-26 2018-07-17 平安科技(深圳)有限公司 数据存储方法、装置及存储介质
CN112596758A (zh) * 2020-11-30 2021-04-02 新华三大数据技术有限公司 一种OSDMap的版本更新方法、装置、设备和介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003649B2 (en) * 2015-05-07 2018-06-19 Dell Products Lp Systems and methods to improve read/write performance in object storage applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287669A (zh) * 2018-01-26 2018-07-17 平安科技(深圳)有限公司 数据存储方法、装置及存储介质
CN112596758A (zh) * 2020-11-30 2021-04-02 新华三大数据技术有限公司 一种OSDMap的版本更新方法、装置、设备和介质

Also Published As

Publication number Publication date
CN113486040A (zh) 2021-10-08

Similar Documents

Publication Publication Date Title
US20120284709A1 (en) Dynamic virtual machine domain configuration and virtual machine relocation management
CN110515724B (zh) 资源配置方法、装置、监视器及机器可读存储介质
CN111328392A (zh) 部分供应的虚拟机的部署
CN107870802B (zh) 一种虚拟机迁移方法和装置
EP3432132B1 (en) Data storage method and device
CN112148430A (zh) 一种虚拟网络功能的虚拟机在线安全迁移的方法
CN115543696B (zh) 一种磁盘阵列重构任务加速方法、系统、存储介质及设备
CN107391039B (zh) 一种数据对象存储方法和装置
WO2021104383A1 (zh) 数据备份的方法和装置、设备和存储介质
CN112328365A (zh) 一种虚拟机迁移方法、装置、设备及存储介质
CN105718221A (zh) 一种数据存储的方法、装置和系统
CN107153680B (zh) 一种分布式内存数据库在线扩展节点的方法及系统
US11886225B2 (en) Message processing method and apparatus in distributed system
CN103336670A (zh) 一种基于数据温度对数据块自动进行分布的方法和装置
CN109788006B (zh) 数据均衡方法、装置及计算机设备
CN113486040B (zh) 数据存储方法、装置、设备及介质
CN112631994A (zh) 数据迁移方法及系统
CN110298031B (zh) 一种词典服务系统及模型版本一致性配送方法
WO2024055529A1 (zh) 放置组成员选择方法、装置、设备及可读存储介质
CN111274192A (zh) 一种多bmc管理系统及刀片服务器
US10678453B2 (en) Method and device for checking false sharing in data block deletion using a mapping pointer and weight bits
CN115033337A (zh) 虚拟机内存迁移方法、装置、设备及存储介质
CN113542013B (zh) 虚拟化网络功能管理消息分配方法、装置及设备
CN111506254B (zh) 分布式存储系统及其管理方法、装置
CN108932149A (zh) 数据传输方法及装置

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