CN103761202B - 一种数据存储节点硬盘盘位识别方法及系统 - Google Patents

一种数据存储节点硬盘盘位识别方法及系统 Download PDF

Info

Publication number
CN103761202B
CN103761202B CN201410055609.9A CN201410055609A CN103761202B CN 103761202 B CN103761202 B CN 103761202B CN 201410055609 A CN201410055609 A CN 201410055609A CN 103761202 B CN103761202 B CN 103761202B
Authority
CN
China
Prior art keywords
equipment
hard disk
dish position
identification
rule
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
CN201410055609.9A
Other languages
English (en)
Other versions
CN103761202A (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.)
Shenzhen Infinova Ltd
Original Assignee
Shenzhen Infinova 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 Shenzhen Infinova Ltd filed Critical Shenzhen Infinova Ltd
Priority to CN201410055609.9A priority Critical patent/CN103761202B/zh
Publication of CN103761202A publication Critical patent/CN103761202A/zh
Application granted granted Critical
Publication of CN103761202B publication Critical patent/CN103761202B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开一种数据存储节点硬盘盘位识别方法,应用于Linux设备的主机中,Linux设备包括主机和与主机相连的用于插入硬盘的盘位,所述方法包括如下步骤:S1、使用udev设备管理器根据udev的规则建立规则文件,该规则文件用于通过运行识别shell脚本进行盘位识别;以及S2、当Linux内核检测到内核设备时,使用udev设备管理器运行所述识别shell脚本,以通过解析RAID卡驱动的生成文件来对符合规则的内核设备进行盘位识别,然后输出与内核设备相应的盘位识别结果。本发明还公开一种数据存储节点硬盘盘位识别系统。

Description

