| 关键词: nbsp 然后 install libvmi kernel linux 文件 offset 一个 版本 |
libvmi是用来监控虚拟机内存的。 本机环境:centos6.5 64位 通过virsh version查看xen的信息 Compiled against library: libvirt 1.2.10 Using library: libvirt 1.2.10 Using API: Xen 1.2.10 Running hypervisor: Xen 4.4.0 下载 http://libvmi.com/download/ 安装教程 http://libvmi.com/docs/gcode-install.html 开始之前,要确保已经安装了基本的开发环境,包括gcc,make,autoconf等。可以直接使用yum groupinstall "Development Tools" 安装,但是看到有90多M的包下,我就放弃了,因为里面有很多是现在不需要的,而且使用xen时尽量不在dom0里装过多的东西,这也是为了系统的稳定,所以我选择了一个个安装,原则是“缺啥补啥”,肯定比较麻烦,但这是个学习的过程嘛 先安装gcc yum -y install gcc 然后安装make yum intall make 然后安装autoconf yum install autoconf 暂时装这些,等后面报错了再看需要啥把。 然后按照文档中的说明安装依赖包 首先是libxc 下载 http://www.tddft.org/programs/octopus/wiki/index.php/Libxc_2.2.2 ./configure 报错could not find Fortran 90 compiler 缺啥补啥 yum install gcc-gfortran 然后就是安装三部曲 ./configure make make install 下来安装第二个依赖包 yacc(Yet Another Compiler Compiler,是一个经典的生成语法分析器的工具) yum install byacc 然后安装flex(LEXical compiler,主要功能是生成一个词法分析器scanner的C源码) yum install flex 接下来安装glib,请看这里 http://www.cnblogs.com/chasonzhang/p/4532934.html#rightway 照着这里面做,报了个错 configure: error: *** Working zlib library and headers not found *** yum install zilb发现已安装,那就 yum install zlib-devel 然后再./configure 又报错 checking for LIBFFI... no configure: error: Package requirements (libffi >= 3.0.0) were not met: No package 'libffi' found yum install libffi发现已安装,那就 yum install libffi-devel 然后再./configure bingo!下面不说了 所有的依赖包都装好后,该我们的主角libvmi登场了。 将下载的包解压后,进入解压后的目录,运行 ./autogen.sh 报错 Error: could not find libtoolize or glibtoolize yum intall libtool 再次./autogen.sh 然后./configure 报错 No package 'glib-2.0' found 试着把glib-2.0.pc这个文件的路径/usr/local/lib/pkgconfig加到PKG_CONFIG_PATH这个环境变量中,pkg-config程序通过.pc后缀的文件向用户程序提供相应库的路径、版本号等信息 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH 然后再./configure 方法有效,输出中看到checking for GLIB... yes 但又报了另一个错误 No package 'check' found yum install check yum install check-devel 再次./configure bingo!
然后make报错了
我先安装了bison yum install bison 然后卸载了yacc yum remove byacc 其实bison和yacc的功能差不多,所以没啥用,只是我病急乱投医罢了 最后的解决办法: ./configure --prefix=/usr --with-included-apr 然后make make install ldconfig(它的作用请看 http://linux.die.net/man/8/ldconfig ) exit(作用 不详 ) ------------------------------------------------------------------------------------------------------------------------------- 接下来是libvmi的配置 为了正常工作,需要在$HOME/etc/或者 /etc/下创建一个配置文件libvmi.conf,我们选择创建在/etc目录下 要在这个配置文件中为libvmi将要访问的每个虚拟机或者内存镜像设置一个条目,需要指明操作系统的类型(例如 Linux或Windows),symbolic information的位置,虚拟机或内存镜像中要访问数据的偏移量。格式如下: <vm name or filename>{ <key> = <value>; <key> = <value>; } 虚拟机名字可以通过xm list或xl list或virsh list得到. 下面是一些key的说明(一共九个)
其中第一个windows和linux都适用,第二个只适用于linux,接下来三个linux开头的用于linux,windows开头的用于windows 然后到底怎么得到这些值呢? 在libvmi-0.10.1/tools/目录下可以找到一个叫做linux-offset-finder的工具,把这个文件夹拷贝到domU里面(要用root用户登录domU,至于怎么拷贝,我是用163发过去的),然后make,如图
然后报了下面的错误
进入那个目录,发现有个build的链接文件
但是这个build链接失效了,双击它会报出这样的错误
yum install kernel-xen-devel make继续报错 然后yum install kernel-headers make还是报错 怀疑是不是要 lgconfig 还是不行。 后来发现是安装的版本不对,我使用的内核是2.6.18-398.el5-xen 而安装的kernel-xen-devel版本是 kernel-xen-devel-2.6.18-404.el5 所以这次重装一下,指定版本号 yum install kernel-xen-devel-2.6.18-398.el5 这里有个命令 uname -a; rpm -qa kernel\* | sort 可以列出你当前使用的内核和安装了哪些版本
为了防止出错,我们使用把404版本的都卸载掉 如yum remove kernel-headers-2.6.18-404.el5 另一个类似 然后我们发现lib/modules/2.6.18-398.el5xen/下的include能打开了,它指向的是/usr/src/kernels下面对应版本的文件夹 然后我们满心欢喜的make,又报错了 gcc command not found 缺啥补啥,yum install gcc这次make就没有报错 然后使用insmod findoffsets.ko将模块插入内核 如果想将模块从kernel中移除,使用rmmod findoffsets 我们先将其移除,然后使用 insmod findoffsets.ko -s重新将其载入kernel -s 是将所有信息记录在系统记录文件中 这次报了个错误
如果这个可以成功的话,我们可以再/var/log/syslog中找到我们需要的信息,但是不成功也没 关系,我们依然可以使用dmesg来查看调试信息
原来 -s 和 --syslog都不是有效的参数,可是网上的参考资料都说有这参数啊,算了不管了,我们要得东西得到就行了。 把上面的信息拷贝到dom0中的中的/etc/libvmi.conf中吧。 然后把[domain name]整个替换为虚拟机的名词,此处为centos5.1 然后设置一下sysmap的路径吧 在domU中的/boot/下找到System.map文件,拷贝到dom0的/boot/domU目录下 然后libvmi.conf的配置如下:
配置好了之后,我们就可以使用libvmi来监控这个虚拟机的内存了。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|