本申请涉及存储技术领域,特别涉及一种清理主机端残留路径的方法;还涉及一种清理主机端残留路径的装置、设备以及计算机可读存储介质。
背景技术:
存储系统与主机连接后,可以将卷映射到主机,以便给主机提供存储空间。主机端通过扫描可以发现卷对应的设备。如果存在多条链路,在每个卷对应多个设备。为了保证路径的高可用,一般主机上安装有多路径软件,多路径软件会将多个设备聚合成一条多路径。对聚合的多路径按照指定的文件系统类型格式化,然后将其挂接到指定目录后,用户就可以正常使用存储的卷。当用户不再使用存储的卷时,首先在主机上卸除指定目录,然后在主机上删除多路径与设备,最后在存储上解除映射。
通过正常的步骤解除映射不会造成多路径与设备残留,但是,如果用户操作不当,只在存储上解除映射,而没有在主机上删除多路径与设备,就会造成多路径和设备的残留。针对残留的多路径与设备,现有解决方案是手动删除多路径与设备,然而手动删除多路径与设备不仅增加了人工的工作量,而且存储一定的风险。因为手动删除的依据是设备状态为failed,即当设备状态为failed时删除多路径与设备,然而设备状态为failed也可能是暂时的链路异常(后续会自动恢复),而非存储上已解除映射。设备一旦删除,链路再难恢复,由此严重影响到用户业务。
有鉴于此,如何安全可靠的清理主机端的残留路径已成为本领域技术人员亟待解决的技术问题。
技术实现要素:
本申请的目的是提供一种清理主机端残留路径的方法,能够安全可靠的清理主机端的残留路径。本申请的另一个目的是提供一种清理主机端残留路径的装置、设备以及计算机可读存储介质,均具有上述技术效果。
为解决上述技术问题,本申请提供了一种清理主机端残留路径的方法,包括:
获取多路径的各下属设备的设备信息;
根据所述设备信息判断所述下属设备对应的链路是否都异常;
若所述下属设备对应的链路都异常,则获取所述下属设备的全球识别号与连接信息;
当所述全球识别号不为空且成功获取到所述连接信息时,根据所述全球识别号与所述连接信息查询所述全球识别号对应的卷的映射状态与映射的主机;
当所述卷不处于映射状态或映射的所述主机不是目标主机时,删除所述多路径与所述下属设备。
可选的,获取多路径的各下属设备的设备信息包括:
获取所述多路径的各所述下属设备的设备状态。
可选的,获取多路径的各下属设备的设备信息包括:
获取所述多路径的各所述下属设备的scsi协议标识。
可选的,所述根据所述设备信息判断所述下属设备对应的链路是否都异常包括:
判断所述下属设备的设备状态是否都异常;
若所述下属设备的设备状态都是异常,则所述下属设备对应的链路都异常;
若所述下属设备的设备状态不都是异常,则所述下属设备对应的所述链路不都异常。
可选的,所述根据所述设备信息判断所述下属设备对应的链路是否都异常包括:
判断所述下属设备的scsi协议标识是否都为空;
若所述下属设备的scsi协议标识都为空,则所述下属设备对应的链路都异常;
若所述下属设备的scsi协议标识不都为空,则所述下属设备对应的链路不都异常。
可选的,还包括:
当所述全球识别号为空或未能成功获取到所述连接信息时,结束清理主机端残留路径的流程。
可选的,所述获取多路径的各下属设备的设备信息前还包括:
获取所述下属设备的厂商信息;
根据所述厂商信息判断所述下属设备的供应商是否为目标供应商;
若是,则执行获取多路径的各下属设备的设备信息以及后续步骤;
若否,则结束清理主机端残留路径的流程。
为解决上述技术问题,本申请还提供了一种清理主机端残留路径的装置,包括:
第一获取模块,用于获取多路径的各下属设备的设备信息;
判断模块,用于根据所述设备信息判断所述下属设备对应的链路是否都异常;
第二获取模块,用于若所述下属设备对应的链路都异常,则获取所述下属设备的全球识别号与连接信息;
查询模块,用于当所述全球识别号不为空且成功获取到所述连接信息时,根据所述全球识别号与所述连接信息查询所述全球识别号对应的卷的映射状态与映射的主机;
删除模块,用于当所述卷不处于映射状态或映射的所述主机不是目标主机时,删除所述多路径与所述下属设备。
为解决上述技术问题,本申请还提供了一种清理主机端残留路径的设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述的清理主机端残留路径的方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的清理主机端残留路径的方法的步骤。
本申请所提供的清理主机端残留路径的方法,包括:获取多路径的各下属设备的设备信息;根据所述设备信息判断所述下属设备对应的链路是否都异常;若所述下属设备对应的链路都异常,则获取所述下属设备的全球识别号与连接信息;当所述全球识别号不为空且成功获取到所述连接信息时,根据所述全球识别号与所述连接信息查询所述全球识别号对应的卷的映射状态与映射的主机;当所述卷不处于映射状态或映射的所述主机不是目标主机时,删除所述多路径与所述下属设备。
可见,本申请所提供的清理主机端残留路径的方法,在判断出多路径的下属设备的链路异常时,进一步去存储系统上查询卷的映射状态与映射的主机,并在确定卷不处于映射状态,或者即使卷处于映射状态,但是所映射的主机不是目标主机时,才在目标主机上删除多路径与下属设备,由此可以避免暂时的链路故障导致的误删,保障删除多路径与下属设备的安全可靠。
本申请所提供的清理主机端残留路径的装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种清理主机端残留路径的方法的流程示意图;
图2为本申请实施例所提供的一种清理主机端残留路径的装置的示意图;
图3为本申请实施例所提供的一种清理主机端残留路径的设备的示意图。
具体实施方式
本申请的核心是提供一种清理主机端残留路径的方法,能够安全可靠的清理主机端的残留路径。本申请的另一个核心是提供一种清理主机端残留路径的装置、设备以及计算机可读存储介质,均具有上述技术效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种清理主机端残留路径的方法的流程示意图,参考图1所示,该方法包括:
s101:获取多路径的各下属设备的设备信息;
s102:根据所述设备信息判断所述下属设备对应的链路是否都异常;
具体的,在主机上获取多路径以及多路径的下属设备的设备信息。在获取到下属设备的设备信息后,根据所获取的设备信息判断下属设备对应的链路是否都异常。
其中,所获取的下属设备的设备信息是能够反映出下属设备的链路状态的信息。对于所获取的设备信息的具体内容,本申请不做唯一限定,能够反映出下属设备的链路状态即可。
在第一种具体的实施方式中,获取多路径的各下属设备的设备信息包括:获取所述多路径的各所述下属设备的设备状态。相应的,所述根据所述设备信息判断所述下属设备对应的链路是否都异常包括:判断所述下属设备的设备状态是否都异常;若所述下属设备的设备状态都是异常,则所述下属设备对应的链路都异常;若所述下属设备的设备状态不都是异常,则所述下属设备对应的所述链路不都异常。
具体而言,本实施例中所获取的下属设备的设备信息为下属设备的设备状态。如果各下属设备的设备状态都是failed,即都是异常,则表明各下属设备对应的链路均异常,此时进一步执行后续步骤s103、s104以及s105。如果各下属设备的设备状态不都是failed,即不都是异常,则表明各下属设备各自对应的链路不都异常,此时多路径仍可继续使用,不再执行后续步骤s103、s104以及s105,而直接结束清理主机端残留路径的流程。
例如,通过命令multipath-ll/dev/dm-*获取多路径/dev/dm-2,多路径/dev/dm-2包含两个下属设备/dev/sdb和/dev/sdc。若下属设备/dev/sdb的设备状态与下属设备/dev/sdc的设备状态均为failed,则下属设备/dev/sdb对应的链路与下属设备/dev/sdc对应的链路都异常;若下属设备/dev/sdb与下属设备/dev/sdc中的任意一个的设备状态不是failed,则下属设备/dev/sdb对应的链路与下属设备/dev/sdc对应的链路不都异常。
在第二种具体的实施方式中,获取多路径的各下属设备的设备信息包括:获取所述多路径的各所述下属设备的scsi(smallcomputersysteminterface,小型计算机系统接口)协议标识。相应的,所述根据所述设备信息判断所述下属设备对应的链路是否都异常包括:判断所述下属设备的scsi协议标识是否都为空;若所述下属设备的scsi协议标识都为空,则所述下属设备对应的链路都异常;若所述下属设备的scsi协议标识不都为空,则所述下属设备对应的链路不都异常。
具体而言,本实施例中所获取的下属设备的设备信息为下属设备的scsi协议标识即scsi_id。如果各下属设备的scsi协议标识都为空,则表明各下属设备对应的链路均异常,此时进一步执行后续步骤s103、s104以及s105。如果各下属设备的scsi协议标识不都为空,则表明各下属设备各自对应的链路不都异常,此时多路径仍可继续使用,不再执行后续步骤s103、s104以及s105,而直接结束清理主机端残留路径的流程。
例如,通过命令/lib/udev/scsi_id--whitelisted-page=0x83-device=/dev/sd*获取下属设备/dev/sd*的scsi协议标识。若下属设备/dev/sdb的scsi协议标识与下属设备/dev/sdc的scsi协议标识均为空,则下属设备/dev/sdb对应的链路与下属设备/dev/sdc对应的链路都异常;若下属设备/dev/sdb与下属设备/dev/sdc中的任意一个的scsi协议标识不为空,则下属设备/dev/sdb对应的链路与下属设备/dev/sdc对应的链路不都异常。
在第三种具体的实施方式中,获取多路径的各下属设备的设备信息包括:获取所述多路径的各所述下属设备的设备状态与scsi协议标识。相应的,所述根据所述设备信息判断所述下属设备对应的链路是否都异常包括:判断所述下属设备的设备状态是否都异常以及各下属设备的scsi协议标识是否都为空;若所述下属设备的设备状态都是异常且所述下属设备的scsi协议标识都为空,则所述下属设备对应的链路都异常。
具体而言,本实施例中所获取的下属设备的设备信息包括下属设备的设备状态与scsi协议标识。如果各下属设备的设备状态不都是failed,则所述下属设备对应的所述链路不都异常,此时直接结束后续流程。如果各下属设备的scsi协议标识不都为空,则所述下属设备对应的所述链路不都异常,此时同样直接结束后续流程。如果各下属设备的设备状态都是failed,且各下属设备的scsi协议标识均为空,则说明各下属设备对应的链路都异常。综合下属设备的设备状态与scsi协议标识,可以更加可靠的判断出各下属设备对应的链路的状态。
s103:若所述下属设备对应的链路都异常,则获取所述下属设备的全球识别号与连接信息;
s104:当所述全球识别号不为空且成功获取到所述连接信息时,根据所述全球识别号与所述连接信息查询所述全球识别号对应的卷的映射状态与映射的主机;
具体的,当判断出多路径的各下属设备对应的链路都异常时,进一步获取各下属设备的全球识别号即wwid与连接信息。例如,通过命令lsblk-oserial/dev/sd*获取下属设备/dev/sd*的全球识别号,通过查询目录/dev/disk/by_path/获取下属设备/dev/sd*对应的连接信息,即target、portal和scsi_id。
如果下属设备的全球识别号不为空,说明该设备是来自某存储系统的卷(至少曾经是),如果下属设备的全球识别号为空,则说明该设备不是来自某存储系统的卷。如果连接信息获取成功,说明可以获知该设备来自哪个存储系统,如果连接信息获取不成功,则说明无法获知该设备来自哪个存储系统。
因此,在所述全球识别号不为空且成功获取到所述连接信息的情况下,根据所述全球识别号与所述连接信息,到指定的存储系统查询所述全球识别号对应的卷的映射状态与映射的主机。而在所述全球识别号为空或未能成功获取到所述连接信息的情况下,直接结束清理主机端残留路径的流程。
s105:当所述卷不处于映射状态或映射的所述主机不是目标主机时,删除所述多路径与所述下属设备。
具体的,目标主机是指执行上述步骤,要清除残留路径的主机。如果下属设备的全球识别号对应的卷不处于映射状态,或者虽然下属设备的全球识别号对应的卷处于映射状态,但是所映射的主机不是目标主机,则说明链路异常是永久的,后续不可能自动恢复,此时可以通过命令multipath-f/dev/dm-*删除多路径,以及通过命令echo1>/sys/block/sd*/device/delete删除下属设备。如果下属设备的全球识别号对应的卷处于映射状态且所映射的主机是目标主机,则说明链路异常是暂时的,后续可能自动恢复,此时不删除多路径与下属设备。
进一步,在一种具体的实施方式中,获取多路径的各下属设备的设备信息前还包括:获取所述下属设备的厂商信息;根据所述厂商信息判断所述下属设备的供应商是否为目标供应商;若是,则执行获取多路径的各下属设备的设备信息以及后续步骤;若否,则结束清理主机端残留路径的流程。
具体而言,可通过命令lsblk-l-s-o+uuid/dev/sd*获取下属设备/dev/sd*的厂商信息。如果下属设备的供应商为目标供应商,则执行步骤s101及后续步骤。如果下属设备的供应商不是目标供应商,则不再执行步骤s101及后续步骤。
例如,目标供应商为浪潮,如果下属设备的供应商为浪潮,则执行步骤s101及后续步骤。如果下属设备的供应商不是浪潮,则不再执行步骤s101及后续步骤。
综上所述,本申请所提供的清理主机端残留路径的方法,在判断出多路径的下属设备的链路异常时,进一步去存储系统上查询卷的映射状态与映射的主机,并在确定卷不处于映射状态,或者即使卷处于映射状态,但是所映射的主机不是目标主机时,才在目标主机上删除多路径与下属设备,由此可以避免暂时的链路故障导致的误删,保障删除多路径与下属设备的安全可靠。
本申请还提供了一种清理主机端残留路径的装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图2,图2为本申请实施例所提供的一种清理主机端残留路径的装置示意图,结合图2所示,该装置包括:
第一获取模块10,用于获取多路径的各下属设备的设备信息;
判断模块20,用于根据所述设备信息判断所述下属设备对应的链路是否都异常;
第二获取模块30,用于若所述下属设备对应的链路都异常,则获取所述下属设备的全球识别号与连接信息;
查询模块40,用于当所述全球识别号不为空且成功获取到所述连接信息时,根据所述全球识别号与所述连接信息查询所述全球识别号对应的卷的映射状态与映射的主机;
删除模块50,用于当所述卷不处于映射状态或映射的所述主机不是目标主机时,删除所述多路径与所述下属设备。
在上述实施例的基础上,可选的,所述第一获取模块10具体用于:
获取所述多路径的各所述下属设备的设备状态。
在上述实施例的基础上,可选的,所述第一获取模块10具体用于:
获取所述多路径的各所述下属设备的scsi协议标识。
在上述实施例的基础上,可选的,所述判断模块20具体用于:
判断所述下属设备的设备状态是否都异常;
若所述下属设备的设备状态都是异常,则所述下属设备对应的链路都异常;
若所述下属设备的设备状态不都是异常,则所述下属设备对应的所述链路不都异常。
在上述实施例的基础上,可选的,所述判断模块20具体用于:
判断所述下属设备的scsi协议标识是否都为空;
若所述下属设备的scsi协议标识都为空,则所述下属设备对应的链路都异常;
若所述下属设备的scsi协议标识不都为空,则所述下属设备对应的链路不都异常。
在上述实施例的基础上,可选的,还包括:
结束模块,用于当所述全球识别号为空或未能成功获取到所述连接信息时,结束清理主机端残留路径的流程。
在上述实施例的基础上,可选的,还包括:
第三获取模块,用于获取所述下属设备的厂商信息;
供应商判断模块,用于根据所述厂商信息判断所述下属设备的供应商是否为目标供应商;若是,则执行获取多路径的各下属设备的设备信息以及后续步骤;若否,则结束清理主机端残留路径的流程。
本申请所提供的清理主机端残留路径的装置,在判断出多路径的下属设备的链路异常时,进一步去存储系统上查询卷的映射状态与映射的主机,并在确定卷不处于映射状态,或者即使卷处于映射状态,但是所映射的主机不是目标主机时,才在目标主机上删除多路径与下属设备,由此可以避免暂时的链路故障导致的误删,保障删除多路径与下属设备的安全可靠。
本申请还提供了一种清理主机端残留路径的设备,参考图3所示,该设备包括存储器1和处理器2。
存储器1,用于存储计算机程序;
处理器2,用于执行计算机程序实现如下的步骤:
获取多路径的各下属设备的设备信息;根据所述设备信息判断所述下属设备对应的链路是否都异常;若所述下属设备对应的链路都异常,则获取所述下属设备的全球识别号与连接信息;当所述全球识别号不为空且成功获取到所述连接信息时,根据所述全球识别号与所述连接信息查询所述全球识别号对应的卷的映射状态与映射的主机;当所述卷不处于映射状态或映射的所述主机不是目标主机时,删除所述多路径与所述下属设备。
对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
获取多路径的各下属设备的设备信息;根据所述设备信息判断所述下属设备对应的链路是否都异常;若所述下属设备对应的链路都异常,则获取所述下属设备的全球识别号与连接信息;当所述全球识别号不为空且成功获取到所述连接信息时,根据所述全球识别号与所述连接信息查询所述全球识别号对应的卷的映射状态与映射的主机;当所述卷不处于映射状态或映射的所述主机不是目标主机时,删除所述多路径与所述下属设备。
该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的清理主机端残留路径的方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。