st0627 发表于 2015-10-10 13:20:18

ubuntu12.04源码安装libvirt0.9.13与xen4.1(与kvm)整体环境配置流程

前期准备
1、首先确定机器有VT
终端输入:grep vmx /proc/cpuinfo(intel芯片)
grep svm /proc/cpuinfo(AMD芯片)
不知道自己芯片的就输入:egrep '(vmx|svm)' /proc/cpuinfo
如果flags里面有vmx或者svm就是支持VT,如果没有任何输出则是不支持
2、确保BIOS里面开启了VT
    intel(R) Virtualization Tech
    如果有必要,还需要在BIOS里面开启VT-d





请注意安装的先后顺序!

/*****************************************************************安装xen********************************************************************/



第一步:安装需要的软件包



安装编译 Xen 和 Linux xen kernel 所需要的软件包:

sudo apt-get install gcc g++ make patch libssl-dev bzip2 gettext \

zlib1g-dev python libncurses5-dev libjpeg62-dev libx11-dev \

libgcrypt11-dev pkg-config bridge-utils bcc bin86 libpci-dev \

libsdl-dev python-dev texinfo libc6-dev uuid-dev bison flex fakeroot \

build-essential crash kexec-tools makedumpfilelibncurses5 \

libncurses5-dev iasl gawk





第二步:安装xen vmm

32位和64位系统的区别也很重要。64位按下面步骤很简单,32位就不同,因为xen需要开启pae,默认是没有开启的,所以32位ubuntu首先得执行下面这个命令:

sudo apt-get install linux-image-server



sudo apt-get install xen-hypervisor-4.1-amd64 xen-utils-4.1 xenwatch xen-tools xen-utils-common xenstore-utils

这里xen-hypervisor-4.1要分32位、64位,64位系统用xen-hypervisor-4.1-amd64,32位用xen-hypervisor-4.1-i386.





第三步:重启机器,选择有xen的内核启动,进入系统之后,再检查一下 Xen 是否已经成功安装:

$ sudo xm list

Name                                        ID   Mem VCPUs      State   Time(s)

Domain-0                                     01879   2   r-----      6.6



出现上面的信息,则代表安装成功。



接着修改grub,使xen自启动。此步骤可以省略

$ sudo apt-get purge grub-pc
$ sudo rm /boot/grub/*
$ sudo apt-get install grub
$ sudo grub-install --recheck /dev/sda
$ sudo update-grub
$ sudo vi /boot/grub/menu.lst




第五步:修改配置文件



sudo gedit/etc/xen/xend-config.sxp

将/etc/xen/xend-config.sxp文件中的“#(xend-unix-server no)”跟“#(xend-relocation-server no)”注释去掉 即把“#”去掉,并把“no”改成“yes”,保存即可。 relocation是迁移必须要开启的服务,其他的服务在没有必要的时候不要随便打开

然后重启xend服务(手动启动/停止/重启Xen服务命令:/etc/init.d/xendstart /stop /restart)



sudo gedit ~/.bashrc ,在打开的.bashrc文件中添加下面这句话

export VIRSH_DEFAULT_CONNECT_URI="xen:///"





(/*****************************************************************安装 kvm******************************************************************/)

注意!装了xen就不要执行这一步了,这两种虚拟机管理器装一种就行了!



sudo apt-get install kvm



由于配合kvm一起工作的qemu已经替你实现了模拟硬件虚拟化,所以即使你的硬件不支持虚拟化也一样可以用kvm跟libvirt搭配使用的

这个kvm安装比xen要方便很多,但是也是有一定缺陷的,看你要做什么的吧。其他配置过程是一样的







/****************************************安装vir-manager**************************************************************/



sudo apt-get install virtinstvirt-viewer virt-manager







/***********************************************************安装ssh服务******************************************************/



sudo apt-get install openssh-server







/**********************************************************安装libvirt***********************************************************/



1.安装依赖的软件包

apt-get install libvirt-bin libvirt-dev libxml2 libxml2-dev gnutls-doc gnutls-bin libneon27-gnutls libcurl4-gnutls-dev libnl-dev python-dev



从网上下载YAJL(yajl_1.0.8.orig.tar.gz)

解压后进入该目录下,先安装C++/C编译器,

sudo apt-get install g++

然后继续执行一下命令:

sudo apt-get install build-essential

然后执行:

sudo apt-get install cmake ruby

最后执行:

(1)./configure

(2)make

(3)make install



从网上下载device-mapper.1.02.28.tgz,然后解压缩tar -zxvf device-mapper.1.02.28.tgz,

进入解压后的文件夹中:cd device-mapper.1.02.28。安装device-mapper。

   (1) ./configure

    (2) sudo make

    (3) sudo make install





以上安装各个依赖包的作用:

libxml2 libxml2-dev解决:出现checking libxml2 xml2-config >= 2.6.0..

gnutls-doc gnutls-bin libneon27-gnutls libcurl4-gnutls-dev解决:configrue: error: you must install the gnutls library in order to compile and run libvirt

YAJL解决:configure: error: You must install the YAJL development package in order to compile libvirt

device-mapper解决:缺少device-mapper-devel

python-dev解决:You must install python-devel to build Python bindings

libnl-dev解决:configure: error: libnl-devel >= 1.1 is required for macvtap support







2.安装libvirt

cd进入libvirt文件夹

(1)./configure

