===============================================================================
 
安装依赖和相关组件
 
yum -y install wget curl nc vim kvm virt-*  libvirt  bridge-utils qemu-img qemu-kvm qemu-img virt-manager libvirt libvirt-python python-virtinst libvirt-client gcc autoconf automake libtool glib* zlib* acpid
 
===============================================================================
 
 
 
===============================================================================
 
安装命令 
 (centos  
 网络镜像 
 )
 
virt-install \
 
--name test1_service \
 
--ram 4096 \
 
--vcpus 2 \
 
--file /home/kvm/centos_192.168.1.56_contes7.img \
 
--file-size 30 \
 
--network bridge:br0 \
 
--network bridge:br1 \
 
--os-variant rhel6 -l 
 https://mirrors.aliyun.com/centos/6.9/ 
 \
 
--extra-args 'ip=192.168.1.56 netmask=255.255.254.0 dns=114.114.114.114 gateway=192.168.1.254 console=ttyS0,115200n8'
 
 
 
 
 
注 
 :  
 如删除重名镜像名需要将镜像 
 ( 
 centos_test1.img) 
 一并删除 
 , 
 否则磁盘大小会追加 
 , 
 定空会导致磁盘为空 
 .
 
     
 可以使用 
 ks 
 文件 
 , 
 注意设置静态 
 IP  
 依据不同的网络环境进行更改 
 , 
 或直接使用命令指定已知的可以使用的 
 IP.
 
===============================================================================
 
安装命令 
 (centos  
 本地镜像 
 )
 
virt-install \
 
--name centos7 \
 
--ram 4096 \
 
--vcpus 2 \
 
--file /home/kvm/centos_7.qcow2 \
 
--file-size=30 \
 
--network bridge:br0 \
 
--location=/home/ios/CentOS-7-x86_64-Minimal-1611.iso \
 
--extra-args 'ip=192.168.1.63 netmask=255.255.254.0 dns=114.114.114.114 gateway=192.168.1.254 console=ttyS0,115200n8'
 
===============================================================================
 
 
 
 
===============================================================================
 
创建快照
 
1.qemu-img info  
 centos_test1.img  
 (查询镜像信息)
 
 
 
 
 
 
 
 
注 
 :   
 kvm虚拟机的raw格式磁盘文件不支持快照功能,在创建快照前需要先转换为qcow或qcow2格式。
 
2.qemu-img snapshot -c  
 init01 centos_test1.qcow2 
  (创建快照)
 
 
 
3.qemu-img snapshot -l  
 centos_test1.img 
  (列出所有快照)
 
 
 
 
 
 
4.qemu-img snapshot -a  
 init01 
  centos_test1.qcow2 (使用快照)
 
===============================================================================
 
 
 
===============================================================================
 
virsh dumpxml centos_6801 >centos_6801_0.xml
 
磁盘类型转换
 
VMDK–>qcow2
 
· qemu-img convert -f vmdk -O qcow2 SLES11SP1-single.vmdk SLES11SP1-single.img
 
qcow2–>raw
 
· qemu-img convert -O qcow2 image-raw.raw image-raw-converted.qcow
 
raw–>qcow2
 
· qemu-img convert -f raw -O qcow2 2fuel2.img  2fuel2.qcow2     
 
virsh edit test1_service  
 查找到  
 <source file='/home/kvm/centos_test1.img'/>
 
                     
 更改为 
  <source file='/home/kvm/centos_test1.qcow2'/>
 
注 
 :     
 转换出 
 qcow2 
 格式的权限需要与源格式一致
 
virsh dumpxml  
 域名  
 > /etc/libvirt/qemu/ 
 域名 
 .xml
 
uuidgen  
 域名 
 .img
 
更改 
  xml  uuid  
 和 
 disk 
 中的  
 type  
 和 
 source. 
 
===============================================================================
 
 
 
 
 
 
 
 
 
 
 
其他帮助
 
===============================================================================
 
qcow2 
 
brctl show   
 查看网桥
 
virsh list --all  
 查看所有虚拟机
 
virsh destroy   
 虚拟机名称 
  ( 
 强制中断虚拟机 
 )
 
virsh undefine  
 虚拟机名称 
  ( 
 从域中删除虚拟机 
 )
 
virt-install --os-variant list   
 查看支持虚拟的系统
 
/etc/libvirt/qemu/   
 虚拟机配置文件
 
  
 备份:拷贝 
 /etc/libvirt/qemu 
 目录下的 
 xml 
 配置文件,以及 
 xml 
 中设置的 
 img 
 文件。
 
  
 恢复:进入 
 virsh 
 ,执行 
 define  
 目录下的 
 xml 
 文件路径
 
       virsh # define /etc/libvirt/qemu/winxp.xml
 
virsh autostart  
 虚拟机名称     
 ( 
 开机自启虚拟机 
 )
 
