CN109799954B - 实现ceph集群缓存的方法和osd - Google Patents

实现ceph集群缓存的方法和osd Download PDF

Info

Publication number
CN109799954B
CN109799954B CN201811555479.XA CN201811555479A CN109799954B CN 109799954 B CN109799954 B CN 109799954B CN 201811555479 A CN201811555479 A CN 201811555479A CN 109799954 B CN109799954 B CN 109799954B
Authority
CN
China
Prior art keywords
target
osd
cache
ceph
partition
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
CN201811555479.XA
Other languages
English (en)
Other versions
CN109799954A (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.)
Shenzhen Innovation Technology Co ltd
Original Assignee
Shenzhen Innovation 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 Shenzhen Innovation Technology Co ltd filed Critical Shenzhen Innovation Technology Co ltd
Priority to CN201811555479.XA priority Critical patent/CN109799954B/zh
Publication of CN109799954A publication Critical patent/CN109799954A/zh
Application granted granted Critical
Publication of CN109799954B publication Critical patent/CN109799954B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供一种实现CEPH集群缓存的方法和OSD,其中OSD包括与其对应设置的第一缓存;当CEPH集群执行目标OSD的对象的写操作时,先将对象下放至目标第一缓存,再由目标第一缓存将对象写入目标OSD;当CEPH集群执行目标OSD的对象的读操作时,先将目标OSD中的对象读入目标第一缓存,再由目标第一缓存将对象反馈给存储池。基于本发明OSD的CEPH,不仅可以支持EC(Erasure Code)纠删码编码,而且比分层缓存的CEPH的IO性能更佳。

Description

