首页 > 代码库 > xen实现虚拟化(二)

xen实现虚拟化(二)

本文将介绍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管理界面

  wKioL1OBT7-xMc5tAAEAg6UlZdU824.jpg

  点击新建

  wKiom1OBULmTwNiDAAFhvX11zmU018.jpg

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

  wKioL1OBURPyrJKnAAGfe5UO_OQ407.jpg


  继续安装操作系统

  

  

wKioL1OBUZXzs8wuAAIKC4cMAU0711.jpg

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

 wKiom1OBUl2Sn5tYAAEXXn1SRSU384.jpg 

 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...

     wKiom1OBVRPQ3VexAAKfHkeWJ1o971.jpg


wKioL1OBVPfCGBZJAADCUZy27zw185.jpg


wKiom1OBVTCiNaWOAACx2SXqe4k637.jpg

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


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

wKioL1OBVhPBOcZpAAE89f7lC9c627.jpg


wKioL1OBVnGg4_dpAAI39gk1q2c354.jpg

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


三、磁盘热插拔


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

    

    # cd  /etc/xen 
    # create -c centos6 
    
    查看当前系统磁盘


     wKioL1OBV02y2WnYAAKY5RaeA8c801.jpg

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

   wKioL1OBWCeBLLcTAADZFZjOjNc106.jpg

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

   wKiom1OBWLPx1OUhAAPd6K02Kiw887.jpg

 在机器运行的情况下,我么恩已经将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

  虚拟机上查看磁盘情况

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


四、网卡热插拔

   1、连入虚拟机控制台

    

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

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

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

    wKioL1OBWcPClR5DAACyt_aD9rI560.jpg

     虚拟机系统查看网卡情况

     

      wKiom1OBWj-wtBkaAARh6Vz_lY8848.jpg


3、拆除网卡

  

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

   wKioL1OBWobBGMcJAACFlc03G9A787.jpg

   查看网卡情况

 

 wKioL1OBWsijXpicAAL5uzy3l6Y382.jpg  网卡eth1已经拆除


五、xm top工具的使用

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

   wKioL1OBWy_g7Pm5AADuz0VVM78571.jpg

六、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测试

  wKiom1OBYYHyhn5lAANUaxJYeXk494.jpg


  数据迁移

  

 # 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地址

   wKiom1OBYl_iISplAAH4xdgi53Y432.jpg

  而此时的客户端ping情况

  wKiom1OBYqWDSMYvAAOmhYU9QwM280.jpg

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



PS:数据迁移的配置过程中,我们使用了nfs共享,同时我们也可以使用iscsi磁盘共享存储,当然高可用文件系统为最佳选择!

本文出自 “西风瘦猪” 博客,请务必保留此出处http://jungege.blog.51cto.com/4102814/1416812