一种硬盘挂载方法及装置与流程

文档序号:15462246发布日期:2018-09-18 18:26阅读:266来源:国知局

本发明涉及计算机技术领域,更具体地说,涉及一种硬盘挂载方法、装置、设备及计算机可读存储介质。



背景技术:

在linux操作系统中,挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上,然后通过访问这个目录来访问该存储设备。

目前,在分布式存储系统中,当硬盘拔除后需要重新插接时,可能由于前一个硬盘的OSD进程未释放挂载目录,而导致重新插接的硬盘挂载失败;而当前一个硬盘正在释放挂载目录时,重新插接的硬盘会由于找不到相应的挂载目录而导致挂载失败。

因此,当拔除存储系统中的硬盘后,如何为硬盘的再次插接提供良好的准备条件,保证硬盘的成功挂载,提高存储系统的稳定性和健壮性,是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种硬盘挂载方法、装置、设备及计算机可读存储介质,以实现当拔除存储系统中的硬盘后,为硬盘的再次插接提供良好的准备条件,保证硬盘的成功挂载,提高存储系统的稳定性和健壮性。

为实现上述目的,本发明实施例提供了如下技术方案:

一种硬盘挂载方法,包括:

检测目标存储系统中是否存在挂载目标硬盘的目标目录;

若是,则获取所述目标目录中的第一设备号和所述目标目录的父目录中的第二设备号,当所述第一设备号和所述第二设备号相同时,将所述目标硬盘挂载至所述目标目录。

其中,当所述目标存储系统中不存在挂载所述目标硬盘的目标目录时,还包括:

创建所述目标目录,并执行所述将所述目标硬盘挂载至所述目标目录的步骤。

其中,所述将所述目标硬盘挂载至所述目标目录,包括:

判断所述目标硬盘对应的UUID是否存在;

若是,则记录所述目标硬盘对应的UUID,并执行所述将所述目标硬盘挂载至所述目标目录的步骤。

其中,所述将所述目标硬盘挂载至所述目标目录,包括:

通过预设的磁盘服务将所述目标硬盘挂载至临时目录,并获取所述目标硬盘对应的OSD的ID;

将所述目标硬盘挂载至所述目标目录,并从所述临时目录强制卸载。

其中,所述将所述目标硬盘挂载至所述目标目录之后,还包括:

检测所述目标硬盘是否挂载成功;

若是,则检测所述目标目录中的目标文件是否存在,当所述目标文件存在时,启动所述目标硬盘对应的OSD进程。

其中,所述启动所述目标硬盘对应的OSD进程,包括:

根据用户输入的启动所述OSD进程的指令启动所述OSD进程,并取消等待所述OSD进程执行完成的延时。

其中,所述启动所述目标硬盘对应的OSD进程之后,还包括:

当采用异常退出机制结束所述OSD进程,并重新挂载硬盘之前,将所述OSD进程重启的次数置零。一种硬盘挂载装置,包括:

检测模块,用于检测目标存储系统中是否存在挂载目标硬盘的目标目录;

执行模块,用于当目标存储系统中存在挂载目标硬盘的目标目录时,获取所述目标目录中的第一设备号和所述目标目录的父目录中的第二设备号,当所述第一设备号和所述第二设备号相同时,将所述目标硬盘挂载至所述目标目录。

一种硬盘挂载设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述任意一项所述的硬盘挂载方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的硬盘挂载方法的步骤。

通过以上方案可知,本发明实施例提供的一种硬盘挂载方法,包括:检测目标存储系统中是否存在挂载目标硬盘的目标目录;若是,则获取所述目标目录中的第一设备号和所述目标目录的父目录中的第二设备号,当所述第一设备号和所述第二设备号相同时,将所述目标硬盘挂载至所述目标目录。

