1 cat /etc/redhat-release
CentOS release 6.4 (Final)
2 egrep ‘vmx|svm’ /proc/cpuinfo
3 yum -y install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v
(依赖包)
4 vi /etc/sysconfig/selinux SELINUX=disabled(参数修改) 重启生效
5 /etc/init.d/libvirtd restart (守护进程是否正常) [确定] [确定]
6 lsmod | grep kvm 检查KVM是否加载成功
7 virsh list --all
Id 名称 状态
----------------------------------------------------
8 kvm --version virt-install --version virsh --version (各版本查询)
9 cat ifcfg-br0 cat ifcfg-eth0
DEVICE=br0 DEVICE=eth0
TYPE=Bridge TYPE=Ethernet
BOOTPROTO=static BRIDGE=br0
IPV6INIT=no BOOTPROTO=none
ONBOOT=yes IPV6INIT=no
IPADDR=192.168.1.66 ONBOOT=yes
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DELAY=0
重启网卡出错-- 1 安装tunctl
yum install -y tunctl
2 禁用网络管理器:
chkconfig NetworkManager off ##和桥接有冲突,要关闭
service NetworkManager stop
10virt-install --name=centos64 --ram 1024 --vcpus=2 --disk path=/var/lib/libvirt/images/centos64.img,size=10 --accelerate --cdrom /mnt/CentOS64.iso --graphics vnc,password=123456,port=5920 --network bridge=br0 --force --autostart (新建虚拟机命令)
通过命令行安装guest虚拟机
[root@target ~]# virt-install \ #安装选项可用virt-install --help查看
--name node4 \ #虚拟机名
--ram=1024 \ #分配内存大小,MB
\ #模拟的CPU 构架
--vcpus=1 \ #配置虚拟机的vcpu 数目
--check-cpu \ #检查确定vcpu是否超过物理 CPU数目,如果超过则发出警告。
--os-type=linux \ #要安装的操作系统类型,例如:'linux'、'unix'、'windows'
--os-variant=rhel5 \ #操作系统版本,如:'Fedora6', 'rhel5', 'solaris10', 'win2k'
--disk path=/virhost/node7.img,device=disk,bus=virtio,size=20,sparse=true \ #虚拟 机所用磁盘或镜像文件,size大小G
--bridge=br0 \ #指定网络,采用透明网桥
--noautoconsole \ #不自动开启控制台
--pxe #网络安装
virsh start node4 #开机
virsh destroy node4 #强制关闭电源
virsh shutdown node4 #关机
virsh list --all #查看虚拟机状态
virsh reboot node4 #重启
virt-viewer name 查看安装状态 使用virt-install 工具安装虚拟机后,在目录/etc/libvirt/qemu/下生成xml 配置文件 cd /etc/libvirt/qemu cat centos64.xml
<domain type='kvm'> 虚拟机类型 <name>centos</name> 虚拟机名称 <uuid>54da30ed-150d-514e-9803-4dc01bd50488</uuid> uuid唯一标示 <memory unit='KiB'>1048576</memory> 指定虚拟机内存大小,给出了单位 <vcpu placement='static'>2</vcpu> 虚拟机占用虚拟cpu个数,这里指物理cpu的核心数量 <os> <type arch='x86_64' machine='rhel6.3.0'>hvm</type> 指定虚拟系统架构 <boot dev='hd'/> 启动类型,从硬盘启动 </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> 驱动程序,同上,使用的是qemu-kvm <disk type='file' device='disk'> 指定磁盘类型 <driver name='qemu' type='raw' cache='none'/> 指定磁盘格式,这里是raw,也支持qcow2. <source file='/home/vms/centos.img'/> img文件路径 <target dev='hda' bus='ide'/> 磁盘文件标示,驱动类型 <address type='drive' controller='0' bus='0' target='0' unit='0'/> <interface type='bridge'> <mac address='52:54:00:11:57:e6'/> 自动生成,可以手动指定。 <source bridge='br0'/> 桥接到哪一个接口 </interface> </devices> </domain>
其他问题 1、图形化配置:从菜单中启动,或者运行virt-manager进入图形管理界面,比较简单,不过img的位置需要注意一下,kvm安装后会有一个默认位置,不注意的话容易占满空间。或者直接硬盘分区时单独给/var分一个区。 2、虚拟机重新配置: 虚拟机的配置文件保存在/etc/libvirt/qemu目录下,扩展名是xml。修改相应的文件即可重新配置虚拟机。 3、虚拟机备份及恢复: 备份:拷贝/etc/libvirt/qemu目录下的xml配置文件,以及xml中设置的img文件。 恢复:进入virsh,执行define 目录下的xml文件路径 virsh # define /etc/libvirt/qemu/winxp.xml 4、开机自动启动虚拟机: [root@vfeelit qemu]# virsh autostart Winxp 5、克隆KVM虚拟机: [root@vfeelit ~]# virt-clone -o Winxp -n winxpclong -f /var/lib/libvirt/images/winxpclong.img (-o 原始客体的名称,-n新客户端的名称,-f作为新客户端磁盘映像的新文件) 克隆后虚拟机,网卡起不来,删除/etc/udev/rules.d/70-persistent-net.rules,重启 6、虚拟机意外关机报下述错误: [root@vfeelit qemu]# virsh start winxp 错误:开始域 winxp 失败 错误:Unable to read from monitor: Connection reset by peer 解决方法:virsh managedsave-remove winxp
Virsh语法参考: Autostart 自动开始一个域 Create 从一个 XML 文件创建一个域 Define 从一个 XML 文件定义(但不开始)一个域 edit 编辑某个域的 XML 配置 shutdown 关闭一个域 start 开始一个(以前定义的)非活跃的域 reboot 重新启动一个域 suspend 挂起一个域 resume 重新恢复一个域 vncdisplay vnc 显示
使用save来备份当前虚拟机的状态: [root@vfeelit images]# virsh save –bypass-cache RedHat /var/lib/libvirt/images/test.img –running 上面这个命令将RedHat的当前状态保存到/opt/vm2_save文件中。–running参数表示下次restore回来的时候能够自动启动RedHat。 这个命令会导致RedHat被关闭。
现在还原:必须先关闭虚拟机 [root@vfeelit images]# virsh shutdown RedHat [root@vfeelit images]# 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 rel="nofollow" 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 rel="nofollow" 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 rel="nofollow" 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在目标主机上看是否迁移成功 虽然启动了 但是还没配置文件 将配置文件从宿主机拷贝过来 路径一致