虚拟磁盘存储空间的动态分配方法和装置的制作方法

文档序号:6353852阅读:210来源:国知局
专利名称:虚拟磁盘存储空间的动态分配方法和装置的制作方法
技术领域
本发明涉及虚拟磁盘技术领域,特别涉及虚拟磁盘空间的动态分配方法和装置。
背景技术
虚拟磁盘是目前比较常见的数据组织和管理方式。虚拟磁盘以物理存储设备为基 础,从物理存储设备中划分出一块存储空间作为虚拟磁盘的存储空间,并在用户界面上为 虚拟磁盘提供一个与物理磁盘相同的盘符。从用户角度来说,使用虚拟磁盘与物理磁盘没 有区别,因此虚拟磁盘的价值在于,在保持传统操作方法不变的前提下,提供附加的数据管 理手段。目前为虚拟磁盘分配的存储空间都是固定大小,这存在以下缺陷如果为虚拟磁盘分配的存储空间过大,则虚拟磁盘所依托的物理存储设备上的剩 余空间就很小,这可能妨碍某些基于该物理存储设备的软件的正常使用,另一方面,如果虚 拟磁盘的使用率不高,会使得分配给该虚拟磁盘的存储空间处于闲置状态,浪费了存储资 源。

发明内容
本发明提供一种虚拟磁盘存储空间的动态分配方法,依据需要写入虚拟磁盘中的 数据的大小,动态的为虚拟磁盘分配相应大小的存储空间。本发明提供一种虚拟磁盘存储空间的动态分配装置,依据需要写入虚拟磁盘中的 数据的大小,动态的为虚拟磁盘分配相应大小的存储空间。本发明的技术方案是这样实现的一种虚拟磁盘存储空间的动态分配方法,关键在于,在物理磁盘中创建磁盘文件, 该磁盘文件中包括长度初始化为0的用户数据存储区;该方法还包括向虚拟磁盘中写入数据的步骤,包括Al、根据待写入数据的扇区号,按照预定映射算法计算存储块序号;Bi、判断所述存储块序号对应的存储块是否已分配到所述用户数据存储区,如果 不是,执行步骤Cl,否则执行步骤Dl ;Cl、将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小 的区域;D1、将待写入数据写入所述存储块序号对应的存储块中;从虚拟磁盘中读出数据的步骤,包括A2、根据待读出数据的扇区号,按照预定映射算法计算存储块序号;B2、判断所述存储块序号对应的存储块是否已分配到所述用户数据存储区、且所 述待读出数据的扇区号对应的扇区中是否存在数据,如果是,执行步骤C2,否则执行步骤 D2 ;C2、从所述存储块序号对应的存储块中读出待读出数据,并结束流程;
D2、返回全0数据。一种虚拟磁盘存储空间的动态分配装置,关键在于,该装置包括磁盘文件创建模块,用于在物理磁盘中创建磁盘文件,该磁盘文件中包括长度初 始化为0的用户数据存储区;数据写入模块,用于根据待写入数据的扇区号、按照预定映射算法计算存储块序 号;判断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区,如果不是, 将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域,再将 待写入数据写入自身计算出的存储块序号对应的存储块中,否则直接将待写入数据写入自 身计算出的存储块序号对应的存储块中;数据读出模块,用于根据待读出数据的扇区号,按照预定映射算法计算存储块序 号;判断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区、且所述待 读出数据的扇区号对应的扇区中是否存在数据,如果是,从自身计算出的存储块序号对应 的存储块中读出待读出数据,否则返回全0数据。可见,在本发明虚拟磁盘存储空间的动态分配方法和装置中,虚拟磁盘依托物理 磁盘上的磁盘文件实现,该磁盘文件中的用户数据存储区的长度初始化为0,不占用物理磁 盘上的存储空间,只在有数据写入时,才根据待写入数据的实际大小,动态扩展用户数据存 储区的长度,这样使得虚拟磁盘没有数据写入时不会过多占用物理磁盘上的存储空间,提 高了磁盘资源的利用率。