可见,所述方法通过检测存储系统中是否存在挂载硬盘的目录,当存储系统中存在该目录时,则获取所述目录中的第一设备号和所述目录的父目录中的第二设备号,若第一设备号和第二设备号相同,则表明目录已被释放,将所述硬盘直接挂载至所述目录即可;若第一设备号和第二设备号不相同,则表明目录未被释放,待目录被释放后再挂载所述硬盘。由此能够保证硬盘的成功挂载,也为硬盘的重复插接挂载提供了良好的准备条件;同时,也提高了存储系统的稳定性和健壮性。

相应地,本发明实施例提供的一种硬盘挂载装置、设备及计算机可读存储介质,也同样具有上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种硬盘挂载方法流程图;

图2为本发明实施例公开的另一种硬盘挂载方法流程图;

图3为本发明实施例公开的一种硬盘挂载装置示意图;

图4为本发明实施例公开的一种硬盘挂载设备示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种硬盘挂载方法、装置、设备及计算机可读存储介质,以实现当拔除存储系统中的硬盘后,为硬盘的再次插接提供良好的准备条件,保证硬盘的成功挂载,提高存储系统的稳定性和健壮性。

参见图1,本发明实施例提供的一种硬盘挂载方法,包括:

S101、检测目标存储系统中是否存在挂载目标硬盘的目标目录;若是,则执行S102;若否,则执行S103;

具体的,在挂载硬盘时,经常遇到挂载失败的情况,本实施例针对两种失败原因提出了优化的处理方法。其一,当硬盘拔除后需要重新插接时,可能由于前一个硬盘的OSD进程未释放挂载目录,而导致重新插接的硬盘挂载失败;其二,当前一个硬盘正在释放挂载目录时,重新插接的硬盘会由于找不到相应的挂载目录而导致挂载失败。

S102、获取所述目标目录中的第一设备号和所述目标目录的父目录中的第二设备号,并执行S104;

在本实施例中,针对第一种情况,通过获取目标目录中的第一设备号和目标目录的父目录中的第二设备号,若第一设备号和第二设备号相同,则表明目标目录已被释放,则直接挂载硬盘即可;若第一设备号和第二设备号不相同,则表明目标目录未被释放,则需等待目标目录释放后再挂载硬盘。

S103、创建所述目标目录,并执行S105;

在本实施例中,针对第二种情况,通过创建目标目录来挂载目标硬盘,不再等待目标目录的释放。

S104、检测所述第一设备号和所述第二设备号是否相同;若是,则执行S105;若否,则执行S106;

S105、将所述目标硬盘挂载至所述目标目录;

S106、判断当前检测次数是否大于预设的第一阈值;若是,退出流程;若否,则执行S102。

在本实施例中,可以通过检测目标目录和其父目录中的设备号来检测目标目录是否已被前一个OSD进程释放;同时,为了给前一个OSD进程预留充足的结束时间,可以预设特定的检测设备号的次数,当检测次数不小于预设的第一阈值时,则再次获取二者的设备号并进行检测,直至检测次数大于预设的第一阈值时,便退出流程。其中,可以按照预设的时间间隔进行重复检测。

需要说明的是,由于OSD进程的结束需要一定的时间周期,而在如今千变万化的数据时代,每一毫秒都将产生巨大的价值。因此,为存储系统中的硬盘重复插接提供优良的先决条件是不可或缺的。同时,硬盘挂载失败的原因多种多样,本实施例针对以上两种情况提供了简单方便且可实施的技术方案,能够提高硬盘挂载的成功率。

可见,本实施例提供的一种硬盘挂载方法,所述方法通过检测存储系统中是否存在挂载硬盘的目录,当存储系统中存在该目录时,则获取所述目录中的第一设备号和所述目录的父目录中的第二设备号,若第一设备号和第二设备号相同,则表明该目录已被释放,将所述硬盘直接挂载至所述目录即可;若第一设备号和第二设备号不相同,则表明该目录未被释放,待该目录被释放后再挂载所述硬盘。由此能够保证硬盘的成功挂载,也为硬盘的重复插接挂载提供良好的准备条件;同时,也提高了存储系统的稳定性和健壮性。

