网络文件系统中的虚拟机克隆方法和网络文件系统与流程

文档序号:12363254阅读:221来源:国知局
网络文件系统中的虚拟机克隆方法和网络文件系统与流程

本发明涉及网络文件系统,特别是能够在异种虚拟化环境下支持多镜像格式的网络文件系统和在该网络文件系统中克隆虚拟机的方法。



背景技术:

虚拟化作为云计算支撑技术,随着云计算的发展已成为当今信息产业的重要技术。通过将计算机资源,如处理器、存储、网络,抽象成逻辑资源并进行切分和隔离,软件得以在虚拟而不是物理硬件上运行。虚拟化技术有效提高了计算资源的使用效率,增强了系统安全性和可靠性,降低了IT成本。其中的一种典型应用方式是在一个主机硬件平台(如X86)上模拟虚拟计算环境并提供给客户机。这种虚拟计算环境被称为虚拟机(Virtual machine或VM),其中可以像物理主机一样安装和运行操作系统以及应用程序。

虚拟机的操作系统以及应用程序等数据在主机的文件系统中通常被存储为虚拟化镜像文件(也称为磁盘镜像文件或者镜像文件)。位于主机上的虚拟化控制程序(Hypervisor)把它解读为一个系统的硬盘驱动器,并通过磁盘地址映射将虚拟化镜像文件存储在主机上的物理地址映射为客户机操作系统能够接入的虚拟硬盘的虚拟地址。一个特定的虚拟化控制程序通常支持某些特定的镜像文件格式。在虚拟化控制程序对应的文件系统中,特定的镜像文件格式具有特定的文件扩展类型,例如RAW、QCOW2、VDMK、VHD、AMI、HVM、VDI、ISO等。主流的虚拟化控制程序例如有ESXi、KVM/QEMU、Xen、Hyper-V、VB、EC2等。图1的表格列出了各种主流虚拟化控制程序对不同镜像格式的支持度矩阵。由于多种虚拟化控制程序和多种镜像文件格式的存在,不同类型的虚拟化控制程序间共享镜像文件时出现了镜像文件格式接入和转换问题。例如,在迁移某一现有的虚拟机时,必须消耗 大量时间来复制镜像文件并转换其格式。

现有技术文献US20110055536使用了一个包括影子文件系统的适用于双操作系统的文件系统,以此来映射或者重新定向两种操作系统间的存储I/O。该专利文献还公开了在两种操作系统间实现快照同步化的方法。但是该公知技术只实现了传统操作系统Windows和Linux间的文件接入和共享,并未解决虚拟化控制程序的镜像文件格式的共享问题,特别是格式转换问题。

另外,现有技术文献US20140006858创建了一个通用可拔插式云灾难恢复系统,以此来转换虚拟化镜像文件格式,使其与不同的虚拟化控制程序兼容。该系统利用文件I/O代理或第三方软件来实现文件读写操作。该现有技术实现了虚拟化镜像文件格式的转换,但是转换过程需要新建拷贝并占用大量的I/O资源和存储空间,因此转换速度缓慢。



技术实现要素:

鉴于上述现有技术中存在的问题,本发明的目的在于提供一种能够快速实现虚拟化镜像文件的转换的克隆虚拟机的方法以及使用该克隆虚拟机的方法的网络文件系统。

为了实现上述目的,本发明为一种网络文件系统中的虚拟机克隆方法,所述网络文件系统包括运行在至少一台主机上的至少一个虚拟机和运行于所述主机中的控制所述虚拟机的虚拟化控制器,所述虚拟机的存储于所述网络文件系统中的虚拟化镜像文件由描述所述镜像文件格式的数据特征的元数据的文件头和主体数据构成,所述虚拟机克隆方法的特征在于:

镜像文件格式判断步骤,在将作为所述一个虚拟机的第一虚拟机克隆为第二虚拟机时,判断所述第一虚拟机的镜像文件格式与所述第二虚拟机的镜像文件格式是否相同;和

第二虚拟机镜像文件生成步骤,在所述镜像文件格式判断步骤中判断为所述第二虚拟机的镜像文件格式与所述第一虚拟机的镜像文件格式不同的情况下,仅将所述第一虚拟机的虚拟化镜像文件的文件头进行转换,并将转换而得的文件头与所述第一虚拟机的虚拟化镜像文 件的主体数据一起作为所述第二虚拟机的虚拟化镜像文件。

