CN109683820A - 一种基于Linux的存储设备树实现方法 - Google Patents

一种基于Linux的存储设备树实现方法 Download PDF

Info

Publication number
CN109683820A
CN109683820A CN201811551918.XA CN201811551918A CN109683820A CN 109683820 A CN109683820 A CN 109683820A CN 201811551918 A CN201811551918 A CN 201811551918A CN 109683820 A CN109683820 A CN 109683820A
Authority
CN
China
Prior art keywords
node
disk
brotgher
child
father
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.)
Granted
Application number
CN201811551918.XA
Other languages
English (en)
Other versions
CN109683820B (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.)
Shandong Chaoyue CNC Electronics Co Ltd
Original Assignee
Shandong Chaoyue CNC Electronics 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 Shandong Chaoyue CNC Electronics Co Ltd filed Critical Shandong Chaoyue CNC Electronics Co Ltd
Priority to CN201811551918.XA priority Critical patent/CN109683820B/zh
Publication of CN109683820A publication Critical patent/CN109683820A/zh
Application granted granted Critical
Publication of CN109683820B publication Critical patent/CN109683820B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于Linux的存储设备树实现方法,包括如下步骤:S1.获取设备信息;S2.根据获取的设备信息生成设备树的类封装;S3.处理设备树中父节点与子节点之间的关系;S4.处理设备树中兄弟节点之间的关系;S5.根据设备树,对设备树中节点进行管理。本发明利用内核的接口构建新的设备树,实现对设备节点的操作,整体上对设备进行管理,并且可以及时的反应设备的状态变化。

Description