本发明实施例公开了另一种硬盘挂载方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。

参见图2,本发明实施例提供的另一种硬盘挂载方法,包括:

S201、检测目标存储系统中是否存在挂载目标硬盘的目标目录;若是,则执行S202;若否,则执行S203;

S202、获取所述目标目录中的第一设备号和所述目标目录的父目录中的第二设备号,并执行S204;

S203、创建所述目标目录,并执行S205;

S204、检测所述第一设备号和所述第二设备号是否相同;若是,则执行S205;若否,则执行S206;

需要说明的是,当目标硬盘挂载完成时,需要检测硬盘是否已成功挂载,当检测到硬盘成功挂载时,便进行后续流程;当检测到硬盘未成功挂载时,则重新挂载目标硬盘,并再次检测是否挂载成功;如此循环,直至超出预设的检测次数时,退出流程。

当硬盘挂载成功后,检测目标目录中的目标文件是否存在,所述目标文件内存储了目标硬盘对应的OSD的ID等信息。其中,OSD的ID为创建OSD时固定存在的,是人为可控的,这与OSD进程的ID不同,OSD进程的ID是操作系统随机分配的,是人为不可控的。其中,所述目标文件为硬盘挂载成功后的相关配置文件,例如:whoami文件等;若所述目标目录中的目标文件存在,则表明可以启动相应的OSD进程;若重复检测目标文件后,所述目标目录中的目标文件仍不存在且已超过了预设的判断次数,便退出流程。

S205、将所述目标硬盘挂载至所述目标目录,并执行S207;

S206、判断当前检测次数是否大于预设的第一阈值;若是,退出流程;若否,则执行S202。

S207、检测所述目标硬盘是否挂载成功;若是,则执行S208;若否,则执行S205;

S208、检测目标目录中的目标文件是否存在;若是,则执行S210;若否,则执行S211;

S209、判断当前检测次数是否大于预设的第二阈值;若是,则退出流程;若否,则执行S205;

S210、启动所述目标硬盘对应的OSD进程;

S211、判断当前检测次数是否大于预设的第三阈值;若是,退出流程;若否,则执行S208。

在本实施例中,为了给目标硬盘的挂载预留足够的挂载时间,可以重复执行检测设备号、检测硬盘是否挂载成功和检测是否存在目标文件的执行步骤,分别为每个检测步骤设置相应的检测阈值,当检测次数超过预设的阈值时,退出流程;当检测次数未超过预设的阈值时,则重复检测。

需要说明的是,在执行本实施例提供的任意重复检测步骤时,可以预设相应的间隔时间。例如:在检测设备号时,若检测目标目录和其父目录的设备号不相同,则间隔预设的时间后,再次获取目标目录和其父目录的设备号,再次判断二者是否相同。其中,技术人员可以根据实际需求预设不同的时间间隔。相应地,对于检测硬盘是否挂载成功和检测是否存在目标文件的重复检测,也可以预设符合实际需求的时间间隔,本实施例对此不再赘述。

需要说明的是,所述启动所述目标硬盘对应的OSD进程,包括:根据用户输入的启动所述OSD进程的指令启动所述OSD进程,并取消等待所述OSD进程执行完成的延时。

具体的,由于OSD进程的启动比较耗时,当多个硬盘同时挂载时,会共用同一个锁进行解锁启动,且为串行操作;由于时间限制,会导致一部分硬盘在等待解锁时超时,无法正常挂载也无法正常启动OSD进程。因此,为了减少OSD进程启动时的时间消耗,当用户输入启动OSD进程的指令时,立即启动对应的OSD进程,并取消等待该OSD进程执行完成的延时。