图1为本发明虚拟磁盘存储空间的动态分配装置与文件系统的关系示意图;图加为本发明中的虚拟磁盘存储空间的动态分配方法中向虚拟磁盘写入数据的 流程图;图2b为本发明中的虚拟磁盘存储空间的动态分配方法中从虚拟磁盘读出数据的 流程图;图3为本发明实施例中创建虚拟磁盘的方法流程图;图4为本发明实施例中磁盘文件的结构示意图;图5为本发明实施例中身份验证数据及数据密钥信息的生成流程图;图6为本发明实施例中向虚拟磁盘中写入数据的方法流程图;图7为本发明实施例中打开虚拟磁盘的流程图;图8为本发明实施例中从虚拟磁盘中读出数据的方法流程图;图9为本发明中的虚拟磁盘存储空间的动态分配装置的结构示意图。
具体实施例方式为使本发明的目的和优点更加清楚,下面结合附图和实施例对本发明作进一步的 详细说明。在本发明中,以存储块作为虚拟磁盘的数据组织形式,每个存储块中包括相同数 量的扇区,还包括用于校验的附加信息。虚拟磁盘中的每个存储块具有存储块序号,所有存 储块中的扇区统一编号,即每个扇区还具有扇区号。上述扇区号和存储块序号之间具有映射关系。在上述物理磁盘中创建磁盘文件,该磁盘文件中包括长度初始化为0的用户数据 存储区。图1为本发明中虚拟磁盘与文件系统的关系示意图。本发明中的虚拟磁盘存储空间的动态分配方法包括向虚拟磁盘中写入数据的步 骤和从虚拟磁盘中读出数据的步骤,图加中为上述向虚拟磁盘中写入数据的流程图,图2b 为上述从虚拟磁盘中读出数据的流程图。上述向虚拟磁盘中写入数据的步骤包括步骤201 根据待写入数据的扇区号,按照预定映射算法计算存储块序号。步骤202 判断计算出的存储块序号对应的存储块是否已分配到用户数据存储 区,如果不是,执行步骤203,否则执行步骤204。步骤203 将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相 同大小的区域。步骤204 将待写入的数据写入计算出的存储块序号对应的存储块中。上述从虚拟磁盘中读出数据的步骤包括步骤201’ 根据待读出数据的扇区号,按照预定映射算法计算存储块序号。步骤202’ 判断计算出的存储块序号对应的存储块是否已分配到用户数据存储 区、且待读出数据的扇区号对应的扇区中是否存在数据,如果是,执行步骤203’,否则执行 步骤204,。步骤203’从计算出的存储块序号对应的存储块中读出待读出数据,并结束流程。步骤204,返回全0数据。可见,在本发明虚拟磁盘存储空间的动态分配方法中,虚拟磁盘依托物理磁盘上 的磁盘文件实现,该磁盘文件中的用户数据存储区的长度初始化为0,不占用物理磁盘上的 存储空间,只在有数据写入时,才根据待写入数据的实际大小,动态扩展用户数据存储区的 长度,这样使得虚拟磁盘没有数据写入时不会过多占用物理磁盘上的存储空间,提高了磁 盘资源的利用率。下面给出本发明方法的一个具体实施例,在本实施例中,磁盘文件中的用户数据 存储区占用的存储空间不仅能够随着写入数据量的增加而动态的扩大,且同时还能支持数 据加密。虚拟磁盘的每个存储块中,除了有效数据的写入区域外,还包括比特位图(BITMAP) 数据块,BITMAP中的每个比特位的取值指示所在存储块的一个扇区中是否包含有效数据, 例如将比特位置为0时指示对应扇区中不包含有效数据,将比特位置为1时指示对应扇区 中包含有效数据。上述BITMAP数据块中的比特位与所在存储块中的扇区的对应关系可以 使用下述公式确定ByteIndex = SectorIndexInBlock/8 ;BitIndex = ByteIndexInBlock % 8。其 中,kntoHndexInBlock表示待写入数据或待读出数据的扇区号在存储块中的特定编号, 例如,如上文所述虚拟磁盘中的所有扇区都统一编号,假设待写入数据的扇区号为12、且虚 拟磁盘的每个存储块中包括10个扇区,则该待写入数据的扇区号对应的扇区是第二个存 储块中的第二个扇区,该扇区在存储块中的特定编号就是2 ;ByteIndex表示用于指示待写 入数据或待读出数据对应扇区的比特位在BITMAP数据块中的哪个字节,BitIndex表示该比特位是上述Bytehdex计算结果中的第几个比特;%表示取余运算。图3为本发明实施例中创建虚拟磁盘的方法流程图。步骤301 接收用户输入的磁盘属性信息和用户属性信息。本步骤中,可以通过终端显示装置向用户提供一个输入界面,接收用户输入的磁 盘属性信息。上述磁盘属性信息可以包括磁盘大小、磁盘名称、所依托的磁盘文件的文件名 称、路径、允许访问的用户个数等。作为一种可能的选择,还可以接收用户输入的用户属性 信息,用户属性信息可以包括允许访问的每个用户的用户名、用户密码等验证用户身份的 fn息ο步骤302 选择一个物理磁盘,在该物理磁盘上创建磁盘文件。本步骤中,根据用户要求的虚拟磁盘大小选择一个符合要求的物理磁盘。图4为本发明实施例中磁盘文件的结构示意图,该磁盘文件中包括文件头、空间 分配表和用户数据存储区,其中空间分配表中包括与虚拟磁盘中的存储块一一对应的指示 单元,每个指示单元中包括空间已分配标志和存储块需要的填写位置。图4所示为磁盘文 件结构的一种举例,其中的文件头和空间分配表是相互独立的部分,在某些应用场景下,磁 盘文件中也可以只包括文件头或只包括空间分配表。步骤303 根据虚拟磁盘属性信息构造磁盘头,将磁盘头写入磁盘文件。步骤304 根据用户属性信息构造加密头,将加密头写入磁盘文件。本步骤中,确定虚拟磁盘的各个用户的用户信息,这里的用户信息包括用户属性 信息、身份验证信息、数据密钥信息和用户信息校验数据,其中用户信息校验数据用于校验 上述用户属性信息、身份验证信息和数据密钥信息等是否被破坏或篡改过,进一步提高安 全性。将加密头属性信息、加密头校验信息和上述各个用户的用户信息组成加密头,其中加 密头校验信息用于校验加密头属性信息是否被破坏或篡改过,进一步提高安全性。基于此虚拟磁盘允许多个用户对其进行访问和操作。本实施中加密头的结构如表 一所示。
权利要求
1.一种虚拟磁盘存储空间的动态分配方法,其特征在于,在物理磁盘中创建磁盘文件, 该磁盘文件中包括长度初始化为0的用户数据存储区;该方法还包括向虚拟磁盘中写入数据的步骤,包括Al、根据待写入数据的扇区号,按照预定映射算法计算存储块序号; Bi、判断所述存储块序号对应的存储块是否已分配到所述用户数据存储区,如果不是, 执行步骤Cl,否则执行步骤Dl ;Cl、将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域;D1、将待写入数据写入所述存储块序号对应的存储块中; 从虚拟磁盘中读出数据的步骤,包括A2、根据待读出数据的扇区号,按照预定映射算法计算存储块序号; B2、判断所述存储块序号对应的存储块是否已分配到所述用户数据存储区、且所述待 读出数据的扇区号对应的扇区中是否存在数据,如果是,执行步骤C2,否则执行步骤D2; C2、从所述存储块序号对应的存储块中读出待读出数据,并结束流程; D2、返回全0数据。
2.如权利要求1所述的方法,其特征在于,所述虚拟磁盘的每个存储块中包括比特位 图BITMAP数据块,所述BITMAP数据块中的每个比特位的取值指示所在存储块的一个扇区 中是否包含有效数据。
3.如权利要求2所述的方法,其特征在于,所述磁盘文件还包括空间分配表,所述空间 分配表中包括与虚拟磁盘中的存储块一一对应的指示单元,每个所述指示单元中包括空间 已分配标志和存储块序号的填写位置;所述创建磁盘文件包括计算空间分配表占用的存储空间,在磁盘文件中为空间分配 表分配存储空间;将所述用户数据存储区的长度初始化为0 ;所述步骤Cl中,将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块 相同大小的区域时,进一步在所述存储块序号对应的存储块在空间分配表的指示单元中, 添加空间已分配标志和存储块序号,并将所述存储块序号对应的存储块所包括的BITMAP 数据块中的每个比特位置为不包括有效数据的取值;所述步骤Dl中将待写入数据写入所述存储块序号对应的存储块中时,进一步在被写 入的存储块所包括的BITMAP数据块中,将待写入数据所写入的扇区对应的比特位置为包 含有效数据的取值。
4.如权利要求2所述的方法,其特征在于,所述步骤B2中判断所述待读出数据的扇区 号对应的扇区中是否存在数据为检查所述待读出数据的扇区号对应的扇区在待读出数据 所在存储块的BITMAP中对应的比特位,如果该比特位中的取值指示不包括有效数据,则判 定所述待读出数据的扇区号对应的扇区中不存在有效数据。
5.如权利要求2所述的方法,其特征在于,所述磁盘文件还包括磁盘头,所述创建磁盘 文件包括根据用户提供的磁盘属性构造磁盘头; 将所述用户数据存储区的长度初始化为0。
6.如权利要求2所述的方法,其特征在于,所述磁盘文件还包括加密头,所述创建磁盘文件包括确定虚拟磁盘的各个用户的用户信息,所述用户信息包括用户属性信息、身份验证信 息、数据密钥信息和用户信息校验数据;将加密头属性信息、加密头校验信息和所述各个用户的用户信息写入加密头;将所述用户数据存储区的长度初始化为0。
7.如权利要求6所述的方法,其特征在于,所述向虚拟磁盘中写入数据的步骤之前、或 从虚拟磁盘中读出数据的步骤之前,进一步包括在用户输入打开虚拟磁盘的指令后,验证 用户提供的身份信息,在验证通过时解密数据密钥信息。
8.如权利要求7所述的方法,其特征在于,所述身份验证信息为数字证书的文本,所述 数据密钥信息为使用所述数字证书对应的公钥加密的数据密钥密文;所述验证用户提供的身份信息为验证用户提供的数字证书;所述解密数据密钥信息为使用用户提供的数字证书对应的私钥解密数据密钥密文, 得到数据密钥明文。
9.如权利要求7所述的方法,其特征在于,所述身份验证信息为对用户密码执行设定 次数的哈希运算后得到的结果,所述数据密钥信息为使用第一次哈希运算结果的前半部和 倒数第二次哈希运算结果的后半部拼接成的密钥对数据密钥加密得到的数据密钥密文;所 述设定次数为选定数值区间内的一个随机数;所述验证用户提供的身份信息,在验证通过时解密数据密钥信息包括对用户输入的 用户密码进行与所述选定数值区间的下边界值相等次数的哈希运算;判断哈希运算的计算 结果与所述身份验证信息中的结果是否一致,如果是,则使用第一次哈希运算结果的前半 部和倒数第二次哈希运算结果的后半部拼接成的密钥解密所述数据密钥密文,得到数据密 钥明文,否则继续执行哈希运算,并返回执行所述判断哈希运算的计算结果与所述身份验 证信息中的结果是否一致的步骤,直至当前哈希运算的次数达到所述选定数值区间的上边 界值时确定验证失败,并结束流程。
10.如权利要求8或9所述的方法,其特征在于,所述步骤Dl中将待写入数据写入存储 块之前,进一步包括针对每一个步骤Bl中计算出的存储块序号对应的存储块,使用所述 数据密钥明文将该存储块中的每一扇区的待写入数据逐一加密,将加密后的数据写入该存 储块中;所述步骤C2中读出待读出数据之后进一步包括使用所述数据密钥明文对每一扇区 读出的数据进行解密。
11.如权利要求8或9所述的方法,其特征在于,所述步骤Dl或步骤D2之后进一步包括在用户输入关闭虚拟磁盘的指令后,删除所述数据密钥明文。
12.—种虚拟磁盘存储空间的动态分配装置,其特征在于,该装置包括磁盘文件创建模块,用于在物理磁盘中创建磁盘文件,该磁盘文件中包括长度初始化 为0的用户数据存储区;数据写入模块,用于根据待写入数据的扇区号、按照预定映射算法计算存储块序号;判 断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区,如果不是,将磁 盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域,再将待写入数据写入自身计算出的存储块序号对应的存储块中,否则直接将待写入数据写入自身计 算出的存储块序号对应的存储块中;数据读出模块,用于根据待读出数据的扇区号,按照预定映射算法计算存储块序号;判 断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区、且所述待读出数 据的扇区号对应的扇区中是否存在数据,如果是,从自身计算出的存储块序号对应的存储 块中读出待读出数据,否则返回全0数据。
13.如权利要求12所述的装置,其特征在于,所述磁盘文件创建模块包括文件创建单 元、空间分配表构造单元和用户数据存储区构造单元;所述文件创建单元,用于在物理磁盘中创建磁盘文件,该磁盘文件包括空间分配表和 用户数据存储区,所述空间分配表中包括与虚拟磁盘中的存储块一一对应的指示单元,每 个所述指示单元中包括空间已分配标志和存储块序号的填写位置;所述空间分配表构造单元,用于计算空间分配表占用的存储空间,在磁盘文件中为空 间分配表分配存储空间;所述用户数据存储区初始化构造单元,用于将用户数据存储区的长度初始化为0 ;所述数据写入模块进一步用于,在将磁盘文件的用户数据存储区扩大与所述存储块序 号对应的存储块相同大小的区域时,在空间分配表被写入的存储块对应的指示单元中,添 加空间已分配标志和存储块序号,并将所述存储块序号对应的存储块所包括的BITMAP数 据块中的每个比特位置为不包括有效数据的取值;在将待写入数据写入所述存储块序号对 应的存储块中时,在被写入的存储块所包括的BITMAP数据块中,将待写入数据所写入的扇 区对应的比特位置为包含有效数据的取值。
14.如权利要求12所述的装置,其特征在于,所述数据读出模块检查所述待读出数据 的扇区号对应的扇区在待读出数据所在存储块的BITMAP中对应的比特位,如果该比特位 中的取值指示不包括有效数据,则判定所述待读出数据的扇区号对应的扇区中不存在有效 数据。
15.如权利要求12所述的装置,其特征在于,所述磁盘文件创建模块包括文件创建单 元、磁盘头构造单元和用户数据存储区构造单元;所述文件创建单元,用于在物理磁盘中创建磁盘文件,该磁盘文件包括磁盘头和用户 数据存储区;所述磁盘头构造单元,用于根据用户提供的磁盘属性构造磁盘头;所述用户数据存储区初始化构造单元,用于将用户数据存储区的长度初始化为0。
16.如权利要求12所述的装置,其特征在于,所述磁盘文件创建模块包括文件创建单 元、加密头构造单元和用户数据存储区构造单元;所述文件创建单元,用于在物理磁盘中创建磁盘文件,该磁盘文件包括磁盘头和用户 数据存储区;所述加密头创建单元,用于确定虚拟磁盘的各个用户的用户信息,所述用户信息包括 用户属性信息、身份验证信息、数据密钥信息和用户信息校验数据;将加密头属性信息、加 密头校验信息和所述各个用户的用户信息写入加密头;所述用户数据存储区初始化构造单元,用于将用户数据存储区的长度初始化为0。
17.如权利要求16所述的装置,其特征在于,该装置中进一步包括验证模块,用于在用户输入打开虚拟磁盘的指令后,验证用户提供的身份信息,在验证通过时解密数据密钥 fn息ο
18.如权利要求17所述的装置,其特征在于,所述身份验证信息为数字证书的文本,所 述数据密钥信息为使用所述数字证书对应的公钥加密的数据密钥密文;所述验证模块包括接收单元和验证执行单元;所述接收单元,用于接收用户输入的打开虚拟磁盘的指令;所述验证执行单元,用于在所述接收单元接收到用户输入的打开虚拟磁盘的指令后, 验证用户提供的数字证书,在验证通过时,使用用户提供的数字证书对应的私钥解密数据 密钥密文,得到数据密钥明文。
19.如权利要求17所述的装置,其特征在于,所述身份验证信息为对用户密码执行设 定次数的哈希运算后得到的结果,所述数据密钥信息为使用第一次哈希运算结果的前半部 和倒数第二次哈希运算结果的后半部拼接成的密钥对数据密钥加密得到的数据密钥密文; 所述设定次数为选定数值区间内的一个随机数;所述验证模块包括接收单元和验证执行单元;所述接收单元,用于接收用户输入的打开虚拟磁盘的指令;所述验证执行单元,用于在所述接收单元接收到用户输入的打开虚拟磁盘的指令后, 对用户输入的用户密码进行与所述选定数值区间的下边界值相等次数的哈希运算;判断哈 希运算的计算结果与身份验证信息中的结果是否一致,如果是,则使用第一次哈希运算结 果的前半部和倒数第二次哈希运算结果的后半部拼接成的密钥解密所述数据密钥密文,得 到数据密钥明文,否则继续执行哈希运算,并继续执行判断哈希运算的计算结果与身份验 证信息中的结果是否一致的步骤,直至当前哈希运算的次数达到所述选定数值区间的上边 界值时确定验证失败,结束操作。
20.如权利要求18或19所述的装置,其特征在于,所述数据写入模块进一步用于,针对 每一个自身计算出的存储块序号对应的存储块,使用所述数据密钥明文将该存储块中的每 一扇区的待写入数据逐一加密,将加密后的数据写入该存储块中;所述数据读出模块进一步用于,使用所述数据密钥明文对每一扇区读出的数据进行解
21.如权利要求18或19所述的装置,其特征在于,所述验证执行单元进一步用于,在用 户输入关闭虚拟磁盘的指令后,删除所述数据密钥明文。
全文摘要
本发明公开了虚拟磁盘存储空间的动态分配方法和装置,虚拟磁盘依托物理磁盘上的磁盘文件实现,该磁盘文件中的用户数据存储区的长度初始化为0,不占用物理磁盘上的存储空间,只在有数据写入时,才根据待写入数据的实际大小,动态扩展用户数据存储区的长度,这样使得虚拟磁盘没有数据写入时不会过多占用物理磁盘上的存储空间,提高了磁盘资源的利用率。
文档编号G06F3/06GK102081575SQ20111002970
公开日2011年6月1日 申请日期2011年1月27日 优先权日2011年1月27日
发明者孙吉平, 韩勇 申请人:北京深思洛克软件技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1