一种数据存储节点硬盘盘位识别方法及系统
技术领域
本发明涉及一种数据存储节点硬盘盘位识别方法及系统。
背景技术
盘位是单独一台设备在不包括连接的扩展机柜及阵列情况下硬盘插槽位。传统硬盘盘位识别的方法是通过主板上的多个SATA口,每个SATA口对应Linux系统里的host0,host1,...,hostn,然后通过host0,host1,....,hostn来识别硬盘盘位。SATA(SerialAdvanced Technology Attachment,串行高级技术附件)是一种基于行业标准的串行硬件驱动器接口,在实际的使用中,SATA的HBA(Host Bus Adapter,主机总线适配器)就像网络上的交换机一样,可以实现以通道的形式与单独的每个硬盘通讯,即每个SATA硬盘都独占一个传输通道。
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列或简称磁盘阵列)是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术,数据冗余的功能是在用户数据一旦发生损坏后,利用冗余信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。RAID卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。RAID卡可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个的磁盘驱动器几倍、几十倍甚至上百倍的速率。
由于SATA口转接硬盘的方式无法使用硬件RAID,所以云存储数据存储节点没有采用SATA口接硬盘的方式,而是采用RAID卡转接硬盘的方式,此方式在Linux系统里识别的都是host0,所以无法用传统的方法识别硬盘盘位。
发明内容
本发明的目的在于提供一种数据存储节点硬盘盘位识别方法及系统,可以在RAID卡转接硬盘方式下实现硬盘盘位的识别,并将硬盘设备根据硬盘盘位进行映射,便于后期操作。
为实现上述发明目的,本发明采用的一个技术方案是:
提供一种数据存储节点硬盘盘位识别系统,运行于Linux设备的主机中,Linux设备包括主机和与主机相连的用于插入硬盘的盘位(即前置硬盘插槽),所述系统包括:建立模块,用于使用udev设备管理器根据udev的规则建立规则文件,该规则文件用于通过运行识别shell脚本进行盘位识别;以及识别模块,用于当Linux内核检测到内核设备时,使用udev设备管理器运行所述识别shell脚本,以通过解析RAID卡驱动的生成文件来对符合规则的内核设备进行盘位识别,然后输出与内核设备相应的盘位识别结果。
本发明采用的另一个技术方案是:
提供一种数据存储节点硬盘盘位识别方法,应用于Linux设备的主机中,Linux设备包括主机和与主机相连的用于插入硬盘的盘位,所述方法包括如下步骤:S1、使用udev设备管理器根据udev的规则建立规则文件,该规则文件用于通过运行识别shell脚本进行盘位识别;以及S2、当Linux内核检测到内核设备时,使用udev设备管理器运行所述识别shell脚本,以通过解析RAID卡驱动的生成文件来对符合规则的内核设备进行盘位识别,然后输出与内核设备相应的盘位识别结果。
本发明的数据存储节点硬盘盘位识别方法及系统通过udev设备管理器运行规则文件中的shell脚本,以通过解析Raid卡驱动生成的文件来获得内核设备序列号所对应的盘位。使用smartct1解析内核设备序列号,并将通过运行shell脚本所得的序列号一致的盘位作为内核设备的盘位,进一步地,通过将内核设备映射为包括盘位的硬盘名来建立内核设备的链接。通过上述方案实现了在使用RAID卡转接硬盘时正确识别硬盘盘位并进行映射。
附图说明
图1是本发明一实施方式中一种数据存储节点硬盘盘位识别系统的系统架构图;
图2是本发明一实施方式中一种数据存储节点硬盘盘位识别方法的执行流程图。
主要元件符号说明
数据存储节点硬盘盘位识别系统 100
建立模块 10
识别模块 20
映射模块 30
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
请参阅图1,是本发明一实施方式中一种数据存储节点硬盘盘位识别系统的系统架构图。所述数据存储节点硬盘盘位识别系统100运行于运行于Linux设备的主机中,Linux设备包括主机和与主机相连的用于插入硬盘的盘位。该数据存储节点硬盘盘位识别系统包括建立模块10、识别模块20。
建立模块10用于使用udev设备管理器根据udev的规则建立规则文件,该规则文件用于通过运行识别shell脚本解析RAID卡驱动的生成文件来对内核设备进行盘位识别,以及输出与内核设备名相应的盘位识别结果。所述盘位识别结果即是盘位。
其中,udev是Linux的设备管理器,它主要的功能是管理/dev目录底下的设备节点,/dev/sd为Linux内核自动生成的硬盘内核设备名前缀,比如,/dev/sda、/dev/sdb的前缀,前缀后面加入a-z这24个英文字母代表硬盘的内核设备名。/dev/sd?的?为通配符,代表字符a-z是根据Linux的检测顺序自动生成,比如第一个检测的硬盘设备为a,即/dev/sda,第2个检测到的硬盘设备为b,即/dev/sdb,其跟硬盘盘位不一定对应,比如/dev/sda不一定对应盘位1,有可能对应盘位2。
例如,使用udev设备管理器在/etc/udev/rules.d下面建立一个规则文件,文件名为:20-disk-mapper.rules(文件名必须符合udev的规则文件命名规范),该规则文件包括如下内容:KERNEL=="sd?",PROGRAM="/bin/sh smart_check_disk.sh/dev/%k",SYMLINK+="HD%c"。
PROGRAM的程序说明:/bin/sh smart_check_disk.sh/dev/%k即执行/bin/sh程序,第一个参数smart_check_disk.sh为识别shell脚本,第二个参数/dev/%k为对应的内核设备名,比如/dev/sda。第二个参数的作用是执行脚本smart_check_disk.sh时,将内核设备名比如:/dev/sda作为识别shell脚本的参数传进去。上述规则文件的值所代表的意思是:$kernel,%k为内核设备名,比如对于/dev/sda设备,/dev/%k即为/dev/sda;$result,%c为PROGRAM返回的结果。
具体地,该规则文件用于判断以sd开头的内核设备名是否符合sd后面只有一个字符的规则,并对符合规则的内核设备执行识别shell脚本,以识别当前内核设备的盘位,以及输出与内核设备相应的盘位识别结果。比如/dev/sda、/dev/sdb为符合规则的内核设备,而/dev/sda1、/dev/sdb1等为不符合规则的内核设备。对符合规则的内核设备,执行PROGRAM所指示的程序并返回盘位识别结果。识别模块20用于当Linux内核检测到内核设备时,使用udev设备管理器运行所述识别shell脚本,以通过解析RAID卡驱动的生成文件来对符合规则的内核设备进行盘位识别,然后输出与内核设备相应的盘位识别结果。
在本实施方式中,所述识别模块20具体包括解析子模块、检测子模块、以及判断子模块。解析子模块用于解析RAID卡驱动的生成文件,获得盘位及其对应的序列号。具体地,RAID卡驱动的生成文件记录有所插入硬盘的盘位、序列号、硬盘总大小、硬盘状态等,并能根据硬盘热插拔进行动态更新。例如,一RAID卡驱动的生成文件为:/proc/scsi/rr2680/0,其内容如下:
RocketRAID268x controller driver v1.9(Nov1201323:12:56)
Controller1:RocketRAID2680SAS Controller
------------------------------------------------
1/2/1ST2000VX000-1CU164-S1E1XPEC,2000398MB,Normal[RA][WC][NCQ]
1/3/1ST2000VX000-1CU164-S1E1XL27,2000398MB,Normal[RA][WC][NCQ]
Logical devices
------------------------------------------------
1/2/1ST2000VX000-1CU164-S1E1XPEC,2000398MB,Normal[RA][WC][NCQ]
1/3/1ST2000VX000-1CU164-S1E1XL27,2000398MB,Normal[RA][WC][NCQ]
其中,“1/2/1ST2000VX000-1CU164-S1E1XPEC,2000398MB,Normal[RA][WC][NCQ]”中,第一个字段“1/2/1”中间的2即为盘位,第二个字段“ST2000VX000-1CU164-S1E1XPEC”为硬盘模块号加序列号。
检测子模块用于使用硬盘检测工具smartctl检测内核设备的序列号,判断子模块用于判断通过解析RAID卡驱动的生成文件获得的序列号中是否存在与内核设备相同的序列号,若存在则将该序列号对应的盘位作为内核设备的盘位。输出子模块用于输出与内核设备相应的盘位识别结果。该盘位识别结果即为盘位。
在本实施方式中,所述识别模块20还包括规则判断模块,用于判断以sd开头的内核设备名是否符合sd后面只有一个字符的规则,若是,则判定内核设备符合规则并通知解析子模块执行相应操作。
在本实施方式中,所述数据存储节点硬盘盘位识别系统还包括映射模块30,该映射模块用于使用udev设备管理器根据所述盘位识别结果,产生包含相应盘位的符号链接作为硬盘名,将内核设备映射至硬盘名。例如,为内核设备/dev/sd?产生相应的一个包含盘位的符号链接“HD%c”,比如/dev/HD1、/dev/HD2等。其中,/dev/HD为我们为了描述方便所设置的映射后的硬盘名前缀,HD此处代表的意思是hard disk的缩写,可以使用其他名字,比如:/dev/aa,/dev/bb等。将内核设备/dev/sd?映射到硬盘名/dev/HD?时,如果/dev/sdc是第5盘位的话,那么/dev/sdc就会映射到/dev/HD5。硬盘名的映射相当于给硬盘名创建一个快捷方式,便于操作。
下面结合一个具体的识别实例对本发明的实施进行进一步说明:
现有一插在盘位2上的硬盘,在Linux系统中自动识别为内核设备/dev/sda(盘位1上没硬盘时会出现此情况),那么,根据本发明的技术方案把内核设备/dev/sda识别为盘位2的具体过程如下:
(1)根据配置的udev规则文件,系统检测到内核设备/dev/sda时,会自动执行识别程序:/bin/sh smart_check_disk.sh/dev/sda。在smart_check_disk.sh脚本里,通过smartctl-i/dev/sda获得硬盘的模块号和序列号。
Device Model:ST2000VX000-1CU164
Serial Number:S1E1XPEC
然后将其合并为:ST2000VX000-1CU164-S1E1XPEC(即Device Model-SerialNumber)
(2)在smart_check_disk.sh脚本里,通过用smartctl解析Raid卡驱动生成的文件,获得内核设备/dev/sda的序列号所对应的盘位,比如,“1/2/1ST2000VX000-1CU164-S1E1XPEC,2000398MB,Normal[RA][WC][NCQ]”中第2字段的序列号ST2000VX000-1CU164-S1E1XPEC所对应的盘位信息字段为1/2/1,其所对应的盘位信息为中间的2,即盘位2。由于第2字段的硬盘模块序列号和步骤(1)中用smartctl解析的/dev/sda的序列号一致,所以/dev/sda的硬盘盘位即为2。
(3)smart_check_disk.sh脚本将内核设备/dev/sda所对应的盘位进行显示或打印输出,即显示或输出内容为2。
(4)根据配置的udev规则文件,将内核设备/dev/sda映射为/dev/HD%c,%c内容为PROGRAM返回的结果,即smart_check_disk.sh的输出结果2,/dev/sda就会被映射为/dev/HD2。
请参阅图2,是本发明一实施方式中一种数据存储节点硬盘盘位识别方法的执行流程图。所述数据存储节点硬盘盘位识别方法,应用于Linux设备的主机中,Linux设备包括主机和与主机相连的用于插入硬盘的盘位。所述数据存储节点硬盘盘位识别方法包括如下步骤:
步骤S1、使用udev设备管理器根据udev的规则建立规则文件,该规则文件用于通过运行识别shell脚本进行盘位识别;以及
步骤S2、当Linux内核检测到内核设备时,使用udev设备管理器运行所述识别shell脚本,以通过解析RAID卡驱动的生成文件来对符合规则的内核设备进行盘位识别,然后输出与内核设备相应的盘位识别结果。
在本实施方式中,所述数据存储节点硬盘盘位识别方法还包括映射步骤,该映射步骤具体为:
步骤S3、使用udev设备管理器根据所述盘位识别结果,产生包含相应盘位的符号链接作为硬盘名,将内核设备映射至硬盘名。
在本实施方式中,所述步骤S2具体包括:
步骤S21、解析RAID卡驱动的生成文件,获得盘位及其对应的序列号;
步骤S22、使用硬盘检测工具smartctl检测内核设备的序列号;
步骤S23、判断通过解析RAID卡驱动的生成文件获得的序列号中是否存在与内核设备相同的序列号,若存在则将该序列号对应的盘位作为内核设备的盘位;以及
步骤S24、输出与内核设备相应的盘位识别结果。
在本实施方式中,所述步骤S21前还包括判断内核设备是否符合规则的步骤,具体为:判断以sd开头的内核设备名是否符合sd后面只有一个字符的规则,若是,则判定内核设备符合规则,然后执行步骤S21。
本发明的有益技术效果在于:为了解决传统硬盘盘位识别方法在使用硬件RAID卡转接硬盘时无效的问题,本发明的数据存储节点硬盘盘位识别方法及系统通过udev设备管理器运行规则文件中的shell脚本,以通过解析Raid卡驱动生成的文件来获得内核设备序列号所对应的盘位。使用smartct1解析内核设备序列号,并将通过运行shell脚本所得的序列号一致的盘位作为内核设备的盘位,进一步地,通过将内核设备映射为包括盘位的硬盘名来建立内核设备的链接。通过上述方案实现了在使用RAID卡转接硬盘时正确识别硬盘盘位并进行映射。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (6)