(2)make

(3)make install

如果没有什么错误提示即安装成功





安装libvirt后出现的问题及解决办法

(1)解决

virsh: /usr/lib/libvirt.so.0: version `LIBVIRT_0.9.11' not found (required by virsh)

virsh: /usr/lib/libvirt.so.0: version `LIBVIRT_0.9.9' not found (required by virsh)

virsh: /usr/lib/libvirt.so.0: version `LIBVIRT_0.9.10' not found (required by virsh)

virsh: /usr/lib/libvirt.so.0: version `LIBVIRT_0.9.13' not found (required by virsh)

virsh: /usr/lib/libvirt.so.0: version `LIBVIRT_PRIVATE_0.9.13' not found (required by virsh)

    第一种:

    定义shell变量 LD_LIBRARY_PATH

    $ LD_LIBRARY_PATH=/usr/local/lib

    $ export LD_LIBRARY_PATH

    $ ./example

    第二种:

    修改系统动态链接库配置文件

    (the system dynamic linker configuration)

    进入目录/etc/ld.so.conf.d

    添加一个文件libvirt.conf,内容是:

    # libvirt default configuration

    /usr/local/lib

    更新动态链接库缓存

    sudo ldconfig

(2)解决failed to connect socket to '/usr/local/var/run/libvirt/libvirt-sock':no such file or directory

    添加libvirt用户组

    sudo groupadd libvirt

    添加当前用户到libvirt组里

    sudo gpasswd -aroot libvirt

    记得要重启,才能有用
    或者做个链接:

    ln -s /var/run/libvirt/libvirt-sock /usr/local/var/run/libvirt/libvirt-sock

    如果有 libvirt: Remote error : unable to connect to '/usr/local/var/run/libvirt/libvirt-sock-ro': No such file or directory”

    再做个链接

    ln -s /var/run/libvirt/libvirt-sock-ro /usr/local/var/run/libvirt/libvirt-sock-ro



(3) error: ebiptablesDriverInit:4129 : essential tools to support ip(6) tables firewalls could not be located

    编辑文件/usr/local/etc/libvirt/libvirtd.conf



    取消一下几项的注释

    unix_sock_group = "libvirt"

    unix_sock_ro_perms = "0777"

    unix_sock_rw_perms = "0770"

    unix_sock_dir = "/var/run/libvirt"修改为

    unix_sock_dir = "/usr/local/var/run/libvirt"

    auth_unix_ro = "none"

    auth_unix_rw = "none"

最后:如果要启动自动运行libvirtd

    编辑文件/etc/rc.local

    在exit 0之前添加

    sudo libvirtd &



(4)解决打开vir-manager时的错误

创建时因为相关资源路径问题可能会报以下错误

6.1******/usr/lib/xen/bin/qemu-dm:****

路径中xen应该是xen-4.1,解决办法如下

mkdir /usr/lib/xen -p

cp /usr/lib/xen-4.1/* -r /usr/lib/xen/

6.2****** libvirtError: POST操作失败: xend_post:来自 xen 守护进程的错误:****

查看日志 /var/log/xen/xend.log 和 /var/log/xen/qemu-dm-demo.log

日志显示/usr/share/qemu/keymaps/en-us could not be found, the keymaps ***

路径中qemu应该是qemu-linaro,解决办法如下

cp -r /usr/share/qemu-linaro/ /usr/share/qemu

这样创建过程基本没有问题了.







(特别声明,因为我们的项目需要,所以后面两步操作并不是必须的,只是本人为方便以后查资料写的)

/*************************************************************安装nfs******************************************************************/

配置nfs服务器需要安装:

sudo apt-get install nfs-common nfs-kernel-server portmap



nfs客户端只需要安装:

sudo apt-get install nfs-common





可以迁移的格式有:

cow    qed    vmdk vpc



打开/etc/exports文件,在末尾加入:



/nfs *(rw,sync,no_root_squash)



注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定义, 各字段含义如下:



/nfs:要共享的目录



* :允许所有的网段访问



rw :读写权限



sync:资料同步写入内在和硬盘



no_root_squash:nfs客户端共享目录使用者权限



重启服务:



#sudo /etc/init.d/portmap restart <---重启portmap,很重要



#sudo /etc/init.d/nfs-kernel-server restart <---重启nfs服务



#showmount -e <---显示共享出的目录





/******************************************删除vir-manager默认存储池并新建自己的存储池*****************************************/

在virtualmaneger的默认pool存在的情况下在原来的文件夹下新建pool的步骤:

1)导出原来virtualmanager的默认pool配置文件,新建一个default.xml文件,内容为命令导出内容

具体命令:pool-dumpxml default

2)先删除原来的pool:

先不要打开virtualmanager,进入命令行virsh后使用pool-delete命令删除原来virtualmanager建的默认pool(删除的原因是这个默认的pool无法设置为自动启动)

具体命令:pool-delete default

3)新建一个自己的pool

具体命令:pool-define /default.xml    (刚才新建的default.xml文件我放在了/下)

4)设置新建的pool为自动启动:

pool-autostart default

5)重启OK

注:中间出错的话一般是因为有些操作是pool活动状态下才进行的,有些则是在不活动状态下进行的,其他操作请使用help查看
页: [1]
查看完整版本: ubuntu12.04源码安装libvirt0.9.13与xen4.1(与kvm)整体环境配置流程