设为首页 收藏本站
查看: 1106|回复: 0

[经验分享] 虚拟化之kvm

[复制链接]

尚未签到

发表于 2015-4-10 14:39:18 | 显示全部楼层 |阅读模式
  安装软件
  [iyunv@kvm ~]# yum grouplist
  Virtualization
   Virtualization Client
   Virtualization Platform
   Virtualization Tools
  centos6.4-minimal-64bit 默认是200个包
[iyunv@kvm ~]# yum install libvirt python-virtinst qemu-kvm
Transaction Summary
=====================================================================================================================================================
Install      87 Package(s)
Upgrade       4 Package(s)
  Total download size: 36 M
Is this ok [y/N]: y
  [iyunv@kvm ~]# yum install tigervnc-server
Transaction Summary
=====================================================================================================================================================
Install      22 Package(s)
  Total download size: 24 M
Installed size: 70 M
Is this ok [y/N]: y
  
[iyunv@kvm kvm]# yum install virt-viewer
Transaction Summary
=====================================================================================================================================================
Install      24 Package(s)
Upgrade       2 Package(s)
  Total download size: 8.2 M
Is this ok [y/N]:
  [iyunv@kvm ~]# lsmod |grep kvm
kvm_intel              53484  0
kvm                   316506  1 kvm_intel
[iyunv@kvm ~]# vi /etc/selinux/config
改为SELINUX=disabled
[iyunv@kvm ~]# reboot
[iyunv@kvm ~]# getenforce
Disabled
[iyunv@kvm ~]# service iptables stop
[iyunv@kvm ~]# service libvirtd start
Starting libvirtd daemon:
[iyunv@kvm ~]# rpm -ql libvirt
[iyunv@kvm ~]# rpm -ql python-virtinst
virt-install - provision(准备,预备) new virtual machines
  [iyunv@kvm networks]# cat /etc/libvirt/qemu/networks/default.xml
  [iyunv@kvm ~]# vi /etc/libvirt/qemu.conf
  QEMU和KVM的关系
  现在所说的虚拟化,一般都是指在CPU硬件支持基础之上的虚拟化技术。KVM也同hyper-V、Xen一样依赖此项技术。没有CPU硬件虚拟化的支持,KVM是无法工作的。
准确来说,KVM是Linux的一个模块。可以用modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去做事情:
还必须有一个用户空间的工具才行。这个用户空间的工具,开发者选择了已经成型的开源虚拟化软件 QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。
比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。
所以你会看到,官方提供的KVM下载有两大部分三个文件,分别是KVM模块、QEMU工具以及二者的合集。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU的关系。
  网卡桥接
  其实KVM的安装和使用都很方便简单的,大家要理解KVM各个参数的含义。最关键的就是KVM的网络桥接的设置,在这里大家要多看软件自身的文档,会有很大的帮助。