一种基于Linux的存储设备树实现方法
技术领域
本发明属于Linux设备管理领域,具体涉及一种基于Linux的存储设备树实现方法。
背景技术
近年来,在Linux领域的存储设备管理越来越重要,包括很多存储管理方面,甚至虚拟化管理都离不开设备的管理,虽然当然,内核提供了设备树的功能,用户层也提供了相应的命令,但是在编程当中应用都不方便,给编程带来了麻烦,比如lsblk命令,这一个命令就存在不能及时反应设备状态的问题。针对当前的实际情况,急需基于linux内核提供信息的新的设备树。
此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种基于Linux的存储设备树实现方法,是非常有必要的。
发明内容
本发明的目的在于,针对上述内核提供的设备树的功能在编程当中应用不方便,针对当前的实际情况,急需基于linux内核提供信息的新的设备树的缺陷,提供一种基于Linux的存储设备树实现方法,以解决上述技术问题。
为实现上述目的,本发明给出以下技术方案:
一种基于Linux的存储设备树实现方法,包括如下步骤:
S1.获取设备信息;
S2.根据获取的设备信息生成设备树的类封装;
S3.处理设备树中父节点与子节点之间的关系;
S4.处理设备树中兄弟节点之间的关系;
S5.根据设备树,对设备树中节点进行管理。
进一步地,步骤S1中通过udevlib获取设备信息。
进一步地,步骤S2具体步骤如下:
S21.获取设备信息中的所有磁盘;
S22.获取每个磁盘的名称;
S23.获取磁盘的识别码UUID的映射;
S24.根据磁盘的设备码UUID判断磁盘的类型。
进一步地,所述磁盘名称包括磁盘的卷组名称的映射和磁盘逻辑卷名称的映射。
进一步地,步骤S24具体步骤如下:
S241.根据磁盘的识别码UUID获取磁盘的域;所述磁盘的域为一数组;
S242.判断磁盘域的数组中是否有逻辑卷;
S243.若是,判断磁盘域的数组长度是否为3;
若是,磁盘类型为逻辑卷;
若否,磁盘类型为逻辑卷组;
S244.若否,判断磁盘类型是否为磁盘映射;
若否,则磁盘类型为物理硬盘。
进一步地,步骤S3具体步骤如下:
S31.获取设备信息中的所有磁盘节点;
S32.定位一个磁盘节点,并设定为第一磁盘节点;
S33.判断第一磁盘节点类型是否为磁盘或分区;
S34.若是,根据路径获取以第一磁盘节点作为从属的父节点;
S35.根据路径获取父节点的名称;
S36.获取与父节点名称相同的磁盘节点,并设定为第二磁盘节点;
S37.添加第二磁盘节点为第一磁盘节点的父节点;
S38.添加第一磁盘节点为第二磁盘节点的子节点;
S39.定位下一个磁盘节点为第一磁盘节点;返回步骤S33。
进一步地,兄弟节点之间关系包括明显兄弟节点关系和不明显兄弟节点关系。
进一步地,当兄弟节点之间关系为明显兄弟节点关系时,
步骤S4具体步骤如下:
S41. 获取设备信息中的所有磁盘节点;
S42. 定位一个磁盘节点,设为第三磁盘节点;
S43. 判断是否第三磁盘节点类型为磁盘或分区;
S44.若是,根据路径获取以第三磁盘节点作为从属的所有父节点;
S45.根据路径获取所有父节点的名称列表;
S46.从父节点名称列表中获取一个父节点,定义为第一兄弟节点;
S47.从父节点名称列表中获取一个父节点,定义为第二兄弟节点;
S48.添加第一兄弟节点和第二兄弟节点互为兄弟节点;
S49.定位下一个磁盘节点为第三磁盘节点,返回步骤S43。
进一步地,当兄弟节点之间关系为不明显兄弟节点关系时,
步骤S4具体步骤如下:
S41a. 获取设备信息中的所有磁盘节点;
S42a.定位一个磁盘节点,设为第四磁盘节点;
S43a.判断第四磁盘节点是否没有子节点;
S44a.若否,定位一个磁盘节点,设为第五磁盘节点;
S45a.判断第五磁盘节点是否没有子节点;
S46a.若否,判断第四磁盘节点名称与第五磁盘节点名称是否相同;
S47a.若否,定位第四磁盘节点的所有子节点;
S48a.判断是否第四磁盘节点的子节点没有兄弟节点;
S49a.若否,则第四磁盘节点的所有子节点为同一个父节点的兄弟节点;
S410a.定位第五磁盘节点的所有子节点;
S411a. 判断是否第五磁盘节点的子节点没有兄弟节点;
S412a.若否,则第五磁盘节点的所有子节点为同一个父节点的兄弟节点;
S413a.第五磁盘节点的每个子节点与第四磁盘节点的每个子节点为不同父节点的兄弟节点;
S414a.定位下一个磁盘节点为第五磁盘节点,返回步骤S45a;
S415a.定位下一个磁盘节点为第四磁盘节点,返回步骤S43a。
进一步地,步骤S5具体包括
S51.获取设备树中的叶子节点;
S52.清除设备信息中的磁盘节点的内容;
S51.具体步骤如下:
S511.获取设备信息中的所有磁盘节点;
S512.定位一个磁盘节点为第六磁盘节点;
S513.判断第六磁盘节点是否没有子节点;
S514.若否,获取第六磁盘节点的所有子节点;
S515.获取每个子节点的叶子节点;
S516.定位下一个磁盘节点为第六磁盘节点,返回步骤S513;
S52.具体步骤如下:
S521.获取要清除内容的磁盘节点;
S522.获取设备信息中所有磁盘节点;
S523.定位一个磁盘节点为第七磁盘节点;
S524.判断第七磁盘节点是否与要清除内容的磁盘节点名称相同;
S525.若是,获取第七磁盘节点的所有叶子节点;
S526.定位一个叶子节点为第一叶子节点;
S527.通过挂载点卸载第一叶子节点;
S528.清除第一叶子节点的内容;
S529.删除第一叶子节点;
S5210.清除第一叶子节点的兄弟节点的内容;
S5211.定位下一个磁盘节点为第七磁盘节点,返回步骤S524。获取设备树中叶子节点,可以及时反映对应设备状态的变化;对设备树中节点进行管理不限于清除设备信息中的磁盘节点的内容,还包括初始化设备。
本发明的有益效果在于:
本发明利用内核的接口构建新的设备树,实现对设备节点的操作,整体上对设备进行管理,并且可以及时的反应设备的状态变化。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
图1为本发明的方法流程图;
图2为根据获取的设备信息生成设备树的类封装流程图;
图3为处理设备树中父节点与子节点之间的关系的流程图;
图4为兄弟节点之间关系为明显兄弟节点关系时处理设备树中兄弟节点之间的关系的流程图;
图5为兄弟节点之间关系为不明显兄弟节点关系时处理设备树中兄弟节点之间的关系的流程图;
图6为获取设备树中的叶子节点的流程图;
图7为清除设备信息中的磁盘节点的内容的流程图。
具体实施方式:
为使得本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明具体实施例中的附图,对本发明中的技术方案进行清楚、完整地描述。
实施例1:
如图1所示,本发明提供一种基于Linux的存储设备树实现方法,包括如下步骤:
S1. 通过udevlib获取设备信息;
S2.根据获取的设备信息生成设备树的类封装;
S3.处理设备树中父节点与子节点之间的关系;
S4.处理设备树中兄弟节点之间的关系;
S5.根据设备树,对设备树中节点进行管理。
实施例1中步骤S1通过如下代码实现:
class DiskTree:
def_init_(self);
self.listDiskDevice=[]
self.disks=global_udev.list_devices(subsystem=‘block’)
实施例2:
如图2所示,上述实施例1中步骤S2根据获取的设备信息生成设备树的类封装;具体步骤如下:
S21.获取设备信息中的所有磁盘;
S22.获取每个磁盘的名称;所述磁盘名称包括磁盘的卷组名称的映射和磁盘逻辑卷名称的映射;
S23.获取磁盘的识别码UUID的映射;
S24.根据磁盘的设备码UUID判断磁盘的类型;具体步骤如下:
S241.根据磁盘的识别码UUID获取磁盘的域;所述磁盘的域为一数组;
S242.判断磁盘域的数组中是否有逻辑卷;
S243.若是,判断磁盘域的数组长度是否为3;
若是,磁盘类型为逻辑卷;
若否,磁盘类型为逻辑卷组;
S244.若否,判断磁盘类型是否为磁盘映射;
若否,则磁盘类型为物理硬盘。
实施例2通过如下代码实现:
for disk in self.disks;
vg_name=disk.get(“DM_VG_NAME”,“”)
lv_name=disk.get(“DM_LV_NAME”,“”)
uuid=disk.get(“DM_UUID”,“”)
uuid_fields=uuid.split(“-”)
devtype=disk.get(“DEVTYPE”,“”)
if uuid and uuid_fiedls[0].lower()==‘lvm’;
if len(uuid_fields)==3;
type=uuid_fields[0].lower()+‘_’+ uuid_fields[2].lower();
else;
type=uuid_fields[0].lower()
elif self.device_is_md(disk);
type=‘md’
else;
type=devtype
diskDevice=DiskDevice(name=disk.sys_name,disk.sys_path,node=disk.device_node,type=type,vgname=vg_name,lvname=lv_name)
实施例3:
如图3所示,上述实施例1中S3处理设备树中父节点与子节点之间的关系;具体步骤如下:
S31.获取设备信息中的所有磁盘节点;
S32.定位一个磁盘节点,并设定为第一磁盘节点;
S33.判断第一磁盘节点类型是否为磁盘或分区;
S34.若是,根据路径获取以第一磁盘节点作为从属的父节点;
S35.根据路径获取父节点的名称;
S36.获取与父节点名称相同的磁盘节点,并设定为第二磁盘节点;
S37.添加第二磁盘节点为第一磁盘节点的父节点;
S38.添加第一磁盘节点为第二磁盘节点的子节点;
S39.定位下一个磁盘节点为第一磁盘节点;返回步骤S33。
实施例3通过如下代码实现:
#resolve relation between parent and child in lvm
for disk in self.listDiskDevice;
if disk.type in[‘disk’,‘partition’];
continue
parent_dir=os.path.normpath(“%s/slaves”%disk.path)
parent_names=os.listdir(parent_dir)
for parent_name in parent_names;
for disk2 in self.listDiskDevice;
if parent_name==disk2.name;
disk.addParent(disk2)
disk2.addChild(disk)
break
实施例4:
上述实例1中,步骤S4的兄弟节点之间关系包括明显兄弟节点关系和不明显兄弟节点关系,如图4所示,当兄弟节点之间关系为明显兄弟节点关系时,
步骤S4具体步骤如下:
S41. 获取设备信息中的所有磁盘节点;
S42. 定位一个磁盘节点,设为第三磁盘节点;
S43. 判断是否第三磁盘节点类型为磁盘或分区;
S44.若是,根据路径获取以第三磁盘节点作为从属的所有父节点;
S45.根据路径获取所有父节点的名称列表;
S46.从父节点名称列表中获取一个父节点,定义为第一兄弟节点;
S47.从父节点名称列表中获取一个父节点,定义为第二兄弟节点;
S48.添加第一兄弟节点和第二兄弟节点互为兄弟节点;
S49.定位下一个磁盘节点为第三磁盘节点,返回步骤S4。
实施例4通过如下代码实现:
#build brother obvious relation
for disk in self.listDiskDevice;
if disk.type in [‘disk’, ‘partition’]
continue
parent_dir=os.path.normpath(“%s/slaves”%disk.path)
parent_names=os.listdir(parent_dir)
for parent_name in parent_names;
brother=self.getDisk(parent_name)
#disk exist at slaves ,but in fact it does not exist
if not brother;
continue
for parent_name2 in parent_names;
if parent_name !=parent_name2;
brother2=self.getDisk(parent_name2)
#disk exist at slaves,but in fact it does not exist
if not brother2;
brother.addBrother(brother2)
实施例5:
上述实例1中,步骤S4的兄弟节点之间关系包括明显兄弟节点关系和不明显兄弟节点关系,如图5所示,当兄弟节点之间关系为不明显兄弟节点关系时,
步骤S4具体步骤如下:
S41a. 获取设备信息中的所有磁盘节点;
S42a.定位一个磁盘节点,设为第四磁盘节点;
S43a.判断第四磁盘节点是否没有子节点;
S44a.若否,定位一个磁盘节点,设为第五磁盘节点;
S45a.判断第五磁盘节点是否没有子节点;
S46a.若否,判断第四磁盘节点名称与第五磁盘节点名称是否相同;
S47a.若否,定位第四磁盘节点的所有子节点;
S48a.判断是否第四磁盘节点的子节点没有兄弟节点;
S49a.若否,则第四磁盘节点的所有子节点为同一个父节点的兄弟节点;
S410a.定位第五磁盘节点的所有子节点;
S411a. 判断是否第五磁盘节点的子节点没有兄弟节点;
S412a.若否,则第五磁盘节点的所有子节点为同一个父节点的兄弟节点;
S413a.第五磁盘节点的每个子节点与第四磁盘节点的每个子节点为不同父节点的兄弟节点;
S414a.定位下一个磁盘节点为第五磁盘节点,返回步骤S45a;
S415a.定位下一个磁盘节点为第四磁盘节点,返回步骤S43a。
实施例5通过如下代码实现:
#build brother not obvious relation
#if a child is brother then they are brother also
for disk in self.listDiskDevice
if not disk.childs;
continue
for disk2 in self.listDiskDevice;
if not disk2.childs or disk.name==disk2.name;
continue
for child in disk.childs;
if not child.brothers;
continue
for child2 in disk2.childs;
实施例6:
如图6所示,上述实施例5中步骤S5根据设备树,对设备树中节点进行管理具体包括S51.获取设备树中的叶子节点;
S52.清除设备信息中的磁盘节点的内容;
S51.具体步骤如下:
S511.获取设备信息中的所有磁盘节点;
S512.定位一个磁盘节点为第六磁盘节点;
S513.判断第六磁盘节点是否没有子节点;
S514.若否,获取第六磁盘节点的所有子节点;
S515.获取每个子节点的叶子节点;
S516.定位下一个磁盘节点为第六磁盘节点,返回步骤S513。
实施例6通过如下代码实现:
def getLeafs(self,leafs=[]);
log.debug(‘enter function getleafs leafs=%s’,str(leafs))
if self.childCount ==0;
if self.name not in[leaf.name for leaf in leafs];
log.debug(‘name=%s,node=%s,vgname=%s,lvname=%s’self.name,self.node,self.vgname,self.lvname)
for child in self.childs;
child.getLeafs(leafs)
return leafs
实施例7:
如图7所示,上述实施例5中步骤S5根据设备树,对设备树中节点进行管理具体包括S51.获取设备树中的叶子节点;
S52.清除设备信息中的磁盘节点的内容;
S52.具体步骤如下:
S521.获取要清除内容的磁盘节点;
S522.获取设备信息中所有磁盘节点;
S523.定位一个磁盘节点为第七磁盘节点;
S524.判断第七磁盘节点是否与要清除内容的磁盘节点名称相同;
S525.若是,获取第七磁盘节点的所有叶子节点;
S526.定位一个叶子节点为第一叶子节点;
S527.通过挂载点卸载第一叶子节点;
S528.清除第一叶子节点的内容;
S529.删除第一叶子节点;
S5210.清除第一叶子节点的兄弟节点的内容;
S5211.定位下一个磁盘节点为第七磁盘节点,返回步骤S524。
实施例7通过如下代码实现:
#add by maokexu@20180517 for wipeDiskInfo
def wipeDiskInfo(diskNames);
log.debug(‘enter function wipeDiskInfo’)
diskNameList=diskNames.split(‘,’)
diskTree=disktree.DiskTree()
diskList=diskTree.generateTree()
diskListInfo=[]
for diskName in diskNameList;
disk=[disk for disk in diskList if disk.name==disk Name][0]
disk.umountLeafs()
disk.wipefsLeafs()
disk.deleteLeafs()
disk.wipefsBrothers()
rc,out,err = commands.execCmd([‘wipefs’, ‘-a’, ‘dev/%s’%diskName])
diskinfo={‘name’:diskName; ‘rc’:rc}
log.debug(‘%s has been wiped’,diskName)
diskListInfo.append(diskinfo)
return diskListInfo
本发明的实施例是说明性的,而非限定性的,上述实施例只是帮助理解本发明,因此本发明不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他的具体实施方式,同样属于本发明保护的范围。