克隆 
 KVM 
 虚拟机:
 
virt-clone -o Winxp -n winxpclong -f /var/lib/libvirt/images/winxpclong.img
 
  
 ( 
 -o  
 原始客体的名称, 
 -n 
 新客户端的名称, 
 -f 
 作为新客户端磁盘映像的新文件)
 
virsh managedsave-remove winxp 
 
 
 
Virsh 
 语法参考: 
  
 
Autostart                         
 自动开始一个域
 
 Create                             
 从一个 
  XML  
 文件创建一个域
 
 Define                             
 从一个 
  XML  
 文件定义(但不开始)一个域
 
 edit                                
 编辑某个域的 
  XML  
 配置
 
 shutdown                      
 关闭一个域
 
 start                               
 开始一个(以前定义的)非活跃的域
 
 reboot                             
 重新启动一个域
 
 suspend                          
 挂起一个域
 
 resume                            
 重新恢复一个域
 
 vncdisplay                      vnc  
 显示
 
 
 
===============================================================================
 
使用 
 save 
 备份当前虚拟机状态
 
 virsh save -bypass-cache RedHat /var/lib/libvirt/images/test.img -running
 
  
 上面这个命令将 
 RedHat 
 的当前状态保存到 
 /opt/vm2_save 
 文件中。 
 -running 
 参数表示下次 
 restore 
 回来的时候能够自动启动 
 RedHat 
 。
 
  
 这个命令会导致 
 RedHat 
 被关闭。
 
 
 
现在还原:必须先关闭虚拟机
 