要注意,系统重启后要重新加载kvm内核模块:当然,你也可以修改系统相关设置在启动时自动加载该模块。kvm是不是比VB和VM要爽得多呢?
KVM的默认网络模式为NAT,就是说借助宿主机模式上网,现在我们想改成桥接模式,这样外界就可以直接和宿主机里的虚拟机通讯了。
  [iyunv@localhost ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0
IPADDR=192.168.1.187
NETMASK=255.255.255.0
  在我们安装完成的时候,是没有关于br0网卡的配置文件的,拷贝一下eth0并重命名为br0
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0 br0以下四项
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
TYPE=Bridge
  保存网卡配置重启网卡
[iyunv@localhost ~]#service network restart
检查br0是否成功
[iyunv@localhost ~]#ifconfig
  其实我们在虚拟机搭建的时候,我们最终关心的网卡是: eth0, br0, vnet0,vnet1… 其中,我们的eth0是原来的物理网卡,br0是我们虚拟出来的桥设备,而vnetXXX就是桥接映射到虚拟机里面用到的网
卡。当配置完了之后,我们使用ifconfig,查看起来的话,eth0是没有ip地址的,而br0仿佛是虚拟出来的一个原来eth0的访问接口,它具有ip地址,可以代替原来的eth0被访问,而vnetXX的地址可以在
建立虚拟机之后在虚拟机里面配置,桥接后可以被外部访问。
  [iyunv@kvm ~]# brctl ?
[iyunv@kvm ~]# brctl showmacs br0
[iyunv@kvm ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.4487fc5bf0b0       no              eth0
virbr0          8000.525400a64f66       yes             virbr0-nic
系统默认生成接口主要用于NAT,如果要删除可以先ifconfig virbr0 down接口,然后利用brctl delbr virbr0删除掉
  当然,有的时候我们在虚拟机里可能不仅仅使用一块网卡,但是在新增网卡的时候会有无法识别的情况,我们如何应对呢,下面记录一种方法,也许可以帮助我们解决问题哦。
[iyunv@localhost ~]#vi /etc/udev/rules.d/70-persistent-net.rules
  # PCI device 0x10ec:0x8168 (r8169) 这个是新增网卡
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="c8:61:00:4F:CD:76", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x10ec:0x8169 (r8169)  这个是旧的网卡
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:23:56:9A:E8:5C", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
  将旧的eth0的配置信息删掉,然后将新增的eth1改成eth0,然后进入/etc/sysconfig/network-script/  修改ifcfg-eth0的配置文件,更改mac地址(改成新增网卡的),然后重启网络或者重启系统配置既可以生效。
  虚拟机连接与查看  不知道虚拟机安装时如何去连接,win7安装vnc客户端去连接host创建的guest,但却一闪而过,是不是host上一定要装桌面环境才能去连接查看
  
  连接kvm虚拟机的几种方法,以下是guest系统已安装好,然后连接的方法
我现在知道的有3中方法:
1,ssh:如果虚拟机网络没有配置好就只能用下面两种方法。
2,vnc:可以使用virt-viewer,或者vncviewer命令,但是virt-viewer我遇到了报错,最终没有解决。
Unable to connect to the graphic server localhost:5900
3,通过serial console连接。以下是在guest里所做的
http://nixcraft.com/kernel-based-virtual-machine/15075-kvm-virsh-redirect-centos-redhat-console-serial-port.html
1)echo “ttyS0″ >> /etc/securetty
2)编辑/boot/grub/grub.conf文件在kernel的末尾添加如下:
console=ttyS0
3)编辑 /etc/inittab文件在末尾添加:
S0:12345:respawn:/sbin/agetty ttyS0 115200
4)重启kvm虚拟机,然后在host主机上面依次执行下面命令:
desktop # virsh --connect qemu:///system
virsh # console centos
5)回车输入用户名密码登陆即可。
  
  默认情况下,QEMU会启动一个VNC server端口(如上面的::1:5900),可以用vncviwer工具来连接到QEMU的VNC端口查看客户机。
这里可以使用“vncviewer :5900”命令连接到QEMU启动的窗口
  步骤
  kvm支持的镜像很多,常用的是原始镜像(*.img),还有支持动态大小扩张的qocw2格式(首选)。
更优的选择是系统盘如C盘用img格式,数据盘用qcow2格式以减少服务器磁盘闲置空间。
qemu-img create -f raw test.img 10G
创建qcow2镜像,但是其实际占有磁盘大小仅为193K左右,而虚拟机内部显示磁盘大小为10G,也就是磁盘空间使用时才分配,即所谓动态扩张。
qemu-img create -f qcow2 ubuntu.qcow2 10G
  要在一台host上跑起一个虚拟机一般需要三个步骤:
第一步:创建虚拟机镜像
qemu-img create -f raw /images/vm1.raw 8G
qmeu-img创建的镜像是一个稀疏文件,也就是说刚创建出来的文件并没有8G,它会随着数据的增多慢慢增加,直到8G
第二步:创建guest系统(以下三种方式)
第三步:管理guest系统(启动,关闭等操作)
  虚拟机创建
  http://www.open-open.com/lib/view/open1346511443506.html 讲的比较详细