Claims (10)

1.一种基于Linux的存储设备树实现方法,其特征在于,包括如下步骤:
S1.获取设备信息;
S2.根据获取的设备信息生成设备树的类封装;
S3.处理设备树中父节点与子节点之间的关系;
S4.处理设备树中兄弟节点之间的关系;
S5.根据设备树,对设备树中节点进行管理。
2.如权利要求1所述的一种基于Linux的存储设备树实现方法,其特征在于,步骤S1中通过udevlib获取设备信息。
3.如权利要求1所述的一种基于Linux的存储设备树实现方法,其特征在于,步骤S2具体步骤如下:
S21.获取设备信息中的所有磁盘;
S22.获取每个磁盘的名称;
S23.获取磁盘的识别码UUID的映射;
S24.根据磁盘的设备码UUID判断磁盘的类型。
4.如权利要求3所述的一种基于Linux的存储设备树实现方法,其特征在于,所述磁盘名称包括磁盘的卷组名称的映射和磁盘逻辑卷名称的映射。
5.如权利要求3所述的一种基于Linux的存储设备数实现方法,其特征在于,
步骤S24具体步骤如下:
S241.根据磁盘的识别码UUID获取磁盘的域;所述磁盘的域为一数组;
S242.判断磁盘域的数组中是否有逻辑卷;
S243.若是,判断磁盘域的数组长度是否为3;
若是,磁盘类型为逻辑卷;
若否,磁盘类型为逻辑卷组;
S244.若否,判断磁盘类型是否为磁盘映射;
若否,则磁盘类型为物理硬盘。
6.如权利要求1所述的一种基于Linux的存储设备树实现方法,其特征在于,步骤S3具体步骤如下:
S31.获取设备信息中的所有磁盘节点;
S32.定位一个磁盘节点,并设定为第一磁盘节点;
S33.判断第一磁盘节点类型是否为磁盘或分区;
S34.若是,根据路径获取以第一磁盘节点作为从属的父节点;
S35.根据路径获取父节点的名称;
S36.获取与父节点名称相同的磁盘节点,并设定为第二磁盘节点;
S37.添加第二磁盘节点为第一磁盘节点的父节点;
S38.添加第一磁盘节点为第二磁盘节点的子节点;
S39.定位下一个磁盘节点为第一磁盘节点;返回步骤S33。
7.如权利要求1所述的一种基于Linux的存储设备树实现方法,其特征在于,兄弟节点之间关系包括明显兄弟节点关系和不明显兄弟节点关系。
8.如权利要求7所述的一种基于Linux的存储设备树实现方法,其特征在于,
当兄弟节点之间关系为明显兄弟节点关系时,
步骤S4具体步骤如下:
S41. 获取设备信息中的所有磁盘节点;
S42. 定位一个磁盘节点,设为第三磁盘节点;
S43. 判断是否第三磁盘节点类型为磁盘或分区;
S44.若是,根据路径获取以第三磁盘节点作为从属的所有父节点;
S45.根据路径获取所有父节点的名称列表;
S46.从父节点名称列表中获取一个父节点,定义为第一兄弟节点;
S47.从父节点名称列表中获取一个父节点,定义为第二兄弟节点;
S48.添加第一兄弟节点和第二兄弟节点互为兄弟节点;
S49.定位下一个磁盘节点为第三磁盘节点,返回步骤S43。
9.如权利要求7所述的一种基于Linux的存储设备树实现方法,其特征在于,
当兄弟节点之间关系为不明显兄弟节点关系时,
步骤S4具体步骤如下:
S41a. 获取设备信息中的所有磁盘节点;
S42a.定位一个磁盘节点,设为第四磁盘节点;
S43a.判断第四磁盘节点是否没有子节点;
S44a.若否,定位一个磁盘节点,设为第五磁盘节点;
S45a.判断第五磁盘节点是否没有子节点;
S46a.若否,判断第四磁盘节点名称与第五磁盘节点名称是否相同;
S47a.若否,定位第四磁盘节点的所有子节点;
S48a.判断是否第四磁盘节点的子节点没有兄弟节点;
S49a.若否,则第四磁盘节点的所有子节点为同一个父节点的兄弟节点;
S410a.定位第五磁盘节点的所有子节点;
S411a. 判断是否第五磁盘节点的子节点没有兄弟节点;
S412a.若否,则第五磁盘节点的所有子节点为同一个父节点的兄弟节点;
S413a.第五磁盘节点的每个子节点与第四磁盘节点的每个子节点为不同父节点的兄弟节点;
S414a.定位下一个磁盘节点为第五磁盘节点,返回步骤S45a;
S415a.定位下一个磁盘节点为第四磁盘节点,返回步骤S43a。
10.如权利要求1所述的一种基于Linux的存储设备树实现方法,其特征在于,步骤S5具体包括
S51.获取设备树中的叶子节点;
S52.清除设备信息中的磁盘节点的内容;
S51.具体步骤如下:
S511.获取设备信息中的所有磁盘节点;
S512.定位一个磁盘节点为第六磁盘节点;
S513.判断第六磁盘节点是否没有子节点;
S514.若否,获取第六磁盘节点的所有子节点;
S515.获取每个子节点的叶子节点;
S516.定位下一个磁盘节点为第六磁盘节点,返回步骤S513;
S52.具体步骤如下:
S521.获取要清除内容的磁盘节点;
S522.获取设备信息中所有磁盘节点;
S523.定位一个磁盘节点为第七磁盘节点;
S524.判断第七磁盘节点是否与要清除内容的磁盘节点名称相同;
S525.若是,获取第七磁盘节点的所有叶子节点;
S526.定位一个叶子节点为第一叶子节点;
S527.通过挂载点卸载第一叶子节点;
S528.清除第一叶子节点的内容;
S529.删除第一叶子节点;
S5210.清除第一叶子节点的兄弟节点的内容;
S5211.定位下一个磁盘节点为第七磁盘节点,返回步骤S524。
CN201811551918.XA 2018-12-18 2018-12-18 一种基于Linux的存储设备树实现方法 Active CN109683820B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811551918.XA CN109683820B (zh) 2018-12-18 2018-12-18 一种基于Linux的存储设备树实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811551918.XA CN109683820B (zh) 2018-12-18 2018-12-18 一种基于Linux的存储设备树实现方法

