一种挂载点管理方法、装置及存储节点与流程

文档序号:17129905发布日期:2019-03-16 01:03阅读:249来源:国知局
一种挂载点管理方法、装置及存储节点与流程

本发明涉及计算机技术,更具体地,涉及一种挂载点管理方法、装置及存储节点。



背景技术:

在存储系统如分布式存储系统的实现中,通常会在每台存储节点上挂载多块大容量的数据存储磁盘(以下称“数据盘”),每个数据盘挂载到一个单独的目录上,该目录称之为磁盘挂载点(简称为挂载点)。存储节点负责管理这些数据盘的信息,其中包括所存储的数据与数据所在数据盘的对应关系。但是某些软件bug和人为操作失误的情况下,会出现挂载点的丢失(即数据盘没有被挂载上来)、挂载点的改变、两块挂载点互换、数据盘被格式化清空等异常情况。存储节点需要识别和发现这些错误,否则会产生更严重的数据错误。

在相关技术中,存储节点对挂载点异常的检测是基于数据盘硬件的序列号信息,通过数据和磁盘序列号的对应关系来判断挂载点是否异常,这种方法不够简单和可靠,还需要依靠操作系统提供的接口来获取硬件信息,对操作系统、硬件厂商都有依赖,不容易跨平台,如果是在虚拟化环境或者更换了操作系统之后,需要进行相应地修改才能应用。



技术实现要素:

有鉴于此,本发明实施例提供了一种挂载点管理方法,包括:

为存储节点上挂载的数据盘生成盘标识,将所述数据盘的盘标识保存在所述数据盘各自所在的挂载点,并在该存储节点的系统盘上记录所述挂载点各自保存的盘标识;

对所述挂载点中的一个挂载点进行异常检测时,到该挂载点读取盘标识,如到该挂载点读取到的盘标识与所述系统盘上记录的该挂载点保存的盘标识不同,确定该挂载点异常。

有鉴于此,本发明实施例还提供了一种检测挂载点异常的装置,包括:

标识生成模块,用于为存储节点上挂载的数据盘生成盘标识;

标识管理模块,用于将所述数据盘的盘标识保存在所述数据盘各自所在的挂载点,并在该存储节点的系统盘上记录所述挂载点各自保存的盘标识;

异常检测模块,用于对所述挂载点中的一个挂载点进行异常检测时,到该挂载点读取盘标识,如到该挂载点读取到的盘标识与所述系统盘上记录的该挂载点保存的盘标识不同,确定该挂载点异常。

有鉴于此,本发明实施例还提供了一种存储节点,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例所述的挂载点管理方法。

有鉴于此,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例所述的挂载点管理方法。

本发明实施例可以简单、可靠地检测挂载点的各种异常。

附图说明

图1是本发明实施例一检测挂载点异常的方法的流程图;

图2是本发明实施例二检测挂载点异常的装置的模块图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

实施例一

本实施例涉及分布式存储系统,分布式存储系统采用可扩展的系统结构,利用多个存储节点(如存储服务器)分担存储负荷,存储节点上除了挂载有数据盘外,还包括系统盘,用来安装、运行操作系统。通常数据盘是可更换的,而系统盘是无法更换的,更换操作系统盘意味着更换了整个节点。存储节点本身的软件也安装并运行在系统盘上,因此系统盘相对数据盘是更为可靠的。

本实施例设计一种管理机制来检测挂载点异常,如图1所示,本实施例方法包括:

步骤110,为存储节点上挂载的数据盘生成盘标识,将所述数据盘的盘标识保存在所述数据盘各自所在的挂载点,并在该存储节点的系统盘上记录所述挂载点各自保存的盘标识;

本实施例中,该存储节点可以在初次启动时,为该存储节点上挂载的数据盘生成盘标识,存储节点上挂载的数据盘可以有一个或多个。而在存储节点启动后的运行过程中,运维人员也可以使用管理命令对该存储节点的挂载点进行增加、修改和删除等操作,新增挂载点时,存储节点也可以为新挂载的数据盘生成盘标识。本实施例中,盘标识利用软件执行规定的算法而生成,对于本申请来说,盘标识是区别存储节点下的数据盘的标识,因此算法只要能保证为同一存储节点下不同的数据盘生成不同的盘标识即可。

