CN102081575A - 虚拟磁盘存储空间的动态分配方法和装置 - Google Patents
虚拟磁盘存储空间的动态分配方法和装置 Download PDFInfo
- Publication number
- CN102081575A CN102081575A CN 201110029702 CN201110029702A CN102081575A CN 102081575 A CN102081575 A CN 102081575A CN 201110029702 CN201110029702 CN 201110029702 CN 201110029702 A CN201110029702 A CN 201110029702A CN 102081575 A CN102081575 A CN 102081575A
- Authority
- CN
- China
- Prior art keywords
- data
- storage block
- storage
- disk
- sequence number
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了虚拟磁盘存储空间的动态分配方法和装置,虚拟磁盘依托物理磁盘上的磁盘文件实现,该磁盘文件中的用户数据存储区的长度初始化为0,不占用物理磁盘上的存储空间,只在有数据写入时,才根据待写入数据的实际大小,动态扩展用户数据存储区的长度,这样使得虚拟磁盘没有数据写入时不会过多占用物理磁盘上的存储空间,提高了磁盘资源的利用率。
Description
技术领域
本发明涉及虚拟磁盘技术领域,特别涉及虚拟磁盘空间的动态分配方法和装置。
背景技术
虚拟磁盘是目前比较常见的数据组织和管理方式。虚拟磁盘以物理存储设备为基础,从物理存储设备中划分出一块存储空间作为虚拟磁盘的存储空间,并在用户界面上为虚拟磁盘提供一个与物理磁盘相同的盘符。从用户角度来说,使用虚拟磁盘与物理磁盘没有区别,因此虚拟磁盘的价值在于,在保持传统操作方法不变的前提下,提供附加的数据管理手段。
目前为虚拟磁盘分配的存储空间都是固定大小,这存在以下缺陷:
如果为虚拟磁盘分配的存储空间过大,则虚拟磁盘所依托的物理存储设备上的剩余空间就很小,这可能妨碍某些基于该物理存储设备的软件的正常使用,另一方面,如果虚拟磁盘的使用率不高,会使得分配给该虚拟磁盘的存储空间处于闲置状态,浪费了存储资源。
发明内容
本发明提供一种虚拟磁盘存储空间的动态分配方法,依据需要写入虚拟磁盘中的数据的大小,动态的为虚拟磁盘分配相应大小的存储空间。
本发明提供一种虚拟磁盘存储空间的动态分配装置,依据需要写入虚拟磁盘中的数据的大小,动态的为虚拟磁盘分配相应大小的存储空间。
本发明的技术方案是这样实现的:
一种虚拟磁盘存储空间的动态分配方法,关键在于,在物理磁盘中创建磁盘文件,该磁盘文件中包括长度初始化为0的用户数据存储区;该方法还包括:
向虚拟磁盘中写入数据的步骤,包括:
A1、根据待写入数据的扇区号,按照预定映射算法计算存储块序号;
B1、判断所述存储块序号对应的存储块是否已分配到所述用户数据存储区,如果不是,执行步骤C1,否则执行步骤D1;
C1、将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域;
D1、将待写入数据写入所述存储块序号对应的存储块中;
从虚拟磁盘中读出数据的步骤,包括:
A2、根据待读出数据的扇区号,按照预定映射算法计算存储块序号;
B2、判断所述存储块序号对应的存储块是否已分配到所述用户数据存储区、且所述待读出数据的扇区号对应的扇区中是否存在数据,如果是,执行步骤C2,否则执行步骤D2;
C2、从所述存储块序号对应的存储块中读出待读出数据,并结束流程;
D2、返回全0数据。
一种虚拟磁盘存储空间的动态分配装置,关键在于,该装置包括:
磁盘文件创建模块,用于在物理磁盘中创建磁盘文件,该磁盘文件中包括长度初始化为0的用户数据存储区;
数据写入模块,用于根据待写入数据的扇区号、按照预定映射算法计算存储块序号;判断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区,如果不是,将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域,再将待写入数据写入自身计算出的存储块序号对应的存储块中,否则直接将待写入数据写入自身计算出的存储块序号对应的存储块中;
数据读出模块,用于根据待读出数据的扇区号,按照预定映射算法计算存储块序号;判断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区、且所述待读出数据的扇区号对应的扇区中是否存在数据,如果是,从自身计算出的存储块序号对应的存储块中读出待读出数据,否则返回全0数据。
可见,在本发明虚拟磁盘存储空间的动态分配方法和装置中,虚拟磁盘依托物理磁盘上的磁盘文件实现,该磁盘文件中的用户数据存储区的长度初始化为0,不占用物理磁盘上的存储空间,只在有数据写入时,才根据待写入数据的实际大小,动态扩展用户数据存储区的长度,这样使得虚拟磁盘没有数据写入时不会过多占用物理磁盘上的存储空间,提高了磁盘资源的利用率。
附图说明
图1为本发明虚拟磁盘存储空间的动态分配装置与文件系统的关系示意图;
图2a为本发明中的虚拟磁盘存储空间的动态分配方法中向虚拟磁盘写入数据的流程图;
图2b为本发明中的虚拟磁盘存储空间的动态分配方法中从虚拟磁盘读出数据的流程图;
图3为本发明实施例中创建虚拟磁盘的方法流程图;
图4为本发明实施例中磁盘文件的结构示意图;
图5为本发明实施例中身份验证数据及数据密钥信息的生成流程图;
图6为本发明实施例中向虚拟磁盘中写入数据的方法流程图;
图7为本发明实施例中打开虚拟磁盘的流程图;
图8为本发明实施例中从虚拟磁盘中读出数据的方法流程图;
图9为本发明中的虚拟磁盘存储空间的动态分配装置的结构示意图。
具体实施方式
为使本发明的目的和优点更加清楚,下面结合附图和实施例对本发明作进一步的详细说明。
在本发明中,以存储块作为虚拟磁盘的数据组织形式,每个存储块中包括相同数量的扇区,还包括用于校验的附加信息。虚拟磁盘中的每个存储块具有存储块序号,所有存储块中的扇区统一编号,即每个扇区还具有扇区号。上述扇区号和存储块序号之间具有映射关系。
在上述物理磁盘中创建磁盘文件,该磁盘文件中包括长度初始化为0的用户数据存储区。
图1为本发明中虚拟磁盘与文件系统的关系示意图。
本发明中的虚拟磁盘存储空间的动态分配方法包括向虚拟磁盘中写入数据的步骤和从虚拟磁盘中读出数据的步骤,图2a中为上述向虚拟磁盘中写入数据的流程图,图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。其中,SentorIndexInBlock表示待写入数据或待读出数据的扇区号在存储块中的特定编号,例如,如上文所述虚拟磁盘中的所有扇区都统一编号,假设待写入数据的扇区号为12、且虚拟磁盘的每个存储块中包括10个扇区,则该待写入数据的扇区号对应的扇区是第二个存储块中的第二个扇区,该扇区在存储块中的特定编号就是2;ByteIndex表示用于指示待写入数据或待读出数据对应扇区的比特位在BITMAP数据块中的哪个字节,BitIndex表示该比特位是上述ByteIndex计算结果中的第几个比特;%表示取余运算。
图3为本发明实施例中创建虚拟磁盘的方法流程图。
步骤301:接收用户输入的磁盘属性信息和用户属性信息。
本步骤中,可以通过终端显示装置向用户提供一个输入界面,接收用户输入的磁盘属性信息。上述磁盘属性信息可以包括磁盘大小、磁盘名称、所依托的磁盘文件的文件名称、路径、允许访问的用户个数等。作为一种可能的选择,还可以接收用户输入的用户属性信息,用户属性信息可以包括允许访问的每个用户的用户名、用户密码等验证用户身份的信息。
步骤302:选择一个物理磁盘,在该物理磁盘上创建磁盘文件。
本步骤中,根据用户要求的虚拟磁盘大小选择一个符合要求的物理磁盘。
图4为本发明实施例中磁盘文件的结构示意图,该磁盘文件中包括文件头、空间分配表和用户数据存储区,其中空间分配表中包括与虚拟磁盘中的存储块一一对应的指示单元,每个指示单元中包括空间已分配标志和存储块需要的填写位置。图4所示为磁盘文件结构的一种举例,其中的文件头和空间分配表是相互独立的部分,在某些应用场景下,磁盘文件中也可以只包括文件头或只包括空间分配表。
步骤303:根据虚拟磁盘属性信息构造磁盘头,将磁盘头写入磁盘文件。
步骤304:根据用户属性信息构造加密头,将加密头写入磁盘文件。
本步骤中,确定虚拟磁盘的各个用户的用户信息,这里的用户信息包括用户属性信息、身份验证信息、数据密钥信息和用户信息校验数据,其中用户信息校验数据用于校验上述用户属性信息、身份验证信息和数据密钥信息等是否被破坏或篡改过,进一步提高安全性。将加密头属性信息、加密头校验信息和上述各个用户的用户信息组成加密头,其中加密头校验信息用于校验加密头属性信息是否被破坏或篡改过,进一步提高安全性。
基于此虚拟磁盘允许多个用户对其进行访问和操作。本实施中加密头的结构如表一所示。
表一
表一中示出的身份验证数据可以是数字证书的文本,此时数据密钥信息为使用数字证书对应的公钥加密的数据密钥密文。
表一中示出的身份验证数据还可以是对用户密码执行设定次数的哈希运算后得到的结果,此时数据密钥信息为使用第一次哈希运算结果的前半部和倒数第二次哈希运算结果的后半部拼接成的密钥对数据密钥加密得到的数据密钥密文。图5为本发明实施例中身份验证数据及数据密钥信息的生成流程图,该流程包括:
步骤501:在选定的数值区间内生成一个随机数X。
本步骤中,优选的数值区间为50-1000。
步骤502:对用户密码进行第一次哈希运算,并将第一次哈希运算的结果的前半部保存为H1。
步骤503:继续执行哈希运算直至完成第X-1次哈希运算,将第X-1次哈希运算的结果的后半部保存为H2。
步骤504:执行第X次哈希运算,将第X次哈希运算的结果保存为身份验证数据。
步骤505:使用H1和H2拼接成的密钥K加密数据密钥,将得到的数据密钥密文保存为数据密钥信息。
经过上述步骤501~步骤505,生成加密头中的身份验证数据和数据密钥信息。
步骤305:计算空间分配表占用的存储空间,在磁盘文件中为空间分配表分配存储空间,将空间分配表每个指示单元中的已分配标志都初始化为未分配,将存储块序号都初始化为0。
本步骤中,空间分配表包括与虚拟磁盘中的存储块一一对应的指示单元,指示单元的总数与虚拟磁盘中存储块的个数相同,按照如下公式计算:N=DiskSize/BlockSize。上述DiskSize代表虚拟磁盘大小,BlockSize代表存储块大小,计算结果向下取整。如果将每个指示单元的长度表示为C,则空间分配表所占用存储空间的大小可以表示为:S=C*N。
步骤306:将用户数据存储区的长度初始化为0。
本步骤中,图4中虚线框所示出的是用户数据存储区,在磁盘文件刚创建时长度初始化为0,随着写入虚拟磁盘数据量的不断增加,用户数据存储区的长度可以动态变化,这一点在后文中的向虚拟磁盘中写入数据的部分详细说明。
经过上述步骤301~306,虚拟磁盘创建完毕,其在物理磁盘上占用的存储空间仅为文件头和空间分配表所占用的存储空间,用户数据存储区此时并未占用存储空间。
图6为本发明实施例中向虚拟磁盘中写入数据的方法流程图,该流程包括:
步骤601:根据待写入数据的扇区号,按照预定映射算法计算存储块序号。
本步骤中,针对文件系统为待写入数据分配的每一个扇区号分别执行一次计算,计算公式为:存储块序号=扇区号/存储块大小。如果某两个扇区本身位于一个存储块中,针对这两个扇区的扇区号计算出的存储块序号是相同的。
步骤602:判断计算出的存储块序号对应的存储块是否已分配到用户数据存储区,如果不是,执行步骤603,否则执行步骤605。
步骤603:将磁盘文件的用户数据存储区扩大与计算出的存储块序号对应的存储块相同大小的区域。
步骤604:在存储块序号对应的存储块在空间分配表的指示单元中,添加空间已分配标志和存储块序号,并将该存储块所包括的BITMAP数据块中的每个比特位置为不包含有效数据的取值。
步骤605:针对每一个计算出的存储块序号对应的存储块,将该存储块中的每一扇区的待写入数据逐一加密,将加密后的数据写入该存储块中。
本步骤中,以扇区为单位进行数据加密,加密过程不依赖其他存储块或扇区。
步骤606:在被写入的存储块的BITMAP数据块中,将待写入数据所写入的扇区对应的比特位置为包含有效数据的取值。
经过上述步骤601~步骤606,在有数据写入虚拟磁盘时,根据待写入数据的大小,动态扩大磁盘文件中的用户数据存储区。
基于上述表一所示的加密头结构,在上述步骤601之前可以进一步包括打开虚拟磁盘的步骤,在上述步骤605之后还可以进一步包括关闭虚拟磁盘的步骤。
当加密头中的身份验证信息为数字证书的文本时,上述打开虚拟磁盘的步骤具体包括:在用户输入的打开虚拟磁盘的指令后,验证用户提供的数字证书;在验证通过时,使用用户提供的数字证书对应的私钥解密数据密钥密文,得到数据密钥明文。
当加密头中的身份验证信息为对用户密码执行设定次数的哈希运算后得到的结果时,图7示出了该情况下打开虚拟磁盘的流程,该流程包括:
步骤701:对用户输入的用户密码连续执行若干次哈希运算,执行次数与生成数据密钥信息时选定的数值区间的下边界值相等。
本步骤中,按照所述数值区间的优选值,将连续进行50次哈希运算。
步骤702:判断哈希运算的计算结果与所述身份验证信息中的结果是否一致,如果是,则执行步骤703,否则执行步骤704。
步骤703:使用第一次哈希运算结果的前半部和倒数第二次哈希运算结果的后半部拼接成的密钥解密所述数据密钥密文,得到数据密钥明文,确定验证成功并结束流程。
步骤704:判断当前哈希运算的执行次数是否已达到生成数据密钥信息时选定的数值区间的上边界值,如果不是,执行步骤705,否则确定验证失败并结束流程。
本步骤中,按照所述数值区间的优选值,上边界值为1000。
步骤705:继续进行哈希计算,并返回执行步骤702。
无论身份验证信息是哪一种情况,上述关闭虚拟磁盘的步骤包括:在用户输入关闭虚拟磁盘的指令后,删除所述数据密钥明文。
基于表一中所示的加密头结构,步骤604中使用上述数据密钥明文进行加密。
图8为本发明实施例中从虚拟磁盘中读出数据的方法流程图,该流程包括:
步骤801:根据待读出数据所在扇区的扇区号,按照预定映射算法计算待读出数据所在存储块的存储块序号。
步骤802:判断计算出的存储块序号对应的存储块是否已分配到用户数据存储区、且待读出数据的扇区号对应的扇区中是否存在数据,如果是,执行步骤803,否则执行步骤804。
本步骤中,判断计算出的存储块需要对应的存储块所包括的BITMAP数据块中,待读出数据的扇区号对应的扇区所对应的比特位的取值是否指示不包含有效数据,如果是,则判定待读出数据的扇区号对应的扇区中不存在有效数据。
步骤803:从计算出的存储块序号对应的存储块中,查找待读出数据所在扇区,对每一扇区读出的待读出数据进行解密。
由于本发明虚拟磁盘的各个存储块中,不仅包括扇区,还包括一些附加信息,所以虚拟磁盘中的扇区并不是连续排布的,为了找到待读出数据所在扇区,必须先确定待读出数据所在的存储块。
步骤804:返回全0数据。
本步骤中,将全0数据返回给调用者。
基于上述表一所示的加密头结构,在上述步骤801之前可以进一步包括打开虚拟磁盘的步骤,在上述步骤804之后还可以进一步包括关闭虚拟磁盘的步骤。上述打开虚拟磁盘的步骤和关闭虚拟磁盘的步骤前文已经作了详细描述,这里不再赘述。
基于上述表一所示的加密头结构,上述步骤803中使用数据密钥明文对每一扇区读出的数据进行解密。
为实现本发明中虚拟磁盘存储空间的动态分配方法,本发明还提供一种虚拟磁盘存储空间的动态分配装置,图9为该装置的结构示意图,该装置包括:磁盘文件创建模块、数据写入模块和数据读出模块。
上述磁盘文件创建模块,用于在物理磁盘中创建磁盘文件,该磁盘文件中包括长度初始化为0的用户数据存储区。
上述数据写入模块,用于根据待写入数据的扇区号、按照预定映射算法计算存储块序号;判断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区,如果不是,将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域,再将待写入数据写入自身计算出的存储块序号对应的存储块中,否则直接将待写入数据写入自身计算出的存储块序号对应的存储块中。
上述数据读出模块,用于根据待读出数据的扇区号,按照预定映射算法计算存储块序号;判断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区、且所述待读出数据的扇区号对应的扇区中是否存在数据,如果是,从自身计算出的存储块序号对应的存储块中读出待读出数据,否则返回全0数据。
基于前文方法中已介绍过的磁盘文件的结构,上述磁盘文件创建模块可以包括:文件创建单元、磁盘头构造单元、加密头构造单元、空间分配表构造单元和用户数据存储区构造单元。
上述文件创建单元,用于在物理磁盘中创建磁盘文件,该磁盘文件包括磁盘头、加密头、空间分配表和用户数据存储区,所述空间分配表中包括与虚拟磁盘中的存储块一一对应的指示单元,每个所述指示单元中包括空间已分配标志和存储块序号的填写位置。在其他应用场景下,磁盘文件中也可能只包括磁盘头、加密头和空间分配表中的一种或几种。
上述磁盘头构造单元,用于根据磁盘属性信息构造磁盘头,将磁盘头写入磁盘文件中。
上述加密头构造单元,用于根据用户属性信息构造加密头,将加密头写入磁盘文件中。
上述空间分配表构造单元,用于计算空间分配表占用的存储空间,在磁盘文件中为空间分配表分配存储空间。
上述用户数据存储区初始化构造单元,用于将用户数据存储区的长度初始化为0。
在磁盘文件创建模块的内部结构基础上,上述数据写入模块进一步用于,在将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域时,在空间分配表被写入的存储块对应的指示单元中,添加空间已分配标志和存储块序号,并将所述存储块序号对应的存储块所包括的BITMAP数据块中的每个比特位置为不包括有效数据的取值;在将待写入数据写入所述存储块序号对应的存储块中时,在被写入的存储块所包括的BITMAP数据块中,将待写入数据所写入的扇区对应的比特位置为已包含有效数据的取值。
上述数据读出模块检查待读出数据的扇区号对应的扇区在待读出数据所在存储块的BITMAP中对应的比特位,如果该比特位中的取值指示不包括有效数据,则判定待读出数据的扇区号对应的扇区中不存在有效数据。
进一步,本发明装置中可以进一步包括验证模块,用于在用户输入打开虚拟磁盘的指令后,验证用户提供的身份信息,在验证通过时解密数据密钥信息。
当加密头中的身份验证信息为数字证书的文本时,加密头中的数据密钥信息为使用所述数字证书对应的公钥加密的数据密钥密文。基于这种情况,上述验证模块包括:接收单元和验证执行单元。其中接收单元,用于接收用户输入的打开虚拟磁盘的指令,验证执行单元,用于在所述接收单元接收到用户输入的打开虚拟磁盘的指令后,验证用户提供的数字证书,在验证通过时,使用用户提供的数字证书对应的私钥解密数据密钥密文,得到数据密钥明文。
当加密头中的身份验证信息为对用户密码执行设定次数的哈希运算后得到的结果时,加密头中的数据密钥信息为使用第一次哈希运算结果的前半部和倒数第二次哈希运算结果的后半部拼接成的密钥对数据密钥加密得到的数据密钥密文。这里的设定次数也是选定的数值区间内的一个随机数。基于这种情况,上述验证模块包括:接收单元和验证执行单元。其中接收单元,用于接收用户输入的打开虚拟磁盘的指令,验证执行单元,用于在所述接收单元接收到用户输入的打开虚拟磁盘的指令后,对用户输入的用户密码进行与选定数值区间的下边界值相等次数的哈希运算;判断哈希运算的计算结果与身份验证信息中的结果是否一致,如果是,则使用第一次哈希运算结果的前半部和倒数第二次哈希运算结果的后半部拼接成的密钥解密所述数据密钥密文,得到数据密钥明文,否则继续执行哈希运算,并继续执行判断哈希运算的计算结果与身份验证信息中的结果是否一致的步骤,直至当前哈希运算的次数达到选定数值区间的上边界值时确定验证失败,结束操作。
无论加密头中的身份验证信息是上述哪种情况,上述验证执行单元都可以进一步用于,在用户输入关闭虚拟磁盘的指令后,删除数据密钥明文。
如果考虑到对待写入数据进行加密,则数据写入模块在将待写入数据写入与自身计算出的存储块序号对应的存储块中之前,针对每一个与自身计算出的存储块序号对应的存储块,使用上述验证模块得到的数据密钥明文将该存储块中的每一扇区的待写入数据逐一加密。相应的,数据读出模块进一步用于,在读出待读出数据后,使用上述验证模块得到的数据密钥明文分别对每一扇区读出的数据进行解密。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (21)
1.一种虚拟磁盘存储空间的动态分配方法,其特征在于,在物理磁盘中创建磁盘文件,该磁盘文件中包括长度初始化为0的用户数据存储区;该方法还包括:
向虚拟磁盘中写入数据的步骤,包括:
A1、根据待写入数据的扇区号,按照预定映射算法计算存储块序号;
B1、判断所述存储块序号对应的存储块是否已分配到所述用户数据存储区,如果不是,执行步骤C1,否则执行步骤D1;
C1、将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域;
D1、将待写入数据写入所述存储块序号对应的存储块中;
从虚拟磁盘中读出数据的步骤,包括:
A2、根据待读出数据的扇区号,按照预定映射算法计算存储块序号;
B2、判断所述存储块序号对应的存储块是否已分配到所述用户数据存储区、且所述待读出数据的扇区号对应的扇区中是否存在数据,如果是,执行步骤C2,否则执行步骤D2;
C2、从所述存储块序号对应的存储块中读出待读出数据,并结束流程;
D2、返回全0数据。
2.如权利要求1所述的方法,其特征在于,所述虚拟磁盘的每个存储块中包括比特位图BITMAP数据块,所述BITMAP数据块中的每个比特位的取值指示所在存储块的一个扇区中是否包含有效数据。
3.如权利要求2所述的方法,其特征在于,所述磁盘文件还包括空间分配表,所述空间分配表中包括与虚拟磁盘中的存储块一一对应的指示单元,每个所述指示单元中包括空间已分配标志和存储块序号的填写位置;
所述创建磁盘文件包括:计算空间分配表占用的存储空间,在磁盘文件中为空间分配表分配存储空间;将所述用户数据存储区的长度初始化为0;
所述步骤C1中,将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域时,进一步在所述存储块序号对应的存储块在空间分配表的指示单元中,添加空间已分配标志和存储块序号,并将所述存储块序号对应的存储块所包括的BITMAP数据块中的每个比特位置为不包括有效数据的取值;
所述步骤D1中将待写入数据写入所述存储块序号对应的存储块中时,进一步在被写入的存储块所包括的BITMAP数据块中,将待写入数据所写入的扇区对应的比特位置为包含有效数据的取值。
4.如权利要求2所述的方法,其特征在于,所述步骤B2中判断所述待读出数据的扇区号对应的扇区中是否存在数据为:检查所述待读出数据的扇区号对应的扇区在待读出数据所在存储块的BITMAP中对应的比特位,如果该比特位中的取值指示不包括有效数据,则判定所述待读出数据的扇区号对应的扇区中不存在有效数据。
5.如权利要求2所述的方法,其特征在于,所述磁盘文件还包括磁盘头,所述创建磁盘文件包括:
根据用户提供的磁盘属性构造磁盘头;
将所述用户数据存储区的长度初始化为0。
6.如权利要求2所述的方法,其特征在于,所述磁盘文件还包括加密头,所述创建磁盘文件包括:
确定虚拟磁盘的各个用户的用户信息,所述用户信息包括用户属性信息、身份验证信息、数据密钥信息和用户信息校验数据;
将加密头属性信息、加密头校验信息和所述各个用户的用户信息写入加密头;
将所述用户数据存储区的长度初始化为0。
7.如权利要求6所述的方法,其特征在于,所述向虚拟磁盘中写入数据的步骤之前、或从虚拟磁盘中读出数据的步骤之前,进一步包括:在用户输入打开虚拟磁盘的指令后,验证用户提供的身份信息,在验证通过时解密数据密钥信息。
8.如权利要求7所述的方法,其特征在于,所述身份验证信息为数字证书的文本,所述数据密钥信息为使用所述数字证书对应的公钥加密的数据密钥密文;
所述验证用户提供的身份信息为:验证用户提供的数字证书;
所述解密数据密钥信息为:使用用户提供的数字证书对应的私钥解密数据密钥密文,得到数据密钥明文。
9.如权利要求7所述的方法,其特征在于,所述身份验证信息为对用户密码执行设定次数的哈希运算后得到的结果,所述数据密钥信息为使用第一次哈希运算结果的前半部和倒数第二次哈希运算结果的后半部拼接成的密钥对数据密钥加密得到的数据密钥密文;所述设定次数为选定数值区间内的一个随机数;
所述验证用户提供的身份信息,在验证通过时解密数据密钥信息包括:对用户输入的用户密码进行与所述选定数值区间的下边界值相等次数的哈希运算;判断哈希运算的计算结果与所述身份验证信息中的结果是否一致,如果是,则使用第一次哈希运算结果的前半部和倒数第二次哈希运算结果的后半部拼接成的密钥解密所述数据密钥密文,得到数据密钥明文,否则继续执行哈希运算,并返回执行所述判断哈希运算的计算结果与所述身份验证信息中的结果是否一致的步骤,直至当前哈希运算的次数达到所述选定数值区间的上边界值时确定验证失败,并结束流程。
10.如权利要求8或9所述的方法,其特征在于,所述步骤D1中将待写入数据写入存储块之前,进一步包括:针对每一个步骤B1中计算出的存储块序号对应的存储块,使用所述数据密钥明文将该存储块中的每一扇区的待写入数据逐一加密,将加密后的数据写入该存储块中;
所述步骤C2中读出待读出数据之后进一步包括:使用所述数据密钥明文对每一扇区读出的数据进行解密。
11.如权利要求8或9所述的方法,其特征在于,所述步骤D1或步骤D2之后进一步包括:
在用户输入关闭虚拟磁盘的指令后,删除所述数据密钥明文。
12.一种虚拟磁盘存储空间的动态分配装置,其特征在于,该装置包括:
磁盘文件创建模块,用于在物理磁盘中创建磁盘文件,该磁盘文件中包括长度初始化为0的用户数据存储区;
数据写入模块,用于根据待写入数据的扇区号、按照预定映射算法计算存储块序号;判断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区,如果不是,将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域,再将待写入数据写入自身计算出的存储块序号对应的存储块中,否则直接将待写入数据写入自身计算出的存储块序号对应的存储块中;
数据读出模块,用于根据待读出数据的扇区号,按照预定映射算法计算存储块序号;判断自身计算出的存储块序号对应的存储块是否已分配到用户数据存储区、且所述待读出数据的扇区号对应的扇区中是否存在数据,如果是,从自身计算出的存储块序号对应的存储块中读出待读出数据,否则返回全0数据。
13.如权利要求12所述的装置,其特征在于,所述磁盘文件创建模块包括:文件创建单元、空间分配表构造单元和用户数据存储区构造单元;
所述文件创建单元,用于在物理磁盘中创建磁盘文件,该磁盘文件包括空间分配表和用户数据存储区,所述空间分配表中包括与虚拟磁盘中的存储块一一对应的指示单元,每个所述指示单元中包括空间已分配标志和存储块序号的填写位置;
所述空间分配表构造单元,用于计算空间分配表占用的存储空间,在磁盘文件中为空间分配表分配存储空间;
所述用户数据存储区初始化构造单元,用于将用户数据存储区的长度初始化为0;
所述数据写入模块进一步用于,在将磁盘文件的用户数据存储区扩大与所述存储块序号对应的存储块相同大小的区域时,在空间分配表被写入的存储块对应的指示单元中,添加空间已分配标志和存储块序号,并将所述存储块序号对应的存储块所包括的BITMAP数据块中的每个比特位置为不包括有效数据的取值;在将待写入数据写入所述存储块序号对应的存储块中时,在被写入的存储块所包括的BITMAP数据块中,将待写入数据所写入的扇区对应的比特位置为包含有效数据的取值。
14.如权利要求12所述的装置,其特征在于,所述数据读出模块检查所述待读出数据的扇区号对应的扇区在待读出数据所在存储块的BITMAP中对应的比特位,如果该比特位中的取值指示不包括有效数据,则判定所述待读出数据的扇区号对应的扇区中不存在有效数据。
15.如权利要求12所述的装置,其特征在于,所述磁盘文件创建模块包括:文件创建单元、磁盘头构造单元和用户数据存储区构造单元;
所述文件创建单元,用于在物理磁盘中创建磁盘文件,该磁盘文件包括磁盘头和用户数据存储区;
所述磁盘头构造单元,用于根据用户提供的磁盘属性构造磁盘头;
所述用户数据存储区初始化构造单元,用于将用户数据存储区的长度初始化为0。
16.如权利要求12所述的装置,其特征在于,所述磁盘文件创建模块包括:文件创建单元、加密头构造单元和用户数据存储区构造单元;
所述文件创建单元,用于在物理磁盘中创建磁盘文件,该磁盘文件包括磁盘头和用户数据存储区;
所述加密头创建单元,用于确定虚拟磁盘的各个用户的用户信息,所述用户信息包括用户属性信息、身份验证信息、数据密钥信息和用户信息校验数据;将加密头属性信息、加密头校验信息和所述各个用户的用户信息写入加密头;
所述用户数据存储区初始化构造单元,用于将用户数据存储区的长度初始化为0。
17.如权利要求16所述的装置,其特征在于,该装置中进一步包括:验证模块,用于在用户输入打开虚拟磁盘的指令后,验证用户提供的身份信息,在验证通过时解密数据密钥信息。
18.如权利要求17所述的装置,其特征在于,所述身份验证信息为数字证书的文本,所述数据密钥信息为使用所述数字证书对应的公钥加密的数据密钥密文;
所述验证模块包括:接收单元和验证执行单元;
所述接收单元,用于接收用户输入的打开虚拟磁盘的指令;
所述验证执行单元,用于在所述接收单元接收到用户输入的打开虚拟磁盘的指令后,验证用户提供的数字证书,在验证通过时,使用用户提供的数字证书对应的私钥解密数据密钥密文,得到数据密钥明文。
19.如权利要求17所述的装置,其特征在于,所述身份验证信息为对用户密码执行设定次数的哈希运算后得到的结果,所述数据密钥信息为使用第一次哈希运算结果的前半部和倒数第二次哈希运算结果的后半部拼接成的密钥对数据密钥加密得到的数据密钥密文;所述设定次数为选定数值区间内的一个随机数;
所述验证模块包括:接收单元和验证执行单元;
所述接收单元,用于接收用户输入的打开虚拟磁盘的指令;
所述验证执行单元,用于在所述接收单元接收到用户输入的打开虚拟磁盘的指令后,对用户输入的用户密码进行与所述选定数值区间的下边界值相等次数的哈希运算;判断哈希运算的计算结果与身份验证信息中的结果是否一致,如果是,则使用第一次哈希运算结果的前半部和倒数第二次哈希运算结果的后半部拼接成的密钥解密所述数据密钥密文,得到数据密钥明文,否则继续执行哈希运算,并继续执行判断哈希运算的计算结果与身份验证信息中的结果是否一致的步骤,直至当前哈希运算的次数达到所述选定数值区间的上边界值时确定验证失败,结束操作。
20.如权利要求18或19所述的装置,其特征在于,所述数据写入模块进一步用于,针对每一个自身计算出的存储块序号对应的存储块,使用所述数据密钥明文将该存储块中的每一扇区的待写入数据逐一加密,将加密后的数据写入该存储块中;
所述数据读出模块进一步用于,使用所述数据密钥明文对每一扇区读出的数据进行解密。
21.如权利要求18或19所述的装置,其特征在于,所述验证执行单元进一步用于,在用户输入关闭虚拟磁盘的指令后,删除所述数据密钥明文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110029702 CN102081575A (zh) | 2011-01-27 | 2011-01-27 | 虚拟磁盘存储空间的动态分配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110029702 CN102081575A (zh) | 2011-01-27 | 2011-01-27 | 虚拟磁盘存储空间的动态分配方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102081575A true CN102081575A (zh) | 2011-06-01 |
Family
ID=44087547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110029702 Pending CN102081575A (zh) | 2011-01-27 | 2011-01-27 | 虚拟磁盘存储空间的动态分配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102081575A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102481A (zh) * | 2013-04-15 | 2014-10-15 | 富泰华工业(深圳)有限公司 | 程序包整合系统及方法 |
CN106656631A (zh) * | 2017-01-19 | 2017-05-10 | 武汉噢易云计算股份有限公司 | 在共享存储上实现逻辑卷动态分配的方法及系统 |
CN106788994A (zh) * | 2016-12-06 | 2017-05-31 | 中国电子科技集团公司第三十二研究所 | 适用于云存储系统的密钥更新方法 |
CN109814946A (zh) * | 2018-12-29 | 2019-05-28 | 创新科存储技术(深圳)有限公司 | 一种在XenServer中实现分布式存储的方法和装置 |
CN109964210A (zh) * | 2017-02-20 | 2019-07-02 | 株式会社日立制作所 | 存储系统和存储控制方法 |
WO2021169121A1 (zh) * | 2020-02-26 | 2021-09-02 | 平安科技(深圳)有限公司 | 数据存储方式转换方法、装置及存储介质 |
CN113590044A (zh) * | 2021-07-30 | 2021-11-02 | 深圳市新威尔电子有限公司 | 电池测试数据存储方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058788B2 (en) * | 2001-02-23 | 2006-06-06 | Falconstor Software, Inc. | Dynamic allocation of computer memory |
CN101079008A (zh) * | 2006-05-22 | 2007-11-28 | 中国软件与技术服务股份有限公司 | 移动存储器失泄密防护的方法和系统 |
CN101201795A (zh) * | 2006-12-13 | 2008-06-18 | 英业达股份有限公司 | 电脑数据储存空间动态分配处理方法及系统 |
CN101800811A (zh) * | 2010-02-02 | 2010-08-11 | 中国软件与技术服务股份有限公司 | 手机数据安全防护方法 |
-
2011
- 2011-01-27 CN CN 201110029702 patent/CN102081575A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058788B2 (en) * | 2001-02-23 | 2006-06-06 | Falconstor Software, Inc. | Dynamic allocation of computer memory |
CN101079008A (zh) * | 2006-05-22 | 2007-11-28 | 中国软件与技术服务股份有限公司 | 移动存储器失泄密防护的方法和系统 |
CN101201795A (zh) * | 2006-12-13 | 2008-06-18 | 英业达股份有限公司 | 电脑数据储存空间动态分配处理方法及系统 |
CN101800811A (zh) * | 2010-02-02 | 2010-08-11 | 中国软件与技术服务股份有限公司 | 手机数据安全防护方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102481A (zh) * | 2013-04-15 | 2014-10-15 | 富泰华工业(深圳)有限公司 | 程序包整合系统及方法 |
CN106788994A (zh) * | 2016-12-06 | 2017-05-31 | 中国电子科技集团公司第三十二研究所 | 适用于云存储系统的密钥更新方法 |
CN106788994B (zh) * | 2016-12-06 | 2020-04-07 | 中国电子科技集团公司第三十二研究所 | 适用于云存储系统的密钥更新方法 |
CN106656631A (zh) * | 2017-01-19 | 2017-05-10 | 武汉噢易云计算股份有限公司 | 在共享存储上实现逻辑卷动态分配的方法及系统 |
CN106656631B (zh) * | 2017-01-19 | 2019-10-25 | 武汉噢易云计算股份有限公司 | 在共享存储上实现逻辑卷动态分配的方法 |
CN109964210A (zh) * | 2017-02-20 | 2019-07-02 | 株式会社日立制作所 | 存储系统和存储控制方法 |
CN109964210B (zh) * | 2017-02-20 | 2023-05-30 | 株式会社日立制作所 | 存储系统和存储控制方法 |
CN109814946A (zh) * | 2018-12-29 | 2019-05-28 | 创新科存储技术(深圳)有限公司 | 一种在XenServer中实现分布式存储的方法和装置 |
WO2021169121A1 (zh) * | 2020-02-26 | 2021-09-02 | 平安科技(深圳)有限公司 | 数据存储方式转换方法、装置及存储介质 |
CN113590044A (zh) * | 2021-07-30 | 2021-11-02 | 深圳市新威尔电子有限公司 | 电池测试数据存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1889426B (zh) | 一种实现网络安全存储与访问的方法及系统 | |
TWI717028B (zh) | 基於區塊鏈的發票取用方法和裝置、電子設備 | |
WO2018046008A1 (zh) | 一种区块链加密射频芯片存储设计方法 | |
US8191129B2 (en) | Apparatus and method for processing digital rights object | |
CN102081575A (zh) | 虚拟磁盘存储空间的动态分配方法和装置 | |
US8572372B2 (en) | Method for selectively enabling access to file systems of mobile terminals | |
CN110289946B (zh) | 一种区块链钱包本地化文件的生成方法及区块链节点设备 | |
CN102088349B (zh) | 一种智能卡个人化的方法及系统 | |
CN104090853A (zh) | 一种固态盘加密方法和系统 | |
CN103067170B (zh) | 一种基于ext2文件系统的加密方法 | |
EP3667535A1 (en) | Storage data encryption and decryption device and method | |
EP2528004A1 (en) | Secure removable media and method for managing the same | |
Lee et al. | Secure Data Deletion for USB Flash Memory. | |
CN105022966A (zh) | 数据库数据加密解密方法和系统 | |
CN104579689A (zh) | 一种软密钥系统及实现方法 | |
CN101159754A (zh) | 一种运行在智能移动终端的互联网应用管理系统 | |
CN106713334B (zh) | 虚拟存储卷的加密方法、解密方法、访问方法以及装置 | |
CN106682521B (zh) | 基于驱动层的文件透明加解密系统及方法 | |
CN101120356A (zh) | 用于通用内容控制的控制结构和使用结构的方法 | |
CN105989304A (zh) | 一种文件存储方法、读取方法及装置 | |
CN107315966A (zh) | 固态硬盘数据加密方法及系统 | |
US8181869B2 (en) | Method for customizing customer identifier | |
CN101174941B (zh) | 一种移动终端文件离线数字版权保护方法及装置 | |
CN108763401A (zh) | 一种文件的读写方法及设备 | |
JP2007108833A (ja) | 複数パスワード記憶装置及びパスワード管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110601 |