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

[经验分享] Centos6.7_KVM安装配置使用

[复制链接]

尚未签到

发表于 2018-4-26 08:55:33 | 显示全部楼层 |阅读模式
当前的虚拟化产品有 vmware vsphere ,Hyper-v,xen,kvm。vmware的虚拟化所占的市场有目共睹,Hyper-V是windows平台下的虚拟化,而Xen就属于一个半虚拟化产品。kvm就是我们今天所介绍的对象。
(kvm是kernel virtual module的简写)kvm是红帽公司5.4版本后所推出的最新虚拟化技术产品。它和vpc,virtual  box都属于完全虚拟化产品,而Xen是属于半虚拟化产品。
虽说kvm是完全虚拟化,但在关键的硬盘和网卡上支持半虚拟化virtio,在很大程度上提高了性能,kvm是轻量级虚拟化的代表,也需要硬件vt技术的支持,另外从操作界面上看,xen和kvm都是用virt-manager工具,差别不是很大,但不可以在同一台机器上同时安装且运行Xen和KVM;另外kvm在只能运行在红帽企业版64位系统上,同时需要关闭selinux。
KVM是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。增加 KVM 到 Linux 内核是Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。
KVM所使用的方法是通过简单地加载内核模块而将 Linux 内核转换为一个系统管理程序。这个内核模块导出了一个名为 /dev/kvm 的设备,它可以启用内核的客户模式(除了传统的内核模式和用户模式)。有了 /dev/kvm 设备,VM 使自己的地址空间独立于内核或运行着的任何其他 VM 的地址空间。设备树(/dev)中的设备对于所有用户空间进程来说都是通用的。但是每个打开 /dev/kvm 的进程看到的是不同的映射(为了支持 VM 间的隔离)。KVM安装 KVM 之后,您可以在用户空间启动客户操作系统。每个客户操作系统都是主机操作系统(或系统管理程序)的一个单个进程。
1KVM 虚拟机的管理工具
准确来说,KVM仅是Linux 内核中的一个模块。管理和创建完的 KVM 虚拟机,需要更多的辅助工具。QEMU-KVM:在 Linux 系统中,首先我们可以用 modprobe 命令加载 KVM 模块,如果用 RPM 安装 KVM 软件包,系统会在启动时自动加载模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有 KVM 模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具。关于用户空间的工具,KVM 的开发者选择了已经成型的开源虚拟化软件 QEMU。QEMU 是一个强大的虚拟化软件,它可以虚拟不同的 CPU 构架。比如说在 x86 的 CPU 上虚拟一个Power的CPU,并利用它编译出可运行在 Power 上的程序。KVM使用了QEMU的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具QEMU-KVM。所以 Linux 发行版中分为 内核部分的 KVM 内核模块和 QEMU-KVM 工具。这就是 KVM 和 QEMU 的关系。 Libvirt、virsh、virt-manager:尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,RedHat 为 KVM 开发了更多的辅助工具,比如 libvirt、libguestfs 等。原因是 QEMU 工具效率不高,不易于使用。Libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚拟机。使用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM 或 Xen 宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt 不仅提供了 API,还自带一套基于文本的管理虚拟机的命令 virsh,你可以通过使用 virsh 命令来使用 libvirt 的全部功能。但最终用户更渴望的是图形用户界面,这就是 virt-manager。他是一套用 python 编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。Virt-manager 就是利用 libvirt 的 API 实现的。
2、kvm虚拟机的安装
(一)安装之前先要开启cpu的虚拟化功能,如果是物理机直接进入BIOS中就该虚拟化选项开启,如果是
  vmware worksation 如图:
DSC0000.jpg

如果是vSphere 的话也是在设置中找到cpu的设置去开启虚拟化支持。
设置好之后检查虚拟化是否成功支持:
#egrep "(vmx|svm)" /proc/cpuinfo
flags          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov patpse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc uparch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperfunfair_spinlock pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnttsc_deadline_timer xsave avx hypervisor lahf_lm arat epb pln pts dts tpr_shadowvnmi ept vpid
(二)kvm软件的安装
# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt -y
# service libvirtd start

# service libvirtd status

libvirtd (pid  1818) ...

# chkconfig libvirtd on

说明:
kvm为linux内核的一个模块,模块不需要安装,只需要加载
virt-manageer 为kvm的管理包
libvirt 为创建虚拟机的工具包
qemu:虚拟化软件,可以虚拟不同的CPU,支持异构(x86的架构可以虚拟化出不是x86架构的)
       qemu-kvm:用户态管理kvm,网卡,声卡,PCI设备等都是qemu来管理的