在本发明的虚拟机克隆方法中,在所述镜像文件格式判断步骤中判断为所述第二虚拟机的镜像文件格式与所述第一虚拟机的镜像文件格式相同的情况下,在所述第二虚拟机镜像文件生成步骤中,将所述第一虚拟机的虚拟化镜像文件作为所述第二虚拟机的虚拟化镜像文件。

在本发明的虚拟机克隆方法中,还包括块大小比较步骤,在将所述第一虚拟机的虚拟化镜像文件记作第一文件,将所述第二虚拟机的虚拟化镜像文件记作第二文件,将所述第一文件的文件头记作第一文件头,将所述第二文件的文件头记作第二文件头时,在第二虚拟机镜像文件生成步骤中将所述第一文件头转换为所述第二文件头时,将所述第一文件的块大小与所述第二文件的块大小进行比较,

在所述第二文件的块大小大于所述第一文件的块大小的情况下促使用户将所述第二文件的块大小修改为小于或等于所述第一文件的块大小,在所述第二文件的块大小小于或等于所述第一文件的块大小的情况下根据所述第一文件头中的参数生成所述第二文件头中的参数。

在本发明的虚拟机克隆方法中,所述文件头具有符合所述镜像文件格式的标准的数据结构,所述文件头和所述主体数据分别作为单独的文件存储或者作为同一个虚拟化镜像文件的两部分存储。

在本发明的虚拟机克隆方法中,所述虚拟化控制器为ESXi、KVM、QEMU、Xen、Hyper-V、VB或EC2。

在本发明的虚拟机克隆方法中,所述虚拟化镜像文件的所述镜像文件格式为RAW、VMDK、QCOW2、VHD、AMI、HVM、VDI或ISO。

根据本发明,无需对虚拟机的虚拟化镜像文件的主体数据进行读写操作就能够完成虚拟机的克隆,能够大幅减少磁盘读写操作,节省时间。

为了实现上述目的,本发明为一种网络文件系统,其包括运行在至少一台主机上的至少一个虚拟机,所述虚拟机的存储于所述网络文件系统中的虚拟化镜像文件由描述所述镜像文件格式的数据特征的元数据的文件头和主体数据构成,所述网络文件系统的特征在于,还包括:

运行于所述主机中的控制所述虚拟机的虚拟化控制器;和

经由网络通过所述虚拟化控制器与所述虚拟机连接的文件服务器,

在所述文件服务器中包括存储在单个或多个逻辑卷上的共享文件系统、以及虚拟文件系统控制器,

所述虚拟化镜像文件存储于所述共享文件系统中,能够经由网络被共享给所述虚拟机使用,

所述虚拟文件系统控制器对所述虚拟化镜像文件与所述虚拟机的对应关系进行管理,

在将作为所述一个虚拟机的第一虚拟机克隆为第二虚拟机时,判断所述第一虚拟机的镜像文件格式与所述第二虚拟机的镜像文件格式是否相同,

在所述第二虚拟机的镜像文件格式与所述第一虚拟机的镜像文件格式不同的情况下,所述虚拟文件系统控制器仅将所述第一虚拟机的虚拟化镜像文件的文件头进行转换,并将转换而得的文件头与所述第一虚拟机的虚拟化镜像文件的主体数据一起作为所述第二虚拟机的虚拟化镜像文件。

在本发明的网络文件系统中,在所述第二虚拟机的镜像文件格式与所述第一虚拟机的镜像文件格式相同的情况下,所述虚拟文件系统控制器将所述第一虚拟机的虚拟化镜像文件作为所述第二虚拟机的虚拟化镜像文件。

在将所述第一虚拟机的虚拟化镜像文件记作第一文件,将所述第二虚拟机的虚拟化镜像文件记作第二文件,将所述第一文件的文件头记作第一文件头,将所述第二文件的文件头记作第二文件头时,所述虚拟文件系统控制器在将所述第一文件头转换为所述第二文件头时,将所述第一文件的块大小与所述第二文件的块大小进行比较,

在所述第二文件的块大小大于所述第一文件的块大小的情况下促使用户将所述第二文件的块大小修改为小于或等于所述第一文件的块大小,

在所述第二文件的块大小小于或等于所述第一文件的块大小的情况下根据所述第一文件头中的参数生成所述第二文件头中的参数。

