kvm 虚拟机

来源:互联网 发布:紫微排盘详批软件 编辑:程序博客网 时间:2024/05/22 00:26
--虚拟化KVM  (kernel-based virtual machine)xen   kvm    vmware esx          openVZ      Oracle VM VirtualBox   vsphererhel5  xenrhel6  kvm    半(准)虚拟化:        客户机器操作系统内核必须是修改过的,才能使用半虚拟化。        硬件虚拟化技术。        典型代表: Xen     全虚拟化:        必须cpu支持硬件虚拟化。        客户机器不需要修改内核,原则上可以安装任何的操作系统。            Intel # cat /proc/cpuinfo | grep vmx            AMD :  svm        典型代表: kvm , VMware ESXi=====================================================================================红帽官档下载路径docs.redhat.comhttps://access.redhat.com/documentation/en-US/KVM官方安装文档(english)Red_Hat_Enterprise_Linux-6-Virtualization_Host_Configuration_and_Guest_Installation_Guide-en-US.pdf 在宿主机安装kvm1,配置好yum# vim /etc/yum.repos.d/rhel-source.repo[rhel-source]name=rhel6.5baseurl=ftp://10.1.1.9/Serverenabled=1gpgcheck=0# yum groupinstall "Virtualization"# yum groupinstall "Virtualization Client"# yum groupinstall "Virtualization Platform"# yum groupinstall "Virtualization Tools"# service libvirtd restart# chkconfig libvirtd on# cat /proc/cpuinfo |grep -E "vmx|svm"  --查看CPU是否支持intel或AMD的虚拟技术# modprobe kvm# modprobe kvm_intel        --如果不支持vmx指令,则加载不支持# lsmod |grep kvmkvm_intel              52570  0 kvm                   314739  1 kvm_intel开始安装kvm 1,图形安装# virt-manager    --和xen一样的命令,打开虚拟机管理器安装名:kvm1    --名字随意安装方式:      --我这里选择第一个,使用iso直接安装安装路径:/share/soft/rhel-server-6.5-x86_64-dvd.iso --写上iso的路径OS type:  linux          red hat enterprise  linux  6内存大小: 1024M     -- 内存如果较小,安装时无法使用图形安装方式,只能使用文本安装方式cpu个数:2     --不能大于宿主机器的cpu核数硬盘大小: 20 G    --我这里定义20G大小,不马上分配;它的默认路径会在/var/lib/libvirt/images/kvm1.img;也可以自定义路径第五步:网络现在只能选择default  --这是一个nat网络(私有网络),桥接网络不能选,需要后面单独配置后才能选择2,命令行交互式安装[root@li ~]# virt-install --promptWhat is the name of your virtual machine? kvm2How much RAM should be allocated (in megabytes)? 800What would you like to use as the disk (file path)? /var/lib/libvirt/images/kvm2.imgHow large would you like the disk (/var/lib/libvirt/images/kvm2.img) to be (in gigabytes)? 20What is the install CD-ROM/ISO or URL? /share/soft/rhel-server-6.5-x86_64-dvd.iso3,直接使用命令行来安装# virt-install --hvm -n "kvm3" -r 800 --vcpus 2 --os-type="linux" --os-variant="rhel6" --disk path=/var/lib/libvirt/images/kvm3.img,size=20 -l /share/soft/rhel-server-6.5-x86_64-dvd.iso --network bridge=virbr0hvm是指全虚拟化p是指半虚拟化4,使用kc.cfg自动安装# virt-install --vnc --noautoconsole --arch=x86_64 --hvm -n "kvm3" -r 800 --vcpus 2 --os-type="linux" --os-variant="rhel6" --disk path=/var/lib/libvirt/images/kvm3.img,size=20 --location=ftp://10.1.1.9/ --extra-args="ks=nfs:10.1.1.9:/ks/ks.cfg" --network bridge=virbr0 # virt-install --vnc --noautoconsole --arch=x86_64 --hvm -n "kvm3" -r 800 --vcpus 2 --os-type="linux" --os-variant="rhel6" --disk path=/var/lib/libvirt/images/kvm3.img,size=20 --location=ftp://10.1.1.9/ --extra-args="ks=http://10.1.1.9/ks.cfg" --network bridge=virbr0 5,直接使用以前学过的kickstart或cobbler网络安装服务器自动安装==========================================================================主要的管理命令:virsh help  virsh help domainvirsh help networkvirsh help monitor   --因为参数很多,可以用象domain,network,monitor这种关键字,只查看与关键字有关的参数帮助......# virsh  list Id    Name                           State---------------------------------------------------- 1     kvm1                           running# virsh list --all Id    Name                           State---------------------------------------------------- 1     kvm1                           running -     kvm2                           shut off启动,关闭,重启相关基本操作# virsh  start kvm1 --启动一个虚拟机# virsh  shutdown kvm1      --正常在一分钟后关闭一个虚拟机(如果都没有登录进去,则会马上关闭)# virsh  reboot kvm1    --正常重启一个虚拟机,一样会在关闭时要一分钟# virsh  destroy kvm1    --强制关闭一个虚拟机,类似断电,可以瞬间关闭虚拟机     保存,暂停相关基本操作# virsh save kvm1 /etc/libvirt/qemu/kvm1.save     --把kvm1关闭,并把当前状态保存为一个文件   # virsh restore /etc/libvirt/qemu/kvm1.save --通过保存的文件,恢复当时save时的状态# virsh suspend kvm1    --暂停kvm1的状态# virsh resume kvm1 --由暂停切换为继续的状态连接虚拟机(domain)相关操作方法一:# virt-manger 打开管理器,双击你要连接的虚拟机方法二;# virt-viewer  kvm1   --连接一个已经启动的虚拟机,并使用图形查看方法三:# ssh x.x.x.x   --非图形方式就可以连,但需要虚拟机配置好ip方法四:非图形方式也可以使用console连(此方法不需要虚拟机配置ip都可以连),但需要配置授权# virsh console kvm1   --字符连接一个虚拟机,但是现在连接不了;因为需要一个串口的授权才可以;授权做法:1,在kvm1虚拟机里操作vim /boot/grub/grub.conf    kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=f900cbb3-c0cf-440c-94f6-0c208f1da6e0 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0,115200  --在内核参数这里加上console=ttyS0,115200,表示这个串口以115200的波特率可以连接;注意ttyS0里的S一定要大写;如果小写会造成这个虚拟机启动不了,解决方法:a,挽救模式进去修改b,用虚拟化的一个交互编辑工具# yum install libguestfs-tools# virt-edit -a /var/lib/libvirt/images/kvm1.img /boot/grub/grub.conf去修改;同理这个工具也可以用于完全没有图形的宿主机上无法通过virt-viewer或者ssh(因为找不到虚拟机的IP)或者virsh console来连接虚拟机的情况;可以先用virt-edit来修改加上上面的console=ttyS0,115200;再用virsh console去连接--如果上面的virt-edit打不开,可以使用# libguestfs-test-tool来调试错误(我这里以前讲库的时候做了一个小实验,把/lib64/libselinux.so.1改名成了/lib64/libselinux.so.1.bak,然后用软链接链接回来。但在这里就会造成错误。解决方法:mv /lib64/libselinux.so.1.bak /lib64/libselinux.so.1)2,重启kvm1# virsh reboot kvm1   --直接destroy再start,可能无法生效,建议这样重启3,再在宿主机上# virsh console kvm1    --然后回车就可以直接连你本地的这个虚拟机了;虚拟机没有IP一样可以连4,退出的方式exit只是退出登录的用户而已要完全退出这个console连接,需要使用的是ctrl+ ] (也就是右中框号的这个键)======================================================================虚拟机相关的文件:以kvm1为例:配置文件在:/etc/libvirt/qemu/kvm1.xml磁盘文件默认在:/var/lib/libvirt/images/kvm1.img命令删除一个虚拟机的做法(假设为kvm3)virsh destroy kvm3virsh undefine kvm3rm -rf /var/lib/libvirt/images/kvm3.img=====================================================================kvm 的克隆--注意:克隆都需要源虚拟机器是关闭或暂停状态例一:图形克隆1,先关闭kvm1或 virsh suspend kvm1暂停kvm1(使用virsh resume kvm1恢复)2,virt-manager--》右键点kvm1--》选择clone-->修改克隆后的名字或其它参数--》点clone例二:文本克隆1,拷贝配置文件和磁盘文件# cp /etc/libvirt/qemu/kvm1.xml /etc/libvirt/qemu/kvm3.xml# cp /var/lib/libvirt/images/kvm1.img /var/lib/libvirt/images/kvm3.img2,修改拷贝的配置文件# vim /etc/libvirt/qemu/kvm3.xml <domain type='kvm'>  <name>kvm3</name>     --名字改成kvm3  <uuid>811d69e8-b1d8-cfbf-684a-69f2e0af6b88</uuid> --uuid随便改几个数字  <memory unit='KiB'>1048576</memory>  <currentMemory unit='KiB'>1048576</currentMemory>  <vcpu placement='static'>2</vcpu>  <os>    <type arch='x86_64' machine='rhel6.5.0'>hvm</type>    <boot dev='hd'/>  </os>  <features>    <acpi/>    <apic/>    <pae/>  </features>  <clock offset='utc'/>  <on_poweroff>destroy</on_poweroff>  <on_reboot>restart</on_reboot>  <on_crash>restart</on_crash>  <devices>    <emulator>/usr/libexec/qemu-kvm</emulator>    <disk type='file' device='disk'>      <driver name='qemu' type='raw' cache='none'/>      <source file='/var/lib/libvirt/images/kvm3.img'/>   --磁盘路径改成kvm3.img的路径      <target dev='vda' bus='virtio'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>    </disk>    <disk type='block' device='cdrom'>      <driver name='qemu' type='raw'/>      <target dev='hdc' bus='ide'/>      <readonly/>      <address type='drive' controller='0' bus='1' target='0' unit='0'/>    </disk>    <controller type='usb' index='0'>      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>    </controller>    <controller type='ide' index='0'>      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>    </controller>    <interface type='bridge'>      <mac address='52:54:00:5c:3a:2d'/>   --网卡地址随便改下,只改后三位      <source bridge='br0'/>      <model type='virtio'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>    </interface>    <serial type='pty'>      <target port='0'/>    </serial>    <console type='pty'>      <target type='serial' port='0'/>    </console>    <input type='tablet' bus='usb'/>    <input type='mouse' bus='ps2'/>    <graphics type='vnc' port='-1' autoport='yes'/>    <sound model='ich6'>      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>    </sound>    <video>      <model type='cirrus' vram='9216' heads='1'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>    </video>    <memballoon model='virtio'>      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>    </memballoon>  </devices></domain>3,保存后,使用virsh list --all查看不到的,需要define一下# virsh define /etc/libvirt/qemu/kvm3.xml# virsh list --all      --再查就可以查看到kvm3 Id    Name                           State---------------------------------------------------- -     kvm1                           shut off -     kvm1-clone                     shut off -     kvm2                           shut off -     kvm3                           shut off4,再启动# virsh start kvm3   --可以启动克隆的机器了例三:命令克隆# virt-clone -o kvm1 -n kvm4 -f /var/lib/libvirt/images/kvm4.img Allocating kvm4.img  7% [-          ]  34 MB/s | 957 MB     05:29 ETA--把kvm1克隆成kvm4,指定磁盘路径为/var/lib/libvirt/images/kvm4.img;如果kvm1有多个硬盘,那么克隆时也要对应的克隆成多个路径===============================================================================kvm 网络管理# virsh  help network   --只查看与网络有关的帮助参数# virsh net-list --allName                 State      Autostart-----------------------------------------default              active     yes     --这是一个NAT网络,私有网络# virsh net-info defaultName            defaultUUID            704eb1b7-3feb-4a38-8642-9c3fe2f023bbActive:         yesPersistent:     yesAutostart:      yesBridge:         virbr0default网段的配置文件的路径为:/etc/libvirt/qemu/networks/default.xmlvirsh net-destroy default       --停掉default网络,由virsh net-list --all去查看,状态变为inactivevirsh net-start  default        --启动default网络,状态变为active================================================================================例四:图形增加私有网络virt-manager打开图形--》edit --》connections details --》 virtual networks--》点左下角的+号增加一个私有网络(选择名字,网络分配地址范围,dhcp的分配范围)--注意:这里最后一步有三种网络:1,isolated 相当vmware的hostonly,没有NAT,也没有网关(完全和vmware的hostonly类型一样)2,NAT   有网关,有NAT,可以通过宿主上外网(和vmware的NAT类型一样)3,routed 也是相当于hostonly,在isolated的基础上就是加了一个网关(仍然是和vmware的hostonly一致,但多了一个网关)把上面的步骤做完后,直接在宿主机用ifconfig或virsh net-list --all,就可以看到新加的网络了例五:手动加一个私有网络1# cp /etc/libvirt/qemu/networks/default1.xml /etc/libvirt/qemu/networks/default2.xml# vim /etc/libvirt/qemu/networks/default2.xml<network>  <name>default2</name>     --修改名字为default2  <uuid>243166ddb-e2fd-9983-1997-5e8efdc06c42</uuid>  --uuid随便修改一下  <bridge name='virbr2' stp='on' delay='0' />   --virbr1改成virbr2  <mac address='52:54:00:AF:27:25'/>    --MAC地址改一下,只改后面三位  <ip address='192.168.101.1' netmask='255.255.255.0'>  --IP改为101    <dhcp>      <range start='192.168.101.128' end='192.168.101.254' /> --dhcp地址范围也改成101的    </dhcp>  </ip></network>2# virsh net-define /etc/libvirt/qemu/networks/default2.xml    --定义一下,然后你可以使用virsh net-list --all去查看,状态为inactive,autostart的状态为no3# virsh net-start default2    --启动# ifconfig virbr2 |head -2  --查看就有了 virbr2    Link encap:Ethernet  HWaddr 52:54:00:AF:27:25            inet addr:192.168.101.1  Bcast:192.168.101.255  Mask:255.255.255.0# ls /etc/libvirt/qemu/networks/autostart/default1.xml   default.xml4# virsh net-autostart default2  --让他开机自动启动# ls /etc/libvirt/qemu/networks/autostart/  --这里就会多了default2.xml了,其实都是网络配置文件的软链接default1.xml  default2.xml   default.xml刚加的网络配置文件都在下面的目录# ls /etc/libvirt/qemu/networksautostart  default1.xml  default2.xml  default.xml例六:修改一个网络1,# vim /etc/libvirt/qemu/networks/default2.xml <network>  <name>default2</name>  <uuid>243166ddb-e2fd-9982-1996-5e8efdc06c42</uuid>  <forward dev='eth0' mode='route'>    <interface dev='eth0'/>  </forward>  <bridge name='virbr2' stp='on' delay='0' />  <mac address='52:54:00:AF:166:45'/>  <ip address='192.168.102.1' netmask='255.255.255.0'>  --我这里把以前的192.168.101.0的IP范围都改成了192.168.102.0    <dhcp>      <range start='192.168.102.128' end='192.168.102.254' />    </dhcp>  </ip></network>保存后,使用ifconfig virbr1 查看,还是192.168.102.1,没有改变需要做下面三步:2,# virsh net-define /etc/libvirt/qemu/networks/default2.xml  --定义一个网络,使你的修改被他知道Network default2 defined from /etc/libvirt/qemu/networks/default3.xml3,# virsh net-destroy default2  --停一下这个网络Network default2 destroyed4,# virsh net-start default2    --再启这个网络Network default2 startedifconfig virbr2查看,成功修改成192.168.102.1上面的第一步和第二步可以统一成一步来做:# virsh  net-edit default2   --使用这个命令打开,修改,然后就直接net-destroy和net-start,不需要去net-define例七:图形删除一个网络virt-manager打开图形--》edit --》connections details --》 virtual networks--》选择你要删除的网络,然后左下角,先停,再删除就可以了用命令删除一个网络# virsh net-destroy default2    --停掉要删除的网络,用virsh net-list --all命令去查就变成了inactive状态# virsh net-undefine default2  --这下就删除了这个网络定义了,并且物理上的配置文件也没了例8:增加一个桥接网络:把物理网卡eth0桥接到br0(这个名字是自己定义的)在rhel6里有一个networkmanger这个服务,可以图形管理所有的网络链接。但这个服务不支持kvm的桥接,所以要关掉这个服务,或者在eth0的配置文件里加上NM_CONTROLLED="no",让eth0不受networkmanger服务的控制1,在宿主机上创建一个桥接网络# /etc/init.d/NetworkManager stop# chkconfig NetworkManager off# vim /etc/sysconfig/network-scripts/ifcfg-br0  --此文件不存在,br0这个名字是自定义的DEVICE=br0      --名字对应好TYPE=Bridge     --这里的Birdge,B要大写,后面的irdge要小写BOOTPROTO=staticIPADDR=172.16.x.xNETMASK=255.255.0.0GATEWAY=172.16.254.254ONBOOT=yes2,把一个物理网卡加到一个桥接网络里,我这里是把eth0加到br0# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0BRIDGE=br0          --这句就是把eth0桥接到br0NM_CONTROLLED=no        --这句就是让eth0不受networkmanager的控制ONBOOT=YES[root@li ~]# brctl show      --重启网络前的情况bridge name bridge id       STP enabled interfacesvirbr0      8000.5254004e4c3f   yes     virbr0-nicvirbr1      8000.5254004cf4e4   yes     virbr1-nic3,重启网络  /etc/init.d/network restart# brctl show        --重启网络后查看的情况bridge name bridge id       STP enabled interfacesbr0     8000.0030677653f7   no      eth0virbr0      8000.5254004e4c3f   yes     virbr0-nicvirbr1      8000.5254004cf4e4   yes     virbr1-nic有了上面这些网络,如果你再建立虚拟机,就会有多种网络可选在宿主机上ifconfig 查看就会有br0这个网卡,有IP;而eth0网卡也有,但没有IP;这是正常的例九:图形修改一个虚拟机网卡链接virt-manager打开图形,双击你要修改的虚拟机--》点击左上的一个!号按钮show hardware detail-->>找个网卡,修改成你想要改的网络(但这里报需要重启虚拟机才能生效)# virsh shutdown kvm1# virsh start kvm1  --重启后,就改成了你想要的虚拟网络了--问题:可能有些人在图形选择时看不到br0,但是brctl show能查看到,那么你在选择时选择specify shared device name,然后再下面手动在bridge name后写br0例十:文本修改一个虚拟机的网卡连接1# vim /etc/libvirt/qemu/kvm1.xml --直接打开修改2# virsh define /etc/libvirt/qemu/kvm1.xml --vim修改后要define一下# virsh edit kvm1   --或者使用edit命令打开修改,就可以替代前面的1,2步     40     <interface type='bridge'>   --接口类型把network改成bridge     41       <mac address='52:54:00:5c:aa:2c'/>     42       <source bridge='br0'/>        --把原来默认的network改成bridge,把原来的网络default改成br0     43       <model type='virtio'/>     44       <address type='pci' domain='0x0000' bus='0x00' slot='0x03        ' function='0x0'/># virsh shutdown kvm1# virsh start kvm1  --重启后,虚拟机就是桥接网络了--KVM现在修改一个网卡的类型(比如NAT改桥接),需要重启才能生效;但如果你是加网卡或者删网卡,是不需要重启生效的(rhel6.5环境下测试为,图形加或删网卡不用重启,但命令加或删网卡要重启)======================================================================例十一:添加网卡或硬盘virt-manager--》 双击打开kvm1--》点左上角的!号show hardware details --》点左下角add devices 直接添加,并写上相关参数就可以(注意参数,device type都选择virtio,不需要重启虚拟机,可以直接生效,并且磁盘名叫vda,vdb,vdc...;如果你第一次加硬盘选择IDE disk,需要重启,并且磁盘名叫sda,sdb,sdc...)--注意:当虚拟机(非宿主机)为文本模式的情况,在宿主机上用上面的图形模式加的设备,在虚拟机的配置文件里没有加上,需要手动再加上,才可以--用图形方式在线删除磁盘后,还要去物理上把它的磁盘xxx.img文件给rm掉例十二:直接用命令来添加一个硬盘设备1,使用dd命令创建一个磁盘文件# dd if=/dev/zero of=/var/lib/libvirt/images/kvm2-2.img bs=1M count=1 seek=4000000--seek是指跳过多少个BS块,这里就是产生一个4T大小的文件(实际大小只1M)2,编辑虚拟机的配置文件# virsh edit kvm2<devices>与</devices>之间加上下面的一段,也可以把其它磁盘的配置定义拷贝一段进行修改    <disk type='file' device='disk'>      <driver name='qemu' type='raw' cache='none'/>      <source file='/var/lib/libvirt/images/kvm2-2.img'/>  --名字改成kvm1-2.img      <target dev='vdb' bus='virtio'/>  --磁盘名,改成vdb;bus总线如果是ide,那么磁盘名会叫sda(就算dev写hda,在虚拟机里fdisk也是看到sda);virtio这种总线会以vda,vdb...这种形式来命名      <address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>   --slot也改一下,我这里是把0x09改成0x10    </disk>3,重启虚拟机例十三:因为有些人的机器的/var目录空间不够,想把磁盘文件改到其它目录(如/data/kvm/目录)# virsh destroy kvm1  --先停掉kvm1# mv /var/lib/libvirt/images/kvm1.img /data/kvm/# virsh edit kvm1......    <disk type='file' device='disk'>      <driver name='qemu' type='raw' cache='none'/>      <source file='/data/kvm/kvm1.img'/>   --把这个路径改成mv后的新路径      <target dev='vda' bus='virtio'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>    </disk>......# virsh start kvm1=============================================================================kvm 的远程管理例十四:在10.1.1.9上远程图形管理10.1.1.171,先在/etc/hosts里绑定对方(被管理的宿主机器)的主机名2,做ssh等效性# ssh-keygen    --直接三次回车# ssh-add /root/.ssh/id_rsa --加入自己的私钥Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)# ssh-copy-id -i /root/.ssh/id_rsa.pub 10.1.1.17--把自己的公钥scp传给对方3,所有的被管理客户端宿主机,需要启动libvirtd服务4,virt-manager--》file--》add connection--》填上要远程连接的主机IP(或主机名,但要求/etc/hosts绑定)5,连接上去之后,就可以看到有远程的虚拟客户机,双击就可以远程调取他们的图形了--或者用命令的方式去连接# virt-viewer -c qemu+ssh://root@10.1.1.17/system kvm1--表示使用root用户(当然前面你做的ssh等效性需要是root用户)去访问10.1.1.17上叫kvm1的虚拟机==============================================================================迁移:冷迁移:    这个和克隆还是有区别的:克隆是把源虚拟机关闭,那么内存的数据都没了;而迁移是迁过去成功,然后打开后,还保持原来的内存数据热迁移:         10.1.1.9   10.1.1.17               老旧的宿主机  新的宿主机            虚拟机 ---->冷迁移过程:1,虚拟机kvm1是开启状态2,保存当前的运行状态# virsh save kvm1 /etc/libvirt/qemu/kvm1.xml.saveDomain kvm1 saved to /etc/libvirt/qemu/kvm1.xml.save3,scp或者rsync把相关的文件都拷贝到被迁移的宿主机# scp /etc/libvirt/qemu/kvm1.xml.save 10.1.1.17:/etc/libvirt/qemu/# scp /etc/libvirt/qemu/kvm1.xml 10.1.1.17:/etc/libvirt/qemu/# scp /var/lib/libvirt/images/kvm1.img 10.1.1.17:/var/lib/libvirt/images/4,到10.1.1.17(也就是迁移的目标宿主机)上操作# virsh define /etc/libvirt/qemu/kvm1.xml  --define一下,然后就可以用virsh list --all查看到5,# virsh restore /etc/libvirt/qemu/kvm1.xml.save热迁移过程:1,做热迁移需要使用共享存储(也就是说这些虚拟机都安装在宿主机的共享存储设备上);我们这里只能使用nfs来替代            10.1.1.9    10.1.1.17                      \     /                   \       /                         \     /                             storage(SAN)2,在源宿主机器上把虚拟机的磁盘文件路径用nfs导出# vim /etc/exports /var/lib/libvirt/images *(rw,no_root_squash,sync)# /etc/init.d/nfs restart  --rhel6.x已经没有portmap服务了(代替的是rpcbind服务),直接启动nfs服务就可以3,在目标宿主机器上把源共享的目录挂载,保证路径一致(目标宿主机的挂载目录一定要与源宿主机的目录一致)# mount -t nfs -o vers=3 10.1.1.9:/var/lib/libvirt/images/ /var/lib/libvirt/images/4,进行迁移,下面的操作是在源10.1.1.9上的操作(注意检查一下防火墙和selinux要关闭)命令迁# virsh  migrate --live kvm1 qemu+ssh://10.1.1.17/system--(可能会有很多问题:如kvm1有桥接网络,但10.1.1.17那边没有,会报错:或者本地有iso镜像,但对方那里iso路径不一样,会报错;或者kvm1内存较大,10.1.1.17那边没有足够的内存分配,则也会报错等等;双方主机名没有绑定,也有可能报错;还有可能是因为网络的问题,造成一次不成功;毕竟我们是实验环境@_@多试几次看看)图形迁virt-manager --》右键点kvm1-->点迁移--迁移过程中,源虚拟机还是可以继续运行,几乎感觉不到停;迁移完成后,则源会关闭(源已经没有用了),而目标10.1.1.17,就已经无缝接管了源虚拟机的状态了热迁移时,如果报下面的错误libvirtError: internal error Attempt to migrate guest to the same host解决方法:在目标端10.1.1.17上操作# uuidgen   --产生一个新的uuid596b0eb8-3a15-48da-bbba-11e136b7c893# vi /etc/libvirt/libvirtd.conf --此配置文件里加上下面一行,注意id一定要用双引号引起来host_uuid = "596b0eb8-3a15-48da-bbba-11e136b7c893"  # /etc/init.d/libvirtd restart   --重启服务 =======================================================================快照
原创粉丝点击