本实施例中,该生成的盘标识采用独立于编程语言的数据格式如json(javascriptobjectnotation:js对象标记)格式表示,json是一种轻量级的数据交换格式。采用完全独立于语言的文本格式。在其他实施例中,盘标识可以采用任何约定的格式,不限于json格式。

本实施例中,存储节点将所述数据盘的盘标识保存在所述数据盘各自所在的挂载点,可以是以文件形式保存。而所述挂载点各自保存的盘标识也可以用一个统一的文件保存在系统盘的指定目录下。

步骤120,对所述挂载点中的一个挂载点进行异常检测时,到该挂载点读取盘标识,如到该挂载点读取到的盘标识与所述系统盘上记录的该挂载点保存的盘标识不同,确定该挂载点异常。

本实施例中,该存储节点中有多个挂载点时,对每一个挂载点的异常检测均如步骤120所述。对挂载点的异常检测可以在存储节点运行期间周期性地进行,也可以由运维人员触发,本申请对此不做局限。步骤120的处理可以通过存储节点进程来执行,作为存储节点进程的一部分。

本实施例中,如到该挂载点读取到的盘标识与系统盘上记录的该挂载点保存的盘标识不同,说明该挂载点挂载的数据盘不是之前的数据盘,可以确定该挂载点异常。还有一种情况是,存储节点读取不到该挂载点保存的盘标识,这可能是因为挂载点丢失、数据盘被格式化清空等原因导致的,此时也可以确定该挂载点异常。

本实施例中,如果存储节点运行时,运维人员使用管理命令对该存储节点的一个挂载点进行了删除操作,则该存储节点也相应删除系统盘上记录的该挂载点保存的盘标识。如果对该挂载点进行的是修改操作,可以将其视为删除和增加两个操作来进行相应的处理。

本实施例还提供了一种挂载点管理装置,如图2所示,包括:

标识生成模块10,用于为存储节点上挂载的数据盘生成盘标识;

标识管理模块20,用于将所述数据盘的盘标识保存在所述数据盘各自所在的挂载点,并在该存储节点的系统盘上记录所述挂载点各自保存的盘标识;

异常检测模块30,用于对所述挂载点中的一个挂载点进行异常检测时,到该挂载点读取盘标识,如到该挂载点读取到的盘标识与所述系统盘上记录的该挂载点保存的盘标识不同,确定该挂载点异常。

本实施例中,所述异常检测模块还用于对所述挂载点中的一个挂载点进行异常检测时,如到该挂载点读取不到盘标识,则确定该挂载点异常。

本实施例中,所述标识生成模块生成的盘标识采用独立于编程语言的数据格式表示。

本实施例中,所述标识生成模块为存储节点上挂载的数据盘生成盘标识,包括:在该存储节点初次启动时,利用软件为该存储节点上挂载的数据盘生成盘标识;和/或,在该存储节点运行时,利用软件为该存储节点上新挂载的数据盘生成盘标识。

本实施例中,所述标识管理模块还用于在一个挂载点被删除后,删除所述系统盘上记录的该挂载点保存的盘标识。

本实施例还提供了一种存储节点,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

为存储节点上挂载的数据盘生成盘标识,将所述数据盘的盘标识保存在所述数据盘各自所在的挂载点,并在该存储节点的系统盘上记录所述挂载点各自保存的盘标识;

对所述挂载点中的一个挂载点进行异常检测时,到该挂载点读取盘标识,如到该挂载点读取到的盘标识与所述系统盘上记录的该挂载点保存的盘标识不同,确定该挂载点异常。

本实施例中,所述为存储节点上挂载的数据盘生成盘标识,包括:该存储节点在初次启动时,利用软件为该存储节点上挂载的数据盘生成盘标识;和/或,该存储节点在运行时,利用软件为该存储节点新挂载的数据盘生成盘标识。

本实施例中,所述处理器执行所述计算机程序时还实现以下步骤:对所述挂载点中的一个挂载点进行异常检测时,如到该挂载点读取不到盘标识,则确定该挂载点异常。

本实施例中,所述处理器执行所述计算机程序时可以实现本实施例方法的任何处理,这里不再一一赘述。

本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

