具体实施方式
本发明实施例提供了一种独立磁盘冗余阵列的扩容方法、装置及系统,用于对已有的RAID组上的LUN进行扩容,提高了系统的稳定性。
需要说明的是,系统利用空闲磁盘创建RAID之后,可以在RAID上创建LUN,其中,至少一块磁盘组成的RAID可称为一个RAID组,创建的LUN中包含了RAID组中部分或全部的存储空间,在本发明实施例中,对LUN进行扩容实质上是对LUN对应的RAID的存储空间的扩容,因此,对LUN进行扩容也可称为对RAID进行扩容。
请参阅图1,为本发明实施例中一种独立磁盘冗余阵列的扩容方法,包括:
101、接收扩容请求消息;
独立磁盘冗余阵列(RAID,Redundant Array of Independent Disk)是一种由多块磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现的。系统创建RAID后,将在RAID上创建至少一个LUN,每个LUN都有一个能够识别特定逻辑单元的唯一编号,LUN的编号不等于某个设备,只是个单元号,不代表任何实体属性,在实际应用中,LUN所对应的物理设备可以是磁盘,或磁带机等等。
当有LUN需要进行扩容时,系统将接收到扩容请求消息,扩容请求消息中包含需要扩容的LUN的编号及LUN需要扩大的容量。
102、判断RAID组的剩余容量是否大于或等于LUN需要扩大的容量;
在存储系统中,包含空闲磁盘,已创建LUN的RAID组,未创建LUN的RAID组,及只有部分容量创建LUN的RAID组。RAID组的剩余容量是指RAID组中未创建LUN且未使用的容量,。系统接收到扩容请求消息之后将判断RAID组的剩余容量是否大于或等于扩容请求消息中LUN需要扩大的容量。
103、从RAID组的剩余容量中为需要扩容的LUN划分容量;
当RAID组的剩余容量大于或等于LUN需要扩大的容量时,系统将根据扩容请求消息从RAID组的剩余容量中为需要进行扩容的LUN划分容量,划分的容量等于LUN需要扩容的容量。
104、将划分的容量映射到对应的需要扩容的LUN中。
从RAID组的剩余容量中为需要扩容的LUN划分容量之后,系统将划分的容量映射到对应的需要扩容的LUN中,通过建立映射关系使得LUN的容量空间增加,实现对LUN进行扩容的目的。
在本发明实施例中,通过将RAID组的剩余容量进行划分并映射到需要扩容的LUN中,实现对LUN进行扩容的目的,通过将RAID组的容量映射到需要扩容的LUN中,使得在扩容之后不需要对LUN中的磁盘进行重新排列,不会破坏LUN中已有磁盘阵列的排列方式,可以有效的避免数据的迁移,提高了系统的性能。
为了更好的理解技术,下面将具体的描述对RAID组扩容的方法,请参阅图2,为本发明实施例中一种独立磁盘冗余阵列的扩容方法的另一实施例。
201、接收扩容请求消息;
系统接收到扩容请求消息时,说明系统中某些LUN需要进行扩容。系统接收到扩容请求消息有两种可能的情况,一种是当系统正在进行读写操作时,检测到将要写入数据的LUN的剩余容量不够存储将要写进的数据,系统将自动产生扩容指令,生成扩容请求消息。另一种情况是:用户的手动扩容操作将产生扩容指令,生成扩容请求消息。扩容请求消息中包含需要扩容的LUN的编号及LUN需要扩大的容量信息,例如扩容请求消息表明需要对LUN5和LUN7进行扩容,LUN5扩大的容量为36G,LUN7扩大的容量为72G。
202、判断RAID组的剩余容量是否大于或等于LUN需要扩大的容量,若是,则执行步骤203,若否,则执行204;
系统接收到扩容请求消息之后,将判断RAID组的剩余容量是否大于或等于LUN需要扩大的容量,RAID组的剩余容量是指已有RAID组中未创建LUN且未使用的容量。
203、从RAID组的剩余容量中为需要扩容的LUN划分容量,继续执行步骤206;
当RAID组的剩余容量大于或等于LUN需要扩大的容量时,从RAID组的剩余容量中为需要扩容的LUN划分容量,例如,若LUN5需要扩大的容量为36G,则从RAID组的剩余容量中为LUN5划分36G的容量,LUN7需要扩大的容量为72G,则从RAID组的剩余容量中为LUN7划分72G的容量。
204、选择空闲磁盘组创建至少一个用于扩大RAID组的剩余容量的第一RAID组;
当RAID组的剩余容量小于LUN需要扩大的容量是,则系统将新建用于扩大RAID组的剩余容量的第一RAID组,使得系统拥有的RAID组的剩余容量大于或等于LUN需要扩大的容量。
在本发明实施例中,系统将选择空闲磁盘组创建至少一个第一RAID组,其中,空闲磁盘组中包含至少两块空闲磁盘,且选择的用于创建第一RAID组的空闲磁盘组的容量要大于或等于LUN需要扩大的容量与RAID组的剩余容量的差值。
需要说明的是,创建的第一RAID组可以用于实现LUN的扩容,还可以根据系统的需要在创建的第一RAID组上创建LUN,在实际应用中,可以根据需要进行RAID组的创建,和/或进行LUN的创建,和/或,利用RAID组的剩余容量进行LUN的扩容。
需要说明的是,空闲磁盘组包含的磁盘的数目,第一RAID组的组数及每个第一RAID组的容量大小在实际应用中根据需要而定,此处不做限定,例如,若选择的空闲磁盘组包含9块磁盘,可以创建3个第一RAID组,每个RAID组中包含3块磁盘,也可以创建2个第一RAID组,其中一个第一RAID组包含4块磁盘,另一第一RAID组包含5块磁盘。
205、从扩大后的RAID组的剩余容量中为需要扩容的LUN划分容量;
在步骤204中,当RAID组中的剩余容量小于LUN需要扩大的容量时,通过创建第一RAID组使得RAID组的剩余容量扩大,扩大RAID组的剩余容量之后,系统将根据接收到的扩容请求消息中从扩大后的RAID组的剩余容量中为需要扩容的LUN划分容量,其中,扩大后的剩余容量包括系统中原有的RAID组的剩余容量及新创建的第一RAID组的容量。
206、将划分的容量映射到对应的需要扩容的LUN中。
系统为需要扩容的LUN划分容量之后,将把划分的容量映射到对应的需要扩容的LUN中,即将划分的容量与需要扩容的LUN建立映射关系,系统在写入数据时能够通过该映射关系获得LUN中划分的容量空间,达到扩容的目的。例如,将为LUN5划分的36G的容量空间映射到LUN5中,使得LUN5的容量增大36G,达到扩容的目的。在进行写操作时,当LUN5中原有的容量空间写满之后,系统将根据已建立的映射关系获取到划分的36G的容量空间,并继续写入数据,使得数据能够完整的写入。
需要说明的是,在本发明实施例中,可以通过资源池的基础上对空闲磁盘,LUN及剩余RAID组进行管理,且可以在资源池中进行RAID组的创建、LUN的创建及对LUN进行扩容等等操作,同时,当需要更多的容量空间来支撑业务发展时,可以在任意时刻将空闲磁盘移动到资源池中,实现扩大存储空间的目的,且移入的空闲磁盘可用于创建RAID组,可有效的扩大存储空间。
在资源池的基础上实现磁盘管理具体为:资源池是系统中原有的资源池,或者是新创建的资源池,其中创建资源池是系统根据接收到的创建资源池的指令执行的操作,接收到指令后,系统将根据指令获取若干个空闲磁盘创建资源池,资源池中的磁盘可以执行RAID组创建操作及LUN创建操作,在RAID组及LUN创建之后,系统可根据需要在LUN中写入数据,执行写操作,且当资源池中的LUN需要扩容时,执行LUN的扩容操作,当资源池的存储空间不够大时,可随时将空闲磁盘移动到资源池中。
在本发明实施例中,通过利用资源池可以方便的对空闲磁盘、RAID组和LUN进行管理;通过将空闲磁盘移入资源池中,利用资源池的空闲磁盘创建RAID组,可以有效的扩大存储空间;通过从RAID组的剩余容量中为需要扩容的LUN分配容量,不会破坏LUN中已有磁盘阵列的排列方式,有效避免了LUN中原有数据的迁移,提高了系统的稳定性;同时,LUN的容量可以在不同的RAID组中,提升了LUN的读写性能和重构性能。
请参阅图3,为本发明实施例一种独立磁盘冗余阵列的扩容装置的示意图,包括:
接收单元301,用于接收扩容请求消息,扩容请求消息包含需要进行扩容的逻辑单元号LUN的信息及LUN需要扩大的容量;
判断单元302,用于判断RAID组的剩余容量是否大于或等于LUN需要扩大的容量,RAID组的剩余容量是指已有RAID组中未创建LUN且未使用的容量;
第一划分单元303,用于当RAID组的剩余容量大于或等于LUN需要扩大的容量时,根据扩容请求消息从RAID组的剩余容量中为需要扩容的LUN划分容量;
映射单元304,用于将划分的容量映射到对应的需要扩容的LUN中。
在本发明实施例中,接收单元301接收到扩容请求消息之后,判断单元302将判断RAID组的剩余容量是否大于或等于LUN需要扩大的容量,当RAID组的剩余容量大于或等于LUN需要扩大的容量时,第一划分单元303将根据扩容请求消息从RAID组的剩余容量中为需要扩容的LUN划分容量,并由映射单元304将划分的容量映射到对应的需要扩容的LUN中,实现对LUN的扩容。
在本发明实施例中,通过将RAID组的剩余容量分配到需要扩容的LUN中,实现对已有的LUN进行扩容的目的,可以有效的避免数据的迁移。
为了更好的理解,请参阅图4,为本发明实施例一种独立磁盘冗余阵列的扩容装置的另一示意图,包括:
图3所示实施例中的接收单元301,判断单元302,第一划分单元303,映射单元304,且与图3所示实施例中描述的内容一致,此处不再赘述。
本发明实施的装置还包括:
创建单元401,用于当RAID组的剩余容量小于LUN需要扩大的容量时,根据扩容请求消息选择空闲磁盘组创建至少一个用于扩大RAID组的剩余容量的第一RAID组,其中空闲磁盘组的容量大于或等于LUN需要扩大的容量与RAID组的剩余容量的差值;
第二划分单元402,用于根据扩容请求消息从扩大后的RAID组的剩余容量中为需要扩容的LUN划分容量;
添加单元403,用于将空闲磁盘移动到资源池中。
在本发明实施例中,接收单元301接收到扩容请求消息之后,判断单元302将判断RAID组的剩余容量是否大于或等于LUN需要扩大的容量,当RAID组的剩余容量大于或等于LUN需要扩大的容量时,第一划分单元303将根据扩容请求消息从RAID组的剩余容量中为需要扩容的LUN划分容量,并由映射单元304将划分的容量映射到对应的需要扩容的LUN中,当RAID组的剩余容量小于LUN需要扩大的容量时,创建单元401将根据扩容请求消息选择磁盘组创建至少一个第一RAID组,第二划分单元402将根据扩容请求消息从RAID组的剩余容量及第一RAID组中为需要扩容的LUN划分容量,并由映射单元304将划分的容量映射到对应的需要扩容的LUN中,需要说明的是,在本发明实施例的装置中包含添加单元403,用于添加空闲磁盘到已创建的资源池中,添加的磁盘可用于创建新的RAID组,也可以在创建的RAID组上创建LUN。
在本发明实施例中,利用资源池可以方便的对空闲磁盘、RAID组和LUN进行管理;通过向资源池中添加空闲磁盘,利用资源池的空闲磁盘创建RAID组,可以有效的扩大存储空间;通过从RAID组的剩余容量中为需要扩容的LUN分配容量,不会扰乱LUN中已有磁盘阵列的排列方式,有效避免了LUN中原有数据的迁移,提高了系统的稳定性;LUN的容量可以在不同的RAID组中,提升了LUN的读写性能和重构性能。
下面对本发明扩容系统实施例进行描述,请参阅图5,为本发明实施例一种独立磁盘冗余阵列的扩容系统的实施例,包括:
扩容装置501及若干个物理磁盘502,扩容装置501与图4所示实施例描述的装置类似,此处不再赘述。
扩容装置501用于访问连接的所述若干个物理磁盘,并接收主机下发的I/O请求,物理磁盘502用于创建RAID组及LUN。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种独立磁盘冗余阵列的扩容方法、装置及系统进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。