1.一种数据存储节点硬盘盘位识别系统,运行于Linux设备的主机中,Linux设备包括主机和与主机相连的用于插入硬盘的盘位,其特征在于,所述系统包括:
建立模块,用于使用udev设备管理器根据udev的规则建立规则文件,该规则文件用于通过运行识别shell脚本进行盘位识别;以及
识别模块,用于当Linux内核检测到内核设备时,使用udev设备管理器运行所述识别shell脚本,以通过解析RAID卡驱动的生成文件来对符合规则的内核设备进行盘位识别,然后输出与内核设备相应的盘位识别结果;
所述识别模块具体包括:
解析子模块,用于解析RAID卡驱动的生成文件,获得盘位及其对应的序列号;
检测子模块,用于使用硬盘检测工具smartctl检测内核设备的序列号;
判断子模块,用于判断通过解析RAID卡驱动的生成文件获得的序列号中是否存在与内核设备相同的序列号,若存在则将该序列号对应的盘位作为内核设备的盘位;以及
输出子模块,用于输出与内核设备相应的盘位识别结果。
2.根据权利要求1所述的一种数据存储节点硬盘盘位识别系统,其特征在于,所述系统还包括映射模块,该映射模块用于使用udev设备管理器根据所述盘位识别结果,产生包含相应盘位的符号链接作为硬盘名,将内核设备映射至硬盘名。
3.根据权利要求1所述的一种数据存储节点硬盘盘位识别系统,其特征在于,所述识别模块还包括规则判断模块,用于判断以sd开头的内核设备名是否符合sd后面只有一个字符的规则,若是,则判定内核设备符合规则并通知解析子模块执行相应操作。
4.一种数据存储节点硬盘盘位识别方法,应用于Linux设备的主机中,Linux设备包括主机和与主机相连的用于插入硬盘的盘位,其特征在于,所述方法包括如下步骤:
S1、使用udev设备管理器根据udev的规则建立规则文件,该规则文件用于通过运行识别shell脚本进行盘位识别;以及
S2、当Linux内核检测到内核设备时,使用udev设备管理器运行所述识别shell脚本,以通过解析RAID卡驱动的生成文件来对符合规则的内核设备进行盘位识别,然后输出与内核设备相应的盘位识别结果;
所述步骤S2具体包括:
S21、解析RAID卡驱动的生成文件,获得盘位及其对应的序列号;
S22、使用硬盘检测工具smartctl检测内核设备的序列号;
S23、判断通过解析RAID卡驱动的生成文件获得的序列号中是否存在与内核设备相同的序列号,若存在则将该序列号对应的盘位作为内核设备的盘位;以及
S24、输出与内核设备相应的盘位识别结果。
5.根据权利要求4所述的一种数据存储节点硬盘盘位识别方法,其特征在于,所述方法还包括映射步骤,该映射步骤具体为:
使用udev设备管理器根据所述盘位识别结果,产生包含相应盘位的符号链接作为硬盘名,将内核设备映射至硬盘名。
6.根据权利要求4所述的一种数据存储节点硬盘盘位识别方法,其特征在于,所述步骤S21前还包括判断内核设备是否符合规则的步骤,具体为:判断以sd开头的内核设备名是否符合sd后面只有一个字符的规则,若是,则判定内核设备符合规则,然后执行步骤S21。
CN201410055609.9A 2014-02-18 2014-02-18 一种数据存储节点硬盘盘位识别方法及系统 Active CN103761202B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410055609.9A CN103761202B (zh) 2014-02-18 2014-02-18 一种数据存储节点硬盘盘位识别方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410055609.9A CN103761202B (zh) 2014-02-18 2014-02-18 一种数据存储节点硬盘盘位识别方法及系统

