CN107861685A - 基于写时复制的虚拟磁盘写入方法及装置、存储介质 - Google Patents
基于写时复制的虚拟磁盘写入方法及装置、存储介质 Download PDFInfo
- Publication number
- CN107861685A CN107861685A CN201710472651.4A CN201710472651A CN107861685A CN 107861685 A CN107861685 A CN 107861685A CN 201710472651 A CN201710472651 A CN 201710472651A CN 107861685 A CN107861685 A CN 107861685A
- Authority
- CN
- China
- Prior art keywords
- write
- virtual disk
- written
- file
- copy
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于写时复制的虚拟磁盘写入方法,该方法包括:在检测到虚拟磁盘有写入操作时,检测所述写入操作的写入放大倍数;当所述写入放大倍数等于或大于预设的阈值时,则对所述写入操作开启写时复制,以将所述写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中;当接收到存储指令时,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中。本发明还公开了一种基于写时复制的虚拟磁盘写入装置,以及一种存储介质。本发明解决了现有技术中虚拟磁盘在多次写入文件后,会产生写入放大,导致虚拟磁盘写入性能降低的技术问题。
Description
技术领域
本发明涉及虚拟磁盘技术领域,尤其涉及一种基于写时复制的虚拟磁盘写入方法及装置、存储介质。
背景技术
虚拟磁盘(Virtual disk),就是在本地电脑里面虚拟出一个远程电脑里面的磁盘,感觉像是在本机上的硬盘一样,但其实它没在本机上。虚拟磁盘就是用内存中虚拟出一个或者多个磁盘的技术,和虚拟内存一样,内存的速度要比硬盘快得多,利用这一点,在内存中虚拟出一个或多个磁盘就可以加快磁盘的数据交换速度,从而提高电脑的运行速度。
虚拟磁盘在当前的云计算环境中得到广泛使用,目前,虚拟磁盘在多次写入文件后会形成碎片,即连续虚拟地址空间分布在不连续的文件地址空间中,这样就会不可避免地带来写入放大,即对虚拟磁盘的一次写操作会被放大成多个文件写操作,对写性能带来了一定影响。如当写入的数据块大小为2MB时,默认簇的大小为64KB时,则需要写入32个数据簇,而这32个数据簇可能离散分布在不连续的文件地址中。此时,写入操作就会被放大到32倍,导致虚拟磁盘的写入性能降低。
发明内容
本发明的主要目的在于提出一种基于写时复制的虚拟磁盘写入方法及装置、存储介质,旨在解决现有技术中虚拟磁盘在多次写入文件后,会产生写入放大,导致虚拟磁盘写入性能降低的技术问题。
为实现上述目的,本发明提供一种基于写时复制的虚拟磁盘写入方法,所述基于写时复制的虚拟磁盘写入方法包括:
在检测到虚拟磁盘有写入操作时,检测所述写入操作的写入放大倍数;
当所述写入放大倍数等于或大于预设的阈值时,则对所述写入操作开启写时复制,以将所述写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中;
当接收到存储指令时,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中。
优选地,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中的步骤包括:
在所述虚拟磁盘中为所述待写入文件分配连续的簇;
将所述缓存中的待写入文件写入到所述连续的簇中,并更新所述缓存中的待写入文件的虚拟地址偏移量。
优选地,更新所述缓存中的待写入文件的虚拟地址偏移量的步骤包括:
根据所述待写入文件的文件头部,索引出所述待写入文件的虚拟地址偏移量;
更新所述缓存中的待写入文件的虚拟地址偏移量,并释放所述虚拟磁盘中已被占用的簇。
优选地,释放所述虚拟磁盘中已被占用的簇的步骤包括:
将所述已被占用的簇对应的引用计数减1。
优选地,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中的步骤还包括:
读取已被占用的簇对应的首尾数据段,并与所述缓存中的待写入文件进行拼接后同时写入到所述虚拟磁盘中。
此外,为实现上述目的,本发明还提供一种基于写时复制的虚拟磁盘写入装置,所述基于写时复制的虚拟磁盘写入装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于写时复制的虚拟磁盘写入程序,所述基于写时复制的虚拟磁盘写入程序被所述处理器执行时实现如下步骤:
在检测到虚拟磁盘有写入操作时,检测所述写入操作的写入放大倍数;
当所述写入放大倍数等于或大于预设的阈值时,则对所述写入操作开启写时复制,以将所述写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中;
当接收到存储指令时,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中。
优选地,所述基于写时复制的虚拟磁盘写入程序被所述处理器执行时,还可以实现如下步骤:
在所述虚拟磁盘中为所述待写入文件分配连续的簇;
将所述缓存中的待写入文件写入到所述连续的簇中,并更新所述缓存中的待写入文件的虚拟地址偏移量。
优选地,所述基于写时复制的虚拟磁盘写入程序被所述处理器执行时,还可以实现如下步骤:
根据所述待写入文件的文件头部,索引出所述待写入文件的虚拟地址偏移量;
更新所述缓存中的待写入文件的虚拟地址偏移量,并释放所述虚拟磁盘中已被占用的簇。
优选地,所述基于写时复制的虚拟磁盘写入程序被所述处理器执行时,还可以实现如下步骤:
读取已被占用的簇对应的首尾数据段,并与所述缓存中的待写入文件进行拼接后同时写入到所述虚拟磁盘中。
此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有基于写时复制的虚拟磁盘写入程序,所述基于写时复制的虚拟磁盘写入程序被处理器执行时实现如上所述的基于写时复制的虚拟磁盘写入方法对应的各个步骤。
本发明所提供的基于写时复制的虚拟磁盘写入方法及装置、存储介质,能够实现:在检测到虚拟磁盘有写入操作,且该写入操作的写入放大倍数等于或大于预设的阈值时,则对该写入操作开启写时复制,以将该写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中,而不是直接写入虚拟磁盘中,当接收到存储指令时,才在上述虚拟磁盘中为该写入操作分配连续的地址空间,然后将缓存中的待写入文件写入到上述虚拟磁盘中。由于本发明在虚拟磁盘产生多次写入操作时,便对每一次写入操作开启写时复制,从而可以将待写入文件写入虚拟磁盘中连续的地址空间内,因此能够有效控制虚拟磁盘的写入放大倍数,保护虚拟磁盘的写入性能,解决了现有技术中虚拟磁盘在多次写入文件后,会产生写入放大,导致虚拟磁盘写入性能降低的技术问题。
附图说明
图1为本发明基于写时复制的虚拟磁盘写入方法第一实施例的流程示意图;
图2为本发明图1所示步骤S30的细化步骤流程示意图;
图3为本发明基于写时复制的虚拟磁盘写入装置涉及的软件运行环境的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明以下实施例提供一种基于写时复制的虚拟磁盘写入方法,该方法中,在检测到虚拟磁盘有写入操作,且该写入操作的写入放大倍数等于或大于预设的阈值时,则对该写入操作开启写时复制,以将该写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中,而不是直接写入虚拟磁盘中,当接收到存储指令时,才在上述虚拟磁盘中为该写入操作分配连续的地址空间,然后将缓存中的待写入文件写入到上述虚拟磁盘中。即该方法在虚拟磁盘产生多次写入操作时,便对每一次写入操作开启写时复制,从而可以将待写入文件写入虚拟磁盘中连续的地址空间内,因此能够有效控制虚拟磁盘的写入放大倍数,保护虚拟磁盘的写入性能。
参照图1,图1为本发明基于写时复制的虚拟磁盘写入方法第一实施例的流程示意图,本发明基于写时复制的虚拟磁盘写入方法第一实施例中,上述基于写时复制的虚拟磁盘写入方法包括:
步骤S10,在检测到虚拟磁盘有写入操作时,检测所述写入操作的写入放大倍数。
其中,本实施例中所述的虚拟磁盘,是指把数据、文件,网络文件,内存等通过技术手段“伪装”成磁盘,让用户感觉像是以一个真实磁盘存在的“磁盘”。具体的,客户端可以通过局域网连接服务器上的iSCSI Cake服务器,在本地虚拟出一块硬盘,以达到通过网络共享服务器硬盘的效果。例如,网吧业主只需要在服务器上的iSCSI Cake里添加目录和安装游戏软件,客户端的本地虚拟硬盘里就有了相应的游戏软件,不需要到每台机器进行安装。
上述写入操作是指把待写入文件写入并存储到上述虚拟磁盘的过程,具体可以利用Vhd(Microsoft Virtual Hard Disk format,微软虚拟磁盘文件)虚拟磁盘写入工具来进行。
其中,上述写入操作对应的待写入文件包括Qcow2镜像格式文件,Qcow2镜像格式文件属于一种QEMU(Quick Emulator,虚拟操作***模拟器)模拟器支持的磁盘镜像文件,它可以用一个文件的形式来表示一块固定大小的块设备磁盘。
其中,写入放大是虚拟磁盘中一种不期望的现象,即实际写入的物理信息量是将要写入的逻辑数量的多倍。因为闪存在可重新写入数据前必须先擦除,执行这些操作的过程就产生了一次以上的用户数据和元数据的移动(或重新写入),此倍增效应会增加请求写入的次数导致写入放大,而请求写入的次数即为写入放大倍数。
本实施例中,在检测到虚拟磁盘有写入操作时,便检测该写入操作对应的写入放大倍数。
其中,检测上述写入操作对应的写入放大倍数的步骤包括:检测所要写入的数据块的大小,以及每一次写入操作对应数据簇的大小,根据该数据块的大小及数据簇的大小,计算出上述写入操作对应的写入放大倍数。例如,当写入的数据块大小为2MB,每一次写入操作对应数据簇的大小为64KB时,则一共需要写入32个数据簇,而这32个数据簇可能离散分布在不连续的文件地址中,此时,上述写入操作对应的写入放大倍数即为32倍。
步骤S20,当所述写入放大倍数等于或大于预设的阈值时,则对所述写入操作开启写时复制,以将所述写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中。
本实施例中,预先设置一个写入放大倍数阈值,例如设置为5倍、10倍等,当上述写入放大倍数等于或大于该阈值时,则对上述写入操作开启写时复制。
其中,写时复制即为COW(copy-on-write,写时复制)技术,COW技术使用了“引用计数”(refcount),会有一个变量用于保存引用的数量。当第一个类构造时,字符串(string)的构造函数会根据传入的参数从堆上分配内存,当有其它类需要这块内存时,该引用计数为自动累加,当有类析构时,该引用计数会减1,直到最后一个类析构时,此时的引用计数为1或是0。
例如,某个程序要写入文件时,需要不断地根据网络或者用户上传来的数据写入,如果每一次fwrite(写入文件)操作或是fprintf(传送格式化输出到一个文件中)都要进行一个虚拟磁盘的I/O操作(指对设备与cpu连接的接口电路的操作,如虚拟磁盘的写入操作)的话,则会给虚拟磁盘的写入性能带来巨大的损失。因此,为了保护虚拟磁盘的写入性能,本实施例采用COW技术,将每次写入操作都先写入虚拟磁盘的缓存中(磁盘内存)中,只有当关闭文件或者接收到存储指令时,才写入到虚拟磁盘内。
具体的,本实施例中,当上述写入放大倍数等于或大于预设的阈值时,则对该写入操作开启写时复制。
步骤S30,当接收到存储指令时,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中。
为了更好的理解本发明,以现有技术中qcow2文件的写入过程为例进行说明。现有技术中,在虚拟磁盘中写入一个大数据块时,由于写入虚拟磁盘的地址是离散分配的,因此,在将该大数据块写入虚拟磁盘时仍旧可能会造成写入放大。
本实施例中,在将缓存中的待写入文件写入虚拟磁盘之前,先在该虚拟磁盘中为待写入文件对应的写入操作分配连续的地址空间,然后再将上述待写入文件写入到该虚拟磁盘中。
其中,当用户想要将待写入文件写入虚拟磁盘时,可以触发存储指令(如点击“保存”),虚拟磁盘写入装置在接收到该存储指令后,在上述虚拟磁盘中为待写入文件对应的写入操作分配连续的地址空间,然后再将上述待写入文件写入到该虚拟磁盘中。
本实施例所述的基于写时复制的虚拟磁盘写入方法,在检测到虚拟磁盘有写入操作,且该写入操作的写入放大倍数等于或大于预设的阈值时,则对该写入操作开启写时复制,以将该写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中,而不是直接写入虚拟磁盘中,当接收到存储指令时,才在上述虚拟磁盘中为该写入操作分配连续的地址空间,然后将缓存中的待写入文件写入到上述虚拟磁盘中。由于本实施例在虚拟磁盘产生多次写入操作时,便对每一次写入操作开启写时复制,从而可以将待写入文件写入虚拟磁盘中连续的地址空间内,因此能够有效控制虚拟磁盘的写入放大倍数,保护虚拟磁盘的写入性能,解决了现有技术中虚拟磁盘在多次写入文件后,会产生写入放大,导致虚拟磁盘写入性能降低的技术问题。
进一步地,参照图2,图2为本发明图1所示步骤S30的细化步骤流程示意图,基于本发明基于写时复制的虚拟磁盘写入方法第一实施例,本发明基于写时复制的虚拟磁盘写入方法第二实施例中,上述图1所示的步骤S30中所述的在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中包括:
步骤S31,在所述虚拟磁盘中为所述待写入文件分配连续的簇;
步骤S32,将所述缓存中的待写入文件写入到所述连续的簇中,并更新所述缓存中的待写入文件的虚拟地址偏移量。
本实施例中,以qcow2文件为上述待写入文件为例,qcow2文件由许多固定大小的簇(cluster)组成,其中,上述虚拟磁盘是由若多个扇区组成的,若干个扇区合为一个簇;另外,虚拟磁盘中文件的写入与读取也是以簇为单位的。
根据各个簇的功能,qcow2文件可以分为以下几类:
(1)、header:文件头部,通过header中的数据,可以索引到l1_table、引用计数表(refcount table);
(2)、l1_table:存放l2_table的偏移位置;
(3)、l2_table:虚拟地址偏移量,存放数据块的偏移位置;
(4)、refcount_table:引用计数表,存放引用计数块(refcount block)的偏移位置;
(5)、refcount_block:引用计数块,存放引用计数(refcount)值;
(6)、snapshot table:快照表,用于存放快照的基本信息。
其中,上述快照是指关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像,快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。快照的作用主要是能够进行在线数据备份与恢复,当存储设备发生应用故障或者文件损坏时可以进行快速的数据恢复,将数据恢复某个可用的时间点的状态。快照的另一个作用是为存储用户提供了另外一个数据访问通道,当原数据进行在线应用处理时,用户可以访问快照数据,还可以利用快照进行测试等工作。
其中,在对上述写入操作开启写时复制,即在待写入文件第一次写入到虚拟磁盘某个存储位置时,首先需要将原有的内容读取出来,写到另一位置处(为快照保留的存储空间,此文中我们称为快照空间),然后再将待写入文件写入到虚拟磁盘中,而下次针对这一存储位置的写入操作将不再执行写时复制操作。
qcow2文件通过l1_table、l2_table两级索引实现从逻辑地址到实际文件中所在区域的转换,从而实现支持用时分配,即若某一区域没有写入操作,则不为该区域分配实际的地址空间。
具体的,在上述待写入文件写入虚拟磁盘时,在虚拟磁盘中为该待写入文件分配连续的簇,然后将该待写入文件写入到所分配的连续的簇中,并更新该待写入文件的虚拟地址偏移量。
本实施例所述的基于写时复制的虚拟磁盘写入方法,在虚拟磁盘写入文件时,先在虚拟磁盘中为该待写入文件分配连续的簇,然后将该待写入文件写入到所分配的连续的簇中,并更新该待写入文件的虚拟地址偏移量,从而能够有效控制虚拟磁盘的写入放大倍数,保护虚拟磁盘的写入性能。
进一步地,基于上述本发明基于写时复制的虚拟磁盘写入方法第一、第二实施例,本发明基于写时复制的虚拟磁盘写入方法第三实施例中,上述图2所示步骤S32中所述的更新所述缓存中的待写入文件的虚拟地址偏移量包括:
根据所述待写入文件的文件头部,索引出所述待写入文件的虚拟地址偏移量;
更新所述缓存中的待写入文件的虚拟地址偏移量,并释放所述虚拟磁盘中已被占用的簇。
其中,通过待写入文件的文件头部header,可以索引到l1_table,进而可以根据l1_table索引到虚拟地址偏移量l2_table。另外,通过上述文件头部,可以索引到引用计数表refcount_table,通过引用计数表便可以索引到引用计数块refcount block所在簇;另外,通过上述文件头部,还可以索引到快照表snapshot table,进而索引到快照的数据,即上述待写入文件。
进一步地,上述释放所述虚拟磁盘中已被占用的簇的步骤包括:
将所述已被占用的簇对应的引用计数减1。
本实施例中,引用计数refcount为数据块索引值,qcow2文件中每一个簇都有一个对应的引用计数,如果这个簇没有被分配,那么它的引用计数为0,如果该簇被分配,则其引用计数大于0。对某个簇而言,其每执行一次写时复制,其对应的引用计数值加1。因此,可以通过将上述已被占用的簇对应的引用计数减1,来释放虚拟磁盘中已被占用的簇。
本实施例所述的基于写时复制的虚拟磁盘写入方法,可根据待写入文件的文件头部来索引出待写入文件的虚拟地址偏移量,从而更新该待写入文件的虚拟地址偏移量,并对虚拟磁盘中已被占用的簇对应的引用计数减1,由此来释放虚拟磁盘中已被占用的簇,上述待写入文件即可写入虚拟磁盘中已分配的连续的地址空间中,从而有效控制虚拟磁盘的写入放大倍数,保护虚拟磁盘的写入性能。
进一步地,基于上述本发明基于写时复制的虚拟磁盘写入方法第一、第二、第三实施例,本发明基于写时复制的虚拟磁盘写入方法第四实施例中,上述图1所示的步骤S30中所述的在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中包括:
读取已被占用的簇对应的首尾数据段,并与所述缓存中的待写入文件进行拼接后同时写入到所述虚拟磁盘中。
本实施例中,在将上述待写入文件写入到上述虚拟磁盘的过程中,需要更新待写入文件的虚拟地址偏移量,并需要释放虚拟磁盘中已被占用的簇,从而可能会造成上述写入文件某个写入操作写入的数据丢失,因此,本实施例中,在将上述待写入文件写入到上述虚拟磁盘时,读取已被占用的簇对应的首尾数据段,并与上述待写入文件进行拼接后同时写入到虚拟磁盘中。
本实施例所述的基于写时复制的虚拟磁盘写入方法,在将上述写入操作对应的待写入文件写入到虚拟磁盘中时,读取已被占用的簇对应的首尾数据段,并与上述待写入文件进行拼接后同时写入到虚拟磁盘中,使得上述写入操作对应的待写入文件全部能够写入到虚拟磁盘中,从而保证了虚拟磁盘数据写入的准确性。
本发明还提供一种基于写时复制的虚拟磁盘写入装置,该基于写时复制的虚拟磁盘写入装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于写时复制的虚拟磁盘写入程序,该装置能够实现:在检测到虚拟磁盘有写入操作,且该写入操作的写入放大倍数等于或大于预设的阈值时,则对该写入操作开启写时复制,以将该写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中,而不是直接写入虚拟磁盘中,当接收到存储指令时,才在上述虚拟磁盘中为该写入操作分配连续的地址空间,然后将缓存中的待写入文件写入到上述虚拟磁盘中。由于本装置在虚拟磁盘产生多次写入操作时,便对每一次写入操作开启写时复制,从而可以将待写入文件写入虚拟磁盘中连续的地址空间内,因此能够有效控制虚拟磁盘的写入放大倍数,保护虚拟磁盘的写入性能。
具体的,上述基于写时复制的虚拟磁盘写入程序被所述处理器执行时实现如下步骤:
在检测到虚拟磁盘有写入操作时,检测所述写入操作的写入放大倍数;
当所述写入放大倍数等于或大于预设的阈值时,则对所述写入操作开启写时复制,以将所述写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中;
当接收到存储指令时,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中。
为了更好的理解本发明,参照图3,图3为本发明基于写时复制的虚拟磁盘写入装置涉及的软件运行环境的结构示意图,本实施例中,上述基于写时复制的虚拟磁盘写入装置可包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口;网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器;存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图3中示出的结构并不构成对上述基于写时复制的虚拟磁盘写入装置的限定,该装置可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图3所示,作为一种计算机存储介质的存储器1005中,可以包括操作***、网络通信模块、用户接口模块以及基于写时复制的虚拟磁盘写入程序。
如图3所示,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于写时复制的虚拟磁盘写入程序,并执行相应的操作。
其中,该基于写时复制的虚拟磁盘写入装置对应的实施例与上述基于写时复制的虚拟磁盘写入方法对应的各个实施例基本相同,故在此不再赘述。
本发明还提供一种存储介质,该存储介质上存储有基于写时复制的虚拟磁盘写入程序,该存储介质能够实现:在检测到虚拟磁盘有写入操作,且该写入操作的写入放大倍数等于或大于预设的阈值时,则对该写入操作开启写时复制,以将该写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中,而不是直接写入虚拟磁盘中,当接收到存储指令时,才在上述虚拟磁盘中为该写入操作分配连续的地址空间,然后将缓存中的待写入文件写入到上述虚拟磁盘中。由于本装置在虚拟磁盘产生多次写入操作时,便对每一次写入操作开启写时复制,从而可以将待写入文件写入虚拟磁盘中连续的地址空间内,因此能够有效控制虚拟磁盘的写入放大倍数,保护虚拟磁盘的写入性能。
具体的,上述基于写时复制的虚拟磁盘写入程序被处理器执行时实现如下步骤:
在检测到虚拟磁盘有写入操作时,检测所述写入操作的写入放大倍数;
当所述写入放大倍数等于或大于预设的阈值时,则对所述写入操作开启写时复制,以将所述写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中;
当接收到存储指令时,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中。
其中,该存储介质对应的实施例与上述基于写时复制的虚拟磁盘写入方法对应的各个实施例基本相同,故在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于写时复制的虚拟磁盘写入方法,其特征在于,所述基于写时复制的虚拟磁盘写入方法包括:
在检测到虚拟磁盘有写入操作时,检测所述写入操作的写入放大倍数;
当所述写入放大倍数等于或大于预设的阈值时,则对所述写入操作开启写时复制,以将所述写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中;
当接收到存储指令时,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中。
2.如权利要求1所述的基于写时复制的虚拟磁盘写入方法,其特征在于,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中的步骤包括:
在所述虚拟磁盘中为所述缓存中的待写入文件分配连续的簇;
将所述缓存中的待写入文件写入到所述连续的簇中,并更新所述缓存中的待写入文件的虚拟地址偏移量。
3.如权利要求2所述的基于写时复制的虚拟磁盘写入方法,其特征在于,更新所述缓存中的待写入文件的虚拟地址偏移量的步骤包括:
根据所述待写入文件的文件头部,索引出所述待写入文件的虚拟地址偏移量;
更新所述缓存中的待写入文件的虚拟地址偏移量,并释放所述虚拟磁盘中已被占用的簇。
4.如权利要求3所述的基于写时复制的虚拟磁盘写入方法,其特征在于,释放所述虚拟磁盘中已被占用的簇的步骤包括:
将所述已被占用的簇对应的引用计数减1。
5.如权利要求3或4所述的基于写时复制的虚拟磁盘写入方法,其特征在于,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中的步骤还包括:
读取已被占用的簇对应的首尾数据段,并与所述缓存中的待写入文件进行拼接后同时写入到所述虚拟磁盘中。
6.一种基于写时复制的虚拟磁盘写入装置,其特征在于,所述基于写时复制的虚拟磁盘写入装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于写时复制的虚拟磁盘写入程序,所述基于写时复制的虚拟磁盘写入程序被所述处理器执行时实现如下步骤:
在检测到虚拟磁盘有写入操作时,检测所述写入操作的写入放大倍数;
当所述写入放大倍数等于或大于预设的阈值时,则对所述写入操作开启写时复制,以将所述写入操作对应的待写入文件暂时写入虚拟磁盘的缓存中;
当接收到存储指令时,在所述虚拟磁盘中为所述写入操作分配连续的地址空间,并将所述缓存中的待写入文件写入到所述虚拟磁盘中。
7.如权利要求6所述的基于写时复制的虚拟磁盘写入装置,其特征在于,所述基于写时复制的虚拟磁盘写入程序被所述处理器执行时,还可以实现如下步骤:
在所述虚拟磁盘中为所述待写入文件分配连续的簇;
将所述缓存中的待写入文件写入到所述连续的簇中,并更新所述缓存中的待写入文件的虚拟地址偏移量。
8.如权利要求7所述的基于写时复制的虚拟磁盘写入装置,其特征在于,所述基于写时复制的虚拟磁盘写入程序被所述处理器执行时,还可以实现如下步骤:
根据所述待写入文件的文件头部,索引出所述待写入文件的虚拟地址偏移量;
更新所述缓存中的待写入文件的虚拟地址偏移量,并释放所述虚拟磁盘中已被占用的簇。
9.如权利要求8所述的基于写时复制的虚拟磁盘写入装置,其特征在于,所述基于写时复制的虚拟磁盘写入程序被所述处理器执行时,还可以实现如下步骤:
读取已被占用的簇对应的首尾数据段,并与所述缓存中的待写入文件进行拼接后同时写入到所述虚拟磁盘中。
10.一种存储介质,其特征在于,所述存储介质上存储有基于写时复制的虚拟磁盘写入程序,所述基于写时复制的虚拟磁盘写入程序被处理器执行时实现如权利要求1至5中任意一项所述的基于写时复制的虚拟磁盘写入方法对应的各个步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710472651.4A CN107861685A (zh) | 2017-06-20 | 2017-06-20 | 基于写时复制的虚拟磁盘写入方法及装置、存储介质 |
PCT/CN2018/083778 WO2018233369A1 (zh) | 2017-06-20 | 2018-04-19 | 基于写时复制的虚拟磁盘写入方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710472651.4A CN107861685A (zh) | 2017-06-20 | 2017-06-20 | 基于写时复制的虚拟磁盘写入方法及装置、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107861685A true CN107861685A (zh) | 2018-03-30 |
Family
ID=61699112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710472651.4A Pending CN107861685A (zh) | 2017-06-20 | 2017-06-20 | 基于写时复制的虚拟磁盘写入方法及装置、存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107861685A (zh) |
WO (1) | WO2018233369A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845908A (zh) * | 2018-06-21 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种ssd硬盘测试方法、装置、设备及介质 |
CN109086002A (zh) * | 2018-06-28 | 2018-12-25 | 平安科技(深圳)有限公司 | 存储对象的空间管理方法、装置、计算机装置及存储介质 |
WO2018233369A1 (zh) * | 2017-06-20 | 2018-12-27 | 平安科技(深圳)有限公司 | 基于写时复制的虚拟磁盘写入方法及装置、存储介质 |
CN109491620A (zh) * | 2018-11-23 | 2019-03-19 | 柏科数据技术(深圳)股份有限公司 | 存储数据重写方法、装置、服务器及存储介质 |
WO2021223638A1 (zh) * | 2020-05-08 | 2021-11-11 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN113867630A (zh) * | 2021-09-10 | 2021-12-31 | 长沙市致存科技有限责任公司 | 存储器的数据批量写入方法、装置、终端设备及存储介质 |
CN115629716A (zh) * | 2022-12-07 | 2023-01-20 | 广东睿江云计算股份有限公司 | 基于磁盘镜像文件的碎片整理方法及碎片整理*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
CN104765575A (zh) * | 2015-04-23 | 2015-07-08 | 成都博元时代软件有限公司 | 信息存储处理方法 |
CN106020718A (zh) * | 2016-05-09 | 2016-10-12 | 福建联迪商用设备有限公司 | 一种提高虚拟磁盘写入性能的方法及*** |
CN106201916A (zh) * | 2016-07-25 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 一种面向ssd的非易失缓存机制 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239617B1 (en) * | 2010-02-12 | 2012-08-07 | Emc Corporation | Enterprise data storage system using multi-level cell flash memory |
US8848445B2 (en) * | 2011-05-17 | 2014-09-30 | Sandisk Technologies Inc. | System and method for minimizing write amplification while maintaining sequential performance using logical group striping in a multi-bank system |
CN104834607B (zh) * | 2015-05-19 | 2018-02-23 | 华中科技大学 | 一种提高分布式缓存的命中率并减少固态硬盘磨损的方法 |
CN107861685A (zh) * | 2017-06-20 | 2018-03-30 | 平安科技(深圳)有限公司 | 基于写时复制的虚拟磁盘写入方法及装置、存储介质 |
-
2017
- 2017-06-20 CN CN201710472651.4A patent/CN107861685A/zh active Pending
-
2018
- 2018-04-19 WO PCT/CN2018/083778 patent/WO2018233369A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
CN104765575A (zh) * | 2015-04-23 | 2015-07-08 | 成都博元时代软件有限公司 | 信息存储处理方法 |
CN106020718A (zh) * | 2016-05-09 | 2016-10-12 | 福建联迪商用设备有限公司 | 一种提高虚拟磁盘写入性能的方法及*** |
CN106201916A (zh) * | 2016-07-25 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 一种面向ssd的非易失缓存机制 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018233369A1 (zh) * | 2017-06-20 | 2018-12-27 | 平安科技(深圳)有限公司 | 基于写时复制的虚拟磁盘写入方法及装置、存储介质 |
CN108845908A (zh) * | 2018-06-21 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种ssd硬盘测试方法、装置、设备及介质 |
CN109086002A (zh) * | 2018-06-28 | 2018-12-25 | 平安科技(深圳)有限公司 | 存储对象的空间管理方法、装置、计算机装置及存储介质 |
CN109491620A (zh) * | 2018-11-23 | 2019-03-19 | 柏科数据技术(深圳)股份有限公司 | 存储数据重写方法、装置、服务器及存储介质 |
CN109491620B (zh) * | 2018-11-23 | 2020-08-14 | 柏科数据技术(深圳)股份有限公司 | 存储数据重写方法、装置、服务器及存储介质 |
WO2021223638A1 (zh) * | 2020-05-08 | 2021-11-11 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN113867630A (zh) * | 2021-09-10 | 2021-12-31 | 长沙市致存科技有限责任公司 | 存储器的数据批量写入方法、装置、终端设备及存储介质 |
CN115629716A (zh) * | 2022-12-07 | 2023-01-20 | 广东睿江云计算股份有限公司 | 基于磁盘镜像文件的碎片整理方法及碎片整理*** |
CN115629716B (zh) * | 2022-12-07 | 2023-04-11 | 广东睿江云计算股份有限公司 | 基于磁盘镜像文件的碎片整理方法及碎片整理*** |
Also Published As
Publication number | Publication date |
---|---|
WO2018233369A1 (zh) | 2018-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107861685A (zh) | 基于写时复制的虚拟磁盘写入方法及装置、存储介质 | |
CN104808951B (zh) | 进行存储控制的方法和设备 | |
CN106843755B (zh) | 用于服务器集群的数据均衡方法与装置 | |
US9274967B2 (en) | FIFO cache simulation using a bloom filter ring | |
CN108737325A (zh) | 一种多租户数据隔离方法、装置及*** | |
CN107766374B (zh) | 一种海量小文件存储读取的优化方法和*** | |
CN109684231A (zh) | 用于识别固态盘中的热数据和流的***及方法 | |
CN110399333B (zh) | 删除快照的方法、设备和计算机程序产品 | |
CN106933614A (zh) | 一种单页面应用升级方法及装置 | |
CN104156321B (zh) | 一种数据预取的方法以及装置 | |
CN106407224A (zh) | 一种键值存储***中文件压实的方法和装置 | |
CN115168259B (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
CN106817388A (zh) | 虚拟机、宿主机获取数据的方法、装置及访问数据的*** | |
CN110413413A (zh) | 一种数据写入方法、装置、设备及存储介质 | |
CN112463058B (zh) | 一种碎片数据整理方法、装置及存储节点 | |
CN115048254B (zh) | 数据分配策略的仿真测试方法、***、设备和可读介质 | |
CN104969167B (zh) | 控制装置及控制方法 | |
CN103229150B (zh) | 数据控制方法及*** | |
US8239427B2 (en) | Disk layout method for object-based storage devices | |
CN114238249B (zh) | 文件***老化评估方法及装置、存储介质、终端 | |
CN107145399A (zh) | 一种共享内存管理方法及共享内存管理设备 | |
CN108287760A (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN107329904A (zh) | 数据读取方法及装置 | |
CN112181870B (zh) | 内存页面管理方法、装置、设备及可读存储介质 | |
CN103955432B (zh) | 数据存储的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180330 |