例如:当多个硬盘同时插接在存储系统中时,假设这些硬盘均已成功挂载,那么用户将输入启动指令启动这些硬盘分别对应的OSD进程,此时,当第一个OSD进程启动后,存储系统前端不再等待该进程执行完成的返回消息,立即启动第二个OSD进程,其他以此类推。将这些OSD进程均启动后,使其运行在存储系统后端。由此节约了OSD进程启动的时间。若存在启动失败的OSD进程,技术人员可以查看相应的硬盘和目录文件,以发现启动失败的原因,及时处理。

可见,本实施例提供的另一种硬盘挂载方法,所述方法通过检测存储系统中是否存在挂载硬盘的目录,当存储系统中存在该目录时,则获取所述目录中的第一设备号和所述目录的父目录中的第二设备号,若第一设备号和第二设备号相同,则表明该目录已被释放,将所述硬盘直接挂载至所述目录即可;若第一设备号和第二设备号不相同,则表明该目录未被释放,待该目录被释放后再挂载所述硬盘。由此能够保证硬盘的成功挂载,也为硬盘的重复插接挂载提供良好的准备条件。

同时,本实施例还提供了判断是否能够启动目标硬盘对应的OSD进程的方法,通过判断目录中的特定文件是否存在来判别硬盘对应的OSD进程是否能够正常启动;当目录中的特定文件存在时,则表明该目标硬盘对应的OSD进程可以启动;当所述目录中的特定文件不存在时,则重复执行所述判断所述目标目录中是否存在目标文件的步骤,直至超过预设的判断次数或检测到目标文件的存在。由此可以及时进行硬盘对应的OSD进程的启动;当检测不到相应的目标文件时,技术人员可以检测相应的配置文件和接口,以便提高存储系统的稳定性和健壮性。

基于上述任意实施例,需要说明的是,所述将所述目标硬盘挂载至所述目标目录,包括:

判断所述目标硬盘对应的UUID是否存在;

若是,则记录所述目标硬盘对应的UUID,并执行所述将所述目标硬盘挂载至所述目标目录的步骤。

具体的,UUID(Universally Unique Identifier)是通用唯一识别码,UUID的目的,是让分布式存储系统中的所有元素,都能有唯一的辨识信息,而不需要透过中央控制端来做辨识信息的指定。如此一来,每个人都可以建立不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。因此,存储系统内不允许存在相同的UUID。

但是,在硬盘挂载时,当硬盘拔除后需要重新插接时,可能由于该硬盘对应的UUID没有从内核中清理出去,将该硬盘重新插接时,存储系统会因UUID重复而报错,进而导致硬盘挂载失败。因此,为了避免由于该原因而导致硬盘挂载失败,在硬盘挂载过程中,当检测到UUID重复存在时,则记录硬盘对应的UUID,并将继续执行硬盘的挂载步骤。当然,在实际实施过程中,可以直接进行硬盘的挂载,而无需检测是否存在相同的UUID。

基于上述任意实施例,需要说明的是,所述将所述目标硬盘挂载至所述目标目录,包括:

通过预设的磁盘服务将所述目标硬盘挂载至临时目录,并获取所述目标硬盘对应的OSD的ID;

将所述目标硬盘挂载至所述目标目录,并将所述目标硬盘从所述临时目录强制卸载。

具体的,硬盘挂载的具体过程为:当存储系统检测到有硬盘插接时,触发udev规则,并通过ceph-disk服务先将硬盘挂载到临时目录,获得OSD的ID等信息后,再挂载到目标目录,最后从临时目录强制卸载,进而通过调用ceph-osd服务启动OSD进程。

基于上述任意实施例,需要说明的是,所述启动所述目标硬盘对应的OSD进程之后,还包括:

当采用异常退出机制结束所述OSD进程,并重新挂载硬盘之前,将所述OSD进程重启的次数置零。

具体的,若通过异常退出机制结束目标硬盘对应的OSD进程,则该OSD进程会立即上报故障消息至存储系统,以使存储系统立即知晓具体硬盘、具体进程的运行状态,有利于存储系统信息的及时更新。