实现CEPH集群缓存的方法和OSD
技术领域
本发明涉及计算机领域,特别涉及一种实现CEPH集群缓存的方法和OSD。
背景技术
图1为传统的CEPH集群的结构示意图,其中DATA为输入CEPH的用户数据或者CEPH反馈给用户的数据,第二层是pool存储池,在pool中一个用户数据被抽象为一个pg(placement group),一个pg包括多个存储池对象obj,CEPH通CRUSH算法将存储池对象obj映射至不同的OSD,OSD可视为硬盘Disk的逻辑盘。
传统的CEPH集群没有缓存功能,使得CEPH的IO性能较差。图2为CEPH集群的分层缓存结构示意图,分层缓存基于SSD提出,可以为CEPH客户端提供更好的IO性能,同时分层缓存是SSD(Solid State Disk)在CEPH集群中最广泛的应用。
分级缓存需创建一个由高速而昂贵存储设备SSD组成的第一pool存储池、以及一个相对低速/廉价设备组成的第二pool存储池(与图1中的pool类似)、作为经济存储层,第一pool作为第二pool的缓存层。
客户端与第一pool接口,CEPH分级代理决定何时把第一pool内的存储池对象obj刷回第二pool和后端存储层OSD;第二pool和后端存储层OSD对客户端来说是完全透明的。
分层缓存提高了CEPH集群的IO性能,但也限制了CEPH集群功能,例如第二pool不支持EC(Erasure Code)纠删码编码,而EC广泛用于分布式系统的数据冗余和数据恢复。
发明内容
有鉴于此,本发明提供一种实现CEPH集群缓存的方法和OSD,以解决CEPH集群既需提高IO性能又需兼容EC的问题。
本发明提供一种CEPH集群的OSD,该OSD包括与其对应设置的第一缓存;
当CEPH集群执行目标OSD的对象的写操作时,先将对象下放至目标第一缓存,再由目标第一缓存将对象写入目标OSD;
当CEPH集群执行目标OSD的对象的读操作时,先将目标OSD中的对象读入目标第一缓存,再由目标第一缓存将对象反馈给存储池。
本发明还提供一种实现CEPH集群缓存的方法,包括:
步骤11:将第一存储装置的不同部分分别设置为第一cache分区、第二元数据db分区和第三日志wal分区;
步骤12:将第二存储装置中的硬盘x划分为元数据分区sdx1和用户数据分区sdx2,其中x代表硬盘符号;
步骤13:将第一cache分区和sdx2一起注册到缓存区,生成与sdx2绑定的在第一存储装置中的第一缓存区x;
步骤14:将硬盘x创建为OSDx。
本发明通过对OSD对应设置第一缓存,与图1相比,可以提供更好的IO性能。同时与图2相比,基于本申请OSD的CEPH,不仅可以支持EC(ErasureCode)纠删码编码,且其IO性能比图2的分层缓存还可以进一步提高。
附图说明
图1为传统CEPH的结构图;
图2为现有技术中采用分层缓存的CEPH的结构图;
图3为本发明的CEPH的结构图;
图4为本发明实现CEPH集群缓存的方法的流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
如图3所示,本发明提供一种CEPH集群的OSD,与图1的不同之处在于,本发明的OSD包括与其对应设置的第一缓存。
例如,当CEPH集群只有一个OSD,则该OSD对应一个第一缓存。
当CEPH集群包括多个OSD,例如OSD-1、OSD-2…OSD-m,m为大于2的自然数,则OSD-1对应第一缓存-1,OSD-2对应第一缓存-2……OSD-m对应第一缓存-m。
第一缓存的用途在于:
(1)当CEPH集群执行目标OSD的对象的写操作时,先将对象下放至目标第一缓存,再由目标第一缓存将对象写入目标OSD。
当CEPH集群包括多个OSD时,CEPH先确定该存储池对象obj对应的目标OSD,然后将存储池对象obj下放至目标第一缓存,再由目标第一缓存将存储池对象写入目标OSD。
假设目标OSD为OSD-n,则目标第一缓存为第一缓存-n,n为CEPH中的OSD的序号。
(2)当CEPH集群执行目标OSD的对象的读操作时,先将目标OSD中的对象读入目标第一缓存,再由目标第一缓存将对象反馈给存储池。
当CEPH集群包括多个OSD时,且该读操作的对象位于目标OSD,则先将目标OSD中的对象读入目标第一缓存,再由目标第一缓存将OSD对象反馈给存储池。
假设目标OSD为OSD-d,则目标第一缓存为第一缓存-d,d为CEPH中的OSD的序号。
本发明通过对OSD对应设置第一缓存,与图1相比,可以提供更好的IO性能。同时与图2相比,基于本申请OSD的CEPH,不仅可以支持EC(ErasureCode)纠删码编码,且其IO性能比图2的分层缓存提升了约30%。
图3中的第一缓存优选设置SSD上或其他IO性能较好的硬盘上,同时一个SSD可以设置N个第一缓存,N≥1,即一个SSD可以对应多个OSD,提高SSD的利用率。
作为第一缓存的SSD可以采用磨损均衡算法控制其所有第一缓存的写操作,或者CEPH通过磨损均衡算法控制集群中所有第一缓存的写操作。通过算法使得SSD各个区域的写操作均衡,除了尽可能发挥SSD的性能外,也可以最大程度保护并延长SSD的使用寿命。
需要说明的是,其他均衡缓存操作的算法也同样适用本申请。
当第一缓存执行目标OSD的对象obj的写操作时,如果对象obj所属的pg放置组中的所有对象均已写入目标OSD,则目标第一缓存向存储池(以及其他上层)反馈写入成功的消息。在异常掉电的情况下,这样的设置可以确保数据安全。
基于图3的技术构思,本发明还提出了一种实现CEPH集群缓存的方法,如图4所示,包括:
步骤11(S11):将第一存储装置的不同部分分别设置为第一cache分区、第二元数据db分区和第三日志wal分区;
根据实际需求,将第一存储装置对应的硬盘分区时,先划分一块区域用于cache,后面区域分区后用于配置元数据db和OSD的日志。
例如,执行sgdisk-n 1:0:+80G/dev/sdb,创建了80G的第一cache分区,分区名为/dev/sdb1,其大小一般通过cache算法计算获取;
执行sgdisk-n 2:0:+5G/dev/sdb,创建了5G的第二元数据db分区,分区名为/dev/sdb2;
执行sgdisk-n 3:0:+2G/dev/sdb,创建了2G的第三日志wal分区用于预写日志wal,分区名为/dev/sdb3。
步骤12(S12):将第二存储装置中的硬盘x划分为元数据分区sdx1和用户数据分区sdx2,其中x代表硬盘符号;
步骤12将后端的硬盘进行分区,把硬盘x前一部分的容量划分出来用于存储CEPH存储设备的元数据,再把传统硬盘的其余空间分为另一个分区,用于存储用户数据。
例如,执行sgdisk-n 1:0:+100M/dev/sdx,用于创建了100M的元数据分区,分区名为/dev/sdx1;
执行sgdisk-n 2:0:0–t 2/dev/sdx,将硬盘x其余空间用于缓存的后端,分区名为/dev/sdx2。
步骤13(S13):将第一cache分区和sdx2一起注册到缓存区,生成与sdx2绑定的在第一存储装置中的第一缓存x;
将第一存储装置的第一cache分区(/dev/sdb1)和第二存储装置的用户数据分区(/dev/sdx2)一起注册到缓存区,这样就将第一存储装置绑定到第二存储装置了。
例如,执行以下命令:
make-cache-B/dev/sdx2-C/dev/sdb1
echo/dev/sdk2>/sys/fs/cache/register
echo/dev/sdb1>/sys/fs/cache/register
绑定后会在系统中生成一个cache片区:第一缓存x(cacheX),X为0、1、2…,逐步迭加。
步骤14(S14):将硬盘x创建为OSDx。
其中步骤14包括:
步骤141:生成OSDx的编号;
具体包括:用uuidgen生成OSDx的UUID号;生成OSDx密钥,执行ceph-authtool--gen-print-key;使用上述的UUID号和OSDx密钥生成OSDx的编号。
步骤142:使用OSDx的编号创建OSDx的元数据目录x;
具体执行:mkdir/var/lib/ceph/osd/ceph-$ID。
步骤143:格式化sdx1,并将sdx1挂载到元数据目录x;
具体执行:mkfs.xfs/dev/sdx1
mount/dev/sdk1/var/lib/ceph/osd/ceph-$ID
步骤144:配置OSDx的块存储block、元数据db和日志wal;
具体执行:ln-s/dev/cacheX block;
ln-s/dev/sdb2block.db;
ln-s/dev/sdb3block.wal
步骤145:激活OSDx。
具体包括:A.将OSDx密钥写入OSDx的密钥文件;
B.设置OSDx元数据目录权限:chown-R ceph:ceph
/var/lib/ceph/osd/ceph-$ID;
C.使能并启动OSDx:systemctl enable ceph-osd@$ID
systemctl start ceph-osd@$ID
图4中的第一存储装置为SSD或其他IO性能较佳的硬盘。
SSD可以采用磨损均衡算法控制不同的第一缓存x的写操作。
在步骤14之后还包括:
步骤15:当CEPH集群执行目标OSD的对象的写操作时,先将对象下放至目标OSD对应的目标第一缓存,再由目标第一缓存将对象写入目标OSD。
目标OSD为CEPH确定的该对象的逻辑存储位置。
步骤15还可以包括:
当目标第一缓存执行目标OSD的对象的写操作时,如果对象所属的pg放置组中的所有对象均已写入目标OSD,则目标第一缓存向存储池反馈写入成功的信息。
或者步骤14之后还包括:
步骤16:当CEPH集群执行目标OSD的对象的读操作时,先将目标OSD中的对象读入目标第一缓存,再由目标第一缓存将对象反馈给存储池。
以上所述仅为本发明的较佳实施例而已,并不用以限定本发明的包含范围,凡在本发明技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种CEPH集群的OSD,其特征在于,所述OSD包括与其对应设置的第一缓存;
当CEPH集群执行目标OSD的对象的写操作时,先将所述对象下放至目标第一缓存,再由所述目标第一缓存将所述对象写入目标OSD;
当CEPH集群执行目标OSD的对象的读操作时,先将目标OSD中的所述对象读入目标第一缓存,再由所述目标第一缓存将所述对象反馈给存储池;
所述第一缓存位于SSD,所述SSD包括N个所述第一缓存,N≥1。
2.根据权利要求1所述的OSD,其特征在于,所述SSD采用磨损均衡算法控制所述N个所述第一缓存的写操作。
3.根据权利要求1所述的OSD,其特征在于,所述OSD还包括:当所述目标第一缓存执行目标OSD的对象的写操作时,如果所述对象所属的pg放置组中的所有对象均已写入所述目标OSD,则所述目标第一缓存向所述存储池反馈写入成功的消息。
4.一种实现CEPH集群缓存的方法,其特征在于,包括:
步骤11:将第一存储装置的不同部分分别设置为第一cache分区、第二元数据db分区和第三日志wal分区;
步骤12:将第二存储装置中的硬盘x划分为元数据分区sdx1和用户数据分区sdx2,其中x代表硬盘符号;
步骤13:将所述第一cache分区和sdx2一起注册到缓存区,生成与所述sdx2绑定的在所述第一存储装置中的第一缓存区x;
步骤14:将所述硬盘x创建为OSDx。
5.根据权利要求4所述的方法,其特征在于,所述步骤14包括:
步骤141:生成OSDx的编号;
步骤142:使用所述OSDx的编号创建OSDx的元数据目录x;
步骤143:格式化所述sdx1,并将所述sdx1挂载到所述元数据目录x;
步骤144:配置OSDx的块存储block、元数据db和日志wal;
步骤145:激活所述OSDx。
6.根据权利要求4所述的方法,其特征在于,所述第一存储装置为SSD。
7.根据权利要求6所述的方法,其特征在于,所述SSD采用磨损均衡算法控制不同的所述第一缓存x的写操作。
8.根据权利要求4所述的方法,其特征在于,所述步骤14之后还包括:
步骤15:当CEPH集群执行目标OSD的对象的写操作时,先将所述对象下放至目标OSD对应的目标第一缓存,再由所述目标第一缓存将所述对象写入所述目标OSD。
9.根据权利要求4所述的方法,其特征在于,所述步骤14之后还包括:
步骤16:当CEPH集群执行目标OSD的对象的读操作时,先将目标OSD中的所述对象读入目标第一缓存,再由所述目标第一缓存将所述对象反馈给存储池。
10.根据权利要求8所述的方法,其特征在于,所述步骤15还包括:
当所述目标第一缓存执行目标OSD的对象的写操作时,如果所述对象所属的pg放置组中的所有对象均已写入所述目标OSD,则所述目标第一缓存向所述存储池反馈写入成功的信息。
CN201811555479.XA 2018-12-19 2018-12-19 实现ceph集群缓存的方法和osd Active CN109799954B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811555479.XA CN109799954B (zh) 2018-12-19 2018-12-19 实现ceph集群缓存的方法和osd

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811555479.XA CN109799954B (zh) 2018-12-19 2018-12-19 实现ceph集群缓存的方法和osd

