本文将介绍virt-manager、virt-install等工具在xen的半虚拟化平台上安装虚拟机,及xen的一些高级应用


一、virt-manager安装Guest虚拟机


# yum  -y install virt-manager libvirt virt-viewer 
  注意:我使用的为centos官方提供的libvirt,版本为:0.10.2.8
# service xend  start
# service libvirtd start
# virt-manager &    打开virt-manager管理界面


xen实现虚拟化(二)_实现


点击新建


xen实现虚拟化(二)_虚拟_02


想要使用上图中的本地安装介质安装,需要确保能够实现硬件辅助的全虚拟化,如下图所示


xen实现虚拟化(二)_xen_03


继续安装操作系统


xen实现虚拟化(二)_xen_04


等待系统安装完毕,一个虚拟机的操作系统安装实现,接下来我们返回控制台


xen实现虚拟化(二)_虚拟_05


 virt-manager控制台,不单单可以新建虚拟机并安装系统,同时提供了对虚拟机的多种管理操作

 我们可以在该界面对虚拟机实现轻松的配置与管理


二、virt-install 安装Guest虚拟机


    virt-install属于纯命令行工具,上述的virt-manager的图形界面安装也是调用了virt-install


    默认安装了virt-manager就会安装上virt-install工具


   1、安装程序包

   

#yum  -y install virt-install virt-viewer


   2、设置磁盘镜像文件

   

# mkdir -pv  /xen/vm4 
# qemu-img create -f qcow2 -o size=12G,preallocation=metadata /xen/vm4/centos6.qcow2


   3、安装Guest虚拟机

   

#  virt-install -n "centos6.4" -r 512 --vcpus=2 -l http://172.16.0.1/cobbler/ks_mirror/rhel-6.4-i386/  --disk path=/xen/vm4/centos6.qcow2 --network bridge=br0 --force 
       
      virt-install命令解析:
      -n NAME, --name=NAME    //虚拟机的名称
      -r MEMORY, --ram=MEMORY  //虚拟机的内存
      --vcpus=VCPUS       //cpu的个数,格式如下
                        --vcpus 5
                        --vcpus 5,maxcpus=10
                        --vcpus sockets=2,cores=4,threads=2
      -c CDROM, --cdrom=CDROM   //通过光驱安装
      -l LOCATION, --location=LOCATION  //通过网路安装
      --pxe               //通过pxe安装,只能在全虚拟化时使用
      --os-type=DISTRO_TYPE   //发行版类型
      --os-variant=DISTRO_VARIANT   //发行版本,如“rhel6”“windows2003”等
      --disk=DISKOPTS    //磁盘映像,格式如下.
                        --disk path=/my/existing/disk
                        --disk path=/my/new/disk,size=5 (in gigabytes)
                        --disk vol=poolname:volname,device=cdrom,bus=scsi,...
      -w NETWORK, --network=NETWORK //网络类型,格式如下
                        --network bridge=mybr0
                        --network network=my_libvirt_virtual_net
                        --network network=mynet,model=virtio,mac=00:11...


xen实现虚拟化(二)_xen_06


xen实现虚拟化(二)_虚拟_07


xen实现虚拟化(二)_虚拟_08


待系统安装完毕后,登录虚拟机系统


xen实现虚拟化(二)_实现_09


此时我们可以通过ssh连接虚拟机进行管理


xen实现虚拟化(二)_实现_10


xen实现虚拟化(二)_xen_11


我们同时也可以在virt-manager控制台进行管理,不再重述



三、磁盘热插拔


1、连接入虚拟机管理后台

    # cd  /etc/xen 
    # create -c centos6

     

    查看当前系统磁盘


xen实现虚拟化(二)_实现_12


2、再次创建一个磁盘镜像文件


  # cd  /xen/vm1
  # qemu-img create -f qcow2 -o size=2G test.qcow2


3、使用xm block-attach在特定域名的虚拟机上热插一块磁盘

  # xm  block-attach centos6  xvdb w
   
  # xm block-list centos6


xen实现虚拟化(二)_虚拟_13


在运行的虚拟机上查看磁盘情况


xen实现虚拟化(二)_实现_14


在机器运行的情况下,我么恩已经将xvdb这块磁盘添加上去了


4、拆除磁盘使用block-detach

 # xm block-list centos6
     Vdev  BE handle state evt-ch ring-ref BE-path
     51712  0    0     4      13     8     /local/domain/0/backend/vbd/11/51712  
     51728  0    0     4      15     872   /local/domain/0/backend/vbd/11/51728 
 # xm block-detach centos6 51728 (51728是设备ID号)
 # xm block-list centos6
     51712  0    0     4      13     8     /local/domain/0/backend/vbd/11/51712


虚拟机上查看磁盘情况


xen实现虚拟化(二)_xen_15


机器运行的情况下已经成功拆除磁盘xvdb


四、网卡热插拔


   1、连入虚拟机控制台


    # cd /etc/xen/
    # create -c centos6


   2、添加一块网卡,在xen hypervisor上操作  


    # xm network-attach 直接可以查看帮助
    # xm network-attach centos6 bridge=br0
    # xm  network-list centos6 查看