(三)检查模块的正确安装
       使用lsmod来检查模块安装
# lsmod | grep kvmkvm_intel             55656  0
kvm                  345460  1 kvm_intel
(四)检查KVM是否成功安装
#virsh -c qemu:///system list
备注:初次安装横线下面没有属于正常。另外如果报错的话检查上面的服务是否正常启动。
3、kvm的网络配置
一种是default,它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。
默认的网络连接是virbr0,它的配置文件在
#cat /var/lib/libvirt/network/default.xml
<!--
OVERWRITTEN AND LOST. Changes to thisxml configuration
should be made using:
virsh net-edit default
or other application using thelibvirt API.
-->
<network>
<name>default</name>
<uuid>36ec31bf-a7fa-4b61-90a8-2b46aed90518</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0' />
<mac address='52:54:00:B7:F4:66'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
   <dhcp>
     <range start='192.168.122.2' end='192.168.122.254' />
   </dhcp>
</ip>
</network>
另外一种方式是bridge方式,可以使用虚拟机成为网络中具有独立IP的主机。
我这里是使用第二种网络配置:
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
#BROADCAST=10.0.0.255
HWADDR=00:0C:29:92:B5:37
#IPADDR=10.0.0.61
#NETMASK=255.255.255.0
#GATEWAY=10.0.0.254
ONBOOT=yes
BRIDGE="br0"
#vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTRPOTO=static
IPADDR=10.0.0.85
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
ONBOOT=yes
#service network restart
说明:
现在使用10.0.0.85连接宿主机
#ifconfig
br0       Link encap:Ethernet  HWaddr 00:0C:29:92:B5:37  
          inet addr:10.0.0.85  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr:fe80::20c:29ff:fe92:b537/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1
          RX packets:420 errors:0 dropped:0overruns:0 frame:0
          TX packets:235 errors:0 dropped:0overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:33439 (32.6 KiB)  TX bytes:29623 (28.9 KiB)
eth0      Link encap:Ethernet  HWaddr 00:0C:29:92:B5:37  
          inet6 addr:fe80::20c:29ff:fe92:b537/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1
          RX packets:4299 errors:0 dropped:0overruns:0 frame:0
          TX packets:2822 errors:0 dropped:0overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:384854 (375.8 KiB)  TX bytes:300481 (293.4 KiB)
eth1      Link encap:Ethernet  HWaddr 00:0C:29:92:B5:41  
          inet addr:192.168.3.150  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr:fe80::20c:29ff:fe92:b541/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1
          RX packets:1175 errors:0 dropped:0overruns:0 frame:0
          TX packets:304 errors:0 dropped:0overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:76602 (74.8 KiB)  TX bytes:22635 (22.1 KiB)
          Interrupt:16 Base address:0x2000
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536 Metric:1
          RX packets:618 errors:0 dropped:0overruns:0 frame:0
          TX packets:618 errors:0 dropped:0overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:73375 (71.6 KiB)  TX bytes:73375 (71.6 KiB)
virbr0    Link encap:Ethernet  HWaddr 92:66:C3:69:F0:D9  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          inet6 addr:fe80::9066:c3ff:fe69:f0d9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1
          RX packets:0 errors:0 dropped:0overruns:0 frame:0
          TX packets:81 errors:0 dropped:0overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:12603 (12.3 KiB)  
  注:网桥模式需要在真机eth0配置文件中添加 BRIDGE="br0",否则真机与虚拟机无法互通.
  配置完毕后eth0口则不会显示地址信息,新配置的br0口会代替eth0口成为真机网口,装好的虚拟机eth0口将于真机br0口互通.