Publications (2)

Publication Number Publication Date
CN109799954A CN109799954A (zh) 2019-05-24
CN109799954B true CN109799954B (zh) 2022-02-22

Family

ID=66557211

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811555479.XA Active CN109799954B (zh) 2018-12-19 2018-12-19 实现ceph集群缓存的方法和osd

Country Status (1)

Country Link
CN (1) CN109799954B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111142795A (zh) * 2019-12-20 2020-05-12 浪潮电子信息产业股份有限公司 分布式存储系统写操作的控制方法、控制装置、控制设备
CN111930713B (zh) * 2020-09-21 2021-02-02 柏科数据技术(深圳)股份有限公司 Ceph放置组的分配方法、装置、服务器及存储介质
CN113031857B (zh) * 2021-01-30 2022-05-10 柏科数据技术(深圳)股份有限公司 数据写入方法、装置、服务器及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106991118A (zh) * 2017-02-17 2017-07-28 深圳市中博睿存信息技术有限公司 基于ceph纠删除容错的读取文件方法及装置
CN108628765A (zh) * 2018-04-13 2018-10-09 新华三技术有限公司 开源分布式存储软件Ceph中Cache实现方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106991118A (zh) * 2017-02-17 2017-07-28 深圳市中博睿存信息技术有限公司 基于ceph纠删除容错的读取文件方法及装置
CN108628765A (zh) * 2018-04-13 2018-10-09 新华三技术有限公司 开源分布式存储软件Ceph中Cache实现方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
https://mp.weixin.qq.com/s/LKCrBK-FfJ1BDqaIcNhGfQ?;郭建楠;《在Ceph中用对Flashcache了吗?(一)》;20170811;网页全文 *
https://mp.weixin.qq.com/s/OuylijsUxV_dbQhoMGMUtA;郭建楠;《在Ceph中用对Flashcache了吗?(二)》;20170815;网页全文 *

