xen下离线读取虚拟机磁盘镜像的补丁
之前在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。
最新文章
- Unity3D基础--动态创建和设置游戏对象
- DevExpress Ribbongallerybaritem选择性皮肤重组
- EntityFramework_MVC4中EF5 新手入门教程之五 ---5.通过 Entity Framework 读取相关数据
- 堆排序 Heap Sort
- 为什么Android 3.0如此罕见?
- HDU 4882 ZCC Loves Codefires (贪心)
- PHP中长连接的实现
- How Many Shortest Path
- 那些年被我坑过的Python——道阻且长(第五章实用模块讲解)
- UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
- 51nod 1686 第k大区间
- 聊聊 HashMap
- 一、selenium 环境搭建
- JAVA项目中的常用的异常处理情况
- 一台服务器绑定多个ip地址
- ansible源码安装
- Android提权漏洞CVE-2014-7920、CVE-2014-7921
- 【java】break,continue和return区别
- 安装tensorflow ubuntu18.04
- 7.27-8.10 Problems
热门文章
- 迅为最新推出iTOP-6818开发平台无缝支持4418开发板
- AC日记——C’s problem(c) TYVJ P4746 (清北学堂2017冬令营入学测试第三题)
- [No000088]并行循环vs普通循环
- 3172: [Tjoi2013]单词
- javascript性能优化-repaint和reflow
- StackExchange.Redis 使用-配置
- SBT的用法
- Linux基本命令(一)
- android JSON获取值String无法转换成JSONObject
- 51Nod--1010 只包含235的数