CN103761202B - 一种数据存储节点硬盘盘位识别方法及系统 - Google Patents
一种数据存储节点硬盘盘位识别方法及系统 Download PDFInfo
- 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
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。
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426556A (zh) * | 2011-08-18 | 2012-04-25 | 中兴通讯股份有限公司 | 数据卡端口属性的识别方法及装置 |
CN102508760A (zh) * | 2011-11-17 | 2012-06-20 | 浪潮(北京)电子信息产业有限公司 | 独立磁盘冗余阵列预警方法和系统 |
-
2014
- 2014-02-18 CN CN201410055609.9A patent/CN103761202B/zh active Active
Patent Citations (2)
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)
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 |