之前在xen-3.4.2和xen-4.1.2下做过几个基于qemu模拟器的补丁,就是想着不用通过xm create(xen3下面)或xl create(xen4下面)启动虚拟机,而能直接去解析磁盘镜像文件,将虚拟磁盘的分区、各个分区里面的文件和目录列表以及文件内容以ls和cat的方式呈现出来。于是就把grub那套文件系统解析的逻辑抠出来,做了很多细节上的调整,然后融合到xen的代码树中的qemu-ioemu,类似于下面的效果:

http://lists.gnu.org/archive/html/qemu-devel/2013-01/msg01777.html,曾经试图向qemu-devel提交这个补丁,对方说不是大众化需求,考虑考虑。。。)

首先列出磁盘有哪些类型的分区

=======================

[address@hidden Fri Dec 28 ~/honeypot/xen/xen-4.1.2]$ qemu-img-xen ls~/vm-check.img

partion    fstype  boot

/1       ntfs    *

/2       fat

看启动分区有哪些文件

========================

[address@hidden Fri Dec 28 ~/honeypot/xen/xen-4.1.2]$ qemu-img-xen ls -l -d /1/ ~/vm-check.img
【name        size(bytes)      dir?      date create-time】
AUTOEXEC.BAT     0                    file    2010-12-22        17:30:37
boot.ini                   211                  file    2010-12-23        01:24:41
bootfont.bin       322730                file    2004-11-23        20:00:00

读取boot.ini

========================

[address@hidden Fri Dec 28 ~/honeypot/xen/xen-4.1.2]$ qemu-img-xen cat -f /1/boot.ini ~/vm-check.img
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
Professional" /noexecute=optin /fastdetect

后来需要对两个虚拟磁盘上的文件进行全盘比较,找出那些文件或目录改动了,考虑到性能问题,总不能每个文件都通过qemu-img-xen cat读出来再比较差异吧;正好有fuse这个库,可以将经过改造的qemu-ioemu中暴露的接口再次用fuse包装下,那么虚拟机的磁盘镜像就可以挂载到linux的文件系统了;也就是说对比两个虚拟磁盘的文件变动,变为这样了:启动两个fuse进程,将虚拟磁盘挂载到某个目录,剩下的比较操作就交给linux内置的diff命令工具了,这样省事多了,也简洁多了,关键是比较所耗费的时间由原来的20多分钟(未采用fuse时)缩短到5分钟内。

这里,我亲身体会到了自定义修改开源工具以及各种工具排列组合产生的“伟大效用”。

如果对这个功能的补丁感兴趣,可以邮件联系我aware.why@gmail.com