xen实现虚拟化(二)_实现_16


虚拟机系统查看网卡情况

xen实现虚拟化(二)_实现_17


3、拆除网卡


  # xm network-detach  centos6 1 (1为网卡ID号,xm network-list即可获得,上图有)
  # xm network-list


xen实现虚拟化(二)_实现_18


  查看网卡情况


xen实现虚拟化(二)_虚拟_19


eth1已经拆除


五、xm top工具的使用


   xm top工具可以动态的侦听当前所有的虚拟机的资源活动状态


xen实现虚拟化(二)_xen_20


六、xm 工具实现虚拟机的状态保留

  1、状态保留


 # xm  list 
  Name                                        ID   Mem VCPUs    State   Time(s)
  Domain-0                                    0  1024     2     r-----   1096.0
   centos6                                      7   512     1     -b----     40.2


# xm save  centos6 /tmp/centos6.save 将当前的虚拟机状态保存
# xm  list
  Name                                        ID   Mem VCPUs     State   Time(s)
  Domain-0                                     0  1024     2     r-----   1096.0


  2、状态恢复


# xm restore  /tmp/cento6.save   -----恢复状态
# xm list
  Name                                        ID   Mem VCPUs    State   Time(s)
  Domain-0                                    0  1024     2     r-----   1096.0
  centos6                                     7   512     1     -b----     40.2


七、数据实时转移


   实验环境

   172.16.13.3 节点

   172.16.13.8 节点

   上述两个节点配置的xen环境相同(xen的版本相同、磁盘镜像文件相同、桥设备配置相同),关于xen的安装配置,虚拟机的创建及操作系统的安装请参考我的一篇关于xen的博客


  1、172.16.13.3服务器配置情况


 # cat /etc/xen/centos6
     #kernel="/root/vmlinuz"    ---注释该行
     #ramdisk="/root/initrd.img" ---注释该行
     bootloader="/usr/bin/pygrub"
     memory=512
     name="centos6"
     disk=['file:/xen/vm1/centos6.qcow2,xvda,w']
     vif=['bridge=br0']
          
 # scp  /etc/xen/centos6 172.16.13.8:/etc/xen/  ---将虚拟机实例配置文件发送给另一台服务器保证两台服务器虚拟机实例相同


 开启nfs共享,将磁盘镜像文件共享


 # vim /etc/exports
  /xen/vm1    192.168.1.0(rw,no_root_squash)
 # service nfs start


查看当前虚拟机运行状态


 # xm  list 
 Name                                        ID   Mem VCPUs      State   Time(s)
 Domain-0                                     0  1024     2     r-----   1054.2
 centos6                                      7   512     1     -b----     35.5


2、172.16.13.8服务器配置

  1)创建磁盘镜像文件目录


 # mkdir -pv  /xen/vm1


  2)创建桥设备,保证两台机器的桥设备相同


 # brctl  addbr br0
 # ifconfig  eth0 0 up 
 # brctl   addif  br0 eth0
 # ifconfig br0 172.16.13.8/16 up 
 # route add default gw 172.16.0.1 
 # brctl stp br0 on


 3)挂载共享文件,保证两台机器的磁盘镜像文件相同


 # mount -t nfs 172.16.13.3:/xen/vm1 /xen/vm1 
 # cd  /xen/vm1 
 # ls 
  centos6.qcow2


 4)修改xen数据迁移的配置文件


 # vim /etc/xen/xend-config.sxp 开启如下四项
  (xend-relocation-server yes)
  (xend-relocation-port 8002)
  (xend-relocation-address '')
  (xend-relocation-hosts-allow '')
 # scp /etc/xen/xend-config.sxp 172.16.13.2:/etc/xen/ 保证两个服务器的配置文件相同


5)查看当前虚拟机实例运行情况


 # xm  list
 Name                                        ID  Mem   VCPUs      State   Time(s)
 Domain-0                                     0  1024     2       r-----   1054.2


 一切准备就绪,接下来我们进行xen的数据迁移


 3、172.16.13.3服务器上的虚拟机实例配置ip地址,并ping探测连通性


 
  # cd /etc/xen
 # xm create -c centos6
  进入虚拟后台更改ip地址
 # ifconfig eth0 172.16.13.100


 客户端ping测试


xen实现虚拟化(二)_实现_21

 

数据迁移


# xm  migrate -l centos6  172.16.13.8 将当前主机虚拟机实例迁移到172.16.13.8服务器上


4、我们去172.16.13.8服务器查看数据迁移情况

   查看运行的虚拟机实例

# xm  list
 Name                                        ID   Mem VCPUs      State   Time(s)
 Domain-0                                     0  1024     2     r-----    969.0
 centos6                                      2   512     1     -b----     13.6   
 虚拟机centos6已经运行,


  查看ip地址


   xen实现虚拟化(二)_xen_22

  

  而此时的客户端ping情况


  xen实现虚拟化(二)_实现_23


  网络连通性良好,一般来讲在数据的迁移过程中会出现1-4个数据包的丢失,并不影响业务的正常运行,因此可以视为xen数据的动态实时迁移