Publications (2)

Publication Number Publication Date
CN103761202A CN103761202A (zh) 2014-04-30
CN103761202B true CN103761202B (zh) 2016-08-31

Family

ID=50528444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410055609.9A Active CN103761202B (zh) 2014-02-18 2014-02-18 一种数据存储节点硬盘盘位识别方法及系统

Country Status (1)

Country Link
CN (1) CN103761202B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183388B (zh) * 2015-09-14 2019-02-12 北京华青融天技术有限责任公司 一种硬盘物理序列号的获取方法、装置以及系统
CN106502861B (zh) * 2016-10-20 2019-06-04 郑州云海信息技术有限公司 一种穿透raid卡读取硬盘smart信息的方法
CN107807791A (zh) * 2017-10-20 2018-03-16 郑州云海信息技术有限公司 一种计算机硬盘序列绑定方法及系统
CN114063925A (zh) * 2021-11-19 2022-02-18 研祥智能科技股份有限公司 存储设备排序方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102426556A (zh) * 2011-08-18 2012-04-25 中兴通讯股份有限公司 数据卡端口属性的识别方法及装置
CN102508760A (zh) * 2011-11-17 2012-06-20 浪潮(北京)电子信息产业有限公司 独立磁盘冗余阵列预警方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102426556A (zh) * 2011-08-18 2012-04-25 中兴通讯股份有限公司 数据卡端口属性的识别方法及装置
CN102508760A (zh) * 2011-11-17 2012-06-20 浪潮(北京)电子信息产业有限公司 独立磁盘冗余阵列预警方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于UDEV和PAM机制的USB KEY认证实现;邱勇 等;《计算机应用》;20120701;第32卷(第S1期);71-72,76 *