xen下离线读取虚拟机磁盘镜像的补丁的更多相关文章

  1. Xen虚拟机磁盘镜像模板制作(四)—CentOS 7

    在<Xen虚拟机磁盘镜像模板制作(三)—CentOS 7>一文中,我们已经成功制作出了 CentOS7 磁盘镜像.下面我们说明下如何通过它来生成目标虚拟机,同时测试下之前制作好的虚拟机磁盘 ...

  2. Xen虚拟机磁盘镜像模板制作(二)—Windows Server 2008(2012)

    在<Xen虚拟机磁盘镜像模板制作(一)—Windows Server 2008(2012)>一文中,我们已经成功制作出了Windows Server磁盘镜像.下面我们说明下如何通过它来生成 ...

  3. Xen虚拟机磁盘镜像模板制作(一)—Windows Server 2008(2012)

    这段时间一直在研究如何制作一个适合Xen虚拟化的Windows Server 2008(2012)磁盘镜像,中间虽然遇到了一些阻挠,不过最终还是顺利解决,成功制作出了Xen Windows Serve ...

  4. 虚拟机下Linux读取USB设备的问题虚拟机下Linux无法读取USB设备的解决方案

    我们在虚拟机中识别USB设备有三种情况导致Linux系统不能读取到USB设备: 1. .当虚拟机的USB服务没有开启的时候 2. 若虚拟机的USB连接的设置选项没有设置好 3. Widows抢先一步, ...

  5. Windows7下的免费虚拟机(微软官方虚拟机)

    前言: 不是说windows7自带的虚拟机最好用,而是他是正式版的,免费的,只要你是windows7用户,就可以免费使用: 其实我最推荐的还是Vmware: 微软为什么提供免费的虚拟机呢? 因为vis ...

  6. Linux下离线安装docker与fastDFS

    一.Linux下离线安装Docker 基础环境 1.操作系统:CentOS 7 2.Docker版本:docker-19.03.9.tgz 官方下载地址(打不开可能需要科学-上网) 3.官方参考文档: ...

  7. 记录下WIN下配置LINUX虚拟机及PYTHON环境

    因为听说服务器端大多都是LINUX/UNIX,LINUX是程序员必须适应的编程环境,所以今天折腾了一下,给笔记本装了个LINUX虚拟机,并顺便给WINDOWS和LINUX都配置了PYTHON环境. 这 ...

  8. Azure ARM (11) ARM模式下,创建虚拟机并配置负载均衡器

    <Windows Azure Platform 系列文章目录> 本文内容比较多,请大家仔细阅读,谢谢! 在前几章中,我们做了准备工作: 1.创建ARM Resouce Group,叫Lei ...

  9. Mac系统下使用VirtualBox虚拟机安装win7--第一步 安装vbox虚拟机

    Mac系统下使用VirtualBox虚拟机安装win7操作步骤: 第一步 安装vbox虚拟机 1.先下载vbox,下载地址:: https://www.virtualbox.org/wiki/Down ...

随机推荐

  1. XML通过XSL格式化的那点事(XML到自定义节点折叠显示)

    引言 有时我们想看下系统生成的XML文件(如XML格式的Project文件),如果文件结构简单,我们浏览器看起来还比较方便,但是随着XML schema复杂后就变得让人头疼啦,单独写一个程序去做展现又 ...

  2. springmvc 上传下载

    springmvc文件上传下载在网上搜索的代码 参考整理了一份需要使用的jar.commons-fileupload.jar与commons-io-1.4.jar 二个文件 1.表单属性为: enct ...

  3. CNI插件源码示例,对于github.com/rajatchopra/ocicni库的分析

    CNI插件初始化 // ocicni.go 1.func InitCNI(pluginDir string) (CNIPlugin, error) (1).先调用plugin := probeNetw ...

  4. 如何在github中创建演示demo

    在项目中创建一个新的gh-pages分支: 将你想要展示的示例demo上传到改分支,具体操作就看你自己啦,是merge其他分支的过来还是重新写代码都可以. 最后,通过http://<userna ...

  5. VS2012配置OpenCV、GDAL开发环境

    VS2012和opencv-2.4.10 第一步:配置之前的准备工作. 完成VS2012的安装,以及opencv-2.4.10的下载和文件提取, 双击此文件,设置文件路径,即可得到提取文件,提取后的文 ...

  6. 操作系统IO模型

    操作系统IO模型 声明:如下内容是根据APUE和mycat两本著作中关于I/O模式的一些内容加上自己的一些理解整理而成,仅供学习使用. 本节内容 UNIX下可用的五种I/O模型 三种I/O模型 Rea ...

  7. jQuery ScrollPagination修改之后

    jQuery ScrollPagination修改之后代码 /* ** Anderson Ferminiano ** contato@andersonferminiano.com -- feel fr ...

  8. 【转载】WEB前端开发规范文档

    本文转载自谈笑涧<WEB前端开发规范文档> 为 新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益 ...

  9. 简单CSS3实现炫酷读者墙

    如题,给大家介绍和讲解几个常用的CSS3属性,并用到实处. 先看demo(请使用Chrome或者Firefox浏览,IE的靠边): 点此查看实例 觉得爽的可以继续阅读下面的知识点,感觉不爽的可绕行. ...

  10. 【跟着子迟品 underscore】Array Functions 相关源码拾遗 & 小结

    Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...