您的位置:首页 > 其它

品味KVM虚拟化技术部署及其虚拟磁盘扩容私房菜

2017-01-20 17:17 435 查看
    一、简介

    虚拟化是指计算机组件在虚拟的基础上而不是在真实的基础上运行,虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程,允许一个平台同时运行多个操作系统,并且应用程序都可在相互独立的空间运行而相互不影响彼此,从而提高计算机的运行效率。KVM是一个开源的虚拟化软件,英文名为kernel-base
virtual machine,基于内核的虚拟机,KVM在2007年2月被导入Linux 核心中,以可加载核心模块的方式被移植到FreeBSD上。

虚拟化技术分类:

主机虚拟化:完全虚拟化(KVM)、半虚拟化(XEN)

用户空间虚拟化:LXC,OPENVZ

应用程序虚拟化:JVM

      

KVM相关简介:

KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。

是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。

它包含一个为处理器提供底层虚拟化 可加载的核心模块(kvm-或kvm-)。

KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。

KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。

在主流的Linux内核,如以上的内核均已包含了KVM核心。

KVM 内存管理:

 
  KVM 继承了 Linux 系统管理内存的诸多特性,比如,分配给虚拟使用的内存可以被交换至交换空间、能够使用大内存页以实现更好的性能,以及对 NUMA 的支持能够让虚拟机高效访问更大的内存空间等。

    KVM 基于 Intel 的 EPT ( ExtendedPage Table )或 AMD 的 RVI ( Rapid Virtualization Indexing )技术可以支持更新的内存虚拟功能,这可以降低 CPU 的占用率,并提供较好的吞吐量。  

    此外,KVM 还借助于 KSM ( Kernel Same-pageMerging )这个内核特性实现了内存页面共享 。 KSM 通过扫描每个虚拟机的内存查找各虚拟机间相同的内存页,并将这些内存页合并为一个被各相关虚拟机共享的单独页面。在某虚拟机试图修改此页面中的数据时, KSM 会重新为其提供一个新的页面副本。实践中,运行于同一台物理主机上的具有相同 GuestOS
的虚拟机之间出现相同内存页面的概率是很的,比如共享库、内核或其它内存对象等都有可能表现为相同的内存页,因此, KSM 技术可以降低内存占用进而提高整体性能。



KVM组件:

/dev/kvm:管理虚拟机的设备节点,用户空间的程序可通过其ioctl()系统调用集来完成虚拟机的创建启动等管理工作;它是一个字符设备;其主要完成的操作包括:

    qemu进程:工作于用户空间的组件,用于仿真PC机的I/O类硬件设备;

    qemu全称Quick Emulator。是独立虚拟软件,能独立运行虚拟机(根本不需要kvm)。kqemu是该软件的加速软件。kvm并不需要qemu进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由kvm驱动。

    二、KVM虚拟化安装

    前提:

    ①确保cpu执行HVM

    grep -E "(svm|vmx)"  /proc/cpuinfo   

    ②内核编译提供了KVM模块

    modinfo kvm   

# grep -E "(vmx|svm)" /proc/cpuinfo #确保支持使用虚拟化
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw xop fma4 tbm arat npt svm_lock nrip_save vmcb_clean flushbyasid decodeassists bmi1
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw xop fma4 tbm arat npt svm_lock nrip_save vmcb_clean flushbyasid decodeassists bmi1
[root@node1 ~]#
[root@node1 ~]# modinfo kvm  #确保存在此模块
filename:       /lib/modules/-_64/kernel/arch/x86/kvm/
license:        GPL
author:         Qumranet
rhelversion:    
srcversion:     13ED0467630AC8D418AB2C8
depends:
intree:         Y
vermagic:       -_64 SMP mod_unload modversions
signer:         CentOS Linux kernel signing key
sig_key:        79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3
sig_hashalgo:   sha256
parm:           ignore_msrs:bool
parm:           min_timer_period_us:uint
parm:           kvmclock_periodic_sync:bool
parm:           tsc_tolerance_ppm:uint
parm:           lapic_timer_advance_ns:uint
parm:           halt_poll_ns:uint
[root@node1 ~]# ll /dev/kvm  #虚拟主机节点管理
crw-rw-rw-+ 1 root kvm 10, 232 Dec 11 15:11 /dev/kvm

[root@node1  ~]#  systemctl stop NetworkManager 
[root@node1 ~]# virsh iface-bridge eno16777736 br0 -no-stp  #配置成桥接接口
[root@node1 ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet   netmask   broadcast 
        inet6 fe80::20c:29ff:fe2e:3557  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2e:35:57  txqueuelen 0  (Ethernet)
        RX packets 694  bytes 57740 ( KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 101  bytes 13261 ( KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
#此时物理机接口就类似于交换机使用
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:2e:35:57  txqueuelen 1000  (Ethernet)
        RX packets 270458  bytes 37652584 ( MiB)
        RX errors 0  dropped 85  overruns 0  frame 0
        TX packets 5761  bytes 826732 ( KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@node1 ~]#virt-manager  #启动图形化界面创建虚拟机

[b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: