本发明涉及分布式文件系统技术领域,具体涉及一种分布式文件系统的硬盘更换方法、系统、终端及存储介质。
背景技术:
分布式存储集群在如今得到了越来越多的应用,存在于集群各个节点上的存储硬盘一旦发生坏道、损坏及无法使用时,存储集群基础服务中存在于该硬盘上的osd也无法提供服务。这种场景下往往需要通过更换硬盘,并重建osd服务来恢复集群,使集群正常健康稳定运行的状态。但是对于存储集群来说,更换硬盘流程涉及的步骤和动作高达几十余步,且涉及的硬盘上服务场景较多,处理起来比较繁琐、困难;相应地,也增加了坏盘更换的运维成本和操作困难。
技术实现要素:
针对现有技术的上述不足,本发明提供一种分布式文件系统的硬盘更换方法、系统、终端及存储介质,以解决上述技术问题。
第一方面,本发明提供一种分布式文件系统的硬盘更换方法,包括:
获取待退出硬盘信息;
根据所述待退出硬盘信息清理待退出硬盘nvram/nvdimm分区上的osdjournal数据;
利用systemd守护进程清除所述待退出硬盘槽位号对应的osd服务数据;
校验待加载硬盘信息;
将待加载硬盘的未占用nvram/nvdimm分区设定为osdjournal数据分区。
进一步的,所述根据所述待退出硬盘信息清理待退出硬盘nvram/nvdimm分区上的osdjournal数据,包括:
检测所述待退出硬盘是否存在nvram/nvdimm分区;
若存在,则删除所述nvram/nvdimm分区上的osdjournal数据;
若不存在,则返回nvram/nvdimm分区不存在提示。
进一步的,所述利用systemd守护进程所述待退出硬盘槽位号对应的osd服务数据,包括:
停止所述待退出硬盘的osd服务进程;
将待退出硬盘的osd和osdkey从文件系统移除;
清除所述待退出硬盘的所有osd服务相关文件。
进一步的,所述将待加载硬盘的未占用nvram/nvdimm分区设定为osdjournal数据分区,包括:
在所述待加载硬盘的部署节点上将工作目录切换至osdkey文件目录;
格式化所述待加载硬盘对应的磁盘;
在所述待加载硬盘上初始化osd服务并重建osdcrushmap;
若所述待加载硬盘不存在nvram/nvdimm,则将osdjournal数据分区指向所述待加载硬盘上自身的第二个分区。
第二方面,本发明提供一种分布式文件系统的硬盘更换系统,包括:
信息获取单元,配置用于获取待退出硬盘信息;
数据清理单元,配置用于根据所述待退出硬盘信息清理待退出硬盘nvram/nvdimm分区上的osdjournal数据;
服务清除单元,配置用于利用systemd守护进程清除所述待退出硬盘槽位号对应的osd服务数据;
信息校验单元,配置用于校验待加载硬盘信息;
分区设定单元,配置用于将待加载硬盘的未占用nvram/nvdimm分区设定为osdjournal数据分区。
进一步的,所述数据清理单元包括:
分区检测模块,配置用于检测所述待退出硬盘是否存在nvram/nvdimm分区;
数据删除模块,配置用于若存在,则删除所述nvram/nvdimm分区上的osdjournal数据;
提示返回模块,配置用于若不存在,则返回nvram/nvdimm分区不存在提示。
进一步的,所述服务清除单元包括:
进程停止模块,配置用于停止所述待退出硬盘的osd服务进程;
osd移除模块,配置用于将待退出硬盘的osd和osdkey从文件系统移除;
文件清除模块,配置用于清除所述待退出硬盘的所有osd服务相关文件。
进一步的,所述分区设定单元包括:
目录切换模块,配置用于在所述待加载硬盘的部署节点上将工作目录切换至osdkey文件目录;
磁盘格式化模块,配置用于格式化所述待加载硬盘对应的磁盘;
服务重建模块,配置用于在所述待加载硬盘上初始化osd服务并重建osdcrushmap;
自身分区模块,配置用于若所述待加载硬盘不存在nvram/nvdimm,则将osdjournal数据分区指向所述待加载硬盘上自身的第二个分区。
第三方面,提供一种终端,包括:
处理器、存储器,其中,
该存储器用于存储计算机程序,
该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。
第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本发明的有益效果在于,
本发明提供的分布式文件系统的硬盘更换方法、系统、终端及存储介质,通过在获取待退出硬盘(坏盘)信息后,根据硬盘信息清理待退出硬盘nvram/nvdimm分区上的osdjournal数据并调用systemd守护进程清除相应的osd服务数据。同时校验待加载硬盘(新硬盘)信息,通过将待加载硬盘的未占用nvram/nvdimm分区设定为osdjournal数据分区实现待加载硬盘的osd服务重建。本发明能够可以简化分布式文件系统的hdd盘换盘流程,相对简单、易用,在一定程度上完善了集群扩缩盘功能,并提供了服务化、可管理化流程和操作步骤,丰富并完善了文件存储集群单盘操作的统一化管理。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的方法的硬盘退出示意性流程图。
图3是本发明一个实施例的方法的硬盘加载示意性流程图。
图4是本发明一个实施例的方法的nvram/nvdimm介质上的osdjournal分布说明图。
图5是本发明一个实施例的系统的示意性框图。
图6为本发明实施例提供的一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
下面对本发明中出现的关键术语进行解释。
cli:commandlineinterface,命令行接口。
osd:objectstoragedevice,在分布式存储中提供存储资源,处理数据的复制、恢复、回填、再均衡。
nvram:non-volatilerandomaccessmemory,非易失性随机访问存储器,指断电后仍能保持数据的一种ram。在分布式存储系统中被虚拟化为块设备,用于数据存储。
nvdimm:non-volatiledualin-linememorymodule,非易失性双列直插式内存模块,是一种用于计算机的随机存取存储器。在分布式存储系统中被虚拟化为块设备,用于数据存储。
图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种分布式文件系统的硬盘更换系统。
如图1所示,该方法100包括:
步骤110,获取待退出硬盘信息;
步骤120,根据所述待退出硬盘信息清理待退出硬盘nvram/nvdimm分区上的osdjournal数据;
步骤130,利用systemd守护进程清除所述待退出硬盘槽位号对应的osd服务数据;
步骤140,校验待加载硬盘信息;
步骤150,将待加载硬盘的未占用nvram/nvdimm分区设定为osdjournal数据分区。
可选地,作为本发明一个实施例,所述根据所述待退出硬盘信息清理待退出硬盘nvram/nvdimm分区上的osdjournal数据,包括:
检测所述待退出硬盘是否存在nvram/nvdimm分区;
若存在,则删除所述nvram/nvdimm分区上的osdjournal数据;
若不存在,则返回nvram/nvdimm分区不存在提示。
可选地,作为本发明一个实施例,所述利用systemd守护进程所述待退出硬盘槽位号对应的osd服务数据,包括:
停止所述待退出硬盘的osd服务进程;
将待退出硬盘的osd和osdkey从文件系统移除;
清除所述待退出硬盘的所有osd服务相关文件。
可选地,作为本发明一个实施例,所述将待加载硬盘的未占用nvram/nvdimm分区设定为osdjournal数据分区,包括:
在所述待加载硬盘的部署节点上将工作目录切换至osdkey文件目录;
格式化所述待加载硬盘对应的磁盘;
在所述待加载硬盘上初始化osd服务并重建osdcrushmap;
若所述待加载硬盘不存在nvram/nvdimm,则将osdjournal数据分区指向所述待加载硬盘上自身的第二个分区。
为了便于对本发明的理解,下面以本发明分布式文件系统的硬盘更换方法的原理,结合实施例中对分布式文件系统的硬盘进行更换的过程,对本发明提供的分布式文件系统的硬盘更换方法做进一步的描述。
具体的,参考图2和图3,所述分布式文件系统的硬盘更换方法包括:
s1、获取待退出硬盘信息。
接收到来自web客户端/cli的用户退盘指令,对退盘指令中的硬盘配置参数及硬盘槽位号进行解析以及定义格式校验。若解析出的硬盘配置参数完整且格式校验通过,则根据硬盘配置参数中的硬盘槽位号查询硬盘盘符、状态、osd服务相关信息。
s2、根据所述待退出硬盘信息清理待退出硬盘nvram/nvdimm分区上的osdjournal数据。
根据步骤s1中获取的硬盘盘符、状态、osd服务相关信息定位待退出硬盘删除数据。根据待退出硬盘信息查询待退出硬盘,若硬盘信息查询成功且正确,则检测集群该节点上是否存在nvram/nvdimm新介质(nvram/nvdimm介质上的osdjournal分布状态见附图4)。若存在nvram/nvdimm则清理nvram/nvdimm分区上的osdjournal数据;若不存在,则直接进入硬盘osd服务清理步骤。
s3、利用systemd守护进程清除所述待退出硬盘槽位号对应的osd服务数据。
清理待退出硬盘槽位号对应的硬盘上的osd服务数据,osd服务由systemd守护进程管理(下文中出现的osd.xxxx代表对应硬盘上的osd的编号,每个硬盘上对应一个osd编号),具体的清理流程如下:
step1:停止对应的osd服务进程
#systemctlstopicfs-osd@osd.xxxx
step2:将对应的osd从crush中移除
#icfsosdcrushrmosd.xxxx
step3:将对应的osdkey移除
#icfsauthdelosd.xxxx
step4:从集群中移除osd
#icfsosdrmosd.xxxx
step5:清除osd目录文件
#rm-rf/var/lib/icfs/osd/icfs-xxxx/fsid
#rm-rf/var/lib/icfs/osd/icfs-xxxx/whoami
#rm-rf/var/lib/icfs/osd/icfs-xxxx/magic
step6:卸载硬盘上的osd挂载目录
#umount/var/lib/icfs/osd/icfs-xxxx
step7:删除硬盘上的osd挂载目录
#rm-rf/var/lib/icfs/osd/icfs-xxxx
step8:取消对应osd服务的开机自启动功能
#systemctldisableicfs-osd@osd.xxxx
step9:清除对应osd的systemd服务文件
#rm–rf/etc/systemd/system/icfs-osd.target.wants/icfs-osd@xxxx.service
s4、校验待加载硬盘信息。
web客户端/cli下发硬盘加载指令至存储系统,对加载指令中的待加载硬盘配置参数及硬盘槽位号进行解析。进行请求配置参数及硬盘槽位号解析及定义格式校验,若解析正常且校验正确,则根据硬盘槽位号查询硬盘盘符、状态、osd服务相关信息。根据硬盘槽位号查询硬盘盘符在文件系统中查询该硬盘,若查询成功且状态信息正确,则执行步骤s5,否则返回错误提示。
s5、将待加载硬盘的未占用nvram/nvdimm分区设定为osdjournal数据分区。
检测集群该节点上是否存在nvram/nvdimm新介质,若存在则遍历nvram/nvdimm所有分区记集合a,osdjournal已占用nvram/nvdimm分区为集合b,得到集合a与集合b的差集中任意一个分区为该次osdjournal的存放分区c,也即c=a-b。
若系统下不存在nvram、nvdimm,则将osd的journal分区指向该硬盘上自身的第二个分区。
若系统下存在nvram、nvdimm,则将osd的journal分区指向对应分区c。
在指定journal分区的基础上重建待加载硬盘的osd服务,步骤如下:
step1:在部署节点上切换工作目录至/home/inspur下(osdkey文件存在目录)
step2:格式化对应的新磁盘
#icfs-diskzapdisk_name
step3:同步集群的配置文件icfs.conf至/home/inspur下
#cp/etc/icfs/icfs.conf/home/inspur/icfs.conf
step4:在对应的集群节点硬盘上初始化osd服务
若该节点存在nvram、nvdimm,则执行如下指令初始化osd和journal
#icfs-deploy--overwrite-confosdpreparehost:disk:part
(其中,host是节点名称;disk是硬盘盘符;part是nvram/nvdimm的分区名)
若该节点不存在nvram、nvdimm,则执行如下指令初始化osd和journal
#icfs-deploy--overwrite-confosdpreparehost:disk
(其中,host是节点名称;disk是硬盘盘符)
step5:重建osdcrushmap,指定osdweight和location值
#icfsosdcrushaddosd.xxxxweightlocation
(其中,osd.xxxx表示osd的编号;weight指osd占用空间的权重;location指对应的osdcrush位置)
在硬盘退出和加载过程中,都进行错误处理,记录日志及抛出对应错误码供前端交互设计。
将上述方法封装进处理脚本,根据是加载盘操作还是退出盘操作,为icfs-disk-change脚本配置如下参数,分别对应不同的功能:
退出盘:icfs-disk-change--nodenode_name--slotslot_num--down
加载盘:icfs-disk-change--nodenode_name--slotslot_num--up--weightweight--locationlocation
则,按照本分明的hdd坏盘退出流程和加载流程,以及封装的流程脚本可以简化相应的文件存储hdd盘换盘流程,相对简单、易用,在一定程度上完善了集群扩缩盘功能,并提供了服务化、可管理化流程和操作步骤,丰富并完善了文件存储集群单盘操作的统一化管理。
如图5示,该系统500包括:
信息获取单元510,配置用于获取待退出硬盘信息;
数据清理单元520,配置用于根据所述待退出硬盘信息清理待退出硬盘nvram/nvdimm分区上的osdjournal数据;
服务清除单元530,配置用于利用systemd守护进程清除所述待退出硬盘槽位号对应的osd服务数据;
信息校验单元540,配置用于校验待加载硬盘信息;
分区设定单元550,配置用于将待加载硬盘的未占用nvram/nvdimm分区设定为osdjournal数据分区。
可选地,作为本发明一个实施例,所述数据清理单元包括:
分区检测模块,配置用于检测所述待退出硬盘是否存在nvram/nvdimm分区;
数据删除模块,配置用于若存在,则删除所述nvram/nvdimm分区上的osdjournal数据;
提示返回模块,配置用于若不存在,则返回nvram/nvdimm分区不存在提示。
可选地,作为本发明一个实施例,所述服务清除单元包括:
进程停止模块,配置用于停止所述待退出硬盘的osd服务进程;
osd移除模块,配置用于将待退出硬盘的osd和osdkey从文件系统移除;
文件清除模块,配置用于清除所述待退出硬盘的所有osd服务相关文件。
可选地,作为本发明一个实施例,所述分区设定单元包括:
目录切换模块,配置用于在所述待加载硬盘的部署节点上将工作目录切换至osdkey文件目录;
磁盘格式化模块,配置用于格式化所述待加载硬盘对应的磁盘;
服务重建模块,配置用于在所述待加载硬盘上初始化osd服务并重建osdcrushmap;
自身分区模块,配置用于若所述待加载硬盘不存在nvram/nvdimm,则将osdjournal数据分区指向所述待加载硬盘上自身的第二个分区。
图6为本发明实施例提供的一种终端系统600的结构示意图,该终端系统600可以用于执行本发明实施例提供的分布式文件系统的硬盘更换方法。
其中,该终端系统600可以包括:处理器610、存储器620及通信单元630。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,该存储器620可以用于存储处理器610的执行指令,存储器620可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器620中的执行指令由处理器610执行时,使得终端600能够执行以下上述方法实施例中的部分或全部步骤。
处理器610为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integratedcircuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器610可以仅包括中央处理器(centralprocessingunit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。
通信单元630,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。
因此,本发明通过在获取待退出硬盘(坏盘)信息后,根据硬盘信息清理待退出硬盘nvram/nvdimm分区上的osdjournal数据并调用systemd守护进程清除相应的osd服务数据。同时校验待加载硬盘(新硬盘)信息,通过将待加载硬盘的未占用nvram/nvdimm分区设定为osdjournal数据分区实现待加载硬盘的osd服务重建。本发明能够可以简化分布式文件系统的hdd盘换盘流程,相对简单、易用,在一定程度上完善了集群扩缩盘功能,并提供了服务化、可管理化流程和操作步骤,丰富并完善了文件存储集群单盘操作的统一化管理,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。