virsh shutdown RedHat
 
 virsh restore /var/lib/libvirt/images/test.img -bypass-cache -running  
 (还原时不要指定虚拟机名称
 
===============================================================================
 
 
 
 
 
===============================================================================
 
virsh console ccc( 
 虚拟机名 
 )   
 远程管理虚拟机 
 :需修改虚拟机下面文件(非宿主机),重启生效
 
1 
 、修改 
  /etc/securetty  
 到最后添加 
  ttyS0  
 
echo ttyS0 >> /etc/securetty
 
2 
 、修改 
 /etc/inittab  
 到最后添加 
  S0:12345:respawn:/sbin/agetty/ ttyS0 115200
 
echo "S0:12345:respawn:/sbin/agetty/ ttyS0 115200" >> /etc/inittab
 
3 
 、修改 
 /etc/grub.conf  
 ,如下图所示在 
  kernel  
 这一行的末尾,添加 
 console=ttyS0 
 (无需换行添加)
 
===============================================================================
 
 
 
===============================================================================
 
为虚拟机 
 增加磁盘空间
 
增加磁盘的格式为 
 sda/vda  
 
生成一块新的硬盘
 
qemu-img create -f raw /data/kvm/diskone.img 10G 
 
将磁盘附加到虚拟机上
 
virsh attach-disk test 
 (虚拟机名) 
  /data/kvm/diskone.img 
 (硬盘路径) 
  vdb 
 (硬盘名)
 
一:添加硬盘
 
方法 
 1
 
直接修改虚拟机的 
 XML 
 文件,这种方式虚拟机要重新 
 virhs start/create  
 才可以生效,具体略。
 
方法 
 2
 
用 
 attach-disk  
 命令添加
 
要添加的 
 LV 
 卷 
 /dev/vg01/lv_add01 
 
[ 
 root@KVM 
   ~]#virsh attach-disk kvm_ipvs01 /dev/vg01/lv_add01 vdc 
 
即时生效,但是虚拟机配置文件不会添加,重启后就没了,如果要将运行状态保存至 
 XML 
 文件中,可以用 
 dumpxml 
 命令,用之前最好将 
 XML 
 做个备份。
 
[ 
 root@KVM 
   ~]#virsh dumpxml kvm_ipvs01  >kvm_ipvs01.xml 
 
ISO 
 以磁盘方式添加
 
[ 
 root@KVM 
  qemu]# virsh attach-disk KVM_ipvs01 /root/tasks/win2003.iso vdd
 
Disk attached successfully
 
即时生效,成功后到 
 ipvs01 
 中查看
 
[ 
 root@KVM_ipvs01 
  ~]# mount /dev/vdd /mnt/
 
[ 
 root@KVM_ipvs01 
  ~]# cd /mnt/
 
[ 
 root@KVM_ipvs01 
  mnt]# ll
 
total 3520
 
-r-xr-xr-x 1 root root     112 Mar  7  2007 <a class="bdcs-inlinelink" href=" 
 http://so.21ops.com/cse/search?s=9181936462520079739&entry=1&q=autorun.inf 
 " target="_blank">autorun.inf</a>
 
-r-xr-xr-x 1 root root  322730 Mar  7  2007 <a class="bdcs-inlinelink" href=" 
 http://so.21ops.com/cse/search?s=9181936462520079739&entry=1&q=bootfont.bin 
 " target="_blank">bootfont.bin</a>
 
dr-xr-xr-x 1 root root  267478 Mar  7  2007 i386
 
dr-xr-xr-x 1 root root     184 Mar  7  2007 printers
 
-r-xr-xr-x 1 root root   18809 Mar  7  2007 read1st.htm
 
-r-xr-xr-x 1 root root   54458 Mar  7  2007 relnotes.htm
 
-r-xr-xr-x 1 root root  372014 Mar  7  2007 setupenterprise.htm
 
-r-xr-xr-x 1 root root 2564096 Mar  7  2007 setup.exe
 
dr-xr-xr-x 1 root root     142 Mar  7  2007 suppor
 
-r-xr-xr-x 1 root root      10 Mar  7  2007 win51
 
-r-xr-xr-x 1 root root      10 Mar  7  2007 win51ia
 
-r-xr-xr-x 1 root root      10 Mar  7  2007 win51ia.sp2 
 
===============================================================================
 
 
 
===============================================================================
 
添加网卡
 
 
 
方法 
 1 
 ,修改配置文件,略
 
 
 
方法 
 2 
 ,
 
[ 
 root@KVM 
   ~]#virsh attach-interface SNKVM_ipvs01 --type bridge --source br1
 
[ 
 root@KVM 
   ~]#virsh domiflist SN349_ipvs01   
 查看 
 vnet6 
 为新增的网卡
 
Interface  Type       Source     Model       MAC
 
-------------------------------------------------------
 
vnet2      bridge     br2        virtio      52:54:00:06:88:f4
 
vnet6      bridge     br1        -           52:54:00:8d:de:df 
 
命令修改即时生效,但不会改动虚拟机 
 XML 
 文件,用下面命令更新至 
 xml
 
[ 
 root@KVM 
   ~]#virsh dumpxml kvm_ipvs01 >kvm_ipvs01.xml
 
进入虚拟机修改网络配置文件,无需重启
 
[ 
 root@ipvs01 
  network-scripts]# cp -a ifcfg-eth0 ifcfg-eth1
 
[ 
 root@ipvs01 
  network-scripts]# vi ifcfg-eth1
 
DEVICE="eth1" # 
 改为 
 eth1
 
BOOTPROTO="static"
 
#HWADDR="52:54:00:06:88:F4" #mac 
 注释掉或者改为上面 
 list 
 中的值
 
IPADDR="10.10.0.90"  # 
 修改 
 IP
 
IPV6INIT="yes"
 
MTU="1500"
 
NETMASK="255.255.255.0"
 
NM_CONTROLLED="yes"
 
ONBOOT="yes"
 
TYPE="Ethernet"
 
#<a class="bdcs-inlinelink" href=" 
 http://so.21ops.com/cse/search?s=9181936462520079739&entry=1&q=UUID 
 " target="_blank">UUID</a>="e5b102fb-1fdf-410b-8b59-5fef69b39df9"  # 
 注释掉 
 UUID
 
重启后网卡 
 2 
 生效
 
[ 
 root@KVM_ipvs01 
  network-scripts]# /etc/init.d/network restart
 
Shutting down interface eth0:                               [  OK  ]
 
Shutting down loopback interface:                       [  OK  ]
 
Bringing up loopback interface:                  [  OK  ]
 
Bringing up interface eth0:                       [  OK  ]
 
Bringing up interface eth1:                       [  OK  ] 
 
 
 
===============================================================================
 
 
 
 
 
===============================================================================
 
KVM 
 动态迁移
 
1 
 迁移的主机处于开机状态
 
Virsh list -all
 
2  
 在源宿主机上开启 
 nfs 
 服务(也可在加一台 
 nfs 
 服务器)
 
/etc/init.d/nfs restart
 
3 
 修改源宿主机 
 /etc/export    
 加入 
 /var/lib/libvirt/images  *(insecure,rw,sync,no_root_squash)
 
重启 
 nfs   /etc/init.d/nfs restart
 
3  
 目标宿主机操作:(挂载命令)
 
mount -t nfs 10.0.6.26 
 (源宿主机) 
 :/var/lib/libvirt/images /var/lib/libvirt/images/
 
4 
 在源宿主机上执行迁移命令
 
virsh migrate --live node2 qemu+ 
 ssh://10.0.6.34/system
 
出现错误
 
Cannot get interface MTU on 'br0': No such device
 
解决方法
 
在目标主机上配置 
 br0
 
出现错误 
 Unable to resolve address 'syxtest' service '49152': Name or service not known
 
解决方法
 
Vim /etc/hosts
 
10.0.6.34 
 (目标宿主机) 
  syxtest 
 (目标宿主机名) 
  
 
5 
 在目标主机上看是否迁移成功
 
虽然启动了 
   
 但是还没配置文件
 
将配置文件从宿主机拷贝过来 
   
 路径一致
 
===============================================================================