Publications (2)

Publication Number Publication Date
CN109683820A true CN109683820A (zh) 2019-04-26
CN109683820B CN109683820B (zh) 2022-02-08

Family

ID=66186339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811551918.XA Active CN109683820B (zh) 2018-12-18 2018-12-18 一种基于Linux的存储设备树实现方法

Country Status (1)

Country Link
CN (1) CN109683820B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113867810A (zh) * 2021-08-30 2021-12-31 苏州浪潮智能科技有限公司 一种查看服务器硬盘拓扑的方法、装置、终端及存储介质
CN115794259A (zh) * 2023-02-01 2023-03-14 麒麟软件有限公司 通过acpi生成设备树的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080144471A1 (en) * 2006-12-18 2008-06-19 International Business Machines Corporation Application server provisioning by disk image inheritance
US7412352B1 (en) * 2004-11-12 2008-08-12 Sun Microsystems, Inc. Computer diagnostic system and method
CN106354498A (zh) * 2016-08-25 2017-01-25 睿芯信息科技(上海)有限公司 一种Linux系统加载设备的方法
CN107145343A (zh) * 2017-04-05 2017-09-08 烽火通信科技股份有限公司 一种动态适配外围设备的系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7412352B1 (en) * 2004-11-12 2008-08-12 Sun Microsystems, Inc. Computer diagnostic system and method
US20080144471A1 (en) * 2006-12-18 2008-06-19 International Business Machines Corporation Application server provisioning by disk image inheritance
CN106354498A (zh) * 2016-08-25 2017-01-25 睿芯信息科技(上海)有限公司 一种Linux系统加载设备的方法
CN107145343A (zh) * 2017-04-05 2017-09-08 烽火通信科技股份有限公司 一种动态适配外围设备的系统及方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113867810A (zh) * 2021-08-30 2021-12-31 苏州浪潮智能科技有限公司 一种查看服务器硬盘拓扑的方法、装置、终端及存储介质
CN113867810B (zh) * 2021-08-30 2023-07-14 苏州浪潮智能科技有限公司 一种查看服务器硬盘拓扑的方法、装置、终端及存储介质
CN115794259A (zh) * 2023-02-01 2023-03-14 麒麟软件有限公司 通过acpi生成设备树的方法

