vhd镜像格式及vhd-util工具应用
- 概述
VHD 是微软虚拟磁盘文件格式,qemu和tapdisk2都能支持VHD镜像格式,不仅提供基本的虚拟机卷功能,还可提供磁盘快照、磁盘扩容等高级功能
vhd-util是个linux下的开源软件,通过封装libvhd库函数,提供vhd镜像相关操作。例如可用于创建vhd镜像、快照等功能。
本文关注vhd-util的使用,及背后vhd镜像格式、libvhd的基本流程
- vhd镜像规范
规范可参考 http://wenku.baidu.com/link?url=k-Q8rXCQOTJDhlOalj5KGMyJNQrLKwa6wPaJ0Llg0JAVefxQG_6ITTkqUE03iy3Y3ZsfJteUvZywm30ewJpbGQ0NOPBzj_HtFHIq1ZmRy1u
vhd镜像基本格式如下图

- 创建镜像
vhd支持三种镜像格式:fix卷、dynamic卷、diff(差分)卷(快照),以下以创建100MB动态卷为例
vhd-util create -n parent.vhd -s 100 #创建动态卷 vhd-util query -n parent.img -sv #查看卷物理大小和虚拟大小
关键信息:
(1)在centos/kvm环境测试,发现创建的卷物理大小为3584byte,结合以上vhd格式规范及代码,发现此vhd文件内容如下:
copyoffooter(512)|header(1024)|bat(512)|batmap(1024)|footer(512)
bat记录的是数据块的地址信息,故512bypte计算方法为:100MB物理卷,即50个block,每个block地址为4byte,及总共200byte,按照扇区(512byte)补齐,则占用1个扇区(512byte)
batmap记录的是掩码信息(?尚在研究中),包括batmapheader(512byte)和batmap(512byte)
(2)fix卷的格式为data|footer(512byte),故创建100MB的fix卷,物理大小为100MB+512byte
- 创建快照
以下以基于100MB动态卷,创建快照为例
vhd-util snapshot -n son.vhd -p parent.vhd vhd-util snapshot -n grandson.vhd -p son.vhd vhd-util query -n grandson.vhd -p
关键信息:
(1)和parent.vhd比较,快照卷(diff卷)增加了parentlocator数据,内容如下:
copyoffooter(512)|header(1024)|bat(512)|batmap(1024)|parentlocator(3*512byte)|footer(512)
parentlocator就是平台码,用来表示文件格式,代码里头会产生PLAT_CODE_MACX(File URL)、PLAT_CODE_W2KU(windows系统,绝对路径)、PLAT_CODE_W2RU(windows系统、相对路径)三条 locator信息
(2)运行以上例子的命令,发现grandson.vhd的parent是parent.vhd而非son.vhd。原因是grandson.vhd没有脏数据(没有写过数据)的场景,vhd-util将grandson.vhd接到son.vhd的上一级镜像上
- 磁盘扩容
以下以基于100MB动态卷,动态扩容到200MB为例
vhd-util resize -n parent.img -s 200 -j journal
关键信息:
(1)磁盘扩容成功后,磁盘虚拟大小为200MB,物理大小未发生变化(3584)byte。原因是扩容100MB,导致:(1)bat增加 50(100MB为50个block)4byte空间记录新分配的数据块情况。而bat剩余空间(512byte-504byte(原100MB空间)已 满足要求,无需新分配空间);(2)batmap增加空间,而batmap剩余空间已满足要求,无需新分配空间
vhd镜像格式及vhd-util工具应用的更多相关文章
- 如何借助windows的VHD引导特性实现VHD多windows系统共存
近期,由于一些需要,需要运行3个windows系统,具体需要如何此处略去,现将实现方式共享如下. 测试环境: HP 820 G2, 4G内存, 500G SSD硬盘 windows 7 企业版 win ...
- VHD进阶:差分VHD备份系统
VHD进阶:差分VHD备份系统 一.创建虚拟磁盘 方法1:图形界面创建 1.打开磁盘管理器(运行diskmgmt.msc),在“磁盘管理”上点击右键,“创建VHD”,类型选择VHD,动态扩展或者固定大 ...
- qcow2、raw、vmdk等镜像格式的比较和基本转换
注:本文转自http://www.cnblogs.com/feisky/archive/2012/07/03/2575167.html 云计算用一个朋友的话来说:”做云计算最苦逼的就是得时时刻刻为 ...
- Linux内核镜像格式
<Linux内核镜像格式> Linux内核有多种格式的镜像,包括vmlinux.Image.zImage.bzImage.uImage.xipImage.bootpImage等. ➤k ...
- HttpTool.java(在java tool util工具类中已存在) 暂保留
HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...
- 关于很简单的设计模式,ui-dao-database,以及JavaBean和util工具类
关于很简单的设计模式,ui-dao-database,以及JavaBean和util工具类 24. 三 / J2EE / 没有评论 简单的j2ee设计模式, UI通过DAO层访问数据库或者xml文 ...
- qcow2、raw、vmdk等镜像格式
转自 http://www.prajnagarden.com/?p=248 http://blog.csdn.net/starshine/article/details/8179483 转者言:对pr ...
- linux常用的内核镜像格式
linux常用的内核镜像格式 Linux内核有多种格式的镜像,包括vmlinux.Image.zImage等. 1. Linux内核镜像格式 1.1 vmlinux vmlinuz是可引导的. ...
- OpenStack虚拟机创建过程中镜像格式的的变化过程
Glance用来作为独立的大规模镜像查找服务,当它与Nova和Swift配合使用时,就为OpenStack提供了虚拟机镜像的查找服务,像所有的OpenStack项目一样,遵循以下设计思想: 基于组件的 ...
随机推荐
- 新建一个MVCProject 项目
App_Data文件夹用于存放数据库文件的 App_Start文件夹用于存放Web应用程序启动时需要进行重要配置的类文件 Content 文件夹用于存放主题样式文件 Controllers 文件夹用于 ...
- Android声明和使用权限
Android定义了一种权限方案来保护设备上的资源和功能.例如,在默认情况下,应用程序无法访问联系人列表.拨打电话等.下面就以拨打电话为例介绍一下系统对权限的要求.一般在我们的应用中,如果要用到拨打电 ...
- 第十四个目标(dp + 树状数组 + 线段树)
Problem 2236 第十四个目标 Accept: 17 Submit: 35 Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- 用phantomjs 进行网页整页截屏
写截取整个网页程序是一个做前台的哥们所托,要做一些漂亮的界面原形,参考一些不错的网站设计就帮他弄了个截屏的程序. phantomjs 是一个基于js的webkit内核无头浏览器 也就是没有显示界面 ...
- 不同浏览器对URL最大长度的限制(转)
1.今天碰到一个bug,window.open后面的页面,接收参数不全,导致后台报错.实验了一下.发现是使用get方法请求服务器时,URL过长所致 微软官方的说明: http://support.mi ...
- 关于uisliderview 监听停止滑动的状态
今天遇到一个问题,做颜色控制的时候,通过slider 改变颜色的亮度.如果直接在slider 上绑定事件,则改变一次就需要向服务器发送一次请求.这种是显然不合理的. 所以使用了下面的解决方法 先将sl ...
- sqlcommand循环内使用
using (SqlConnection conn = new SqlConnection()) { SqlCommand comm= new SqlCommand(); conn.Connectio ...
- struts 学习之问一
今天在进行struts全局类型和局部类型转换时,发现一个问题,如下: 当输入一个点的坐标时,我使用全局转换提示错误,找不到类,当改变成局部类型转换时,可以成功转换,不知道这个是什么原因,难道全局不可以 ...
- 如何利用自己的电脑做服务器发布tomcat的WEB项目供外网访问
1.首先你要确定你有一个外网ip地址.如果你分配到的是一个局域网IP地址需要经过一系列的转换为外网ip地址,然后继续下面操作. 2.拿到外网IP地址,进行tomcat的server.xml文件的配置. ...
- 关于DCLP实现的单例模式的一些想法
关于DCLP实现的单例模式的一些想法 我之前写过单例的文章( http://www.cnblogs.com/mkdym/p/4908644.html ),但是现在又有了一些想法,不想再在原来那篇文章上 ...