对于用户或者管理员来说,虚拟机的创建有着很多的方法,例如:kvm自带命令行工具、使用virsh命令来创建、使用具有图形界面的virt-manager等等。
但是它们底层实现的原理都是一样的,而且它们基本上都是通过开源的虚拟化库Libvirt来开发的。下面就讲一讲三种用户可以创建虚拟机的方式。
  宿主机叫host,虚拟机叫guest
  1.1 利用kvm自带命令行工具进行创建
dd if=/dev/zero of=rhel6u3.img bs=1M\ count=8192也可以用此命令创建一个硬盘文件与qemu-img create命令效果一样
[iyunv@kvm ~]# /usr/libexec/qemu-kvm --help
[iyunv@kvm ~]# qemu-img --help
[iyunv@kvm ~]# qemu-img create -f raw test.img 10G
[iyunv@kvm ~]# qemu-img create -f qcow2 centos65-64.qcow2 10G
[iyunv@kvm ~]# /usr/libexec/qemu-kvm -boot order=dc -hda centos65-64.qcow2 -cdrom CentOS-6.5-x86_64-minimal.iso -m 512 -smp 2 -vnc :0 安装系统
[iyunv@kvm ~]# /usr/libexec/qemu-kvm -boot c -hda test.img -m 512  启动系统
  /usr/libexec/qemu-kvm -boot order=dc -hda centos65-64.qcow2 -cdrom CentOS-6.5-x86_64-minimal.iso -m 512 -smp 2 -vnc :0 -name cento --nographic
  另一种方式就是在执行qemu-kvm命令的时候,加上“-vnc :0”这样就不会有这个提示了,你可以利用tightvnc这样的工具来连接到5900端口继续安装过程,这种情况的话系统不需要图形界面就可以了。
  virt-install -n centos65 -r 512 --disk path=/root/kvm/centos65-64.img -c CentOS-6.5-x86_64-minimal.iso --network bridge=br0 --graphics vnc,password=123456,port=5910
  1.2 利用virsh命令行工具进行创建
virt-install是一个使用“libvirt” hypervisor 管理库构建新虚拟机的命令行工具,此工具使用串行控制台,SDL(Simple DirectMedia Layer)图形或者VNC客户端/服务器,
支持基于命令行和图形安装。
  编写xml配置文件,下面介绍
virsh create test.xml
利用virsh工具创建虚拟机必须编写xml配置文件,该文件指定虚拟机的各项参数,比如虚拟机名称、磁盘镜像的位置、内存大小、显示配置等等。下面给出一个简单的配置文件的例子。
#test.xml

  windowsXP
  
  500000
  500000
  1
  
    hvm  
   
   
  
  
    /usr/bin/qemu-system-x86_64
   
      
      
      
   
   
      
      
   
      
  

