TVDSM:支持透明计算的虚拟磁盘存储模型*
2018-03-12郝鹏飞吴加跃胡义香
王 斌,郝鹏飞,吴加跃,胡义香
中南大学 信息科学与工程学院,长沙 410083
1 引言
随着计算机及网络技术的发展,计算模式逐渐从资源共享向服务共享的模式发展[1]。透明服务平台基于透明计算[2-4]思想,通过对系统、应用软件及用户个性化资源的统一管理以及分配,为企事业单位及个人提供无处不在的服务。为了实现终端远程加载启动操作系统,平台服务端存储了所有终端用户的虚拟磁盘数据。但是现有虚拟磁盘镜像存储存在诸多不足之处,主要体现在当前存储模型不适合用户数量较多的虚拟磁盘存储,数据共享实现程度不高,导致存储系统中出现大量冗余数据。
目前主流的虚拟磁盘存储结构主要来自各大虚拟主机所支持的镜像结构,其中raw结构的虚拟磁盘具有较好的数据访问性能,通常是镜像模板的首选结构类型。其他类型,如qcow2[5]、qed[6]、vmdk[7]等,都能基于COW(copy-on-write)技术实现数据的增量存储,且都是采用多级查询机制进行数据访问[8]。但它们被设计的出发点并不是针对特定平台下多用户的数据共享存储,没有考虑到多用户对虚拟磁盘的数据改写特性,也没有考虑到终端系统启动过程中的数据查询效率;另一方面,由于每次保存终端发送来的改写数据时都要对原有数据进行复制,采用写时复制技术实现对修改数据的存储并不适用于透明服务平台。
本文提出的存储模型主要针对学校、企业等具有批量分组人员的透明计算应用场景,由于其终端硬件配置基本一致,使得终端设备能够加载运行相同类型的操作系统以及应用程序[9-11];同组的终端用户选择使用的操作系统类型基本固定,同时会出现许多用户使用相同应用程序频率较高的现象。由于运行在相同操作系统平台下,不仅终端用户使用的系统数据具有很高的相似度,而且终端用户使用同一应用程序所关联的数据也基本类似,可将系统数据与应用程序数据放入共享虚拟磁盘,不同用户的虚拟磁盘镜像相对于共享虚拟磁盘,只有少量的数据修改,且发生修改的位置具有很高的相似度。因此,针对透明计算应用场景中的这些特点,本文提出了一种树状虚拟磁盘存储模型(tree virtual disk storage model,TVDSM),它能将共享数据统一管理,并为每个用户创建虚拟磁盘来保存用户私有数据与个性化配置信息,将很大程度地节省存储空间。
2 虚拟磁盘存储模型
虚拟磁盘中的数据资源按共享程度及性质可划分成以下3类。
(1)系统共享资源:主要指操作系统以及相关数据,包括各种支撑软件及管理工具。该类资源共享程度最高,基本能被所有用户共享。由系统共享资源构成的镜像称之为系统虚拟磁盘镜像(system virtual disk image,S_VDI)。
(2)应用软件群组资源:主要指各种相关的应用软件数据组成的集合,例如办公软件群组可包含Word、Excel、Powerpoint等软件资源,而Java开发群组可包含Eclipse、Mysql、Tomcat等软件资源。该类资源的共享度次之,主要被同一个群组下的用户共享。由应用软件群组的资源构成的镜像称之为群组虚拟磁盘镜像(group virtual disk image,G_VDI)。
(3)用户个性化资源:主要指用户区别于其他用户的数据资源,一般包括用户私有数据文件或者操作系统、应用软件的个性化配置信息。该资源共享度最低,只能提供给自身用户访问。由用户个性化资源构成的镜像称之为用户虚拟磁盘镜像(user virtual disk image,U_VDI)。
如图1所示,TVDSM是一种树状结构的按共享程度划分层次的存储模型。这种模型不需为每个终端用户配备封装了所有数据的虚拟磁盘镜像。其中树的最顶层为共享度最高的系统虚拟磁盘,它能被每个终端用户共享,存储了支持操作系统启动所必须加载的数据。在树的次层,针对每个不同的用户群组,配置了不同的群组虚拟磁盘,群组虚拟磁盘中存储了相关的软件资源,能被群组中的用户共享。而在树的最低层,为每个终端用户配置了专用于存储私有数据和修改数据的用户虚拟磁盘镜像。不同终端用户只会修改少量系统数据和应用数据,因此针对每个用户虚拟磁盘,只需要分配少量的存储空间。该存储模型对用户是透明的,用户所独占的一个包括操作系统、应用软件、个人私有数据的本地磁盘在服务端被划分成多个部分。
Fig.1 Virtual disk storage model tree structure图1 树状结构的虚拟磁盘存储模型
系统虚拟磁盘镜像和群组虚拟磁盘镜像部署于服务端,被多个透明终端共享。当多个终端加载同一个操作系统或者同一个应用软件时,可能发生数据一致性问题,导致某些用户无法正常使用操作系统或应用软件。为了解决上述问题,将ROW(redirecton-write)机制应用于透明计算虚拟磁盘存储模型。具体做法是:将系统虚拟磁盘镜像S_VDI和群组虚拟磁盘镜像G_VDI以只读的方式存储于服务端,共享给多个终端用户;采用ROW写时重定向机制将终端用户对共享的虚拟磁盘镜像S_VDI和G_VDI的改写块保存于与用户对应的用户虚拟磁盘镜像U_VDI中,并采用Bitmap来标记各个改写块的位置,从而实现了多个终端用户对共享数据的共同读写。改进后基于ROW机制的虚拟磁盘访问模式如图2所示。
Fig.2 Virtual disk storage model for transparent service platform图2 透明服务平台中虚拟磁盘存储模型
图2描述了在ROW机制下终端用户i及用户k分别写数据块9后再读取数据块7至9的数据访问流程。以用户i为例,在用户i写数据块9时,由数据服务中间件直接重定向将数据写入至该用户对应的U_VDI,并且在位图索引中修改相应的bit位。用户i在之后的数据访问过程中如果再次修改数据块9中的数据,则直接覆盖U_VDI中数据块9的旧数据,而不用对位图进行修改。当用户i请求访问第7号至第9号的数据块时,用户对应的U_VDI中存储了数据块7和9的改写块,因此对7号块和9号块的数据访问读请求被定位到用户对应的U_VDI,而数据块8在U_VDI和G_VDI的位图中都没有改写标记,因此其请求定位到了S_VDI,最后将所有读取到的数据块重新排序组合后返回给终端用户。
在基于ROW机制的虚拟磁盘存储模型中,每个终端用户感知自身独占整个S_VDI,而实际上S_VDI是被多个用户共享的,用户的私有化数据存储于用户的U_VDI中。S_VDI、G_VDI的创建一般是在管理员对整个透明服务平台环境进行准备时配置的,也可以在平台运行过程中动态添加或修改,而U_VDI的创建是在用户申请时动态生成的,用户申请镜像时,可以选择U_VDI所属的操作系统类型及应用群组,从而共享所选择群组下的系统数据和应用数据。
3 虚拟磁盘镜像存储结构
TVDSM能解决多用户虚拟磁盘数据共享的数据一致性问题,但它需要一种合适的虚拟磁盘存储结构的支撑,以实现透明计算系统中数据的高效共享与访问。本文提出的虚拟磁盘镜像存储结构基于位图索引技术[12],支持用户能够在较小的粒度下获得较高的数据访问效率。
3.1 虚拟磁盘镜像存储结构
它主要由Header、Bitmap、Q_table、Data四部分组成。其中Header、Bitmap、Q_table构成元数据文件,Data部分构成数据文件,元数据文件和数据文件可连续存储也可分离存储。为了实现数据的快速定位,针对Data区域按两种不同粒度分块划分,得到两种类型序列。
定义 1Block序列(block sequence,BS):BS={B1,B2,…,Bn},它由大小相同的连续Block组成,每块大小为B_unit,是虚拟磁盘的共享粒度和改写粒度。
定义2Chunk序列(chunk sequence,CS):CS={C1,C2,…,Cn},同样由大小相同的连续Chunk组成,且每个Chunk都是固定长度的BS序列,即Ci={Bj,Bj+1,…,Bj+k},CS的划分粒度为C_unit,它是数据查找的基本单位。
本文提出的虚拟磁盘存储结构如图3所示。
Fig.3 Virtual disk storage structure图3 虚拟磁盘存储结构
(1)头部(Header)
Header区域处于虚拟磁盘镜像的开始部分,它记录整个虚拟磁盘镜像的基础信息,其中:
①vid:64位整型唯一标识一个虚拟磁盘镜像节点,用于区别其他节点。
②type:表示节点类型,共包含4种类型,系统类型、群组类型、用户类型、快照类型。
③f_ptr:指向父节点镜像的指针,当某节点指向父节点时,可共享父节点镜像中的数据,并且只保留对父节点数据修改的部分。系统类型节点的f_ptr为空。
④size:表示镜像节点大小,即Bitmap所能表示的磁盘总大小,单位为Byte。
⑤M_offset:表示Bitmap区域相对于镜像起始位置的偏移量,位图区域紧随Header区域,而Header大小固定,因此该值是个固定值。
⑥Q_offset:表示Q_table区域相对于镜像起始位置的偏移量,通过它能快速定位到Q_table。
⑦D_offset:表示Data区域相对于镜像起始位置的偏移量,通过D_offset和数据块号可计算访问数据的具体位置。
⑧B_unit:划分Block的基本单位。
⑨C_unit:划分Chunk的基本单位,C_unit=n×B_unit,其中n为整数。
⑩ heads、cylinders、sectors:分别表示虚拟磁盘的磁头数、柱面数和扇区数,是虚拟出来的物理参数。
⑪其他成员:主要包含虚拟磁盘所属用户的信息,操作系统版本信息、虚拟磁盘操作权限等。例如,其中操作权限主要包括虚拟磁盘镜像是否可写,镜像节点是否允许生成子节点。
(2)位图(Bitmap)
位图用于记录修改块的位置。具体做法是,镜像节点初始化过程中,在位图区域开辟Bitmap_size大小的空间,且初始化全为0,位图中每个bit位都与虚拟磁盘BS序列中的每个Block一一对应,式(1)为Bitmap_size计算方法。在此后数据访问过程中,若对父节点Block序列发生修改时,需要将对应bit位的值设置为1。
(3)查找表(Q_table)
查找表将发生改写Chunk的索引号与该Chunk在Data区域偏移量的位置相互映射,从而加快查询速度。它的大小是可变的,只有发生改写的Chunk才会被记录于表中,查找表的大小可依据数据改写量而动态调整。
(4)数据区域(Data)
数据区域用于存储每个节点相对于父节点所修改的数据,更新后的数据保存在此以区别于父节点的共享数据。当存储节点为S_VDI节点时,则终端虚拟磁盘中数据存储的顺序就是S_VDI节点Data区域中数据存储顺序。
3.2 写重定向与查询定位分离
透明终端数据访问过程中,如何快速定位数据是要解决的关键问题。上文提出的虚拟磁盘存储结构能够很好地支持以写重定向与查询定位分离的方式进行数据交互,进行写重定向时以B_unit为操作粒度,该粒度也是多用户对虚拟磁盘数据的共享粒度,而进行查询定位时,查找数据的基本单位为C_unit,且C_unit=n×B_unit,其中n为整数。ROW与查询定位分开实现带来了不少优点,其中最重要一点是加快数据的查询速度。下文分析对比了两者分开实现与否对系统性能的影响。
假设ROW与查询定位统一实现,使用相同粒度的B_unit实现数据改写和数据查询定位。当某节点相对于上层节点修改了n块Block,查找表必须生成n个表项,若每个表项占用存储空间为m,那么查找表需要m×n的存储空间,且查找数据的平均查找长度为为了加快查询速度,常用方法是将改写块的查找表缓存于内存中,针对查找表每个用户将占用m×n的服务器内存空间,当系统中用户数量增多或用户修改数据增多时,这种级别的内存开销将严重影响其他服务质量。
如果将ROW与存储定位分开实现,查找表的每项就记录了一个改写Chunk的地址索引,每个Chunk由x块连续的Block构成。通过透明服务平台实验分析可知,虚拟磁盘具有在多用户终端启动同一操作系统的过程中,对系统虚拟磁盘镜像的修改在整体上是离散的,但在局部经常出现连续被修改的数据块的磁盘访问特性[13-14],因此被多次改写的连续数据块可以合并成一个Chunk,这样只需要在查找表中增加一条记录,而不是增加多条记录。这种方式下查找表占用磁盘空间大约为,相比之下可以较为轻松地将查找表缓存于内存中,加快查询速度。同时,查找每个修改块所用的时间也将减少,平均查找长度约为
图4描述了ROW与查询定位分离机制实现的部分细节。在该例中C_unit=4×B_unit,当某用户对Block 6发生改写操作时,除了需要将更新后数据写入用户Data区域,还需要更新用户节点的Bitmap以及Q_table;而后用户改写的Block 7和改写过的Block 6属于同一个Chunk,因此不用在Q_table中增加新表项。当用户进行查询定位时,需要先通过Bitmap判断数据是否在当前节点,如果数据在当前节点则通过Q_table查找该数据所属Chunk的起始位置,通过该位置计算并读取所需访问的数据。
Fig.4 ROW and query location separation diagram图4 ROW与查询定位分离实现示意图
通过对本文方案的系统远程启动过程中的数据请求进行统计分析,发现B_unit选取为4 KB最为合理,这也是操作系统访问页的大小。如果B_unit设置过大,就会增大虚拟磁盘存储系统中“假”共享发生的概率,“假”共享是指多个用户共享数据块时,真正共享其中小部分而不是共享整块数据;同时还会降低访问效率,并且易产生内存碎片,因为访问过程中往往需要将整个Block载入内存,再对其做出裁剪,而不能直接返回给终端。而B_unit设置过小,访问数据过程中需要读取多个Block,同样降低了访问效率。
C_unit同样不适合设置过大或过小。假如C_unit值过大,且大于大部分连续修改数据的总长度,将导致用户节点Data区域的空间严重浪费。而C_unit值设置过小,虽然用户节点Data区域存储空间能够得到较为充分的利用,但查找表条目会增多,导致查找速度过慢。因此,需要进行相应实验并综合参考这两个指标选取合适的C_unit值。
4 实验验证
4.1 实验环境
实验中,透明终端和服务端工作在同一局域网,它们之间通过路由器相互连接[15]。在服务端,部署了两种类型的服务器,一种是为用户提供数据服务的Initiator服务器,另一种是用于存储虚拟磁盘镜像的Target服务器。在Initiator服务器中部署了数据服务中间件,为透明终端远程加载操作系统以及其他各种操作提供数据服务。透明终端则部署了一些基本的系统引导程序,而没有预装操作系统和其他任何工具软件。终端类型分为两种,一种使用的是x86结构的移动终端,另一种使用的是PC终端。其中移动终端使用的是无线网络,PC终端使用的是有线网络。透明终端和服务端配置信息如表1和表2所示。
Table 1 Terminal configuration table表1 终端配置表
4.2 多用户磁盘空间占用分析
本节实验对象采用了CentOS操作系统,它的系统镜像大小为9.8 GB。之后为其制作了两种类型的群组镜像,分别是办公群组和娱乐群组,每个群组安装若干应用的软件;在每个系统类型下添加5个用户。然后,用户通过透明终端产生若干个性化数据,记录并统计在对虚拟磁盘存储优化前以及优化后选取不同Chunk大小时服务端磁盘空间的占用量,详细结果如表3所示,随用户数量增加服务端磁盘开销走势如图5所示。
Table 2 Server configuration table表2 服务器配置表
Table 3 Effect of Chunk on multi user disk space occupied表3 不同Chunk时多用户磁盘空间占用
从表3中可以看出,当平台中只有一个用户时,优化后的模式反而比优化前多占用部分存储空间,但随着用户数量不断增加,优化前的磁盘空间占用与用户数量呈现正比关系,而优化后镜像资源占用磁盘空间的增长速率缓慢。这是由于在优化后的初始化过程中,为系统配置了不同的群组镜像,导致用户数量为1时,反而占用更多的磁盘空间;然而随着管理员添加更多的用户镜像,各用户节点Data只需存储修改的数据内容,因此表现出磁盘空间增长速度缓慢。
Fig.5 Effect of Chunk on multi user disk space occupied图5 不同Chunk时多用户磁盘空间占用
结合图5可知,Chunk大小将影响磁盘空间占用量。随着Chunk大小的增长,服务端的磁盘开销呈现出增长趋势。但不难发现,Chunk大小在不超过512 KB阶段,不同Chunk值对磁盘空间总量的影响较小;而Chunk大小达到1 MB时,磁盘空间总量增长比较明显,对系统磁盘开销造成一定影响。
4.3 数据访问性能分析
虚拟磁盘读写性能也是衡量存储结构优劣的重要指标,本文分别在大小不同的Chunk情况下,通过终端向虚拟磁盘读写各种大小的文件,记录它们在不同Chunk大小和终端类型情况下的数据读写速度。终端类型分为移动终端和PC终端两种,移动终端使用的是无线网络,PC终端使用的是有线网络,有线网络比较于无线网络具有更高且更稳定的传输速率,这会对实验结果造成一定影响。具体实验方法是用CentOS系统自带的磁盘工具进行测试。测试读取速率指令是dd if=/dev/sda of=/dev/null bs=1M count=x,测试写入速率指令是dd if=/dev/zero of=/test.img bs=1M count=x。命令中bs=1M表示数据块大小为1 MB,count=x表示总共读取x块数据。针对每种不同环境进行多次测试并计算平均值,测试结果如表4所示。
Table 4 Virtual disk data read/write rate表4 虚拟磁盘数据读写速率
通过表4可以看出,受到无线网络不稳定等因素的影响,PC终端表现出数据读写性能高于移动终端。并且在Chunk大小与终端设备都保持一致时,写入速率明显高于读取速率,这是虚拟磁盘延迟写的机制所产生的作用,大幅度提高了数据写入速率。但随着写入数据的增多,写入速度出现一定幅度下降,这是由于延迟写缓冲区空间不足,写操作进入等待队列而得不到及时响应所导致的。
另外,可以发现不同的Chunk大小和终端类型与虚拟磁盘读写速率是相关的。在同类型终端读写速率对比时发现,Chunk大小为1 MB时读写性能表现最优。但同时考虑到4.2节所述实验中Chunk设置为1 MB造成磁盘开销过大,因此可选取512 KB作为Chunk序列划分单位。结合表3及表4可以得出,Chunk大小为512 KB时,存储系统在磁盘开销和数据访问性能方面都表现出色。
为了验证本文提出的虚拟磁盘存储结构能否满足透明计算访问性能的要求,通过如下实验对比了虚拟磁盘和普通磁盘的数据访问速率。其中影响虚拟磁盘访问速率的参数Chunk大小设置为512 KB,且终端类型采取有线传输类型,保证数据传送可靠性。普通磁盘选用的是型号为Lenovo E49AL的笔记本电脑中自带的磁盘,性能参数为5 400 r/min。实验工具为Centos自带的获取硬盘参数工具hdparm,它能实时获取磁盘相关性能参数,具体指令为hdparmt/dev/sdb1。测试结果如表5所示。
Table 5 Speed comparison of virtual disk and disk表5 虚拟磁盘与普通磁盘速率对比
从表5中可以分析得出:虽然透明计算虚拟磁盘访问速度较明显低于传统磁盘,但虚拟磁盘速率仍保持在传统磁盘速率70%以上并且稳定,这对用户的数据访问并没有太大影响。终端用户可通过透明终端完成编辑、查看文件以及观看视频等基本操作。因此本文提出的TVDSM应用于透明服务平台既保障了数据服务质量,又节省了磁盘空间。
5 结束语
由实验结果可知,面向透明计算模式的TVDSM以及镜像存储结构能够支持多用户的镜像数据共享,同时又能保证数据的访问效率。它将数据共享粒度和数据查询粒度以不同粒度分开实现,提高了系统的共享性和访问效率,可以很好地支持多用户同时远程加载操作系统,支持透明计算模式。
[1]Zhang Yaoxue,Zhou Yuezhi.Transparent computing:spatiotemporal extension on von Neumann architecture for cloud services[J].Tsinghua Science and Technology,2013,18(1):10-21.
[2]ZhangYaoxue,ZhouYuezhi.Separating computation and storage with storage virtualization[J].Computer Communications,2011,34(13):1539-1548.
[3]Zhang Yaoxue.Transparence computing:concept,architecture and example[J].Acta Electronica Sinica,2004,32(S1):169-174.
[4]Gao Yuan,Zhang Yaoxue,Zhou Yuezhi.Building a virtual machine-based network storage system for transparent computing[C]//Proceedings of the 2012 International Conference on Computer Science and Service System,Nanjing,Aug 11-13,2012.Washington:IEEE Computer Society,2012:2341-2344.
[5]Li Jianxin,Liu Hanqing,Cui Lei,et al.iROW:an efficient live snapshot system for virtual machine disk[C]//Proceedings of the 18th IEEE International Conference on Parallel and Distributed Systems,Singapore,Dec 17-19,2012.Washington:IEEE Computer Society,2012:376-383.
[6]Xu Yanjun,Jiang Jinlei,Wang Bo,et al.Several virtual machine image formats and their performance evaluation[J].Journal of ComputerApplications,2013,33(S1):22-25.
[7]Monckton R D.Incremental and differential backups of virtual machine files:USA,8099391[P].2012-01-17.
[8]Chakraborty P,Traut E P.Mechanism to store information describing a virtual machine in a virtual disk image:USA,8370819[P].2013-02-05.
[9]Xiong Yonghua,Huang Suzhen,Wu Min,et al.A novel resource management method of providing operating system as a service for mobile transparent computing[J].The Scientific World Journal,2014,2014(1):153847.
[10]Gao Yuan,Zhang Yaoxue,Zhou Yuezhi.TVSDM:a virtual storage device driver model for transparent computing[J].Journal of Tsinghua University:Science and Technology,2013,53(7):1064-1068.
[11]Zhou Yuezhi,Zhang Yaoxue,Liu Hao,et al.A bare-metal and asymmetric partitioning approach to client virtualization[J].IEEE Transactions on Services Computing,2014,7(1):40-53.
[12]Meng Biping,Wang Tengjiao,Li Hongyan,et al.Regional bitmap index:a secondary index for data management in could computing environment[J].Chinese Journal of Computers,2012,35(11):2306-2316.
[13]Tan Huailiang,Wang Yan,Sun Jianhua.Prefetch method for rewrite block in the rebuilding process of distributed system volumes[J].Journal of Hunan University:Natural Sciences,2009,36(1):77-80.
[14]He Zaihong,Que Qingxian.System volume sharing strategy in network computation[J].Computer Engineering,2009,35(9):252-254.
[15]Xu Guangbin,Zhang Yaoxue,Zhou Yuezhi,et al.Design and implementation of a virtual machine-based transparent computing system[J].Journal of Tsinghua University:Science and Technology,2008,48(10):1679-1682.
附中文参考文献:
[3]张尧学.透明计算:概念、结构和示例[J].电子学报,2004,32(S1):169-174.
[6]许艳军,姜进磊,王博,等.几种虚拟机镜像格式及其性能测评[J].计算机应用,2013,33(S1):22-25.
[10]高原,张尧学,周悦芝.TVSDM:一种支持透明计算的虚拟存储设备驱动模型[J].清华大学学报:自然科学版,2013,53(7):1064-1068.
[12]孟必平,王腾蛟,李红燕,等.分片位图索引:一种适用于云数据管理的辅助索引机制[J].计算机学报,2012,35(11):2306-2316.
[13]谭怀亮,王燕,孙建华,等.分布式系统卷重构过程的改写块预取方法[J].湖南大学学报:自然科学版,2009,36(1):77-80.
[14]贺再红,阙清贤.网络计算中的系统卷共享策略[J].计算机工程,2009,35(9):252-254.
[15]徐广斌,张尧学,周悦芝,等.基于虚拟机的透明计算系统设计及实现[J].清华大学学报:自然科学版,2008,48(10):1679-1682.