CN101957729A - 逻辑块变换方法及基于该方法兼容用户读写的方法和装置 - Google Patents
逻辑块变换方法及基于该方法兼容用户读写的方法和装置 Download PDFInfo
- Publication number
- CN101957729A CN101957729A CN201010292996XA CN201010292996A CN101957729A CN 101957729 A CN101957729 A CN 101957729A CN 201010292996X A CN201010292996X A CN 201010292996XA CN 201010292996 A CN201010292996 A CN 201010292996A CN 101957729 A CN101957729 A CN 101957729A
- Authority
- CN
- China
- Prior art keywords
- logical block
- dynamic
- conversion
- address
- process window
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种逻辑块变换方法及基于该方法兼容用户读写的方法和装置,该逻辑块变换方法在虚拟磁盘的存储空间内设置一个动态处理窗和一个容量大于等于动态处理窗的动态预留空间;按照新逻辑块的大小,将动态处理窗内的旧逻辑块迁移到动态预留空间中并重新编写逻辑地址。该兼容用户读写的方法和装置,在逻辑块变换的过程中,用户可正常使用虚拟磁盘进行读写。此外设置的自适应IO阈值和逻辑块变换速度范围值,可调节用户读写和逻辑块变换处理的优先级和进度。该方法充分利用了系统资源,平衡逻辑块变换和用户读写请求之间的冲突,提高了虚拟磁盘IO性能和主机的响应速度。
Description
技术领域
本发明涉及磁盘阵列存储技术领域,尤其涉及一种动态的虚拟磁盘逻辑块变换方法以及基于该方法兼容用户读写的方法和装置。
背景技术
RAID(Redundant Array of Independent Disk,磁盘阵列)是一种由多块独立磁盘构成的冗余阵列,在操作系统下,面向用户作为一个独立的存储设备出现。
虚拟磁盘是建立在磁盘阵列基础上的一个逻辑划分,将系统中各种异构的存储设备映射为一个单一的存储资源,服务器及其应用系统看到的都是存储设备的逻辑映像,而单个存储设备或者成员盘的容量、速度等物理特性均被屏蔽。所有的存储管理操作,如系统升级、改变RAID级别、初始化逻辑卷、建立和分配虚拟磁盘、存储空间扩容等都变得更容易。虚拟磁盘主要有RAID0、RAID1、RAID3、RAID5、RAID6、RAID10、RAID30、RAID50等,用户通过不同的RAID算法对由成员盘组成的虚拟磁盘进行读写操作。
逻辑块是在虚拟磁盘数据分布中位于单个成员盘上的一个数据块,为IO(Input/Output,输入输出)处理单位。虚拟磁盘的构建方式实现了跨磁盘读写的功能,将数据分成多个数据块并行写入多个磁盘或同时从多个磁盘读出数据块组成数据以提高磁盘访问速度。这里的数据块在存储领域称之为逻辑块。
基于逻辑块的虚拟磁盘能够在不破坏现有数据的前提下轻易地调整存储媒介,根据用户所存储的数据类型,进行虚拟磁盘的逻辑块变换。当采用了适合的逻辑块大小时,能使虚拟磁盘读写命令的响应速度以及带宽达到理想的状态,能充分利用冗余磁盘阵列的并行处理优势。虚拟磁盘的逻辑块变换适应不同的数据应用需求,大逻辑块适用于带宽较宽的场合,诸如视频、流媒体之类的数据类型;小逻辑块适用IOPS(Input/Output per second,每秒进行读写操作的次数)高的场合诸如数据库等。因此,虚拟磁盘等存储设备的逻辑块变换功能在实际的使用中有广泛的应用需求。
中国专利申请200710076246.7提出一种基于多通道闪存设备逻辑条带的自适应控制方法,主要思路为:闪存设备中的固件将历史操作信息进行统计,并存储在闪存保留信息区中;根据统计的操作信息情况动态设定各存储分区对应的逻辑块标识以确定各逻辑块的大小;根据逻辑块的划分,将数据并行映射到不同通道的存储单元内。这种自适应设定逻辑块的方法存在以下主要缺点:一、无法处理用户读写与逻辑块变换发生冲突的情况,不支持变换过程中用户对存储设备的正常读写使用;二、逻辑块变换过程中,需要将设备中的已有数据进行数据备份,因此需要设置专门的磁盘备份空间;三、不适合大容量存储设备如虚拟磁盘,进行数据备份在时间和资源上开销较大。
现有技术中,能解决用户读写和逻辑块变换并发处理的方式,其采用的思路是:当两者发生冲突时,优先处理逻辑块变换进程,将用户读写请求置于睡眠等待状态,直至逻辑块变换处理完毕后将其唤醒执行。这种处理方式,在IOPS要求较低的场合适用,适用环境范围较小,一旦遇到IO性能要求较高的视频流媒体等数据类型,则会严重影响IO性能。逻辑块变换因为较复杂所以处理时间较长,而频繁且急切的读写请求又因为被置于睡眠状态而一直等待。随着IOPS要求的递增,用户读写请求与逻辑块变换请求发生冲突的机率就越大,则发生读写请求一直等待的情况就越多,最终导致虚拟磁盘IO性能每隔几秒或者十几秒就出现为0的情况,降低了逻辑块变换和主机响应用户读写请求的速度,未能充分利用系统资源,对磁盘阵列的性能造成了较大的负面影响。
发明内容
本发明要解决的技术问题是,提供一种动态的虚拟磁盘逻辑块变换方法以及基于该方法兼容用户读写的方法和装置,在逻辑块变换过程中支持用户对存储设备的正常读写使用,且自适应调整用户读写请求与逻辑块变换的处理进度。
本发明采用的技术方案是,所述动态的虚拟磁盘逻辑块变换方法,包括:
A,在虚拟磁盘的存储空间内设置一个动态处理窗和一个容量大于等于动态处理窗的动态预留空间;
B,按照新逻辑块的大小,将动态处理窗内的旧逻辑块迁移到动态预留空间中并重新编写逻辑地址;
C,当动态处理窗内的旧逻辑块迁移完毕后,将动态处理窗和动态预留空间在存储空间中同向移动一个动态处理窗的位置,重复执行步骤B,直到虚拟磁盘中所有旧逻辑块都处理完毕。
进一步的,步骤A中,在存储空间中设置的所述动态处理窗与所述动态预留空间相邻。
进一步的,步骤B中,将动态处理窗内的旧逻辑块迁移到动态预留空间过程中的读命令和写命令是并行处理或者串行处理的。
基于上述动态的虚拟磁盘逻辑块变换方法,本发明还提供一种在逻辑块变换过程中兼容用户读写的方法,包括:
A1,当用户读写命令的地址落在动态处理窗内时,设置IO阈值;
B1,遍历虚拟磁盘的所有成员盘,统计逻辑块变换读写命令总个数以及用户读写命令总个数;
C1,判断逻辑块变换读写命令总个数与用户读写命令总个数的差值是否大于IO阈值,若是,则暂停响应逻辑块变换读写命令,响应用户读写命令,否则继续响应逻辑块变换读写命令,不响应用户读写命令。
进一步的,在步骤A1中设置逻辑块变换的正常速度范围;
在步骤B1之前,该方法还包括:
判断当前动态处理窗内的逻辑块变换速度是否在所述正常速度范围内,若是,则执行步骤B1,否则,执行下面的步骤:
若当前动态处理窗内的逻辑块变换速度小于所述正常速度范围,则继续响应逻辑块变换读写命令,不响应用户读写命令;
若当前动态处理窗内的逻辑块变换速度大于所述正常速度范围,则暂停响应逻辑块变换读写命令,响应用户读写命令。
进一步的,该方法还包括:
当用户读写命令的地址未落在动态处理窗内时,在逻辑块变换的过程中并发响应用户读写命令。
进一步的,所述在逻辑块变换的过程中并发响应用户读写命令,具体包括:
逻辑块变换过程中数据向上迁移的情况:
当用户读写命令的地址落在动态处理窗低地址之前时,采用动态处理窗低地址之前的新逻辑块值和动态预留空间偏移量负值计算物理地址,执行用户读写命令,同时,逻辑块变换的过程正常进行,所述新逻辑块是变换之后的逻辑块;
当用户读写命令的地址落在动态处理窗高地址之后时,采用动态处理窗高地址之后的旧逻辑块值和动态预留空间偏移量负值计算物理地址,执行用户读写命令,同时,逻辑块变换的过程正常进行,所述旧逻辑块是变换之前的逻辑块;
以及,逻辑块变换过程中数据向下迁移的情况:
当用户读写命令的地址落在动态处理窗高地址之后时,采用动态处理窗低地址之前的新逻辑块值和动态预留空间偏移量正值计算物理地址,执行用户读写命令,同时,逻辑块变换的过程正常进行;
当用户读写命令的地址落在动态处理窗低地址之前时,采用动态处理窗高地址之后的旧逻辑块值和动态预留空间偏移量正值计算物理地址,执行用户读写命令,同时,逻辑块变换的过程正常进行。
基于上述动态的虚拟磁盘逻辑块变换方法,本发明还提供一种在逻辑块变换过程中兼容用户读写的装置,包括:
参数设置模块,用于当用户读写命令的地址落在动态处理窗内时,设置IO阈值;
统计模块,用于遍历虚拟磁盘的所有成员盘,统计逻辑块变换读写命令总个数以及用户读写命令总个数;
自适应处理模块,用于判断逻辑块变换读写命令总个数与用户读写命令总个数的差值是否大于IO阈值,若是,则调用用户读写请求处理模块,暂停调用逻辑块变换请求处理模块,否则继续调用逻辑块变换请求处理模块;
用户读写请求处理模块,用于根据RAID算法操作虚拟磁盘来响应用户读写命令;
逻辑块变换请求处理模块,用于根据所述虚拟磁盘逻辑块变换方法操作虚拟磁盘来响应逻辑块变换读写命令。
进一步的,所述参数设置模块还用于设置逻辑块变换的正常速度范围;
该装置进一步包括:
速度判断模块,用于判断当前动态处理窗内的逻辑块变换速度是否在所述正常速度范围内,若是,则调用统计模块,否则调用自适应处理模块;
自适应处理模块,进一步用于在当前动态处理窗内的逻辑块变换速度小于所述正常速度范围时,继续调用逻辑块变换请求处理模块;在当前动态处理窗内的逻辑块变换速度大于所述正常速度范围时,调用用户读写请求处理模块,暂停调用逻辑块变换请求处理模块。
进一步的,该装置还包括:
地址判断模块,用于判断当用户读写命令的地址是否落在动态处理窗内,若是,则调用参数设置模块,否则直接调用用户读写请求处理模块或者逻辑块变换请求处理模块。
采用上述技术方案,本发明至少具有下列优点:
本发明所述动态的虚拟磁盘逻辑块变换方法,在虚拟磁盘的存储空间内设置一个动态处理窗和一个容量大于等于动态处理窗的动态预留空间;按照新逻辑块的大小,将动态处理窗内的旧逻辑块迁移到动态预留空间中并重新编写逻辑地址。该方法由于采用动态处理窗和动态预留空间进行逻辑块迁移,可以采用读写命令并行下发的方式,极大的提高了逻辑块变换的速度,而且在虚拟磁盘进行逻辑块变换的过程中,不需进行数据备份。
本发明所述基于该逻辑块变换方法兼容用户读写的方法和装置,在逻辑块变换的过程中,用户可正常使用虚拟磁盘读写。而且,本发明通过设置一个自适应IO阈值,动态协调在用户读写与逻辑块变换发生冲突时的处理优先级与处理进度,及时响应请求频繁的IO,使迫切需要处理的命令得到及时处理,不仅能保证用户在逻辑块变换过程中对虚拟磁盘的正常使用,而且能够避免在IO性能要求较高的数据应用环境下虚拟磁盘IO性能严重下降的缺陷。本发明充分利用了系统资源,平衡逻辑块变换和用户读写请求之间的冲突,提高了虚拟磁盘IO性能和主机的响应速度。
附图说明
图1为本发明第一实施例所述动态的虚拟磁盘逻辑块变换方法流程图;
图2为本发明第一实施例中逻辑块变换过程中数据向上迁移示意图;
图3为本发明第二实施例中逻辑块变换过程中数据向下迁移示意图;
图4为本发明第二实施例所述动态的虚拟磁盘逻辑块变换方法流程图;
图5为本发明第三实施例中当用户读写命令地址落入动态处理窗内的自适应处理流程图;
图6为本发明第三实施例中当用户读写命令地址落入动态处理窗内时用户读写命令处理的具体过程示意图;
图7为本发明第三实施例中当用户读写命令地址未落入动态处理窗内时用户读写命令处理的具体过程示意图;
图8为本发明第四实施例所述在逻辑块变换过程中兼容用户读写的装置组成示意图。
具体实施方式
为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。
本发明提供一定范围的逻辑块值即逻辑块的大小供用户选择,逻辑块值均为2的幂次,大于或等于存储系统所使用缓存页大小,本发明所述逻辑块变换方法至少可以支持4k到1M比特范围内逻辑块的变换,用户可以选择适合自身数据应用情况的逻辑块值,发起逻辑块变换操作。这里,将变换之前的称为旧逻辑块,变换之后的称为新逻辑块。
本发明第一实施例,一种动态的虚拟磁盘逻辑块变换方法,如图1所示,包括如下具体步骤:
步骤S101,在所建虚拟磁盘的存储空间内设置一个动态预留空间,用于逻辑块变换过程中数据迁移使用,该动态预留空间的地址随着数据的迁移不断变换。动态预留空间的大小为1M比特的整数倍,最小为一倍,且动态预留空间的大小在逻辑块变换过程中固定不变。
动态预留空间在某一次逻辑块变换过程中,永远单向移动,比如,由存储空间起始位置逐渐移动到存储空间结束位置。如图2所示,本实施例中将动态预留空间设置在存储空间的起始位置。
步骤S102,区别于动态预留空间,在动态预留空间下方存储空间内设置一个动态处理窗,与该动态预留空间相邻且配合使用。位于动态处理窗口内的逻辑块是被迁移的对象,逻辑块迁移源地址位于动态处理窗内,迁移目的地址位于预留空间内。动态处理窗的地址也随着逻辑块的迁移不断更新。
优选的,动态预留空间大小至少等于动态处理窗的大小,且动态处理窗的大小至少为1M。
步骤S103,接收用户发出的逻辑块变换读写命令。
步骤S104,设置逻辑块迁移单元为min{新逻辑块,旧逻辑块}并设定数据迁移方向为向上迁移,迁移单元即每次逻辑块变换读写命令迁移的数据量,旧逻辑块是指迁移之前的逻辑块,新逻辑块是指迁移到动态预留空间并重新编写逻辑地址后的逻辑块。
步骤S105,设置当前动态处理窗内的迁移起始地址和结束地址。
步骤S106,从动态处理窗读取迁移单元的数据,写入动态预留空间,然后按照逻辑块变换要求的新逻辑块值,对迁移到动态预留空间中的旧逻辑块重新编写逻辑地址。
这里,执行由逻辑块变换引发的读写命令的具体过程是:根据待迁移的迁移单元在动态处理窗内的旧逻辑地址、新逻辑块值、预留空间偏移量负值确定其物理地址,下发读写命令,将该迁移单元的数据从虚拟磁盘阵列中读出和写入。
其中,由逻辑地址确定物理地址过程是本领域的公知技术,这里只做一下简单介绍:
1)逻辑地址对逻辑块大小求余,得到该逻辑地址所在的逻辑块号和逻辑块内偏移。
2)通过逻辑块号以及成员盘个数得到该逻辑块所在的条带号,这里的条带号是指逻辑块在单个成员盘上的计数。
3)逻辑块号对成员盘个数求余,得到该逻辑地址所在的成员盘号。
4)通过成员盘号在成员盘链表中搜索得到该虚拟磁盘设备。
5)计算预留空间偏移量在该虚拟磁盘设备上的偏移量值。
6)条带号乘以逻辑块大小加上逻辑块内偏移量,再加上该虚拟磁盘设备上的动态预留空间偏移量即可得到逻辑地址对应的物理地址。
上述过程中涉及到的逻辑块大小和预留空间偏移量根据迁移方向不同取不同值。逻辑块取新值或旧值,预留空间偏移量取正值或负值。
迁移过程中,为保证虚拟磁盘上的数据一致性,可采用串行的处理方式,读完一个迁移单元再进行该迁移单元的写入,处理完毕后继续下一个迁移单元,该情况下,逻辑块变换的速率相对较低;也可采用并行处理方式,读迁移单元时,等待其读完毕就继续进行下一个迁移单元的读,写迁移单元时,只将写命令下发不必等待,但前提是,必须判断写入的迁移单元一定是读取完毕后的迁移单元,否则会造成数据混乱,丢失磁盘阵列中的数据,该方法速率相对快一些,处理也相对复杂。
步骤S107,判断动态处理窗内数据是否迁移完毕,若是,则执行步骤S109,否则,跳转步骤S108;
步骤S108,更新动态处理窗内当前迁移单元地址,从低地址到高地址,处理下一个迁移单元地址处的迁移单元数据,跳转步骤S106;
步骤S109,判断存储空间中的旧逻辑块是否全部处理完毕,若是,则流程结束,否则跳转步骤S110;
步骤S110,更新动态处理窗以及动态预留空间地址,即将动态处理窗和动态预留空间同时向下移动一个动态处理窗的位置,跳转步骤S105。
为了更加直观的说明逻辑块变换的过程,下面以逻辑块变换从小变大和图2为例,介绍一下执行上述方法的步骤实现数据在存储空间中向上迁移的过程,图2中列举的是一个磁盘阵列组成的虚拟磁盘,由4个成员盘构成,开始逻辑块变换前,动态预留空间处于虚拟磁盘存储空间起始位置,该空间不存储任何初始数据。预留空间后面,为虚拟磁盘存储数据的逻辑起始地址,从该起始地址划分一个与预留空间大小等同的逻辑块动态处理窗,标注为1,2,3...的逻辑块为迁移单元,取值为min{旧逻辑块,新逻辑块}大小,数据迁移方向向上,从动态处理窗的低地址处开始依次迁移旧逻辑块1、2、3、4至动态预留空间内,根据新逻辑块大小进行数据块的排列。当完成动态处理窗内的所有数据迁移时,更新动态处理窗地址及预留空间地址,直至完成虚拟磁盘所有数据的迁移。此时,在完成存储空间所有逻辑块变换的过程中,动态处理窗逐渐更新到了存储空间结束位置,其中不存储任何数据。
本发明第二实施例,一种动态的虚拟磁盘逻辑块变换方法,如图4所示,包括如下具体步骤:
步骤S201,在所建虚拟磁盘的存储空间内设置一个动态预留空间,用于逻辑块变换过程中数据迁移使用,该动态预留空间的地址随着数据的迁移不断变换。动态预留空间的大小为1M比特的整数倍,最小为一倍,且动态预留空间的大小在逻辑块变换过程中固定不变。
动态预留空间在某一次逻辑块变换过程中,永远单向移动,比如,由存储空间起始位置逐渐移动到存储空间结束位置。如图3所示,本实施例中将动态预留空间设置在存储空间的结束位置。
步骤S202,区别于动态预留空间,在动态预留空间上方存储空间内设置一个动态处理窗,与该动态预留空间相邻且配合使用。位于动态处理窗口内的逻辑块是被迁移的对象,逻辑块迁移源地址位于动态处理窗内,迁移目的地址位于预留空间内。动态处理窗的地址也随着逻辑块的迁移不断更新。
优选的,动态预留空间大小至少等于动态处理窗的大小,且动态处理窗的大小至少为1M。
步骤S203,接收用户发出的逻辑块变换读写命令。
步骤S204,设置逻辑块迁移单元为min{新逻辑块,旧逻辑块}并设定数据迁移方向为向下迁移,迁移单元即每次逻辑块变换读写命令迁移的数据量。
步骤S205,设置当前动态处理窗内的迁移起始地址和结束地址。
步骤S206,从动态处理窗读取迁移单元的数据,写入动态预留空间,然后按照逻辑块变换要求的新逻辑块值,对迁移到动态预留空间中的旧逻辑块重新编写逻辑地址。
这里,执行由逻辑块变换引发的读写命令的具体过程是:根据待迁移的迁移单元在动态处理窗内的旧逻辑地址、新逻辑块值、预留空间偏移量正值确定其物理地址,下发读写命令,将该迁移单元的数据从虚拟磁盘阵列中读出和写入。
迁移过程中,为保证虚拟磁盘上的数据一致性,可采用串行的处理方式,也可采用并行处理方式。
步骤S207,判断动态处理窗内数据是否迁移完毕,若是,则执行步骤S209,否则执行步骤S208;
步骤S208,更新动态处理窗内当前迁移单元地址,从高地址到低地址,处理下一个迁移单元地址处的迁移单元数据,跳转步骤S206;
步骤S209,判断存储空间中的旧逻辑块是否全部处理完毕,若是,则流程结束,否则跳转步骤S210;
步骤S210,更新动态处理窗以及动态预留空间地址,即将动态处理窗和动态预留空间同时向上移动一个动态处理窗的位置,跳转步骤S205。
本发明第三实施例,基于第一实施例或者第二实施例中所述逻辑块变换方法,本实施例介绍一种在逻辑块变换过程中兼容用户读写的方法,该方法实际上是逻辑块变换进程在运作,用户读写命令处理进程处于睡眠状态,等待动态处理窗内的数据迁移操作结束的过程中,当用户读写命令频繁产生时的自适应处理流程,自适应处理的基本原则是,在确保逻辑块变换的基本速度前提下,选择优先级较高的用户读写或者逻辑块变换命令;立即进行处理,优先级较低的命令则处于随时被唤醒的休眠状态。
自适应处理流程分为以下两种情况来描述:
一、当用户读写命令地址落入动态处理窗地址范围内的自适应处理流程,如图5所示,包括如下具体步骤:
步骤S301,设置IO阈值和逻辑块变换的正常速度范围——最小速度临界值和最大速度临界值。其中最小速度临界值和最大速度临界值的选取,对应不同的虚拟磁盘类型,取值不同。最小速度临界值越小,逻辑块变换速度越慢;最大速度临界值越大,逻辑块变换速度越快。
IO阈值对应不同类型的虚拟磁盘,如RAID0,RAID1,RAID5或RAID10,该阈值的最佳取值不同,范围从2的6次幂、2的7次幂一直到2的14次幂不等,基本趋势是,该值越小,IO性能越稳定,逻辑块变换的速率相对就越低。选择时,根据实际的虚拟磁盘类型以及逻辑块大小的范围采用适合虚拟磁盘的最佳阈值,方可达到最佳的性能。
步骤S302,在存储空间中更新动态处理窗内的迁移起始地址和结束地址。
步骤S303,在动态处理窗中更新待迁移的迁移单元;
步骤S304,判断当前逻辑块变换速度是否位于正常速度范围内,若是,则执行步骤S305,否则跳转步骤S314;
步骤S305,遍历虚拟磁盘的所有成员盘,统计当前逻辑块变换请求对迁移单元的读写IO总个数;
步骤S306,统计当前用户请求的读写IO总个数,且换算为与迁移单元长度一致的数据上的IO个数;
步骤S307,用当前逻辑块变换请求对迁移单元的读写IO总个数减去换算后的当前用户请求的读写IO总个数得到IO差值;
步骤S308,与IO阈值进行比较,判断IO差值是否大于IO阈值,若是,则执行步骤S309,否则执行步骤S310;
步骤S309,休眠正在进行的逻辑块变换进程,唤醒用户读写命令处理,处理完用户读写命令后,唤醒逻辑块变换进程,跳转步骤S311;
步骤S310,表明用户的IO请求不频繁,可以暂缓处理,继续逻辑块的变换,跳转步骤S311;
步骤S311,判断当前待迁移的迁移单元是否迁移完毕,若是,则跳转步骤S312,否则执行步骤S304;
步骤S312,判断动态处理窗内的数据是否迁移完毕,若是,则执行步骤S313,否则执行步骤S303;
步骤S313,判断虚拟磁盘存储空间中的所有旧逻辑块是否变换完毕,若是,则流程结束,否则跳转步骤S302;
步骤S314,判断当前逻辑块变换速度是否大于最大速度临界值,若是,则执行步骤S315,否则说明当前逻辑块变换速度是否小于最大速度临界值,执行步骤S316;
步骤S315,休眠正在进行的逻辑块变换进程,唤醒用户读写命令处理,跳转步骤311。
步骤S316,继续逻辑块的变换,继续休眠用户读写命令处理,跳转步骤311。
其中,由于用户读写命令地址落入动态处理窗中,因此用户读写命令处理的具体过程,如图6所示,包括:
步骤S401,接收用户读写请求;
步骤S402,判断数据迁移方向是向上还是向下,若数据向上迁移,则执行步骤S403,若数据向下迁移,则执行步骤S404;
步骤S403,采用动态处理窗内旧逻辑块值和动态预留空间偏移量负值计算物理地址,跳转步骤S405;
步骤S404,采用动态处理窗内旧逻辑块值和动态预留空间偏移量正值计算物理地址,跳转步骤S405;
步骤S405,下发用户读写命令到虚拟磁盘。
二、当用户读写命令地址未落入动态处理窗地址范围内的自适应处理流程方式,用户读写与逻辑块变换互不干扰,并发执行。
图7为用户读写命令未落入动态处理窗地址范围内的处理过程,包括:
步骤S501,接收用户读写请求;
步骤S502,判断数据迁移方向是向上还是向下,若数据向上迁移,则执行步骤S503,若数据向下迁移,则执行步骤S506;
步骤S503,判断用户读写命令地址是否落在动态处理窗低地址之前,若是,则执行步骤S504,否则说明用户读写命令地址是否落在动态处理窗高地址之后,执行步骤S505;
步骤S504,采用动态处理窗低地址之前的新逻辑块值和动态预留空间偏移量负值计算物理地址,跳转步骤S509,同时,逻辑块变换的过程正常进行;
步骤S505,采用动态处理窗高地址之后的旧逻辑块值和动态预留空间偏移量负值计算物理地址,跳转步骤S509,同时,逻辑块变换的过程正常进行。
步骤S506,判断用户读写命令地址是否落在动态处理窗低地址之前,若是,则执行步骤S507,否则说明用户读写命令地址是否落在动态处理窗高地址之后,执行步骤S508;
步骤S507,采用动态处理窗高地址之后的旧逻辑块值和动态预留空间偏移量正值计算物理地址,跳转步骤S509,同时,逻辑块变换的过程正常进行。
步骤S508,采用动态处理窗低地址之前的新逻辑块值和动态预留空间偏移量正值计算物理地址,跳转步骤S509,同时,逻辑块变换的过程正常进行。
步骤S509,下发用户读写命令到虚拟磁盘。
本发明第四实施例,基于第一实施例或者第二实施例中所述逻辑块变换方法,本实施例介绍一种在逻辑块变换过程中兼容用户读写的装置,如图8所示,包括如下组成部分:
1)地址判断模块,用于判断当用户读写命令的地址是否落在动态处理窗内,若是,则调用参数设置模块,否则直接调用用户读写请求处理模块或者逻辑块变换请求处理模块。
2)参数设置模块,用于当用户读写命令的地址落在动态处理窗内时,设置IO阈值,还用于设置逻辑块变换的正常速度范围。
3)速度判断模块,用于判断当前动态处理窗内的逻辑块变换速度是否在所述正常速度范围内,若是,则调用统计模块,否则调用自适应处理模块。
4)统计模块,用于通过逻辑块变换请求处理模块和用户读写请求处理模块遍历虚拟磁盘的所有成员盘,统计逻辑块变换读写命令总个数以及用户读写命令总个数。
5)自适应处理模块,用于判断逻辑块变换读写命令总个数与用户读写命令总个数的差值是否大于IO阈值,若是,则调用用户读写请求处理模块,暂停调用逻辑块变换请求处理模块,否则继续调用逻辑块变换请求处理模块;进一步用于在当前动态处理窗内的逻辑块变换速度小于所述正常速度范围时,继续调用逻辑块变换请求处理模块;在当前动态处理窗内的逻辑块变换速度大于所述正常速度范围时,调用用户读写请求处理模块,暂停调用逻辑块变换请求处理模块。
6)用户读写请求处理模块,用于根据RAID算法操作虚拟磁盘来响应用户读写命令,RAID算法是本领域公知的技术,故此处不详述。
7)逻辑块变换请求处理模块,用于根据第一实施例或者第二实施例中所述逻辑块变换方法操作虚拟磁盘来响应逻辑块变换读写命令,磁盘阵列中可以包含多个虚拟磁盘,采用本实施例所述装置可以同时进行处理。逻辑块变换请求处理模块中可以进一步包括逻辑块变换缓冲区。
下面基于第三实施例中的方法介绍一下本实施例中的装置各组成模块的工作方式:
当地址判断模块接收来自用户的读写请求和逻辑块变换请求后,首先判断请求地址,当两者未发生冲突时,分别进行各自请求的处理;当发生了冲突时,转入速度判断模块对动态处理窗的逻辑块变换速度进行判断,当逻辑块变换速度介于最大速度临界值和最小速度临界值之间即正常速度范围内时,进入统计模块,然后进入自适应处理模块,自适应处理模块根据当前的统计信息控制用户读写和逻辑块变换的进度和优先级。自适应处理模块的基本原则是,在确保逻辑块变换的基本速度前提下,选择优先级较高的用户读写或者逻辑块变换命令;立即进行处理,优先级较低的命令则处于随时被唤醒的休眠状态。
整个过程中,当用户读写命令可以处理时,由用户读写请求处理模块将命令下发至磁盘进行读写;当逻辑块变换处理的数据迁移可以处理时,由逻辑块变换请求处理模块采用读写并行的方式对磁盘阵列的数据进行迁移。
该装置是基于本发明第一实施例中设置的动态处理窗,再加上速度判断模块和自适应处理模块这三者的结合很好地解决了之前现有技术中用户读写与逻辑块变换发生冲突时每隔几秒或十几秒就出现用户读写IO为0的问题。逻辑块动态处理窗作为元数据的更新单位,速度判断模块判断时用到的两个速度临界值确保了逻辑块变换的处理是稳步持续进行的,速度不会太小也不会太大,若自适应处理模块没有经过逻辑块变换速度临界值的过滤,则容易发生因用户读写IO请求过多而搁置逻辑块变换进程的情况,严重影响变换处理的速度。而自适应处理模块则在确保逻辑块变换稳步进行的前提下,进行用户读写与逻辑块变换的调度,按照需求的急迫性程度赋予命令执行的优先级。
本发明所述动态的虚拟磁盘逻辑块变换方法,在虚拟磁盘的每个成员盘的存储空间内设置一个动态处理窗和一个容量大于等于动态处理窗的动态预留空间;按照新逻辑块的大小,将动态处理窗内的旧逻辑块迁移到动态预留空间中并重新编写逻辑地址。该方法由于采用动态处理窗和动态预留空间进行逻辑块迁移,可以采用读写命令并行下发的方式,极大的提高了逻辑块变换的速度,而且在虚拟磁盘进行逻辑块变换的过程中,不需进行数据备份。
本发明所述基于该逻辑块变换方法兼容用户读写的方法和装置,一方面,在逻辑块变换的过程中,用户可正常使用虚拟磁盘读写。另一方面,本发明设置的自适应IO阈值在保证了逻辑块变换速率进度的稳定性前提下,最大限度地提高了对用户读写IO请求的响应速度,解决了在IO性能要求较高的场合,现有的在线处理技术会导致IO性能严重下降,出现每隔几秒或十几秒就出现IO为0的问题。本发明充分利用了系统资源,平衡逻辑块变换和用户读写请求之间的冲突,提高了虚拟磁盘IO性能和主机的响应速度。本发明充分利用了系统资源,平衡逻辑块变换和用户读写请求之间的冲突,提高了虚拟磁盘IO性能和主机的响应速度。
通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。
Claims (10)
1.一种动态的虚拟磁盘逻辑块变换方法,其特征在于,包括:
A,在虚拟磁盘的存储空间内设置一个动态处理窗和一个容量大于等于动态处理窗的动态预留空间;
B,按照新逻辑块的大小,将动态处理窗内的旧逻辑块迁移到动态预留空间中并重新编写逻辑地址;
C,当动态处理窗内的旧逻辑块迁移完毕后,将动态处理窗和动态预留空间在存储空间中同向移动一个动态处理窗的位置,重复执行步骤B,直到虚拟磁盘中所有旧逻辑块都处理完毕。
2.根据权利要求1所述动态的虚拟磁盘逻辑块变换方法,其特征在于,步骤A中,在存储空间中设置的所述动态处理窗与所述动态预留空间相邻。
3.根据权利要求1所述动态的虚拟磁盘逻辑块变换方法,其特征在于,步骤B中,将动态处理窗内的旧逻辑块迁移到动态预留空间过程中的读命令和写命令是并行处理或者串行处理的。
4.一种在逻辑块变换过程中兼容用户读写的方法,其特征在于,包括:
A1,当用户读写命令的地址落在动态处理窗内时,设置读写IO阈值;
B1,遍历虚拟磁盘的所有成员盘,统计逻辑块变换读写命令总个数以及用户读写命令总个数;
C1,判断逻辑块变换读写命令总个数与用户读写命令总个数的差值是否大于IO阈值,若是,则暂停响应逻辑块变换读写命令,响应用户读写命令,否则继续响应逻辑块变换读写命令,不响应用户读写命令。
5.根据权利要求4所述在逻辑块变换过程中兼容用户读写的方法,其特征在于,在步骤A1中进一步设置逻辑块变换的正常速度范围;
在步骤B1之前,该方法还包括:
判断当前动态处理窗内的逻辑块变换速度是否在所述正常速度范围内,若是,则执行步骤B1,否则,执行下面的步骤:
若当前动态处理窗内的逻辑块变换速度小于所述正常速度范围,则继续响应逻辑块变换读写命令,不响应用户读写命令;
若当前动态处理窗内的逻辑块变换速度大于所述正常速度范围,则暂停响应逻辑块变换读写命令,响应用户读写命令。
6.根据权利要求4所述在逻辑块变换过程中兼容用户读写的方法,其特征在于,该方法还包括:
当用户读写命令的地址未落在动态处理窗内时,在逻辑块变换的过程中并发响应用户读写命令。
7.根据权利要求6所述在逻辑块变换过程中兼容用户读写的方法,其特征在于,所述在逻辑块变换的过程中并发响应用户读写命令,具体包括:
逻辑块变换过程中数据向上迁移的情况:
当用户读写命令的地址落在动态处理窗低地址之前时,采用动态处理窗低地址之前的新逻辑块值和动态预留空间偏移量负值计算物理地址,执行用户读写命令,同时,逻辑块变换的过程正常进行,所述新逻辑块是变换之后的逻辑块;
当用户读写命令的地址落在动态处理窗高地址之后时,采用动态处理窗高地址之后的旧逻辑块值和动态预留空间偏移量负值计算物理地址,执行用户读写命令,同时,逻辑块变换的过程正常进行,所述旧逻辑块是变换之前的逻辑块;
以及,逻辑块变换过程中数据向下迁移的情况:
当用户读写命令的地址落在动态处理窗高地址之后时,采用动态处理窗低地址之前的新逻辑块值和动态预留空间偏移量正值计算物理地址,执行用户读写命令,同时,逻辑块变换的过程正常进行;
当用户读写命令的地址落在动态处理窗低地址之前时,采用动态处理窗高地址之后的旧逻辑块值和动态预留空间偏移量正值计算物理地址,执行用户读写命令,同时,逻辑块变换的过程正常进行。
8.一种在逻辑块变换过程中兼容用户读写的装置,其特征在于,包括:
参数设置模块,用于当用户读写命令的地址落在动态处理窗内时,设置IO阈值;
统计模块,用于遍历虚拟磁盘的所有成员盘,统计逻辑块变换读写命令总个数以及用户读写命令总个数;
自适应处理模块,用于判断逻辑块变换读写命令总个数与用户读写命令总个数的差值是否大于IO阈值,若是,则调用用户读写请求处理模块,暂停调用逻辑块变换请求处理模块,否则继续调用逻辑块变换请求处理模块;
用户读写请求处理模块,用于根据磁盘阵列RAID算法操作虚拟磁盘来响应用户读写命令;
逻辑块变换请求处理模块,用于根据所述虚拟磁盘逻辑块变换方法操作虚拟磁盘来响应逻辑块变换读写命令。
9.根据权利要求8所述在逻辑块变换过程中兼容用户读写的装置,其特征在于,所述参数设置模块还用于设置逻辑块变换的正常速度范围;
该装置进一步包括:
速度判断模块,用于判断当前动态处理窗内的逻辑块变换速度是否在所述正常速度范围内,若是,则调用统计模块,否则调用自适应处理模块;
自适应处理模块,进一步用于在当前动态处理窗内的逻辑块变换速度小于所述正常速度范围时,继续调用逻辑块变换请求处理模块;在当前动态处理窗内的逻辑块变换速度大于所述正常速度范围时,调用用户读写请求处理模块,暂停调用逻辑块变换请求处理模块。
10.根据权利要求8所述在逻辑块变换过程中兼容用户读写的装置,其特征在于,该装置进一步包括:
地址判断模块,用于判断当用户读写命令的地址是否落在动态处理窗内,若是,则调用参数设置模块,否则直接调用用户读写请求处理模块或者逻辑块变换请求处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010292996.XA CN101957729B (zh) | 2010-09-27 | 2010-09-27 | 逻辑块变换方法及基于该方法兼容用户读写的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010292996.XA CN101957729B (zh) | 2010-09-27 | 2010-09-27 | 逻辑块变换方法及基于该方法兼容用户读写的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101957729A true CN101957729A (zh) | 2011-01-26 |
CN101957729B CN101957729B (zh) | 2014-07-02 |
Family
ID=43485079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010292996.XA Expired - Fee Related CN101957729B (zh) | 2010-09-27 | 2010-09-27 | 逻辑块变换方法及基于该方法兼容用户读写的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101957729B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622189A (zh) * | 2011-12-31 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 存储虚拟化的装置、数据存储方法及系统 |
CN103631537A (zh) * | 2013-11-29 | 2014-03-12 | 华为技术有限公司 | 一种虚拟磁盘的管理方法及装置 |
WO2016061766A1 (zh) * | 2014-10-22 | 2016-04-28 | 华为技术有限公司 | 对象存储系统中的业务流控制方法、控制器和系统 |
CN106209737A (zh) * | 2015-05-04 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 控制远程服务调用频率的方法和装置 |
CN110568995A (zh) * | 2019-08-30 | 2019-12-13 | 珠海格力电器股份有限公司 | 数据迁移方法及系统 |
CN112114531A (zh) * | 2020-08-10 | 2020-12-22 | 广州明珞装备股份有限公司 | 快速部署气缸逻辑块的方法、系统、设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1661570A (zh) * | 2004-02-26 | 2005-08-31 | 索尼株式会社 | 信息处理系统、信息处理方法和计算机程序 |
US7181578B1 (en) * | 2002-09-12 | 2007-02-20 | Copan Systems, Inc. | Method and apparatus for efficient scalable storage management |
CN101101569A (zh) * | 2007-06-28 | 2008-01-09 | 忆正存储技术(深圳)有限公司 | 基于多通道闪存设备逻辑条带的自适应控制方法 |
CN101241476A (zh) * | 2008-01-30 | 2008-08-13 | 中国科学院计算技术研究所 | 一种虚拟存储系统和方法 |
US20090204872A1 (en) * | 2003-12-02 | 2009-08-13 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
-
2010
- 2010-09-27 CN CN201010292996.XA patent/CN101957729B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7181578B1 (en) * | 2002-09-12 | 2007-02-20 | Copan Systems, Inc. | Method and apparatus for efficient scalable storage management |
US20090204872A1 (en) * | 2003-12-02 | 2009-08-13 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
CN1661570A (zh) * | 2004-02-26 | 2005-08-31 | 索尼株式会社 | 信息处理系统、信息处理方法和计算机程序 |
CN101101569A (zh) * | 2007-06-28 | 2008-01-09 | 忆正存储技术(深圳)有限公司 | 基于多通道闪存设备逻辑条带的自适应控制方法 |
CN101241476A (zh) * | 2008-01-30 | 2008-08-13 | 中国科学院计算技术研究所 | 一种虚拟存储系统和方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622189A (zh) * | 2011-12-31 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 存储虚拟化的装置、数据存储方法及系统 |
CN102622189B (zh) * | 2011-12-31 | 2015-11-25 | 华为数字技术(成都)有限公司 | 存储虚拟化的装置、数据存储方法及系统 |
CN103631537A (zh) * | 2013-11-29 | 2014-03-12 | 华为技术有限公司 | 一种虚拟磁盘的管理方法及装置 |
CN103631537B (zh) * | 2013-11-29 | 2016-09-14 | 华为技术有限公司 | 一种虚拟磁盘的管理方法及装置 |
WO2016061766A1 (zh) * | 2014-10-22 | 2016-04-28 | 华为技术有限公司 | 对象存储系统中的业务流控制方法、控制器和系统 |
US9804981B2 (en) | 2014-10-22 | 2017-10-31 | Huawei Technologies Co., Ltd. | Method, controller, and system for service flow control in object-based storage system |
US9984013B2 (en) | 2014-10-22 | 2018-05-29 | Huawei Technologies Co., Ltd. | Method, controller, and system for service flow control in object-based storage system |
CN106209737A (zh) * | 2015-05-04 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 控制远程服务调用频率的方法和装置 |
CN106209737B (zh) * | 2015-05-04 | 2019-11-05 | 阿里巴巴集团控股有限公司 | 控制远程服务调用频率的方法和装置 |
CN110568995A (zh) * | 2019-08-30 | 2019-12-13 | 珠海格力电器股份有限公司 | 数据迁移方法及系统 |
CN112114531A (zh) * | 2020-08-10 | 2020-12-22 | 广州明珞装备股份有限公司 | 快速部署气缸逻辑块的方法、系统、设备和存储介质 |
CN112114531B (zh) * | 2020-08-10 | 2024-05-14 | 广州明珞装备股份有限公司 | 快速部署气缸逻辑块的方法、系统、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101957729B (zh) | 2014-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9665293B2 (en) | Method for a storage device processing data and storage device | |
CN105205014B (zh) | 一种数据存储方法和装置 | |
US8909887B1 (en) | Selective defragmentation based on IO hot spots | |
KR102318477B1 (ko) | Ssd 어레이 관리를 위한 스트림 식별자 기반 스토리지 시스템 | |
CN101957729B (zh) | 逻辑块变换方法及基于该方法兼容用户读写的方法和装置 | |
US8654472B2 (en) | Implementing enhanced fragmented stream handling in a shingled disk drive | |
CN101644996A (zh) | 索引数据的存储方法和存储控制装置 | |
CN101118477A (zh) | 一种提高磁盘数据访问效率的方法 | |
US10956326B2 (en) | Storage system with data management and protection mechanism and method of operation thereof | |
EP2927779A1 (en) | Disk writing method for disk arrays and disk writing device for disk arrays | |
CN110515549B (zh) | 一种数据迁移方法及装置 | |
CN103399823A (zh) | 业务数据的存储方法、设备和系统 | |
CN109375868B (zh) | 一种数据存储方法、调度装置、系统、设备及存储介质 | |
JP6680069B2 (ja) | ストレージ制御装置、ストレージシステム及びストレージ装置制御プログラム | |
US10817480B2 (en) | Hierarchical storage management system | |
CN108563586A (zh) | 一种分离固态盘中垃圾回收数据与用户数据的方法 | |
CN103176753A (zh) | 存储设备及其数据管理方法 | |
CN103399783A (zh) | 虚拟机的镜像文件的存储方法和装置 | |
US9588898B1 (en) | Fullness control for media-based cache operating in a steady state | |
JP5594647B2 (ja) | ストレージ装置及びその制御方法 | |
KR20150127434A (ko) | 메모리제어장치 및 메모리제어장치의 동작 방법 | |
US20130290628A1 (en) | Method and apparatus to pin page based on server state | |
CN102779017A (zh) | 一种固态盘中数据缓存区的控制方法 | |
CN102262511B (zh) | 用于raid的缓存管理系统及方法 | |
CN105573668B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140702 Termination date: 20170927 |