基于磁盘特征的数据分布动态映射的方法

文档序号:6420477阅读:90来源:国知局
专利名称:基于磁盘特征的数据分布动态映射的方法
技术领域
基于磁盘特征的数据分布动态映射的方法属于存储区域网络SAN存储技术领域。
存储区域网络(SAN)等存储解决方案中,为了有效的管理和使用集中在一起的大批磁盘,采取了不同的存储空间管理方法。常用的方法是使用软件架构出虚拟的逻辑磁盘,通过逻辑地址和物理地址之间的映射,将物理磁盘的存储空间分配给逻辑磁盘,提供用户使用。这种方式在物理硬件上加入了韧性管理,使存储功能灵活、易扩展、易管理。目前,逻辑存储空间和物理磁盘之间的映射采用静态方法,映射粒度为单个物理磁盘或者物理磁盘分区。这种存储空间的映射方法存在一些不足灵活性差,在使用之前,已经将物理空间静态的分配给逻辑空间,使用过程中无法改变;没有充分利用物理磁盘的带宽,经常出现某些磁盘过于繁忙,而另一些磁盘空闲的情况。
本发明针对这些不足,在构架逻辑磁盘的存储管理软件中,引入已有的动态写技术到地址映射,并对其进行改进,针对硬磁盘的物理特征,提出基于磁盘特征的数据分布动态映射(map)方法,将数据灵活的、有效的分布到SAN存储系统的磁盘系统上。逻辑空间和物理空间之间的映射采用动态方法,映射粒度是数据块。同时,使用动态MAP方法从造成I/O性能瓶颈的根本原因——磁盘自身的物理特征出发,通过减少写请求的执行延迟,提高存储系统的性能;计算各物理磁盘负载情况,通过物理存储空间的动态分配,达到各物理磁盘的负载平衡,最大限度的使用磁盘的总带宽。

发明内容
本发明的目的在于提供一种基于磁盘特征的数据分部动态映射方法,它可以灵活管理存储空间,减少I/O延迟,实现磁盘空间的负载平衡和系统整体性能的提高。
本发明所述的方法的特征在于它是一种由FC-SAN中的存储管理控制机来执行的、把数据块作为映射粒度,动态地在逻辑空间和物理空间之间映射地方法;它依次含有以下步骤写请求(8)生成动态映射即map表,以逻辑地址为索引,全部单元清零;(9)存储节点控制机的存储管理模块从小型计算机系统接口即SCSI设备的中间层软件队列中获得写请求写数据到逻辑地址;(10)从物理磁盘中读取当前空间使用情况和命令队列长度,按下式计算各物理磁盘最近繁忙程度Bi,再根据数据复制数的要求,选取负载最小的一个或多个物理磁盘,为上述逻辑地址重新分配物理地址,存储写命令中的数据;Bi=a*Ui*CiUmax*Cmax+b*DiDmax,]]>其中,*为“乘”号,Ui为当前磁盘利用率,Umax为最大值,Ci为每个物理磁盘的容量,Cmax为最大值,Di为设备队列中等待传输的数据总长度,Dmax为最大值;(11)把数据分别存储到步骤(3)找到的一个或多个最佳的物理磁盘中,数据复制分别在前、后台执行,即把一个写请求放在前台执行,剩下的复制并排入到设备单独的后台写队列,在系统空闲时在后台完成;(12)在各物理设备队列中,对写请求进行适度合并;(13)在读请求执行的间隙,采用同时兼顾了寻道时间和物理磁盘旋转延迟时间的最短访问时间优先方法,计算当前物理磁头最小访问时间的空闲数据块,把该数据块的地址作为写请求的物理地址,改变写请求中的数据地址信息,再用物理磁盘执行写请求设空闲块访问时间为tatα=U*ts+(1-U)*tr,其中,U为当前磁盘利用率,即稀疏度,它的值是已使用的数据块数/总数据块数,ts为寻道时间,tr为旋转延迟时间;(14)用网络虚拟随机存取存储器NVRAM把逻辑地址—物理地址映射记录到map表中对map表的更新先保留在NVRAM上,当NVRAM已经写满,再把map更新的内容写回到物理磁盘,而map表采用静态数据方式,给每一个逻辑数据块分配一个map表单元,在单元中记录当前对应的物理地址,再把map表分成若干个分区,只要对物理磁盘中的map表更新时以这些分区为单位,便可实现逻辑地址到物理地址的映射;读请求(6)从SCSI设备中间层软件队列中获得读请求;(7)在地址映射map表中,根据读请求中的逻辑地址得到物理地址,把物理地址写入到读请求中;(8)使用上述最短访问时间优先读或已知的最短寻道时间优先法把新的读请求排入物理设备的读请求队列,访问时间包括寻址时间ts加上物理磁盘旋转延迟trts=L*v,tr=θ*ω其中,L为当前物理磁头到读数据地址的距离,v为磁头移动的线速度;θ为当前磁头到读数据地址之间的角度,ω为磁盘转动的角速度;(9)为读请求设置执行“死”期deadline期限,在满足读请求限期完成的前提下,为写请求保留执行间隙;(10)物理磁盘执行读请求。
在写请求的步骤(5)中,适度合并即通过查询空闲数据块表,找到距离最近的空闲块,计算以这个空闲块开头,连续空闲的数据块数量,再把这个数量乘以(30~50)%,作为可以连续存储的数据量的大小,再间隔地写入数据。
试验表明对于随机写请求,单个磁盘利用率即实际的数据传输所占用的时间的百分比从8%提高到20%,磁盘之间的负载差异在10%以内,系统整体性能提高(15~20)%。