为存储节点上挂载的数据盘生成盘标识,将所述数据盘的盘标识保存在所述数据盘各自所在的挂载点,并在该存储节点的系统盘上记录所述挂载点各自保存的盘标识;

对所述挂载点中的一个挂载点进行异常检测时,到该挂载点读取盘标识,如到该挂载点读取到的盘标识与所述系统盘上记录的该挂载点保存的盘标识不同,确定该挂载点异常。

本实施例中,所述为存储节点上挂载的数据盘生成盘标识,包括:该存储节点在初次启动时,利用软件为该存储节点上挂载的数据盘生成盘标识;和/或,该存储节点在运行时,利用软件为该存储节点新挂载的数据盘生成盘标识。

本实施例中,所述计算机程序被处理器执行时还实现以下步骤:对所述挂载点中的一个挂载点进行异常检测时,如到该挂载点读取不到盘标识,则确定该挂载点异常。

所述计算机程序被处理器执行时可以实现本实施例方法中的任何处理,这里不再一一赘述。

本实施例涉及的是分布式存储系统的一个存储节点对挂载点异常的检测,但本申请并不局限于分布式存储系统,只要是包括存储节点且存储节点上挂载有数据盘的任何系统均可以使用本发明上述实施例描述的方法、装置和存储节点、存储介质。

本发明实施例的上述方案可以简单、可靠地检测挂载点异常,且由于采用软件生成盘标识,所以不依赖于操作系统提供的接口和磁盘硬件特性,容易跨平台实现。

实施例二

本实施例提供一个具体的示例,对实施例一中的方法进行说明。

本实施例的存储节点在初次启动的时候,通过软件计算的方式,对挂载的每块数据盘进行处理。

本实施例对挂载的每块数据盘的处理包括:

步骤一,利用软件为该数据盘生成盘标识如通用唯一识别码(universallyuniqueidentifier,uuid)。uuid是在同一存储节点没有重复的一个id串,在一个示例中,将32位整数的存储服务器的ip地址,16位整数的进程号,16位整数的线程号,再结合进程内计数器、时间戳和随机数,合并成一个128位整数,将该128位整数作为一个数据盘的盘标识。

生成盘标识的方法有很多,其位数和包含的信息都可以变化。例如,也可以将存储节点标识信息加上序列号作为盘标识,本申请不局限于任何特定的生成盘标识的算法。

步骤二,将该数据盘的uuid串保存在该数据盘所在的挂载点,如将uuid写入该挂载点根目录或其他指定目录下的约定好的第一文件中,该第一文件保存在该数据盘上。同时,在系统盘上,把该挂载点和该数据盘的uuid绑定,写入指定路径下的约定好的第二文件中。对于系统盘来说,会记录该存储节点所有挂载点保存的uuid。

在一个示例中,挂载点"disk1"的根目录写入的保存该数据盘uuid的第一文件名为diskuuidinfo,内容采用json格式,如下:

上述生成的uuid是128位的,表达成两个64位整数的形式,uuidhigh表示高位,uuidlow表示低位。

在一个示例中,在系统盘指定路径写入的记录有所有挂载点保存的uuid的第二文件名为diskmanifestinfo,格式采用json格式,如下:

其中的"disk1"、"disk2",……,"disk9"表示该存储节点的9个挂载点,标识为"disk1"的挂载点保存的盘标识是74175180778632927103,依此类推。

步骤三,完成以上初始化工作之后,存储节点周期性地到各个挂载点读取第一文件中的uuid,具体可以通过存储节点进程内启动的一个后台扫描线程来实现,这里以挂载点"disk1"为例。如果到挂载点"disk1"读取不到第一文件中的uuid(如因该挂载点丢失、该数据盘被清空、文件损坏等),则确定挂载点"disk1"出现异常。如果读取到的uuid与系统盘上第二文件中记录的挂载点"disk1"保存的uuid不一致,也确定挂载点"disk1"出现异常。因而本实施例可以检测出的挂载点异常覆盖了数据盘被卸载、数据盘被更换、挂载点错误等各类挂载点异常的场景。确定挂载点"disk1"异常后,可以将其上挂载的数据盘的状态标记为错误,并启动后续的磁盘错误处理流程。

因为各操作系统平台对硬件信息的获取方式不同,本实施例利用软件生成uuid方式,文件内容为json格式,因此更容易实现跨平台移植。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

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