CN103150126B - 基于Linux下的磁盘的盘符正确分配方法及装置 - Google Patents
基于Linux下的磁盘的盘符正确分配方法及装置 Download PDFInfo
- Publication number
- CN103150126B CN103150126B CN201310064587.8A CN201310064587A CN103150126B CN 103150126 B CN103150126 B CN 103150126B CN 201310064587 A CN201310064587 A CN 201310064587A CN 103150126 B CN103150126 B CN 103150126B
- Authority
- CN
- China
- Prior art keywords
- drive
- disk
- bitmap
- described drive
- initial access
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提出了一种基于Linux下的磁盘的盘符正确分配方法,包括如下步骤:在检测到磁盘的盘符分配请求时,检测磁盘的芯片类型,如果磁盘的芯片类型为SCU芯片,则内核调用盘符分配驱动;盘符分配驱动根据磁盘的总线ID和物理ID计算磁盘对应的位图起始访问值;盘符分配驱动访问位图起始访问值开始,从位图起始访问值对应的盘符依次进行遍历;以及盘符分配驱动判断进行遍历的盘符是否被占用,如果盘符未被占用,则将当前位图值所对应的盘符分配至磁盘。本方法消除了硬件和软件运维兼容性的问题,降低了因运维方式变更而产生的风险和成本代价,且具有高效性与易用性。本发明还公开了一种基于Linux下的磁盘的盘符正确分配装置。
Description
技术领域
本发明涉及数据传输技术领域,特别涉及一种基于Linux下的磁盘的盘符正确分配方法及装置。
背景技术
目前,Linux下盘符的分配方式比较简单,哪个盘在内核里先启动就按照从sda至sdz顺序分配。具体地,通过udev软件对盘符重新进行映射,并按照总线顺序创建符号链接。在Intel新一代的C600系列主板芯片组中同时存在AHCI和SCU这两组磁盘接口芯片。在这种芯片混用的情况下,磁盘设备的启动顺序总不能按照接口总线ID或者物理ID顺序启动,因此在Linux下便发生了盘符乱序的问题。如表一所示:
物理盘槽位号 | 芯片名 | 总线ID | 物理ID | 应对应盘符 | 实际对应盘符 |
0 | AHCI | 0 | 无 | sda | sda |
1 | AHCI | 1 | 无 | sdb | sdb |
2 | AHCI | 2 | 无 | sdc | sdc |
3 | AHCI | 3 | 无 | sdd | sdd |
4 | SCU | 6 | 0 | sde | sde |
5 | SCU | 6 | 1 | sdf | sdf |
6 | SCU | 6 | 2 | sdg | sdi |
7 | SCU | 6 | 3 | sdh | sdk |
8 | SCU | 7 | 0 | sdi | sdg |
9 | SCU | 7 | 1 | sdj | sdh |
10 | SCU | 7 | 2 | sdk | sdj |
11 | SCU | 7 | 3 | sdl | sdl |
表一
由于盘符乱序会给硬件和软件的统一运维带来影响,不具有准确性与实用性,且降低了IDC日常硬件故障运维时磁盘盘符和槽位对应关系不一致而引发的误操作问题的情况。
进一步地,在IDC现场运维的时候,对磁盘进行热插拔等故障磁盘更换操作,也会因为sd_mod驱动的先入先分配盘符的机制而产生盘符乱序的问题。比如先后拔出槽位号为1和2的两块磁盘,分别对应sdb和sdc,之后先插回槽位号为2的磁盘,再插回槽位号为1的磁盘,最终这两块盘的盘符就会发生乱序,如表二所示:
物理盘槽位号 | 芯片名 | 总线ID | 物理ID | 拔出前盘符 | 插回后盘符 |
1 | AHCI | 1 | 无 | sdb | sdc |
2 | AHCI | 2 | 无 | sdc | sdb |
表二
现有的C600主板芯片组中的AHCI和SCU芯片分别能够支持4个SATA接口,C600主板最多能够支持12个SATA接口,其中6个来自于AHCI芯片,另外8个来自于两个SCU芯片。AHCI芯片上连接的4个SATA接口获得到的总线ID为0、1、2、3。SCU芯片下的SATA接口是直接与SCU芯片桥接的,这些接口无法获得PCI总线ID,因此系统无法感知SCU芯片下的SATA设备。
进一步地,创建新的盘符链接固然能够解决盘符乱序的问题,但是它无法兼容原有的软件以及IDC运维方案。比如原先盘符叫做sda、sdb,通过udev创建符号链接后,新的盘符可能叫做disk1、disk2。因此所有的软件运维代码都需要重新修改,并且IDC现场硬件故障运维方式也要符合这种命名规范。推动这种盘符名称的变化会给运维带来很大的风险和代价。
对于现有技术来说,如图6所示,为sd_mod驱动分配盘符的流程图。
步骤S601,磁盘请求内核分配盘符。
步骤S602,内核调用sd_mod驱动。
步骤S603,sd_mod调用sd_probe函数。
步骤S604,sd_probe访问bitmap(0)。
步骤S605,判断sda是否占用。
步骤S606,如果判断sda未被占用,为磁盘分配该盘符。
步骤S607,如果判断sda被占用,访问下一个bitmap所对应的sd盘符。
步骤S608,判断盘符是否占用。
步骤S609,如果判断盘符未被占用,为磁盘分配该盘符;如果判断盘符被占用,则执行步骤S607。
步骤S610,完成盘符分配。
进一步地,sd_mod中分配盘符的函数叫做sd_probe,它传入一个device结构体指针,并根据device的信息读出请求分配盘符的SATA设备的信息,同时分配盘符。所有从a至z的盘符都存在于一个bitmap中,如表三所示:
bitmap起始值 | 起始访问盘符 |
0 | sda |
1 | sdb |
2 | sdc |
3 | sdd |
4 | sde |
5 | sdf |
6 | sdg |
7 | sdh |
8 | sdi |
9 | sdj |
10 | sdk |
11 | sdl |
… | sd… |
25 | sdz |
表三
sd_probe通过访问bitmap(0)从第一个盘符sda依次进行遍历,如果发现有盘符没有被占用的,就将该盘符标示为占用并将该盘符分配给请求分配盘符的磁盘。这样如果某个槽位的磁盘启动比较快,就会提前占用错误的盘符,最终导致乱序的问题发生。
发明内容
本发明的目的旨在至少解决所述技术缺陷之一。
为此,本发明的一个目的在于提出一种基于Linux下的磁盘的盘符正确分配方法,该方法能够完全兼容现有的硬件和软件运维方案,消除了因为盘符命名规则不一致而引发的硬件和软件运维兼容性的问题,大大降低了因为运维方式变更而产生的风险和成本代价,且具有高效性与易用性。本发明的第二个目的在于提出一种基于Linux下的磁盘的盘符正确分配的装置。
为了实现上述目的,本发明第一方面的实施例提供一种基于Linux下磁盘的盘符正确分配方法,包括以下步骤:在检测到磁盘的盘符分配请求时,检测所述磁盘的芯片类型,如果所述磁盘的芯片类型为SCU芯片,则内核调用盘符分配驱动;所述盘符分配驱动根据所述磁盘的总线ID和物理ID计算所述磁盘对应的位图起始访问值;所述盘符分配驱动访问所述位图起始访问值开始,从所述位图起始访问值对应的所述盘符依次进行遍历;以及所述盘符分配驱动判断进行遍历的所述盘符是否被占用,如果所述盘符未被占用,则将当前位图值所对应的所述盘符分配至所述磁盘。
根据本发明实施例的一种基于Linux下的磁盘的盘符正确分配方法,在检测到磁盘的盘符分配请求时,检测磁盘的芯片类型,当判断磁盘的芯片类型为SCU芯片,则内核调用盘符分配驱动,盘符分配驱动根据磁盘的总线ID和物理ID计算磁盘对应的位图起始访问值,继而盘符分配驱动访问位图起始访问值开始,从位图起始访问值对应的盘符依次进行遍历判断盘符是否被占用。该方法能够完全兼容现有的硬件和软件运维方案,消除了因为盘符命名规则不一致而引发的硬件和软件运维兼容性的问题,大大降低了因为运维方式变更而产生的风险和成本代价,且具有高效性与易用性。
在本发明的一个实施例中,检测所述磁盘上的芯片类型是否为domain设备,以便判断所述磁盘的芯片类型是否为SCU芯片。由此,提高了正确分配磁盘的盘符的适用性。
在本发明的一个实施例中,所述盘符分配驱动根据所述磁盘的总线ID和物理ID计算所述磁盘对应的位图起始访问值还包括:所述盘符分配函数传入一个设备结构体指针,并根据所述设备的信息读出请求盘符分配的所述磁盘的信息,同时进行盘符分配。由此,提高了根据磁盘的总线ID和物理ID计算磁盘对应的位图的准确性与简易性。
在本发明的一个实施例中,如果所述磁盘的芯片类型为SCU芯片,则所对应的位图起始访问值=4*(SCU的总线ID值-5)+物理ID。由此,提高了在判断为SCU芯片时,位图起始访问值的精准性。
在本发明的一个实施例中,如果所述磁盘的芯片类型为AHCI芯片,则所对应的位图起始访问值=AHCI的总线ID值。由此,提高了在判断为AHCI芯片时,位图起始访问值的精准性。
在本发明的一个实施例中,所述盘符分配驱动根据所述磁盘的总线ID和物理ID计算所述磁盘对应的位图起始访问值进一步包括:所述盘符分配驱动调用盘符分配函数,以利用所述盘符分配函数实现所述磁盘对应的位图起始访问值的计算。由此,提到了根据磁盘的总线ID和物理ID计算磁盘对应的位图的准确性与简易性。
在本发明的一个实施例中,判断进行遍历的所述盘符是否被占用,如果所述盘符被占用,继续访问所述当前位图值的下一位图值所对应的所述盘符,判断所述盘符是否被占用,如果所述盘符未被占用,则对所述盘符进行分配。由此,提高了盘符进行分配的高效性与易用性。
本发明第二方面的实施例提出一种基于Linux下的磁盘的盘符正确分配装置,包括:内核,用于检测是否接收到磁盘的盘符分配请求,如果是,则检测所述磁盘的芯片类型,如果所述磁盘的芯片类型为SCU芯片,则调用盘符分配驱动模块;所述盘符分配驱动模块,用于根据所述磁盘的总线ID和物理ID计算所述磁盘对应的位图起始访问值;访问所述位图起始访问值开始,从所述位图起始访问值对应的所述盘符依次进行遍历;以及所述盘符分配驱动模块判断进行遍历的所述盘符是否被占用,如果所述盘符未被占用,则将当前位图值所对应的所述盘符分配至所述磁盘。
根据本发明实施例的一种基于Linux下的磁盘的盘符正确分配装置,在检测到磁盘的盘符分配请求时,检测磁盘的芯片类型,当判断磁盘的芯片类型为SCU芯片,则内核调用盘符分配驱动,盘符分配驱动根据磁盘的总线ID和物理ID计算磁盘对应的位图起始访问值,继而盘符分配驱动访问位图起始访问值开始,从位图起始访问值对应的盘符依次进行遍历判断盘符是否被占用。该装置能够完全兼容现有的硬件和软件运维方案,消除了因为盘符命名规则不一致而引发的硬件和软件运维兼容性的问题,大大降低了因为运维方式变更而产生的风险和成本代价,且具有高效性与易用性。
在本发明的一个实施例中,所述内核用于检测所述磁盘上的芯片类型是否为domain设备,如果是,则判断所述磁盘的芯片类型为SCU芯片。由此,提高了正确分配磁盘的盘符的适用性。
在本发明的一个实施例中,所述盘符分配驱动模块还包括:调用单元,用于调用盘符分配函数,以利用所述盘符分配函数实现所述磁盘对应的位图起始访问值的计算。由此,提高了盘符进行分配的高效性与易用性。
在本发明的一个实施例中,所述盘符分配驱动模块通过所述盘符分配函数传入一个设备结构体指针,并根据所述设备的信息读出请求盘符分配的所述磁盘的信息,同时进行盘符分配。由此,提高了根据磁盘的总线ID和物理ID计算磁盘对应的位图的准确性与简易性。
在本发明的一个实施例中,如果所述磁盘的芯片类型为SCU芯片,则所述盘符分配驱动模块计算所对应的位图起始访问值=4*(SCU的总线ID值-5)+物理ID。由此,提高了在判断为SCU芯片时,位图起始访问值的精准性。
在本发明的一个实施例中,如果所述磁盘的芯片类型为AHCI芯片,则所述盘符分配驱动模块计算所对应的位图起始访问值=AHCI的总线ID值。由此,提高了在判断为AHCI芯片时,位图起始访问值的精准性。
在本发明的一个实施例中,所述盘符分配驱动模块还用于判断进行遍历的所述盘符是否被占用,如果所述盘符被占用,继续访问所述当前位图值的下一位图值所对应的所述盘符,判断所述盘符是否被占用,如果所述盘符未被占用,则对所述盘符进行分配。由此,提高了盘符进行分配的高效性与易用性。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明实施例的基于Linux下的磁盘的盘符正确分配方法的流程图;
图2为根据本发明另一实施例的基于Linux下的磁盘的盘符正确分配方法的流程图;
图3为解决盘符乱序的流程原理图;
图4为根据本发明实施例的基于Linux下的磁盘的盘符正确分配装置的结构示意图;
图5为根据本发明另一实施例的基于Linux下的磁盘的盘符正确分配装置的结构示意图;以及
图6为现有的sd_mod驱动分配盘符的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
图1为根据本发明实施例的基于Linux下的磁盘的盘符正确分配方法流程图。
步骤S101,在检测到磁盘的盘符分配请求时,检测磁盘的芯片类型,如果磁盘的芯片类型为SCU芯片,则内核调用盘符分配驱动。
具体地,检测磁盘上的芯片类型是否为domain设备,以便判断磁盘的芯片类型是否为SCU芯片,继而如果磁盘的芯片类型为SCU芯片,则内核调用盘符分配驱动。
步骤S102,盘符分配驱动根据磁盘的总线ID和物理ID计算磁盘对应的位图起始访问值。
具体地,盘符分配函数传入一个设备结构体指针,并根据设备的信息读出请求盘符分配的磁盘的信息,同时进行盘符分配,且盘符分配驱动调用盘符分配函数,以通过盘符分配函数实现磁盘对应的位图起始访问值的计算。
进一步地,如果磁盘的芯片类型为SCU芯片,则所对应的位图起始访问值=4*(SCU的总线ID值-5)+物理ID;如果磁盘的芯片类型为AHCI芯片,则所对应的位图起始访问值=AHCI的总线ID值。
步骤S103,盘符分配驱动访问位图起始访问值开始,从位图起始访问值对应的盘符依次进行遍历。
步骤S104,盘符分配驱动判断进行遍历的盘符是否被占用,如果盘符未被占用,则将当前位图值所对应的盘符分配至磁盘。
图2为根据本发明另一实施例的基于Linux下的磁盘的盘符正确分配方法流程图。
还包括步骤S105,判断进行遍历的盘符是否被占用,如果盘符被占用,继续访问当前位图值的下一位图值所对应的盘符,判断盘符是否被占用,如果盘符未被占用,则对盘符进行分配。
根据本发明实施例的一种基于Linux下的磁盘的盘符正确分配方法,在检测到磁盘的盘符分配请求时,检测磁盘的芯片类型,当判断磁盘的芯片类型为SCU芯片,则内核调用盘符分配驱动,盘符分配驱动根据磁盘的总线ID和物理ID计算磁盘对应的位图起始访问值,继而盘符分配驱动访问位图起始访问值开始,从位图起始访问值对应的盘符依次进行遍历判断盘符是否被占用。该方法能够完全兼容现有的硬件和软件运维方案,消除了因为盘符命名规则不一致而引发的硬件和软件运维兼容性的问题,大大降低了因为运维方式变更而产生的风险和成本代价,且具有高效性与易用性。
图3为解决盘符乱序的流程原理图。
步骤S301,磁盘请求内核分配盘符。
步骤S302,内核调用sd_mod驱动。
步骤S303,sd_mod调用sd_probe函数。
步骤S304,根据磁盘的总线ID和物理ID算出bitmap的起始值x。
步骤S305,sd_probe访问bitmap(x),并设n=1。
步骤S306,判断sdx是否占用。
步骤S307,如果判断sdx未被占用,为磁盘分配bitmap(x)所对应的盘符sdx。
步骤S308,如果判断sdx被占用,访问bitmap(x+n)所对应的盘符sd(x+n)。
步骤S309,判断sd(x+n)是否占用。
步骤S310,如果判断sd(x+n)未被占用,分配盘符sd(x+n)。
步骤S311,如果判断sd(x+n)被占用,则执行n=n+1,并跳转到步骤S308。
步骤S312,完成盘符分配。
本方法可以在Linux下完全解决IntelC600主板芯片组AHCI和SCU磁盘接口芯片混用的硬件环境下磁盘盘符乱序的问题,且相比通过udev创建符号链接的解决方法,本方法又能够完全兼容现有的硬件和软件运维方案,消除了因为盘符命名规则不一致而引发的硬件和软件运维兼容性问题,大大地降低了因为运维方式变更而产生的风险和成本代价。
图4为根据本发明实施例的基于Linux下的磁盘的盘符正确分配装置的结构示意图。
如图4所示,基于Linux下的磁盘的盘符正确分配装置400包括:内核410,用于检测是否接收到磁盘的盘符分配请求,如果是,则检测磁盘的芯片类型,如果磁盘的芯片类型为SCU芯片,则调用盘符分配驱动模块420,其中,内核410用于检测磁盘上的芯片类型是否为domain设备,如果是,则判断磁盘的芯片类型为SCU芯片,继而盘符分配驱动模块420,根据磁盘的总线ID和物理ID计算磁盘对应的位图起始访问值;访问位图起始访问值开始,从位图起始访问值对应的盘符依次进行遍历;以及盘符分配驱动模块420判断进行遍历的盘符是否被占用,如果盘符未被占用,则将当前位图值所对应的盘符分配至磁盘。
具体地,如果磁盘的芯片类型为SCU芯片,则盘符分配驱动模块420计算所对应的位图起始访问值=4*(SCU的总线ID值-5)+物理ID;如果磁盘的芯片类型为AHCI芯片,则盘符分配驱动模块420计算所对应的位图起始访问值=AHCI的总线ID值。按照以上算法修改sd_mod驱动源码后即可解决盘符乱序的问题,如表四所示:
表四
进一步地,盘符分配驱动模块420还用于判断进行遍历的盘符是否被占用,如果盘符被占用,继续访问当前位图值的下一位图值所对应的盘符,判断盘符是否被占用,如果盘符未被占用,则对盘符进行分配。
图5为根据本发明另一实施例的基于Linux下的磁盘的盘符正确分配装置的结构示意图。
如图5所示,基于Linux下的磁盘的盘符正确分配装置400,盘符分配驱动模块还包括:调用单元421,调用盘符分配函数,以通过盘符分配函数实现磁盘对应的位图起始访问值的计算。
进一步地,盘符分配驱动模块420通过盘符分配函数传入一个设备结构体指针,并根据设备的信息读出请求盘符分配的磁盘的信息,同时进行盘符分配。
根据本发明实施例的一种基于Linux下的磁盘的盘符正确分配装置,在检测到磁盘的盘符分配请求时,检测磁盘的芯片类型,当判断磁盘的芯片类型为SCU芯片,则内核调用盘符分配驱动,盘符分配驱动根据磁盘的总线ID和物理ID计算磁盘对应的位图起始访问值,继而盘符分配驱动访问位图起始访问值开始,从位图起始访问值对应的盘符依次进行遍历判断盘符是否被占用。该装置能够完全兼容现有的硬件和软件运维方案,消除了因为盘符命名规则不一致而引发的硬件和软件运维兼容性的问题,大大降低了因为运维方式变更而产生的风险和成本代价,且具有高效性与易用性。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。本发明的范围由所附权利要求极其等同限定。
Claims (14)
1.一种基于Linux下的磁盘的盘符正确分配方法,包括如下步骤:
在检测到磁盘的盘符分配请求时,检测所述磁盘的芯片类型,如果所述磁盘的芯片类型为SCU芯片,则内核调用盘符分配驱动;
所述盘符分配驱动根据所述磁盘的总线ID和物理ID计算所述磁盘对应的位图起始访问值;
所述盘符分配驱动访问所述位图起始访问值开始,从所述位图起始访问值对应的所述盘符依次进行遍历;以及
所述盘符分配驱动判断进行遍历的所述盘符是否被占用,如果所述盘符未被占用,则将当前位图值所对应的所述盘符分配至所述磁盘。
2.如权利要求1所述的基于Linux下的磁盘的盘符正确分配方法,其特征在于,检测所述磁盘上的芯片类型是否为domain设备,如果是,则判断所述磁盘的芯片类型为SCU芯片。
3.如权利要求1所述的基于Linux下的磁盘的盘符正确分配方法,其特征在于,所述盘符分配驱动根据所述磁盘的总线ID和物理ID计算所述磁盘对应的位图起始访问值还包括:
盘符分配函数传入一个设备结构体指针,并根据所述设备的信息读出请求盘符分配的所述磁盘的信息,同时进行盘符分配。
4.如权利要求1所述的基于Linux下的磁盘的盘符正确分配方法,其特征在于,如果所述磁盘的芯片类型为SCU芯片,则所对应的位图起始访问值=4*(SCU的总线ID值-5)+物理ID。
5.如权利要求1所述的基于Linux下的磁盘的盘符正确分配方法,其特征在于,如果所述磁盘的芯片类型为AHCI芯片,则所对应的位图起始访问值=AHCI的总线ID值。
6.如权利要求1所述的基于Linux下的磁盘的盘符正确分配方法,其特征在于,所述盘符分配驱动根据所述磁盘的总线ID和物理ID计算所述磁盘对应的位图起始访问值进一步包括:所述盘符分配驱动调用盘符分配函数,以通过所述盘符分配函数实现所述磁盘对应的位图起始访问值的计算。
7.如权利要求1所述的基于Linux下的磁盘的盘符正确分配方法,其特征在于,还包括:
判断进行遍历的所述盘符是否被占用,如果所述盘符被占用,继续访问所述当前位图值的下一位图值所对应的所述盘符,判断所述盘符是否被占用,如果所述盘符未被占用,则对所述盘符进行分配。
8.一种基于Linux下的磁盘的盘符正确分配装置,包括:
内核,用于检测是否接收到磁盘的盘符分配请求,如果是,则检测所述磁盘的芯片类型,如果所述磁盘的芯片类型为SCU芯片,则调用盘符分配驱动模块;
所述盘符分配驱动模块,用于根据所述磁盘的总线ID和物理ID计算所述磁盘对应的位图起始访问值,访问所述位图起始访问值开始,从所述位图起始访问值对应的所述盘符依次进行遍历,以及所述盘符分配驱动模块判断进行遍历的所述盘符是否被占用,如果所述盘符未被占用,则将当前位图值所对应的所述盘符分配至所述磁盘。
9.如权利要求8所述的装置,其特征在于,所述内核用于检测所述磁盘上的芯片类型是否为domain设备,如果是,则判断所述磁盘的芯片类型为SCU芯片。
10.如权利要求8所述的装置,其特征在于,所述盘符分配驱动模块还包括:
调用单元,用于调用盘符分配函数,以通过所述盘符分配函数实现所述磁盘对应的位图起始访问值的计算。
11.如权利要求8所述的装置,其特征在于,所述盘符分配驱动模块通过盘符分配函数传入一个设备结构体指针,并根据所述设备的信息读出请求盘符分配的所述磁盘的信息,同时进行盘符分配。
12.如权利要求8所述的装置,其特征在于,如果所述磁盘的芯片类型为SCU芯片,则所述盘符分配驱动模块计算所对应的位图起始访问值=4*(SCU的总线ID值-5)+物理ID。
13.如权利要求8所述的装置,其特征在于,如果所述磁盘的芯片类型为AHCI芯片,则所述盘符分配驱动模块计算所对应的位图起始访问值=AHCI的总线ID值。
14.如权利要求8所述的装置,其特征在于,所述盘符分配驱动模块还用于判断进行遍历的所述盘符是否被占用,如果所述盘符被占用,继续访问所述当前位图值的下一位图值所对应的所述盘符,判断所述盘符是否被占用,如果所述盘符未被占用,则对所述盘符进行分配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310064587.8A CN103150126B (zh) | 2013-02-28 | 2013-02-28 | 基于Linux下的磁盘的盘符正确分配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310064587.8A CN103150126B (zh) | 2013-02-28 | 2013-02-28 | 基于Linux下的磁盘的盘符正确分配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150126A CN103150126A (zh) | 2013-06-12 |
CN103150126B true CN103150126B (zh) | 2016-02-10 |
Family
ID=48548234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310064587.8A Active CN103150126B (zh) | 2013-02-28 | 2013-02-28 | 基于Linux下的磁盘的盘符正确分配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103150126B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823730A (zh) * | 2014-02-27 | 2014-05-28 | 山东超越数控电子有限公司 | 一种基于国产磁盘阵列的盘符检测方法 |
CN104461402B (zh) * | 2014-12-29 | 2018-04-06 | 浪潮电子信息产业股份有限公司 | 一种linux系统下多控制器间调整磁盘顺序的方法 |
CN104699423B (zh) * | 2015-03-13 | 2018-08-21 | 华为技术有限公司 | Linux系统中绑定盘符的方法和装置 |
CN106469103B (zh) * | 2015-08-14 | 2019-10-18 | 华为软件技术有限公司 | 硬盘的维护方法和装置 |
CN107577581A (zh) * | 2017-09-19 | 2018-01-12 | 郑州云海信息技术有限公司 | 一种快速检测linux系统内所有SSD磁盘的方法 |
CN110286945A (zh) * | 2019-06-03 | 2019-09-27 | 昆山中科凌云网络智能科技有限公司 | 一种基于wds的网刻系统安装方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681310B1 (en) * | 1999-11-29 | 2004-01-20 | Microsoft Corporation | Storage management system having common volume manager |
CN1661573A (zh) * | 2004-02-24 | 2005-08-31 | 深圳市朗科科技有限公司 | 移动存储装置的盘符管理方法 |
CN101876885A (zh) * | 2010-06-18 | 2010-11-03 | 中兴通讯股份有限公司 | 一种分配逻辑盘符的方法及设备 |
CN102789371A (zh) * | 2012-07-27 | 2012-11-21 | 曙光信息产业(北京)有限公司 | 硬盘盘符分配方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7730358B2 (en) * | 2007-10-24 | 2010-06-01 | Inventec Corporation | Stress testing method of file system |
-
2013
- 2013-02-28 CN CN201310064587.8A patent/CN103150126B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681310B1 (en) * | 1999-11-29 | 2004-01-20 | Microsoft Corporation | Storage management system having common volume manager |
CN1661573A (zh) * | 2004-02-24 | 2005-08-31 | 深圳市朗科科技有限公司 | 移动存储装置的盘符管理方法 |
CN101876885A (zh) * | 2010-06-18 | 2010-11-03 | 中兴通讯股份有限公司 | 一种分配逻辑盘符的方法及设备 |
CN102789371A (zh) * | 2012-07-27 | 2012-11-21 | 曙光信息产业(北京)有限公司 | 硬盘盘符分配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103150126A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103150126B (zh) | 基于Linux下的磁盘的盘符正确分配方法及装置 | |
US9811454B2 (en) | Creating logical disk drives for raid subsystems | |
CN107832199A (zh) | 基于cpld的硬盘监控系统 | |
CN100568187C (zh) | 一种用于对调试消息进行掩码的方法和装置 | |
CN102323912B (zh) | 用于与异构双列直插式存储器模块接口连接的方法和装置 | |
CN107710141A (zh) | 固态硬盘倍增器和利用其的多设备机架系统和计算机系统 | |
US20100312961A1 (en) | Method and system for storing excess data in a redundant array of independent disk level 6 | |
CN102968370B (zh) | 一种测试数据生成方法及装置 | |
US20090193158A1 (en) | Storage system, device controller, and improper cable connection determination method | |
US20080077736A1 (en) | Method and apparatus of a RAID configuration module | |
CN104317694A (zh) | 一种整机测试方法及装置 | |
CN103631688A (zh) | 一种测试接口信号的方法及系统 | |
CN103176913B (zh) | 硬盘动态映射方法与应用其的服务器 | |
CN103729321A (zh) | 一种管理设备和多扩展器芯片管理方法 | |
CN106708620A (zh) | 一种处理数据的方法及系统 | |
CN102867158B (zh) | 一种切换内存的方法、装置及具有双系统的终端 | |
CN103197999A (zh) | 一种内存故障自动定位方法及装置 | |
CN105634635B (zh) | 一种共享rtc的方法、装置和系统 | |
CN111294413B (zh) | 一种互联网协议ip地址的确定方法、装置和可读介质 | |
EP1956486A2 (en) | Failure processing in a partitioned computer system | |
CN107112043A (zh) | 支持不同类型的存储器装置 | |
US20150161069A1 (en) | Handling two sgpio channels using single sgpio decoder on a backplane controller | |
US8856441B2 (en) | Dynamic hard disk mapping method and server using the same | |
CN207115406U (zh) | 一种fpga加速板卡及服务器集群 | |
CN117215374A (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 |