Also Published As

Publication number Publication date
CN103761202A (zh) 2014-04-30

Similar Documents

Publication Publication Date Title
CN101359309B (zh) 串行附接小型计算机系统接口硬盘状态指示装置及方法
CN105589776B (zh) 一种故障定位方法及服务器
CN108376077A (zh) 控制单元的升级方法和装置
CN103761202B (zh) 一种数据存储节点硬盘盘位识别方法及系统
CN103150188B (zh) 非x86指令集计算机的x86兼容显卡快速初始化方法
CN201497985U (zh) 嵌入式设备辅助故障分析工具
CN102567193A (zh) 测试用例转化为自动化测试脚本的方法及系统
CN101819550A (zh) 串行连接小型计算机系统接口测试系统及方法
CN102981882B (zh) 解析方法和装置
CN104484685B (zh) 一种批量发行智能卡的方法及系统
CN102023882A (zh) 计算机自动识别手机并安装手机驱动程序的系统及方法
CN102236591B (zh) 接收自存储网络环境的scsi目标的scsi错误响应的定制系统和方法
CN109815147A (zh) 测试案例生成方法、装置、服务器和介质
CN103684918A (zh) 链路故障检测方法和装置
CN108874441A (zh) 一种板卡配置方法、装置、服务器和存储介质
CN107844305A (zh) 嵌入式设备的软件升级方法及嵌入式设备
CN107423157A (zh) 一种硬盘挂载方法、模块及操作系统
CN104903865A (zh) 恢复虚拟机映像的在前版本
US8341538B1 (en) Systems and methods for reducing redundancies in quality-assurance reviews of graphical user interfaces
CN110377484A (zh) 判断硬盘状态的方法及系统
CN109710474A (zh) 一种硬盘故障检测方法、装置、终端及可读存储介质
CN109271009A (zh) 一种控制服务器背板上电的方法、装置及cpld
CN106301967B (zh) 一种数据同步方法及带外管理设备
TW201324171A (zh) SAS Expander設備的PHY切換方法及系統
CN113612671B (zh) 总线适配器与通道绑定配置方法、映射管理器及连接系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant