发明内容
本发明实施例提供一种硬盘阵列的读/写方法及装置、网络设备,用以提高硬盘阵列的可靠性,保证硬盘阵列读/写的正常进行。
本发明实施例提供了一种硬盘阵列的读/写方法,所述硬盘阵列包括至少两个硬盘,所述方法包括:
根据预先设置的偏移策略,获取每个硬盘的磁头臂的偏移地址;
根据读/写请求中的地址和所述每个硬盘的磁头臂的偏移地址,确定所述每个硬盘的磁头臂的实际地址;
控制所述磁头臂从所述实际地址对应的位置开始,进行读/写操作。
本发明实施例还提供了一种硬盘阵列的读/写装置,所述硬盘阵列包括硬盘控制器和至少两个硬盘,所述装置包括:
获取单元,用于根据预先设置的偏移策略,获取每个硬盘的磁头臂的偏移地址;
确定单元,用于根据读/写请求中的地址和所述每个硬盘的磁头臂的偏移地址,确定所述每个硬盘的磁头臂的实际地址;
控制单元,用于控制所述磁头臂从所述实际地址对应的位置开始,进行读/写操作。
本发明实施例又提供了一种网络设备,包含上述硬盘阵列的读/写装置。
由上述技术方案可知,本发明实施例通过获取每个硬盘的磁头臂的偏移地址,进而根据读/写请求中的地址和上述每个硬盘的磁头臂的偏移地址,确定上述每个硬盘的磁头臂的实际地址,使得能够控制上述磁头臂从上述实际地址对应的位置开始,进行读/写操作,由于硬盘的磁头臂的实际位置与根据读/写请求中的地址之间存在偏移,所以在硬盘阵列进行读/写操作时,会使得硬盘阵列中的部分硬盘的磁头臂的摆动方向不相同,能够减少共振发生的可能性,提高了硬盘阵列的可靠性,从而能够保证硬盘阵列读/写的正常进行。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的硬盘阵列的读/写方法的流程示意图,本实施例中的硬盘阵列可以包括至少两个硬盘。如图1所示,本实施例的硬盘阵列的读/写方法可以包括:
101、根据预先设置的偏移策略,获取每个硬盘的磁头臂的偏移地址;
可选地,在获取的每个硬盘的磁头臂的偏移地址中,相邻硬盘的磁头臂的偏移地址可以是不相同的。其中的相邻硬盘可以理解为相邻一个硬盘,例如,A硬盘和与其相邻的B硬盘,共两个硬盘,或者还可以理解为相邻至少两个硬盘,例如A硬盘、与A硬盘相邻的B硬盘、与B硬盘相邻的C硬盘,共三个硬盘;
需要说明的是:预先设置的偏移策略可以针对全部硬盘,也可以针对部分硬盘,本实施例对此不进行限制。例如:如果是针对部分硬盘,101中,则可以相应的获取到其他部分硬盘的磁头臂的偏移地址为0,即没有发生偏移。
102、根据读/写请求中的地址和上述每个硬盘的磁头臂的偏移地址,确定上述每个硬盘的磁头臂的实际地址;
例如,将读/写请求中的地址加上每个硬盘的磁头臂的偏移地址,则可以确定出每个硬盘的磁头臂的实际地址;
103、控制上述磁头臂从上述实际地址对应的位置开始,进行读/写操作。
上述101~103的执行主体可以为硬盘阵列,具体为硬盘阵列中的硬盘控制器。
需要说明的是:由于读操作和写操作是有先后顺序的,所以在本实施例中,可以先执行上述101~103中的写操作,然后再执行上述101~103中的读操作。具体的,根据硬盘阵列目前的读/写情况确定。
可选地,101中,硬盘阵列可以根据上述每个硬盘的绝对盘位,获得上述每个硬盘的偏移因子,进而再根据上述偏移因子,确定上述每个硬盘的磁头臂的偏移地址。
例如:假设硬盘阵列中有M个硬盘,硬盘的总空间为T块(Sector),那么偏移因子可以为硬盘的总空间T除以硬盘的总个数M即T/M,继而可以根据公式(N-1)T/M,获得第N个硬盘的磁头臂的偏移地址:第一个硬盘(DISK0)的磁头臂的偏移地址为0T/M(即0),硬盘控制器则可以控制磁头臂从0块开始进行读/写操作;第二个硬盘(DISK2)的磁头臂的偏移地址为T/M块,硬盘控制器则可以控制磁头臂从T/M块开始进行读/写操作;第三个硬盘(DISK3)的磁头臂的偏移地址为2T/M块,硬盘控制器则可以控制磁头臂从2T/M块开始进行读/写操作;第四个硬盘(DISK4)的磁头臂的偏移地址为3T/M块,硬盘控制器则可以控制磁头臂从3T/M块开始进行读/写操作;依次类推,直到第M个硬盘(DISK0),第M个硬盘(DISKM)的磁头臂的偏移地址为(M-1)T/M块,从(M-1)T/M块开始进行读/写操作。
例如:如表1所示。
表1 硬盘阵列中硬盘的位置编号
根据上述方法,可以确定上述每个硬盘的磁头臂的偏移地址,如表2所示。
表2硬盘阵列中硬盘的物理位置映射出的偏移位置
0123456789AB |
3456789AB012 |
6789AB012345 |
9AB012345678 |
如果访问完第0块,再访问第6块,磁头臂的摆动相位可以如表3中的箭头所示。
表3硬盘阵列中硬盘的磁头臂的摆动相位
在表3中,每个硬盘的磁头臂的摆动相位用箭头表示。
因此根据表3中的箭头方向可以看到,在同一时刻,硬盘阵列中的部分硬盘的磁头臂往右摆,部分硬盘的磁头臂往左摆,减少了共振发生的可能性。
可选地,101中,硬盘阵列可以根据上述每个硬盘的相对盘位,获得上述每个硬盘的偏移因子,进而再根据上述偏移因子,确定上述每个硬盘的磁头臂的偏移地址。例如:假设硬盘阵列中有H×V个硬盘,硬盘的总空间为T块,假设硬盘的位置编号的行数为H,列数为V,那么偏移因子可以为硬盘的总空间T除以硬盘的总行数H即T/H,继而可以根据公式(N-1)T/H,获得第N行奇数个硬盘的磁头臂的偏移地址;并根据公式(N-1)T/H+T/2,获得第N行偶数个硬盘的磁头臂的偏移地址。例如:硬盘阵列中以行列进行硬盘的位置编号,如表4所示。
表4 硬盘阵列中硬盘的位置编号
DISK0(0,0) |
DISK1(0,1) |
DISK2(0,2) |
DISK3(0,3) |
DISK4(1,0) |
DISK5(1,1) |
DISK6(1,2) |
DISK7(1,3) |
DISK8(2,0) |
DISK9(2,1) |
DISK10(2,2) |
DISK11(2,3) |
根据上述方法,可以确定上述每个硬盘的磁头臂的偏移地址,如表5所示。
表5硬盘阵列中硬盘的物理位置映射出的偏移位置
0123456789AB |
6789AB012345 |
0123456789AB |
6789AB012345 |
456789AB0123 |
AB0123456789 |
456789AB0123 |
AB0123456789 |
89AB01234567 |
23456789AB01 |
89AB01234567 |
23456789AB01 |
如果访问完第0块,再访问第6块,磁头臂的摆动相位可以如表6中的箭头所示。
表6硬盘阵列中硬盘的磁头臂的摆动相位
在表6中,每个硬盘的磁头臂的摆动相位用箭头表示。
因此根据表6中的箭头方向可以看到,在同一时刻,硬盘阵列中的部分硬盘的磁头臂往右摆,部分硬盘的磁头臂往左摆,减少了共振发生的可能性。
可以理解的是,硬盘阵列还可以结合上述两种方法,共同确定每个硬盘的偏移因子,进而再根据上述偏移因子,确定上述每个硬盘的磁头臂的偏移地址。
本实施例中,通过获取每个硬盘的磁头臂的偏移地址,进而根据读/写请求中的地址和上述每个硬盘的磁头臂的偏移地址,确定上述每个硬盘的磁头臂的实际地址,使得能够控制上述磁头臂从上述实际地址对应的位置开始,进行读/写操作,由于硬盘的磁头臂的实际位置与根据读/写请求中的地址之间存在偏移,所以在硬盘阵列进行读/写操作时,会使得硬盘阵列中的部分硬盘的磁头臂的摆动方向不相同,能够减少共振发生的可能性,提高了硬盘阵列的可靠性,从而能够保证硬盘阵列读/写的正常进行。
需要说明的是:本领域人员应该知道,在其他实施例中,未必需要所有硬盘都进行便宜,因为只要至少一个硬盘进行了偏移,就可以改善现有技术存在的问题。此外,虽然本发明实施例虽然列出了几种计算偏移地址的具体方法,但是,本领域人员应该知道,还可以有更多其他各种偏移算法,例如可以将前述的公式(N-1)T/M修改为2(N-1)T/M,或者人工指定各个硬 盘的偏移地址,只要能实现至少一个硬盘的读/写地址产生了实际的偏移即可。
需要说明的是:对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图2为本发明另一实施例提供的硬盘阵列的读/写装置的结构示意图,如图2所示,本实施例的硬盘阵列可以包括硬盘控制器和至少两个硬盘。其中,硬盘阵列的读/写装置可以包括获取单元31、确定单元32和控制单元33。其中,获取单元31用于根据预先设置的偏移策略,获取每个硬盘的磁头臂的偏移地址;确定单元32用于根据读/写请求中的地址和获取单元31获取的上述每个硬盘的磁头臂的偏移地址,确定上述每个硬盘的磁头臂的实际地址;控制单元33用于控制上述磁头臂从确定单元32确定的上述实际地址对应的位置开始,进行读/写操作。
可选地,相邻硬盘的磁头臂的偏移地址是不相同的,其中的相邻硬盘可以理解为相邻一个硬盘,或者还可以理解为相邻至少两个硬盘。
进一步地,如图3所示,本实施例中的获取单元31至少可以包括以下子单元中的一个:
第一获取子单元41,用于根据上述每个硬盘的绝对盘位,获得上述每个硬盘的偏移因子,根据上述偏移因子,确定上述每个硬盘的磁头臂的偏移地址;
第二获取子单元42,用于根据上述每个硬盘的相对盘位,获得上述每个硬盘的偏移因子,根据上述偏移因子,确定上述每个硬盘的磁头臂的偏移地址。
需要指出的是,图3中仅示出了同时包括第一获取子单元41和第二获取子单元42的情况,在可选的实施例中,也可以仅包括上述两个子单元中的一个。
本实施例中,通过获取单元获取每个硬盘的磁头臂的偏移地址,进而由确定单元根据读/写请求中的地址和上述每个硬盘的磁头臂的偏移地址,确定上述每个硬盘的磁头臂的实际地址,使得操作单元能够控制上述磁头臂从上述实际地址对应的位置开始,进行读/写操作,由于硬盘的磁头臂的实际位置与根据读/写请求中的地址之间存在偏移,所以在硬盘阵列进行读/写操作时,会使得硬盘阵列中的部分硬盘的磁头臂的摆动方向不相同,能够减少共振发生的可能性,提高了硬盘阵列的可靠性,从而能够保证硬盘阵列读/写的正常进行。
本发明实施例还可以提供一种网络设备,包含上述图3对应的实施例提供的硬盘阵列的读/写装置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方, 或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。