在本发明的网络文件系统中,所述文件头具有符合所述镜像文件格式的标准的数据结构,所述文件头和所述主体数据分别作为单独的文件存储或者作为同一个虚拟化镜像文件的两部分存储。

在本发明的网络文件系统中,所述虚拟化控制器为ESXi、KVM、QEMU、Xen、Hyper-V、VB或EC2。

在本发明的网络文件系统中,所述虚拟化镜像文件的所述镜像文件格式为RAW、VMDK、QCOW2、VHD、AMI、HVM、VDI或ISO。

根据本发明,无需对虚拟机的虚拟化镜像文件的主体数据进行读写操作就能够完成虚拟机的克隆,能够大幅减少磁盘读写操作,节省时间。

附图说明

图1是虚拟化控制程序与镜像格式的支持度矩阵;

图2是本发明的一个实施方式的网络文件系统的硬件架构;

图3是表示图2所示的网络文件系统的功能框图;

图4表示上述实施方式中的文件1 518的格式以及镜像1 514和镜像1’517到文件1 518所含数据的映射;

图5表示上述实施方式的文件头格式(a)VHD、(b)QCOW2;

图6是表示上述实施方式的注册新的镜像并生成文件头的时序图;

图7是实施例1的生成文件头1’的流程图;

图8是镜像和文件对应关系表;

图9是实施例2的生成文件头1’的流程图。

具体实施方式

下面参照附图对本发明的实施方式和实施例进行具体说明,图中相同的标号表示相同的元件或功能模块。本发明不受下述具体的实施方式和实施例限制。

图2是本发明的一个实施方式的网络文件系统的硬件架构,其中主机1 401、主机2 402和主机3 403通过交换机404和文件服务器405以及外部存储406相连接。这里为了描述的简明,省略了主机2、主机3的结构。另外此处以3台主机的形式表示只是一例,当然可以为1 台或2台主机,也可以为3台以上的主机。主机1 401进一步包括处理器407、内存408、磁盘409和网卡410。磁盘409通常为硬盘(HDD),但也可以为固态硬盘(SSD)等其他的存储介质。交换机404进一步包括网卡411-416,并通过它们分别与主机和文件服务器、外部存储等相连接。文件服务器405除了包括用于和交换机404相连接的网卡417之外,还进一步包括处理器418、内存419、虚拟文件系统控制器420、磁盘缓存421、以及由虚拟文件系统控制器420控制的磁盘422-424。

图3是表示图2所示的网络文件系统的功能框图。这里为了描述的简明,只表示了主机1和主机2,同样,此处只是一例,实际上可以为1台主机,也可以为2台以上的主机。每个主机上运行一个或多个虚拟机。此处,主机1 401中运行着虚拟机1 502和虚拟机2 503,并通过虚拟化控制器A 504向其提供计算资源,包括通过虚拟化控制器A 504内含的存储驱动505来提供存储资源。类似地,主机2 402中运行着虚拟机3 507,并且计划要在主机2 402中新增虚拟机1’508,并通过虚拟化控制器B 509向虚拟机3 507和要新增的虚拟机1’508提供计算资源,包括通过虚拟化控制器B 509内含的存储驱动510来提供存储资源。在本实施方式中,虚拟化控制器A 504和虚拟化控制器B 509为不同类型的虚拟化控制器且各自支持的镜像文件格式不同,当然实际应用中也可以相同。

虚拟化控制器A 504中的存储驱动505和虚拟化控制器B 509中的存储驱动510通过网络511来接入文件服务器405。此处,为了有更好的效率,网络511通常为局域网,但也可以为跨广域网的隧道连接。在文件服务器405中存储了对应于虚拟机1 502的镜像1 514、对应于虚拟机2 503的镜像2 515、对应于虚拟机3 507的镜像3 516和对应于虚拟机1’508的镜像1’517。外部存储406也与网络511相连接,它可以是具有和文件服务器405类似结构的另一个文件服务器,也可以是其它形式的存储设备,例如向文件服务器405提供存储空间从而形成分布式存储结构的块存储设备。这里在不影响对本发明的理解的情况下,省去对分布式存储的详细描述,而使用文件服务器405来描述整个存储的逻辑结构。

