侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

KVM虚拟化学习笔记(一)

2023-10-01 星期日 / 0 评论 / 0 点赞 / 43 阅读 / 7782 字

KVM简介KVM,为Kernel-basedVirutal Machine的缩写,即基于内核的虚拟机,是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个Hypervisor。K

  1. KVM简介

    KVM,为Kernel-basedVirutal Machine的缩写,即基于内核的虚拟机,是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个Hypervisor。KVM是开源的系统虚拟化工具,自Linux2.6.20之后集成在Linux的各个主要发行版中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已经成为学术界的主流VMM之一。KVM的虚拟化需要硬件支持(如Intel的VT技术或者AMD的V技术),运行在X86平台上。是基于硬件的完全虚拟化。它也被移植到S/390,PowerPC,IA-64平台上。在Linux内核3.9版本中,加入的ARM架构的支持。KVM的特点:

  1. KVM是开源软件,全称Kernel-based virtual machine(基于内核的虚拟机)。
  2. 是x86架构且硬件支持虚拟化技术(如Intel VT或AMD-V)的Linux全虚拟化解决方案。
  3. 它包含一个为处理器提供底层虚拟化可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
  4. KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
  5. KVM能在不改变Linux或Windows镜像的情况下同时运行多个虚拟机(即,多个虚拟机使用一个镜像),并为每一个虚拟机配置个性化硬件环境(网卡,磁盘,图形适配器……)。
  6. 在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。KVM主要用于服务器,对图形界面支持较弱。
  1. KVM的内存管理

KVM继承了Linux系统管理内存的诸多特性。比如,分配给虚拟机使用的内存可以被交换至交换空间、能够使用大内存页以实现更好的性能,以及对NUMA的支持能够让虚拟机高效访问更大的内存空间等。KVM基于Intel的EPT(ExtendedPage Table)或AMD的RVI(Rapid Virtualization Indexing)技术可以支持更新的内存虚拟功能,这可以降低CPU的占用率,并提供较好的吞度量。此外,KVM还借助于KSM(kernel Same-pageMerging)这个内核特性实现了内存页面共享。KSM通过扫描每个虚拟机的内存查找各虚拟机间相同的内存页,并将这些内存页合并为一个被各个相关虚拟机共享的单独页面。在某个虚拟机试图修改此页面中的数据时,KSM会重新为其提供一个新的页面副本。实践中,运行于同一台物理机上的具有相同GuestOS的虚拟机之间出现相同内存页面的概率是很高的,比如共享库、内核或其他内存对象等都有可能表现为相同的内存页,因此,KSM技术可以降低内存占用进而提升整体性能。一个普通的 Linux 进程有两种运行模式:内核和用户。 KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)相关连接:
KVM 的官方地址: http://www.linux-kvm.org/page/Main_Page
KVM 的 Howto 文档: http://www.linux-kvm.org/page/HOWTO
Kqemu 源码地址: http://sourceforge.net/projects/kqemu/
Qemu 下载地址: http://wiki.qemu.org/Main_Page

  1. KVM虚拟化平台的实践

实践的环境是在windows下,之前尝试使用Virutalbox来进行实验,后来发现Virutalbox不支持KVM虚拟化,最后又重新在windows环境下使用VMware。

  1. 安装准备

查看硬件是否支持虚拟化。执行命令:

[root@Test-41]~# egrep '(vmx|svm)' /proc/cpuinfo –colorflags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dts tpr_shadow vnmi ept vpid fsgsbase smepflags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dts tpr_shadow vnmi ept vpid fsgsbase smep

如果没有任何输出,则又两种可能,一种你的硬件不支持硬件虚拟化技术,首先查看bios里面是否有对应的项目,如果有则开启,如果没有则实验无法进行。开启后查看你的VMware虚拟机是否开启了对应的虚拟化支持。
Bios开启:

虚拟机开启:

另外,操作系统需要是64位,32位系统无法安装KVM。

  1. 安装
    这里由于是新装RHEL6.5所以需要注意几点:首先安装后,安装增强插件VMware的,需要重启虚拟机,直接安装会提示错误。
    安装后需要配置本地yum源:
    创建目录:
[root@Test-41 Desktop]# mkdir /mnt/RHEL6.5_ISO

编辑fstab,开机自动挂载光驱镜像

[root@xuegod-41 Desktop]# vim /etc/fstab/dev/sr0                /mnt/RHEL6.5_ISO        iso9660 defaults        0 0

注意:这里iso9660的英文字母需要小写,大写会报错。
修改yum配置文件:

[root@Test-41 Desktop]# vi /etc/yum.repos.d/rhel-source.repo[rhel-source]name=Red Hat Enterprise Linux $releasever - $basearch - Sourcebaseurl=file:///mnt/RHEL6.5_ISOenabled=1gpgcheck=0

现在就可以进行KVM的安装了:

[root@Test-41 Desktop]# yum install kvm virt-manager libvirt –y
  1. 启动服务:
[root@Test-41 Desktop]# service libvirtd start

配置开启自启动:

[root@Test-41 Desktop]# service libvirtd start

查看启动状态:

[root@Test-41 Desktop]# ps aux |grep virtroot      12523  0.0  0.4 414860 17960 ?        Sl   Mar28   0:00 /usr/bin/python /usr/share/virt-who/virt-who.pyroot      12539  0.0  0.1 438388  7456 ?        Sl   Mar28   0:00 libvirtd --daemonnobody    12655  0.0  0.0  12888   748 ?        S    Mar28   0:00 /usr/sbin/dnsmasq --strict-order --local=// --domain-needed --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --bind-interfaces --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253 --dhcp-no-override --dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile --addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhostsroot      13717  0.0  0.0 103248   868 pts/0    S+   00:10   0:00 grep virt

查看自启动配置是否成功:

[root@Test-41 Desktop]# chkconfig --list |grep virtlibvirt-guests 	0:off	1:off	2:on	3:on	4:on	5:on	6:offlibvirtd       	0:off	1:off	2:on	3:on	4:on	5:on	6:offvirt-who       	0:off	1:off	2:on	3:on	4:on	5:on	6:off

查看虚拟机状态:

[root@Test-41 Desktop]# virsh list Id    Name                           State``----------------------------------------------------``

没有可用的虚拟机,因为还没建虚拟机。
本文就到这里,下篇文章会介绍KVM的配置和使用

广告 广告

评论区