Also Published As

Publication number Publication date
CN109799954A (zh) 2019-05-24

Similar Documents

Publication Publication Date Title
US11797191B2 (en) Systems and methods for storing data in SSD
US9823866B1 (en) Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
CN109799954B (zh) 实现ceph集群缓存的方法和osd
US7730257B2 (en) Method and computer program product to increase I/O write performance in a redundant array
JP5008845B2 (ja) ストレージシステムとストレージ装置及びその制御方法
US7076605B1 (en) Method and apparatus for writing data to a storage device
CN102047237B (zh) 在虚拟机之间提供对象级输入/输出请求以存取存储子系统
US8250283B1 (en) Write-distribute command for RAID mirroring
US20130205097A1 (en) Enhanced integrity through atomic writes in cache
US8095728B2 (en) Method and system for power aware I/O scheduling
US9996557B2 (en) Database storage system based on optical disk and method using the system
US20120117328A1 (en) Managing a Storage Cache Utilizing Externally Assigned Cache Priority Tags
US20100306466A1 (en) Method for improving disk availability and disk array controller
JP2005259136A (ja) 非ディスク永続メモリを利用したトランザクション処理システムおよび方法
CN106326229B (zh) 一种嵌入式系统的文件存储方法和装置
US20140215127A1 (en) Apparatus, system, and method for adaptive intent logging
US6996582B2 (en) Virtual storage systems and virtual storage system operational methods
CN102467352A (zh) 减少存储系统请求的响应延迟
US6079000A (en) XPC backup for in-process audit
CN104679442A (zh) 一种提高磁盘阵列性能的方法及装置
US8856439B2 (en) Method and device for utilizing application-level prior knowledge for selectively storing data in higher performance media
US11379326B2 (en) Data access method, apparatus and computer program product
US8145839B2 (en) Raid—5 controller and accessing method with data stream distribution and aggregation operations based on the primitive data access block of storage devices
CN101477446B (zh) 磁盘阵列系统及其降级或重建状态下的逻辑资源处理方法
CN109246198A (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
CB02 Change of applicant information

Address after: 518057 Shenzhen Software Park, No. 9, 501, 502, Science and Technology Middle Road, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Innovation Technology Co., Ltd.

Address before: 518057 Shenzhen Software Park, No. 9, 501, 502, Science and Technology Middle Road, Nanshan District, Shenzhen City, Guangdong Province

Applicant before: UIT Storage Technology (Shenzhen) Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant