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

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

Info

Publication number
CN109683820B
CN109683820B CN201811551918.XA CN201811551918A CN109683820B CN 109683820 B CN109683820 B CN 109683820B CN 201811551918 A CN201811551918 A CN 201811551918A CN 109683820 B CN109683820 B CN 109683820B
Authority
CN
China
Prior art keywords
node
disk
nodes
acquiring
brother
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.)
Active
Application number
CN201811551918.XA
Other languages
English (en)
Other versions
CN109683820A (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.)
Chaoyue Technology Co Ltd
Original Assignee
Chaoyue Technology 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 Chaoyue Technology Co Ltd filed Critical Chaoyue Technology 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

Images

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 (4)

1.一种基于Linux的存储设备树实现方法,其特征在于,包括如下步骤:
S1.获取设备信息;
S2.根据获取的设备信息生成设备树的类封装;
S3.处理设备树中父节点与子节点之间的关系;
S4.处理设备树中兄弟节点之间的关系;
S5.根据设备树,对设备树中节点进行管理;
步骤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设备树中兄弟节点之间关系包括明显兄弟节点关系和不明显兄弟节点关系;
当兄弟节点之间关系为明显兄弟节点关系时,步骤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。
2.如权利要求1所述的一种基于Linux的存储设备树实现方法,其特征在于,步骤S1中通过udevlib获取设备信息。
3.如权利要求1所述的一种基于Linux的存储设备树实现方法,其特征在于,所述磁盘名称包括磁盘的卷组名称的映射和磁盘逻辑卷名称的映射。
4.如权利要求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 CN109683820A (zh) 2019-04-26
CN109683820B true 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)

Families Citing this family (2)

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

Citations (3)

* 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
CN106354498A (zh) * 2016-08-25 2017-01-25 睿芯信息科技(上海)有限公司 一种Linux系统加载设备的方法
CN107145343A (zh) * 2017-04-05 2017-09-08 烽火通信科技股份有限公司 一种动态适配外围设备的系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7945751B2 (en) * 2006-12-18 2011-05-17 International Business Machines Corporation Disk image inheritance

Patent Citations (3)

* 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
CN106354498A (zh) * 2016-08-25 2017-01-25 睿芯信息科技(上海)有限公司 一种Linux系统加载设备的方法
CN107145343A (zh) * 2017-04-05 2017-09-08 烽火通信科技股份有限公司 一种动态适配外围设备的系统及方法

Also Published As

Publication number Publication date
CN109683820A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
US8904006B2 (en) In-flight block map for a clustered redirect-on-write filesystem
KR101840996B1 (ko) 파일 시스템에 대한 체크포인트
EP2959373B1 (en) Object-level replication of cloned objects in a data storage system
US8862936B2 (en) Apparatus and method of managing databases of active node and standby node of main memory database management system
US8255373B2 (en) Atomic multiple modification of data in a distributed storage system
US8108429B2 (en) System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services
CN107943557B (zh) 一种基于云平台的虚拟机磁盘增量快照方法
US7895156B2 (en) Method, system, and computer program product for implementing a model exchange framework generating a synchronization record in response to a model exchange request using fusion technology
CN109739935A (zh) 数据读取方法、装置、电子设备以及存储介质
US20120109895A1 (en) Versatile in-memory database recovery
CN109683820B (zh) 一种基于Linux的存储设备树实现方法
JP5658124B2 (ja) リダイレクト・オン・ライト・ファイル・システムにおける複数のコンテキストを提供する方法、装置およびコンピュータ・プログラム
CN112269781B (zh) 数据生命周期管理方法、装置、介质及电子设备
CN109710388A (zh) 数据读取方法、装置、电子设备以及存储介质
CN101420459B (zh) 一种管理应用配置信息的方法、应用系统和存储设备
CN106575251B (zh) 流数据的推测数据处理
US11204910B2 (en) Artifact correlation between domains
WO2016168096A1 (en) Collection record location as log tail beginning
CN111858146A (zh) 用于恢复数据的方法、设备和计算机程序产品
US9563521B2 (en) Data transfers between cluster instances with delayed log file flush
US11232094B2 (en) Techniques for determining ancestry in directed acyclic graphs
US11093348B2 (en) Method, device and computer program product for recovering metadata
Tran et al. A survey of data recovery on flash memory.
CN107947978A (zh) 一种关联数据的方法以及装置
CN111026764B (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