4、创建虚拟机
(一)使用virt-manager建立一个KVM虚拟机
virt-manager是基于libvirt的图像化虚拟机管理软件,请注意不同的发行版上 virt-manager的版本可能不同,图形界面和操作方法也可能不同。本文使用了红帽6企业版的virt-manager-0.9.0-31。创建KVM虚拟机最简单的方法是通过virt-manager接口。从控制台窗口启动这个工具,从root身份输入virt-manager命令,点击file菜单的"新建"选项virt-manager接口界面
#virt-manager //图形化界面安装虚拟机
(二)使用virt-install命令创建虚拟机  
//本文重点介绍virt-install命令创建虚拟机
#yum groupinstall "Virtualization tools" -y //安装脱机虚拟机镜像管理工具
#virt-install --help
Usage: virt-install --name NAME --ramRAM STORAGE INSTALL [options]
Options:
--version             showprogram's version number and exit
-h, --help            show thishelp message and exit
--connect=URI         Connect tohypervisor with libvirt URI
通用选项:
   -n NAME, --name=NAME
                                    客户端事件名称
   -r MEMORY, --ram=MEMORY
                                    以 MB 为单位为客户端事件分配的内存
   --vcpus=VCPUS       配置来宾账户的虚拟 CPU(vcpu) 数量,如:
                        --vcpus 5
                        --vcpus 5, maxcpus=10
                        --vcpussocket=2,cores=4,threads=2
   --cpuset=CPUSET     Set which physical CPUs domain can use.
   --cpu=CPU              CPU型号及功能,如:--cpu coreduo,+x2apic
   --description=DESCRIPTION
                                   在生成的 XML 中保存的可读 VM 描述。
   --security=SECURITY
                                   设定域安全驱动器配置。
   --numatune=NUMATUNE
                                   为域进程调整 NUMA 策略。
安装方法选项:
   -c CDROM, --cdrom=CDROM
                                  光驱安装介质
   -l LOCATION, --location=LOCATION
                             安装源(例如:nfs:host:/path、http://host/path                        ://host/path)
   --pxe                 使用 PXE 协议从网络引导
   --import            在磁盘映像中构建客体
   --init=INIT         为容器虚拟机启动二进制的路基该您。例
                        如:
                        --init /path/to/app(包含应用程序)
                        --init /sbin/init(用于所有 OS 容器)
   --livecd         将光驱介质视为 Live CD
   -x EXTRA, --extra-args=EXTRA
                        附加到使用 --location 引导的内核的参数
   --initrd-inject=INITRD_INJECTIONS
                        使用 --location 为 initrd 的 root
                        添加给定文件
   --os-type=DISTRO_TYPE
                        要安装的操作系统类型,例如:'linux'、'u
                        nix'、'windows'
   --os-variant=DISTRO_VARIANT
                        The OS variant beinginstalled guests, e.g. 'fedora6',
                        'rhel5', 'solaris10', 'win2k'
   --boot=BOOTOPTS     自选配置后安装引导顺序、菜单、永久
                        kernel 引导,等等。
存储配置:
   --disk=DISKOPTS     Specifystorage with various options. Ex.
                        --diskpath=/my/existing/disk
                        --disk path=/my/new/disk,size=5(in gigabytes)
                        --diskvol=poolname:volname,device=cdrom,bus=scsi,...
   --nodisks           不要为该客户端设置任何磁盘。
   --filesystem=FILESYSTEMS
                            将主机目录传递给虚拟机。例如:
                        --filesystem/my/source/dir,/dir/in/guest
                        --filesystemtemplate_name,/,type=template
联网配置:
   -w NETWORK, --network=NETWORK
                        Configure a guestnetwork interface. Ex:
                        --network bridge=mybr0
                        --networknetwork=my_libvirt_virtual_net
                        --networknetwork=mynet,model=virtio,mac=00:11...
   --nonetworks        不要为该客体创建网络接口。
图形配置:
   --graphics=GRAPHICS
                        配置虚拟机显示设置。例如:
                        --graphics vnc
                        --graphicsspice,port=5901,tlsport=5902
                        --graphics none
                        --graphicsvnc,password=foobar,port=5910,keymap=ja
   --noautoconsole     不要自动尝试连接到客户端控制台
设备选项:
   --serial=SERIALS           配置虚拟机串口设备
   --parallel=PARALLELS
                                         配置虚拟机并口设备
   --channel=CHANNELS  配置虚拟机沟通频道
   --console=CONSOLES  配置虚拟机与主机之间的文本控制台连接
   --host-device=HOSTDEVS
                        Configure physical hostdevices attached to the guest
   --soundhw=SOUNDHW   Configureguest sound device emulation
   --watchdog=WATCHDOG
                                   配置虚拟机 watchdog 设备
   --video=VIDEO       配置虚拟机视频硬件。
   --smartcard=SMARTCARD
                        配置虚拟机智能卡设备。例如:
                        --smartcardmode=passthrough
   --redirdev=REDIRDEV
                        Configure a guestredirection device. Ex:
                        --redirdevusb,type=tcp,server=192.168.1.1:4000
   --panic=PANIC       Configure a guest panic device. Ex:
                        --panic default
虚拟化平台选项:
   -v, --hvm            客户端应该是一个全虚拟客户端
   -p, --paravirt      这个客户端一个是一个半虚拟客户端
   --container         This guestshould be a container guest
   --virt-type=HV_TYPE
                              要使用的管理程序名称(kvm、qemu、xen等等)
   --arch=ARCH     模拟的 CPU 构架
   --machine=MACHINE   The machinetype to emulate
   --noapic            为全虚拟客户端禁用 APIC(在 os-type/os-
                        variant db 中覆盖数值)
   --noacpi            为全虚拟客户端禁用 ACPI(在 os-type/os-
                             variant db 中覆盖数值)
   -u UUID, --uuid=UUID
                            客户端 UUID。
其它选项:
   --autostart         引导主机时自动启动域。
   --print-xml         输出所生成域的
                        XML,而不是定义虚拟机。
   --print-step=XMLSTEP
                        输出具体安装步骤(1,2,3,all)的
                        XML
   --noreboot          完成安装后不要引导虚拟机。
   --wait=WAIT       要等待的时间(以分钟为单位)
   --dry-run             完成安装步骤,但不要创建设备或者定义
                        虚拟机。
   --force             对任意应用程序提示强制回答‘yes’,终止左右其它提示
   -q, --quiet       禁止无错误输出
   --prompt         要求用户为模糊情况或者需要的选项输入。
   -d, --debug     输入故障排除信息
# virt-install --connectqemu:///system --name kvm4 --ram 500 --disk path=/dev/sdb5 --network bridge=br0--arch x86_64 --graphics sdl --location=/tmp/CentOS-7-x86_64-Minimal-1511.iso
开始安装......
搜索文件.treeinfo......                        |2.2 kB     00:00 ...
搜索文件vmlinuz......                          | 9.8 MB     00:00 ...
搜索文件initrd.img......                      |  73 MB     00:00 ...
ERROR    No DISPLAY environment variable set.  //出错,解决方法如下:
# export DISPLAY=guilinuxbox:0.0
# virt-install --connect qemu:///system --name kvm4 --ram 500 --diskpath=/dev/sdb5 --network bridge=br0 --arch x86_64 --graphics sdl--location=/tmp/CentOS-7-x86_64-Minimal-1511.iso

开始安装......
搜索文件.treeinfo......                        |2.2 kB     00:00 ...
搜索文件vmlinuz......                          | 9.8 MB     00:00 ...
搜索文件initrd.img......                      |  73 MB     00:00 ...
ERROR    unsupported configuration: sdl notsupported by '/usr/libexec/qemu-kvm'  
Domain installation does not appearto have been successful.
If it was, you can restart yourdomain by running:
virsh --connect qemu:///system start kvm1
otherwise, please restart yourinstallation.  //出错,提示qemu-kvm没有sdl接口,因此我们换成vnc来连接虚拟机界面。解决方法如下:

# yum-y install virt-viewer

# virt-install --name CentOS-7_x86_64 --virt-type kvm --ram 1024 --disk path=/dev/sdb5 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --location=/tmp/CentOS-7-x86_64-Minimal-1511.iso --force
开始安装......
搜索文件.treeinfo......                        |2.2 kB     00:00 ...
搜索文件vmlinuz......                          |9.8 MB     00:04 ...
搜索文件 initrd.img......                       |  73 MB    00:15 ...
创建域......                                     |    0 B    00:19     
'virt-viewer --help'
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。
# virsh list --all   
Id                              
----------------------------------------------------
8     CentOS-7_x86_64                running
# netstat -tunlp|grep kvm
tcp        0     0 127.0.0.1:5900             0.0.0.0:*                  LISTEN      5149/qemu-kvm
   虚拟机基本操作学习:
生成kvm虚拟机:virt-install
查看在运行的虚拟机:virsh list
查看所有虚拟机:virsh list –all
查看kvm虚拟机配置文件:virsh dumpxml name
启动kvm虚拟机:virsh start name
正常关机:virsh shutdown name
非正常关机(相当于物理机直接拔掉电源):virsh destroy name
删除:virsh undefine name(彻底删除,找不回来了,如果想找回来,需要备份/etc/libvirt/qemu的xml文件)
根据配置文件定义虚拟机:virsh define file-name.xml
挂起,终止:virsh suspend name
恢复挂起状态:virsh resumed name

编辑kvm的xml文件,更改虚拟机CPU配置
#virsh edit CentOS-7_x86_64
<vcpu placement='static'>1</vcpu>  //当前为1,自动扩容,最大为4

  

运维网声明 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-452063-1-1.html 上篇帖子: 【Linux】Centos下的"vim"的配置 下篇帖子: CentOS下关于源码打包成rpm安装包
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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