图1存储区域网络示意图。
图2存储管理节点的硬件结构。
图3使用动态映射方法的存储管理软件在SAN体系结构中的位置。
图4动态映射方法中写请求完成的软件结构。
图5系统启动及命令处理流程图。
具体实施例方式
存储区域网络将存储设备与主机分离,对存储空间进行统一的管理和分配,其结构如图1。
服务器节点的硬件子系统包括INTEL CPU、标准的PCI总线、SCSI接口卡、标准的光纤网络接口卡(FC HBA)、以太网络接口卡、硬盘。服务器节点可以运行WINDOWS 2000等多种操作系统和WEB服务器软件系统。
光纤交换机采用Brocade 3200系列交换机。管理主机采用商用PC机,使用以太网络接口卡连接到以太网络,管理存储区域网络。
存储管理节点采用商业化商用PC机如联想天瑞3130,硬件子系统的模块结构如图2。
存储管理节点的主板采用商用的服务器主板,如Supermicro(超微)公司X5DA8、X5DAE主板等,所有的CPU采用INTEL公司XEON系列CPU。存储管理节点包括2个商用的光纤通道HBA,如QLOGIC公司的QLA2310F系列,它们之间可以实现容错备份或者捆绑功能。存储管理节点包括2-3个商用的SCSI接口卡,如ADAPTEC公司的7XXX系列接口卡,他们连接高密度的磁盘阵列子系统如ISD PinnacleRAID 500。电源子系统采用目前标准的、商用的N+1方式电源如山特公司的3C3系列,FLASH DISK负责存储各种软件,如M-SYSTEMS公司的DOC2000系列。Myrinet接口卡采用Myricom公司的LANai9系列接口卡。
本项发明动态映射方法在存储管理软件中实现,存储管理软件运行在存储管理节点上。存储区域网络的软件结构以及存储管理软件的位置如图3。
各软件模块的功能如下表


存储管理软件(使用动态映射方法)作为内核模块,在存储管理节点的嵌入式操作系统中运行(操作系统在图3中没有给出,实际上所有软件部分包括的模块都运行在操作系统当中)。存储管理软件的动态映射方法主要针对写请求,其结构如图4所示。
图5是本发明所述方法的流程图。
其中,动态MAP方法主要通过对读写请求的操作完成方法功能,对写请求和读请求分别进行处理,过程如下写请求(1)从SCSI设备中间层软件队列中获得写请求。
(2)从物理设备中读取当前空间使用情况和命令队列长度,计算各物理设备的负载情况,根据数据复制数的需要,选取负载最小的一个或多个物理设备。
磁盘的负载平衡通过分流I/O实现,使用动态映射更有利于负载平衡的实现。物理磁盘之间的负载平衡,主要通过写命令完成,将数据写到负载最小的磁盘中,达到分流数据的目的。关键问题是如何度量磁盘的负载。结合多种因素,总结出写命令到来时磁盘选取算法设一共有n个磁盘,每个磁盘的容量是Ci(i=0,1,...,n),当前磁盘利用率为Ui,设备队列中等待传输的数据总长度为Di,预计磁盘最近繁忙程度BiBi=a*Ui*CiUmax*Cmax+b*DiDmax---(II)]]>第一项是磁盘中存储的数据与其中最大值的比值,是预计的磁盘繁忙程度;后一项是等待传输的数据总长度的比值,是当前磁盘繁忙程度,对预计磁盘繁忙程度进行修正;a和b是加权系数,对预计值和当前值进行加权,a+b=1,可取a=b=0.5。另外,计算当前各个磁盘头访问最近空闲块需要的时间(公式I),与II式进行权衡。但是这个计算只能是不精确的,因为每个磁盘都在不间断地执行读请求,当写命令执行时,磁头位置已经改变。但这一计算可以粗略了解磁盘数据的分布情况。通过公式(II)计算各个磁盘的Bi,选取Bi值最小的磁盘i,将写命令排入其命令队列。
(3)对写请求根据数据复制数进行前后台执行分析,根据分析结果分别复制并排入前台执行或后台执行写请求队列。
在磁盘阵列中存储多个数据的拷贝,可以提高系统的读性能。一般对数据的复制数Dm=2,即一个数据存储在两个不同的地方。一个数据块的两个拷贝没有任何区别,可以存储到任意的两个不同的磁盘。通过(II)公式,找到最佳的两个物理磁盘,然后将数据分别存储到这两个磁盘中。数据复制分别在前、后台执行,将一个写请求放在前台执行,完成后认为所有的数据复制都完成,剩下的复制可以排入到设备单独的后台写队列,在系统空闲时,后台完成。尤其是复制数Dm大于2时,可以在前台执行1~2个复制,其余的在后台执行,可以减少写请求的响应时间。当读取数据时,根据上述公式(II),在存有数据备份的磁盘中找到繁忙程度Bi最小的磁盘读取数据。
(4)在各物理设备队列中,对写请求进行适度合并。
将写命令做适当的合并,减少命令执行的次数。但不是合并的数据越多越好。一次连续写入的数据过多会造成磁盘的局部拥挤,对于以后空闲块的寻找不利。最好的方法是找到距离最近的空闲块之后,计算以这个空闲块开头连续空闲的数据块的数量,这个数量乘上一定的百分比(例如30%~50%),作为可以连续存储的数据量的大小,间隔写数据。结合在一起的写命令称为写命令群。
(5)在读请求执行的间隙,计算当前物理磁头最小访问时间的空闲数据块,数据块的地址作为写请求的物理地址,改变写请求中的数据地址信息,物理磁盘执行写请求。
动态写方法是已经实现的一种不进行寻址的写请求实现方法,随时随处进行写操作,将需要写入磁盘的数据写在距离物理磁头最近的空闲块中。在动态写算法中,对于空闲块的选取使用的是最短寻道时间优先算法(SSTF),即选取离磁头最近的空闲块。我们根据磁盘特征,对动态写算法进行改进,对于空闲块的选取采用最短访问时间优先算法(SATF),即不仅考虑寻道时间,同时考虑了物理磁盘的旋转延迟。这样做的两个好处(1)更加准确的计算了写命令的执行时间,提高写效率;(2)在使用一块空白磁盘时,避免磁盘上大片数据连接在一起,磁盘空间使用不均匀,SAFT方法在选取空闲块时考虑磁盘旋转延迟,数据不会连续存储,而是间隔存储,数据之间空出若干个空闲块,方便下一次空闲块的选取。设寻道时间为ts,旋转延迟为tr,则访问时间tatα=U*ts+(1-U)*tr (I)其中,U是磁盘的稀疏度(已使用的数据块数/总数据块数),当磁盘上没有数据时,完全考虑tr,,随着数据的不断增多,ts的比重越来越大,一般磁盘最拥挤时U=50%(见上文中对磁盘空间冗余的分析),此时对ts和tr的考虑是均衡的。通过(I)计算出访问磁头周围的空闲块所需要的时间,找到访问时间最短的空闲块,作为写命令中逻辑地址对应的物理地址,将数据写入。
(6)将逻辑地址-物理地址映射记录到map表中。
由于采用了动态映射方法,一方面用于记录的地址映射单位为数据块大小(4K或8K),增加了map表的容量,另一方面动态映射频繁的改变逻辑地址和物理地址之间的对应关系,所以,map表的组织和存储更加重要。Map表的设计达到两个目的尽量减少访问map带来的时间延迟,减少map表恢复的时间。采用NVRAM达到上述目的。对map的更新先保留在NVRAM上,当NVRAM已经写满,再将map更新的内容写回到磁盘。Map表采用静态数组的方式,给每一个逻辑数据块分配一个map表单元,在单元中记录当前对应的物理地址,这种方法需要存储的数据量虽然很大,占用了一定量的物理磁盘空间,但是使用上非常方便,只需要知道静态数组在磁盘上存储的起始位置,根据逻辑地址偏移量就可以定位所需要的map表单元。将map表分成若干个分区,对磁盘中的map表更新以这些分区为单位,类似于内存中页面的更新。
读请求(1)从SCSI设备中间层软件队列中获得读请求。
(2)在地址映射map表中,根据读请求中的逻辑地址得到物理地址,将物理地址写入到读请求中。
(3)使用最短寻道时间优先算法(SSTF)或者最短访问时间优先算法(SATF)将新的读请求排入物理设备的读请求队列。
(4)为读请求设置deadline限期,在满足读请求在限期内完成的前提下,为写请求保留执行间隙。
(5)物理磁盘执行读请求。
SCSI命令在管理软件中执行的实例在存储管理节点中,将4块物理磁盘的一部分合并在一起,映射为一块逻辑磁盘,物理磁盘分别为sda、sdb、sdc、sdd,磁盘容量均为20G,逻辑磁盘号为1。生成map映射表,以逻辑地址为索引,全部单元清零。
存储管理软件接收到一条SCSI写命令,写数据到逻辑地址LUN+logical_address=1+000087E3。
无论这个逻辑地址对应的物理数据块中原来有没有数据,都要为它重新分配物理地址。收集sda、sdb、sdc、sdd四块物理磁盘的信息,磁盘容量Ca=Cb=Cc=Cd=20G,使用率Ua=10%,Ub=20%,Uc=30%,Ud=15%,命令队列长度Da=200,Db=150,Dc=150,Dd=180。根据公式(II),取a=b=0.5,分别计算各磁盘的繁忙程度如下Ba=0.5*20*10%20*30%+0.5*200200=23]]>Bb=0.5*20*20%20*30%+0.5*150200=1724]]>Bc=0.5*20*30%20*30%+0.5*150200=78]]>Bd=0.5*20*15%20*30%+0.5*180200=710]]>可知,四个磁盘的繁忙程度Ba<Bd<Bb<Bc。数据的重复度为2,即每个数据都有1个复制数据,因此选取两个磁盘sda和sdd同时存储写命令中的数据。
对磁盘sda和sdd,sda的写命令采取前台完成,sdd的写命令采取后台完成。则,sda的写命令排入到前台写命令队列中,sdd的写命令排入到后台写命令队列。
在磁盘sda执行读命令的间隙,将前台写命令队列中的若干写命令合并在一起,设数据块大小为16K,通过查询空闲数据块表,得到距离物理磁头最近的4个大小为16K的空闲数据块,距离物理磁头的距离分别为10、15、30、60,磁头移动时间延迟为ts1=1ms,ts2=1.5ms,ts3=3ms,ts4=6ms,旋转延迟为tr1=5ms,tr2=6ms,tr3=8ms,tr4=1ms,根据公式(I),Ua=10%,有ta1=10%*1+(1-10%)*5=4.6msta2=10%*1.5+(1-10%)*6=5.55msta3=10%*3+(1-10%)*8=7.5msta4=10%*6+(1-10%)*1=1.5ms
则物理空闲块4的访问时间最短,选取其存储写命令中的数据。物理数据块4的物理地址为sda+005201EF,所以逻辑地址1+000087E3对应的物理地址为sda+005201EF,将这个新的逻辑地址-物理地址映射对存入到map映射表中。
另外,sdd后台将数据写入到物理地址为sdd+01004503,则逻辑地址1+000087E3又对应物理地址sdd+01004503。
当存储管理软件接收到读取逻辑地址是1+000087E3的数据块时,查询map映射表,找到两个物理地址与其对应,按照公式(II)计算sda和sdd的繁忙度(略),得到繁忙度最小的磁盘,使用最短访问时间优先读或最短寻道时间优先法把新的读请求排入物理设备的读请求队列。为读请求设置执行deadline期限,在满足读请求限期完成的前提下,为写请求保留执行间隙。在期限之前读取数据。
对加入存储管理软件(使用动态MAP方法)的SAN系统与原系统进行了对比实验,采用的测试工具是iometer,并辅助软件获取系统时间的方法,使用随机读写命令流,其中读请求50%,写请求50%,数据块大小为4KB。
表1.单磁盘的完成写请求的时间利用

表2.磁盘之间的负载平衡

表3.使用8个物理磁盘的系统总性能

测试结果表明对于随机写请求,单个磁盘的时间利用率(实际的数据传输所占用时间的百分比)从8%提高到20%左右;对于随机I/O读写负载,磁盘之间的负载差异在10%以内;系统整体性能提高15%-20%。测试数据证明了动态MAP方法的有效性。
基于磁盘特征的数据分布动态map方法,充分利用了物理磁盘的带宽,理顺了读-写命令之间、写-写命令之间的关系,有效的实现了磁盘之间的负载平衡,提高了系统的I/O性能,保证SAN系统为服务器节点提供快速、安全的存储服务。基于磁盘特征的数据分布动态MAP方法具有如下主要特点1、提高系统写性能。由于去掉了写命令中查找Map表获得物理地址时间以及物理地址寻址时间,减少了写命令延迟。
2、动态完成逻辑地址-物理地址映射,有效实现磁盘间的负载平衡。将逻辑地址-物理地址的使用前静态分配,改成使用过程中的动态分配,能够通过磁盘当前的负载情况,对I/O请求进行动态调整,达到磁盘间负载的真正平衡。与striping相比,动态MAP算法更有效、更灵活。
3、使用NVRAM解决动态MAP算法中map表频繁访问所带来的延迟。在软件上精炼map表的组织,在硬件上提供快速可靠的承载介质,减少由于动态分配物理空间、逻辑地址-物理地址映射频繁改变带来的延迟。
4、与提高读性能的data-duplication算法结合。通过MAP算法提高写性能的同时,不对读性能造成影响。同时与data-duplication结合,采取了前台-后台写操作,与提高读性能的优化算法共存,最大限度的提高系统的整体I/O性能。
权利要求
1.基于磁盘特征的数据分布动态映射的方法,含有在光纤通道—存储区域网络即FC-SAN内,通过逻辑地址和物理地址之间的映射,把物理磁盘的存储空间分配给逻辑磁盘的步骤,其特征在于它是一种由FC-SAN中的存储管理控制机来执行的、把数据块作为映射粒度,动态地在逻辑空间和物理空间之间映射的方法,依次含有以下步骤写请求(1)生成动态映射即map表,以逻辑地址为索引,全部单元清零;(2)存储节点控制机的存储管理模块从小型计算机系统接口即SCSI设备的中间层软件队列中获得写请求写数据到逻辑地址;(3)从物理磁盘中读取当前空间使用情况和命令队列长度,按下式计算各物理磁盘最近繁忙程度Bi,再根据数据复制数的要求,选取负载最小的一个或多个物理磁盘,为上述逻辑地址重新分配物理地址,存储写命令中的数据;Bi=a*Ui*CiUmax*Cmax+b*DiDmax,]]>其中,*为“乘”号,Ui为当前磁盘利用率,Umax为最大值,Ci为每个物理磁盘的容量,Cmax为最大值,Di为设备队列中等待传输的数据总长度,Dmax为最大值;(4)把数据分别存储到步骤(3)找到的一个或多个最佳的物理磁盘中,数据复制分别在前、后台执行,即把一个写请求放在前台执行,剩下的复制并排入到设备单独的后台写队列,在系统空闲时在后台完成;(5)在各物理设备队列中,对写请求进行适度合并;(6)在读请求执行的间隙,采用同时兼顾了寻道时间和物理磁盘旋转延迟时间的最短访问时间优先方法,计算当前物理磁头最小访问时间的空闲数据块,把该数据块的地址作为写请求的物理地址,改变写请求中的数据地址信息,再用物理磁盘执行写请求设空闲块访问时间为tata=U*ts+(1-U)*tr,其中,U为当前磁盘利用率,即稀疏度,它的值是已使用的数据块数/总数据块数,ts为寻道时间,tr为旋转延迟时间;(7)用网络虚拟随机存取存储器NVRAM把逻辑地址—物理地址映射记录到map表中对map表的更新先保留在NVRAM上,当NVRAM已经写满,再把map更新的内容写回到物理磁盘,而map表采用静态数据方式,给每一个逻辑数据块分配一个map表单元,在单元中记录当前对应的物理地址,再把map表分成若干个分区,只要对物理磁盘中的map表更新时以这些分区为单位,便可实现逻辑地址到物理地址的映射;读请求(1)从SCSI设备中间层软件队列中获得读请求;(2)在地址映射map表中,根据读请求中的逻辑地址得到物理地址,把物理地址写入到读请求中;(3)使用上述最短访问时间优先读或已知的最短寻道时间优先法把新的读请求排入物理设备的读请求队列,访问时间包括寻址时间ts加上物理磁盘旋转延迟trts=L*v,tr=θ*ω其中,L为当前物理磁头到读数据地址的距离,v为磁头移动的线速度;θ为当前磁头到读数据地址之间的角度,ω为磁盘转动的角速度;(4)为读请求设置执行“死”期deadline期限,在满足读请求限期完成的前提下,为写请求保留执行间隙;(5)物理磁盘执行读请求。
2.根据权利要求1所述的基于磁盘特征的数据分布动态映射的方法,其特征在于在写请求的步骤(5)中,适度合并即通过查询空闲数据块表,找到距离最近的空闲块,计算以这个空闲块开头,连续空闲的数据块数量,再把这个数量乘以(30~50)%,作为可以连续存储的数据量的大小,再间隔地写入数据。
全文摘要
基于磁盘特征的数据分部动态映射方法属于存储区域网络存储技术领域,其特征在于它是一种由光纤通道-存储区域网络FC-SAN中的存储管理控制机来执行的,把数据块作为映射粒度,动态地在逻辑空间和物理空间映射地方法。在写请求中,它根据物理磁盘最近繁忙程度和数据复制数来选择负载最小地物理磁盘。为逻辑地址重分物理地址;在适度合并写请求后,再根据兼顾寻道时间和旋转延迟的最短访问时间优先法来寻找物理磁盘中的空闲数据块,把它的地址作为写请求的物理地址,来执行物理磁盘写请求,完成逻辑地址-物理地址的动态映射。它提高了单个磁盘时间利用率,平衡了磁盘之间的负载,提高了系统整体性能。
文档编号G06F7/22GK1545030SQ200310113529
公开日2004年11月10日 申请日期2003年11月14日 优先权日2003年11月14日
发明者舒继武, 郑纬民, 吴昊, 付长冬, 温冬婵 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1