Also Published As

Publication number Publication date
CN109683820B (zh) 2022-02-08

Similar Documents

Publication Publication Date Title
CN102473129B (zh) 输出表示与故障的根本原因对应的恢复方法的信息的管理系统
CN107958057B (zh) 一种用于异构数据库中数据迁移的代码生成方法及装置
DE112020003420T5 (de) Datenwiederherstellung in einem virtuellen Speichersystem
US11349917B2 (en) Replication handling among distinct networks
US20220283708A1 (en) Modifying A Cloned Image of Replica Data
CN102197372B (zh) 已分区的、可缩放的、并且可用的结构化存储中的分区管理
CN103098015B (zh) 存储系统
US11789638B2 (en) Continuing replication during storage system transportation
CN109683820A (zh) 一种基于Linux的存储设备树实现方法
JP2020514902A (ja) データセット及び他の管理オブジェクトをクラウドベースのストレージシステムに同期複製すること
CN109815049A (zh) 节点宕机恢复方法、装置、电子设备及存储介质
US20060242288A1 (en) inferential diagnosing engines for grid-based computing systems
CN105339907A (zh) 非易失性存储器系统中的同步镜像
CN106575251B (zh) 流数据的推测数据处理
US11625185B2 (en) Transitioning between replication sources for data replication operations
CN104346479A (zh) 一种数据库同步方法及装置
CN105740411A (zh) 一种基于SOA和WebService的数据迁移方法
US20210303527A1 (en) Mapping equivalent hosts at distinct replication endpoints
CN109726066B (zh) 用于标识存储系统中的问题部件的方法和设备
US20220147490A1 (en) Replica transitions for file storage
CN115858513A (zh) 数据治理方法、装置、计算机设备和存储介质
CN107291821A (zh) 一种同城双活架构快速切换的方法
US20070276779A1 (en) Method for avoiding orphan entries in cascade delete in a configuration management database
CN106789624A (zh) 一种失效路由恢复方法
CN112698819A (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
CB02 Change of applicant information

Address after: 250101 no.2877 Kehang Road, Suncun Town, high tech Zone, Jinan City, Shandong Province

Applicant after: Chaoyue Technology Co.,Ltd.

Address before: 250101 no.2877 Kehang Road, Suncun Town, high tech Zone, Jinan City, Shandong Province

Applicant before: SHANDONG CHAOYUE DATA CONTROL ELECTRONICS Co.,Ltd.

GR01 Patent grant
GR01 Patent grant