假设前述主机2 402中计划新增的虚拟机1’508是主机1 401中 运行着的虚拟机1 502的克隆。这通常会发生在两种场景中,一种是虚拟机1’508用作虚拟机1 502的热备份或者冷备份,两者具有完全同步的数据,在灾难发生时可以通过把虚拟机1 502的业务切换到虚拟机1’508来进行容灾。另一种场景是虚拟机1 502从主机1 401迁移到主机2 402从而成为虚拟机1’508,在迁移完成后虚拟机1 502的业务立即切换到虚拟机1’508,同时把虚拟机1 502从主机1 401上删除。

本申请中所说的虚拟机克隆,也被称为虚拟机复制,是原始虚拟机全部状态的一个拷贝,或者说一个镜像。克隆的过程并不影响原始虚拟机,克隆的操作一但完成,克隆出的虚拟机就可以脱离原始虚拟机独立存在,而且在克隆出的虚拟机中和原始虚拟机中的操作是相对独立的,不相互影响。克隆过程中会生成和原始虚拟机不同的MAC地址和UUID,这就允许克隆出的虚拟机和原始虚拟机在同一网络中出现,并且不会产生任何冲突。当然,由于本发明的应用场景是虚拟机的备份或迁移,所以通常不会在克隆出的虚拟机中进行与原始虚拟机不同的操作。

根据现有技术的虚拟化镜像文件管理方式,由于虚拟化控制器A 504和虚拟化控制器B 509的类型不同并支持不同的镜像文件格式,镜像1 514和镜像1’517应该分别对应于两个具有不同镜像文件格式和不同文件扩展类型的文件。但是在本发明中,镜像1 514和镜像1’517都对应于同一文件,即文件1 518。同时镜像2 515对应于文件2 519,镜像3 516对应于文件3 520。文件1 518、文件2 519和文件3 520存储在能被虚拟化控制器A 504和虚拟化控制器B 509同时接入的共享文件系统521中。共享文件系统521存储在单个或多个逻辑卷522上。上述镜像和文件之间的对应关系由包括镜像注册器524和文件映射器525的虚拟文件系统控制器523进行管理。

下面结合图4和图5来说明本发明提出的支持多镜像文件格式(即镜像1 514和镜像1’517对应的文件格式)的网络文件系统中的文件格式(即文件1 518的格式)。

图4给出了本实施方式中的文件1 518的格式,并展示了镜像1 514和镜像1’517到文件1 518所含数据的映射。其中图4(a)为本实施方 式中注册镜像1’517之前只有镜像1 514映射到文件1 518的情况,而图4(b)为注册镜像1’517之后镜像1 514和镜像1’517同时映射到文件1 518的情况。图中文件1 518包括位于文件开头的记录了描述主体数据特征的元数据的文件头601,以及位于文件头之后用于存储虚拟机的操作系统、应用程序等数据的主体数据602。其中文件头601进一步包括兼容于虚拟化控制器A的A格式(例如VHD)的文件头1 603和兼容于虚拟化控制器B的B格式(例如QCOW2)的文件头1’604。当然文件头601还可以包括兼容于其它格式的文件头。注意图4中文件头1 601和主体数据602显示为存储在一段连续地址中的数据,但是在方案实施中并不限于连续地址而也可以存储在非连续地址中,特别是文件头1 601可以和主体数据602分别存储在两段地址空间中。在本实施方式中,文件头601和主体数据602是一个虚拟化镜像文件的两部分,当然,文件头601和主体数据602也可以分别作为单独的文件存储,即以文件头文件和主体数据文件的形式存储。

文件头1 603和文件头1’604的具体数据结构在图5(a)和图5(b)中分别示出。其中,文件头1 603进一步包括大小是512B的硬盘页脚镜像701、大小是1024B的动态磁盘头702,以及大小可变的区块配置表703(参考“Microsoft Virtual Hard Disk Image Format specification v1.0”,2006)。动态磁盘头702进一步包括大小是8B的文字档案704、大小是8B的数据偏移705、大小是8B的表格偏移706、大小是4B的版本号707、大小是4B的最大表格条目708,以及大小是4B的块大小709。