下面介绍其中几个比较重要的元素及属性。
(1)元素的type属性指定运行域的虚拟机管理器,针对kvm应当选择“qemu”。
(2)元素的内容指定域的名字。
(3)元素和元素的内容非别指定启动时为域分配的最大内存和实际分配的内存。
(4)元素之间的内容用来指定操作系统启动的一些信息。其中重复的元素形成了一个启动顺序表,比如例子中先从磁盘启动,磁盘无法启动再从光盘启动。
(5)元素的device属性指明不同的设备,标签的file属性指明这些设备的位置。
  [iyunv@kvm ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
  Type:  'help' for help with commands
       'quit' to quit
  virsh #
[iyunv@kvm ~]# virsh -c qemu:///system list
  virt-install -n centos.... 安装虚拟机
virt-viewer -c qemu:///system centosvnc远程到虚拟机安装系统
如果这里报错无法连接虚拟机,则安装vncviewer
vncviewer 192.168.2.8
yum -y install dacpid安装完虚拟机系统则安装acpid,不然无法通过virsh安装关闭虚拟机
  virsh -c qemu:///system
virsh # list --all
virsh # start centos
virsh # shutdown centos正常关闭虚拟机命令(如果虚拟机没有安装dacpi命令则不能用shutdown关闭虚拟机)
virsh # destroy centos强制关闭
# virt-clone --connect=qemu:///system -o centos -n kvm1 -f centos1.qcow2virt-clone命令克隆虚拟机
  1,通过virsh交互无法shutdown关闭kvm虚拟机,原因是kvm虚拟机没有安装acpid。
2,vnc问题,virt-viewer报错,只能使用vncviewer 127.0.0.1来连接虚拟机。
  virsh list //查看虚拟机信息
virsh destroy kvmtest1 //virsh destroy ID/NAME删除虚拟机
virsh start kvmtest1 //virsh start NAME启动虚拟机
virsh console kvmtest1 //virsh console ID/NAME控制台连接虚拟机
//利用ctrl+]切换到host主机,host主机利用virsh console ID/NAME切换到guest系统。
虚拟机的配置文件保存在/etc/libvert/qemu目录下,扩展名是xml,这文件只能用virsh edit来编辑用vi无效,修改相应的文件即可重新配置虚拟机。
  [iyunv@kvm kvm]# virt-install -n centos65 -r 512 --disk path=/root/kvm/centos65-64.img -c CentOS-6.5-x86_64-minimal.iso --network bridge=br0 --graphics vnc,password=123456,port=5910
virt-install -v -n kvmtest1 -r 512 –vcpus=1 -l http://mirrors.163.com/centos/6.3/os/x86_64/ -nographics -virt-type=kvm -f /home/vmimages/kvmtest1.img -s 10 -w bridge:br0 -w bridge:br1 -extra-args='console=tty0 console=ttyS0,115200,n,8 ks=http://192.168.xx.xx/test1.cfg' -connect qemu:///system
-w 联网方式(birdge bridge:br0/nat bridge:virbr0)
-os-type='windows' -os-variant=win2k3 安装windows最好加上这个否则会报错,大家注意一个问题,如果你虚拟的是WIN2003,那么切勿在-net参数中使用model=e1000,否则HOST和GUEST之间不能PING通
virt-install工具安装虚拟机后,在目录/etc/libvirt/qemu/下生成xml配置文件
  1.3 如何通过图形化界面virt-manager来创建虚拟机
virt-manager是RedHat共享的一个开源虚拟化管理软件,它是用Python编写的GUI程序,底层使用了Libvirt对各类Hypervisor进行管理。
Virt-manger既虚拟机管理器,是创建和管理虚拟客户端的图形工具。具体的操作步骤为:
a.从控制台窗口启动这个工具,从root身份输入virt-manager命令,点击file菜单的”新建”选项。
b.virt-manager显示两种虚拟化方法:Qemu/KVM或者Xen,这里选择Qemu/KVM作为hypervisor。
c.选择虚拟机名称和指定一种安装方法,通过网络安装服务器或者本地CD/DVD驱动包括本地ISO文件,在此我用本地ISO的安装方法。
d.输入本地ISO文件路径和文件名(假设本地ISO的路径就在根目录下,名称为Mini-BT3.6.1.iso)
e.设置虚拟机使用的内存容量和处理器数量。
f.配置虚拟机的存储方法。对于存储后端有两种选择:物理存储设备或者使用之前建立的磁盘文件。如果处于简单测试,创建文件作为存储后端。当创建虚拟磁盘时,默认为10GB。
g.网络配置,在这里选择NAT方式。
这样一个虚拟机就开始启动起来了,将会出现启动界面,最后出现虚拟机中操作系统的界面。
  虚拟机备份及恢复
备份:拷贝/etc/libvirt/qemu目录下的xml配置文件,以及xml中设置的img文件。
恢复:进入virsh,执行define

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-55718-1-1.html 上篇帖子: 【CI】系列三.宿主机KVM配置及vdi与vmdk格式转换等 下篇帖子: [转]KVM 虚拟机详细说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表