但是,通过异常退出机制结束OSD进程后,由于存储系统设置有OSD进程异常退出自动重启的保护机制,当重启的次数超过存储系统的设置时,便无法重启该接口下的OSD进程。因此,当通过异常退出机制结束目标硬盘对应的OSD进程,拔除目标硬盘后,该OSD进程会尝试重启,而由于上述重启保护机制的存在,很可能造成重新插接的目标硬盘或其他硬盘无法实现挂载。

因此,当通过异常退出机制结束所述OSD进程之后,在重新插接硬盘,启动硬盘对应的OSD进程之前,首先将所述OSD进程重启的次数置零,以避免由于存储系统预设的重启保护机制而导致的硬盘挂载失败。

基于上述任意实施例,需要说明的是,还可以通过assert直接core掉OSD的进程的方式结束OSD进程,采用此种方式时,由于只有当其他OSD进程检查到该OSD进程异常时,才上报故障消息,如此需要一定的检测上报周期使得存储系统处理缓慢。而通过异常退出机制结束OSD进程,会立即上报故障消息,有利于存储系统信息的及时更新。

基于上述任意实施例,需要说明的是,本说明书提供的硬盘挂载方法具有广泛的通用性,适用于任何分布式存储系统,能够显著提高硬盘挂载的效率和成功率,提高了存储系统的稳定性和健壮性。

下面对本发明实施例提供的一种硬盘挂载装置进行介绍,下文描述的一种硬盘挂载装置与上文描述的一种硬盘挂载方法可以相互参照。

参见图3,本发明实施例提供的一种硬盘挂载装置,其特征在于,包括:

检测模块301,用于检测目标存储系统中是否存在挂载目标硬盘的目标目录;

执行模块302,用于当目标存储系统中存在挂载目标硬盘的目标目录时,获取所述目标目录中的第一设备号和所述目标目录的父目录中的第二设备号,当所述第一设备号和所述第二设备号相同时,将所述目标硬盘挂载至所述目标目录。

其中,还包括:

创建模块,用于当所述目标存储系统中不存在挂载所述目标硬盘的目标目录时,创建所述目标目录,并将所述目标硬盘挂载至所述目标目录。

其中,所述执行模块包括:

判断单元,用于判断所述目标硬盘对应的UUID是否存在;

记录单元,用于记录所述目标硬盘对应的UUID,并将所述目标硬盘挂载至所述目标目录。

其中,所述执行模块包括:

临时挂载单元,用于通过预设的磁盘服务将所述目标硬盘挂载至临时目录,并获取所述目标硬盘对应的OSD的ID;

挂载单元,用于将所述目标硬盘挂载至所述目标目录,并将所述目标硬盘从所述临时目录强制卸载。

其中,还包括:

校验模块,用于检测所述目标硬盘是否挂载成功;

启动模块,用于当所述目标硬盘挂载成功时,检测所述目标目录中的目标文件是否存在,当所述目标文件存在时,启动所述目标硬盘对应的OSD进程。

其中,所述启动模块具体用于:

根据用户输入的启动所述OSD进程的指令启动所述OSD进程,并取消等待所述OSD进程执行完成的延时。

其中,还包括:

置零模块,用于当采用异常退出机制结束所述OSD进程,并重新挂载硬盘之前,将所述OSD进程重启的次数置零。

下面对本发明实施例提供的一种硬盘挂载设备进行介绍,下文描述的一种硬盘挂载方法设备与上文描述的一种硬盘挂载方法及装置可以相互参照。

参见图4,本发明实施例提供的一种硬盘挂载设备,包括:

存储器401,用于存储计算机程序;

处理器402,用于执行所述计算机程序时实现上述任意实施例所述的硬盘挂载方法的步骤。

下面对本发明实施例提供的一种计算机可读存储介质进行介绍,下文描述的一种计算机可读存储介质与上文描述的一种硬盘挂载方法、装置及设备可以相互参照。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意实施例所述的硬盘挂载方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1