而文件头1’604进一步包括大小是4B的特征签名710、大小是4B的版本711、大小是12B的后端文件指针712、大小是4B的簇比特数713、大小是8B的镜像大小714、大小是4B的加密715、大小是12B的TL1表指针716、大小是12B的引用计数表指针717、大小是4B的窄带快照指针718、大小是8B的快照指针719、大小是128KB的TL1表720、大小是128KB的引用计数表721、大小是64KB的窄带快照722,以及大小是64KB的快照723(参考“The QCOW2Image Format”,https://people.gnome.org/~markmc/qcow-image-format.html,2013)。上述数据元素中,区块配置表703、TL1表720、引用计数表721、窄带快 照722和快照723可以以单级位图或多级位图的方式存储,也可以以其它数据结构存储。

对于虚拟化控制器A和虚拟化控制器B来说,它们都需要把文件1解读为一个系统的硬盘驱动器,并通过磁盘地址映射将主体数据602存储在逻辑卷522上的物理地址映射为客户机(也就是虚拟机1 502或者虚拟机1’508)操作系统能够接入的虚拟硬盘的虚拟地址。换句话说,对于虚拟机1502或者虚拟机1’508的客户机操作系统要寻址的同样的虚拟地址(例如虚拟地址0x00000001),虚拟化控制器A和虚拟化控制器B必须要在文件服务器405的协同工作下寻址到同样的物理地址(例如物理地址0x1000e307)并接入到同样的主体数据。

但是由于虚拟化控制器A和虚拟化控制器B是不同种类的虚拟化控制器,支持不同的虚拟化镜像文件格式,使得它们只能通过用不同方式来描述文件数据特征的元数据的文件头来进行虚拟地址和物理地址之间的映射和寻址。如前所述,现有技术的虚拟化镜像文件管理方式要求镜像1 514和镜像1’517分别对应于两个具有不同镜像文件格式和不同文件扩展类型的文件。而在本发明中,镜像1 514和镜像1’517都对应于同一文件,即文件1 518,但是虚拟化控制器A和虚拟化控制器B会分别找到对应的定义为A格式的文件头1 603和定义为B格式的文件头1’604。这意味着虽然文件1 518被虚拟化控制器A和虚拟化控制器B共享,但不同虚拟化控制器观察到的文件起始地址不同。这点有别于现有技术文献US20110055536。

下面对本实施方式中从虚拟机1 502克隆出虚拟机1’508的具体流程进行说明。

如上所述,在本实施方式中,虚拟机1 502对应镜像1 514,镜像1 514对应文件1 518,而要克隆的虚拟机1’508对应于镜像1’517,镜像1’517也对应文件1 518。在本实施方式中,虚拟化控制器A 504与虚拟化控制器B 509支持的镜像文件格式不同,所以需要进行头文件的转换。

图6给出了本实施方式中注册新的镜像1’517并生成对应的文件头1’604的时序图。如图所示,当系统管理员要求将主机1 401上的虚拟机1 502克隆或者迁移到主机2 402从而成为虚拟机1’508 时,虚拟化控制器B 509首先要向镜像注册器524发起请求,要求将镜像1 514复制为镜像1’517(步骤801)。镜像注册器524收到请求后,在存储于该镜像注册器524的关系表中根据镜像1 514查找到文件1 518,然后把镜像1’517和文件1 518的对应关系添加到关系表中(步骤802,参考图8中的关系表),并向文件映射器525发起请求,要求根据文件1的文件头1 603转换生成文件头1’604。

文件映射器525收到请求后,向共享的文件系统521发出读写请求要求读入文件头1 603(步骤804),并随后从共享的文件系统521读入文件头1 603的数据(步骤805)。

现有技术中,此时需要发出读写请求要求读入主体数据602(步骤806)并读入主体数据602(步骤807),这在本发明中被跳过。图6中步骤806和步骤807用虚线箭头表示本发明中并不需要这两个步骤。众所周知,虚拟化镜像文件的主体数据往往有几G字节的大小,因此省掉这两个步骤能够节省大量的读写操作和时间。

文件映射器525读入文件头1 603的数据之后,即根据图5(a)所示的文件头格式进行解析,再根据图5(b)所示的文件头格式计算生成新的文件头1’604(步骤808,参考图7中的流程图,详细情况在后面说明)。然后文件映射器525向共享的文件系统521发出读写请求要求写入文件头1’604(步骤809),并随后向共享的文件系统521写入文件头1’604的数据(步骤810),并将分配给文件头1’604的地址发送给镜像注册器524(步骤811),从而完成转换和生成文件头1’604的请求。

考虑到文件1 518在逻辑卷522上的存储方式,写入步骤812中写入文件头1’604的地址和方式可能不同。当文件1 518以连续地址空间的形式存储在逻辑卷522上时,要求共享的文件系统521创建文件1 518的时候预留出足够的可扩展空间给文件头601,使得文件头1’604可以连续的存储在文件头1 603后面。反之,则可以随机分配新的存储空间来存储文件头1’604。

同样,现有技术中,此时需要发出读写请求要求写入主体数据602(步骤813)并写入主体数据602(步骤814),这在本发明中被跳过。图6中步骤813和步骤814用虚线箭头表示本发明中并不需要这两个 步骤。众所周知,虚拟化镜像文件的主体数据往往有几G字节的大小,因此省掉这两个步骤能够节省大量的读写操作和时间。

在本实施方式的上述说明中,假定虚拟化控制器A 504与虚拟化控制器B 509支持的镜像文件格式不同,所以需要进行头文件的转换。而在实际应用中,也可能存在虚拟化控制器A与虚拟化控制器B支持的镜像文件格式相同的情况。在这样的情况下,无需对文件头进行转换,可以直接将虚拟机1 502的文件1作为虚拟机1’508的虚拟化镜像文件。此时可以大幅简化流程,只需要进行上述步骤801和802即可。

下面对步骤808中文件映射器525计算生成新的文件头1’604的流程进行详细说明。此处举出两个实施例来说明,实施例1为从VHD格式的头文件1转换为QCOW2格式的头文件1’,实施例2为从QCOW2格式的头文件1转换为VHD格式的头文件1’。

(实施例1)

图7表示实施例1的头文件转换的流程。首先文件映射器525收到来自镜像注册器524的生成文件头1’604的请求,解析请求获得指定的目标格式块大小B或者在没有指定的情况下使用目标格式的默认块大小B,例如4KB(步骤901),并从共享的文件系统521读入文件头1 603的数据(步骤902)。读入文件头1 603的数据之后,即根据图5(a)所示的VHD文件头格式对数据进行解析(参考“Microsoft Virtual Hard Disk Image Format specification v1.0”,2006),得到描述主体数据存储地址信息的区块配置表703(步骤903),并进一步解析动态磁盘头702来获得源格式的块大小A(步骤904)。

接下来文件映射器525比较块大小A是否大于等于块大小B(步骤905)。通常情况下,我们假定二者定义的块大小属于常规块大小取值序列,例如4KB、8KB、32KB、64KB等。当块大小A大于等于块大小B时,表示目标格式中的单个数据块不会指向源格式中的多个数据块。这时文件映射器525根据区块配置表703包括的描述主体数据存储地址信息来计算图5(b)所示的目标文件头格式(即QCOW2格式)中的镜像大小714、TL1表720、引用计数表721以及簇比特数713(步骤906,表格定义参考“The QCOW2Image Format”, https://people.gnome.org/~markmc/qcow-image-format.html,2013),在其他字段,例如特征签名710、后端文件指针712、窄带快照指针718等,填写默认值,例如随机数或空值(步骤907)。最后将生成的文件头1’604写入共享的文件系统521(步骤908)并结束程序(步骤909)。所述步骤906中块大小B和簇比特数713的关系为:

块大小B=2^簇比特数 (1)

例如块大小4KB对应的簇比特数为12。在参考文献中,也把块大小(block size)称为簇大小(cluster size),下文中将不再特别说明。

反之,当块大小A小于块大小B时,表示目标格式中的单个数据块会指向源格式中的多个数据块,并有可能成为不连续的数据块。如果需要描述这些多个数据块,则需要使用多个指针来指向这些数据块的每一个。然而根据目标格式QCOW2的定义,目标格式中的单个数据块由TL1表中的单个指针表示,这就和上述的多个指针相矛盾,使得文件头生成出现异常情况。

对于上述异常的处理方式为向用户建议修改请求中块大小B的值,使其小于等于块大小A的值(步骤910)。然后弹出对话框让用户判断是否同意这样的修改(步骤911)。在上述对话框中,提醒用户如果不同意这样的修改会造成大量的转换时间。一般情况下,用户会同意这样的修改,当用户同意把请求中块大小B的值修改成小于等于块大小A的值时,使用修改后的块大小B回到步骤905继续进行步骤906~步骤909。

在某些特定的情况下,用户可能需要保持这样的块大小B,所以宁可牺牲转换时间。当用户不同意修改块大小B时,则把块大小A的值修改为块大小B的值,根据修改后的块大小A的值来对文件1 518的主体数据602重新分块,包括按照修改后的块大小A来分块复制主体数据602,并同步的生成描述新复制的主体数据的临时区块配置表(步骤912)。在完成复制后用所述临时区块配置表覆盖文件头1 603中的区块配置表703,并删除旧主体数据(步骤913)。完成步骤912和步骤913后,回到步骤902重新读入具有更新的区块配置表703的文件头1 603,接着继续进行步骤903~步骤909。

在用户不同意修改块大小B的情况下采用步骤912和步骤913的 方法虽然也可以解决前述目标格式中的单个数据块指向源格式中的多个数据块的异常情况,但是这需要消耗大量时间通过把源格式中的相关数据块排列到一起来重新组织数据,从而失去利用本发明的优势。但是如上所述,除了个别用户有特殊需求的情况以外,在绝大多数的情况下,本发明都无需对主体数据进行读写操作,而仅需要转换头文件。众所周知,虚拟化镜像文件的主体数据往往有几G字节的大小,而头文件只有几K字节的大小,两者有着好几个数量级的差别,因此本发明相比对比文件可以节省大量的读写操作和时间。另外,由于不需要另外生成一个对应虚拟机1’的文件1’,所以也能够节省文件服务器405的磁盘存储空间。

特别要注意到,图7中涉及的文件头1 603和文件头1’604的内容并不相同。首先因为它们的格式不同,包括不同的字段。另外,用于描述主体数据存储地址信息的区块配置表703和TL1表720所包含的地址偏移数值也不同,因为文件头1 603和文件头1’604的存储地址不同导致了寻址到同一物理地址的地址偏移量不同。但它们实质上指向相同的数据。

另外,在现有的镜像格式转换算法中,主机以扫描的方式读取数据,然后计算其新地址,最后将数据写入新分配的文件空间。而在本发明的方法中,由虚拟文件系统控制器523中的文件映射器525读取数据的地址而不是数据本身,并将根据该地址计算出的文件头1’604写入新分配的文件空间。

图8给出了图6的流程图中步骤802使用的镜像和文件对应关系表的例子。图中的关系表包括表示条目顺序的序号、表示文件所有权标识符的所有者、表示文件读写或执行权限的访问权限、表示映射目标是文件还是文件目录的类型、表示最近一次修改的上次修改时间、表示最近一次访问的上次访问时间、文件大小以及表示文件起始地址的存储块的地址。

(实施例2)

实施例1中举例说明了在支持现有格式VHD的文件上注册支持另一种格式QCOW2的过程。下面通过实施例2来举例说明了在支持现有格式QCOW2的文件上注册支持另一种格式VHD的过程。实施例2 中的系统软硬件架构以及时序图和实施例1中的一样,不同的是文件头1 603的格式为图5(b)中的QCOW2格式而文件头1’604的格式为图5(a)中的VHD格式。其中描述生成文件头的时序图的图6中的步骤808中文件映射器525计算生成新的文件头1’604的流程图如图9所示。首先文件映射器525收到来自镜像注册器524的生成文件头1’604的请求,解析请求获得指定的目标格式块大小B或者在没有指定的情况下使用目标格式的默认块大小B,例如4KB(步骤1001),并从共享的文件系统521读入文件头1 603的数据(步骤1002)。读入文件头1 603的数据之后,即根据图5(b)所示的QCOW2文件头格式对数据进行解析,得到描述主体数据存储地址信息的TL1表720和引用计数表721(步骤1003),并进一步读出簇比特数713来根据公式(1)计算获得源格式的块大小A(步骤1004)。

接下来文件映射器525比较块大小A是否大于等于块大小B(步骤1005)。通常情况下,我们假定二者定义的块大小属于常规块大小取值序列,例如4KB、8KB、32KB、64KB等。当块大小A大于等于块大小B时,表示目标格式中的单个数据块不会指向源格式中的多个数据块。这时文件映射器525根据TL1表720和块大小A计算图5(a)所示的目标文件头格式(即VHD格式)中的镜像大小和区块配置表703(步骤1006),在其他字段,例如文字档案704、数据偏移705、表格偏移706、版本号707、最大表格条目708等,填写默认值,例如随机数或空值(步骤1007)。最后将生成的文件头1’604写入共享的文件系统521(步骤1008)并结束程序(步骤1009)。

反之,当块大小A小于块大小B时,使得文件头生成出现单个数据块指向源格式中的多个数据块的异常情况。对于上述异常的处理方式为向用户推荐修改请求中块大小B的值,使其小于等于块大小A的值(步骤1010)。然后弹出对话框让用户判断是否同意这样的修改(步骤1011)。当用户同意把请求中块大小B的值修改成小于等于块大小A的值时,使用修改后的块大小B回到步骤1005继续进行步骤1006~步骤1009。当用户不同意时,则把块大小A的值修改为块大小B的值,根据修改后的块大小A的值来对文件1 518的主体数据602重新分块,包括按照新设置的块大小A来分块复制主体数据602,并同步的生成 描述新复制的主体数据的临时TL1表、临时引用计数表以及临时簇比特数(步骤1012)。在完成复制后用所述临时TL1表、临时引用计数表以及临时簇比特数覆盖文件头1 603中的TL1表720、引用计数表721以及簇比特数713,并删除旧主体数据(步骤1013)。完成步骤1012和步骤1013后,回到步骤1002重新读入具有更新的TL1表720、引用计数表721以及簇比特数713的文件头1 603,接着继续进行步骤1003~步骤1009。

同样,在用户不同意修改块大小B的情况下采用步骤1012和步骤1013的方法可以虽然也解决前述目标格式中的单个数据块指向源格式中的多个数据块的异常情况,但是这需要消耗大量时间通过把源格式中的相关数据块排列到一起来重新组织数据,从而失去利用本发明的优势。但是如上所述,除了个别用户有特殊需求的情况以外,在绝大多数的情况下,本发明都无需对主体数据进行读写操作,而仅需要转换头文件。众所周知,虚拟化镜像文件的主体数据往往有几G字节的大小,而头文件只有几K字节的大小,两者有着好几个数量级的差别,因此本发明相比对比文件可以节省大量的读写操作和时间。另外,由于不需要另外生成一个对应虚拟机1’的文件1’,所以也能够节省文件服务器405的磁盘存储空间。

特别要注意到,图7中涉及的文件头1 603和文件头1’604的内容并不相同。首先因为它们的格式不同,包括不同的字段。另外,用于描述主体数据存储地址信息的区块配置表703和TL1表720所包含的地址偏移数值也不同,因为文件头1 603和文件头1’604的存储地址不同导致了寻址到同一物理地址的地址偏移量不同。但它们实质上指向相同的数据。

另外,在现有的镜像格式转换算法中,主机以扫描的方式读取数据,然后计算其新地址,最后将数据写入新分配的文件空间。而在本发明的方法中,由虚拟文件系统控制器523中的文件映射器525读取数据的地址而不是数据本身,并将根据该地址计算出的文件头1’604写入新分配的文件空间。

本发明的虚拟文件系统控制器420也可以通过软件来实现。当使用软件虚拟文件系统控制器的时候,其硬件架构和上述实施方式不同, 但是功能框架和文件格式等和上述实施方式一样。上述实施方式中虚拟文件系统控制器420所实现的功能作为软件运行于处理器和内存中,并对磁盘进行管理和向主机提供镜像文件管理服务。与上述实施方式类似,软件虚拟文件系统控制器读取数据的地址而不是数据本身,并将根据该地址计算出的文件头新分配的文件空间。从而实现在原始文件空间内进行镜像文件格式的转换。由于无需对主体数据进行拷贝和传输,因此耗时较短。相比于上述实施方式,使用了软件虚拟文件系统控制器来代替专用硬件虚拟文件系统控制器420,更适合于兼容通用硬件架构的系统,节省系统升级成本,但是性能可能会下降,一定程度上降低本发明在快速镜像文件格式转换方面的优势,但即使这样相比现有技术依旧有着巨大的优势。

尽管已经参考本发明的典型实施例,具体示出和描述了本发明,但本领域普通技术人员应当理解,在不脱离所附权利要求所限定的本发明的精神和范围的情况下,可以对这些实施例进行形式和细节上的多种改变。

工业上的可利用性

本发明的克隆虚拟机的方法以及使用该克隆虚拟机的方法的网络文件系统能够大幅提高虚拟机克隆的效率,减少磁盘读写操作,节省时间,对于日新月异的云计算服务是极为有用的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1