KVM 虚拟化详解

一、Kvm 简介

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟
化。在性能上KVM继承了Linux很好的性能和伸缩性,在虚拟化性能方面,已经达到非虚
拟化原生环境95%左右的性能(官方数据)。KVM拓展性也非常好,客户机和宿主机都可以
支持非常多的CPU数量和非常大的内存,可以过载使用CPU和内存,还可借助KSM技术实
现对内存的过量使用,且保证性能依旧非常不错。红帽2008年9月收购。

二、虚拟化

虚拟化:虚拟化是云计算的底层,在硬件基础上跑虚拟机
云计算:对硬件进行一个整合,协调硬件资源,可以理解为分布式的集群
2.1虚拟化技术

虚拟化技术的分类:
模拟:emulation 相当于硬件的60%
虚拟:virtulization(虚拟出来的架构与底层架构要保持一致)
完全虚拟化(full-virtulization)
BT:二进制翻译 (软件) 相当于硬件的80%
HVM:硬件辅助的虚拟化 (硬件) 相当于硬件的85%
半虚拟化(para-virtulization) 【准虚拟化】 相当于硬件的95%

  • 模拟:IO,CPU,Memory全都是用软件模拟出来。著名的模拟器有PearPC,Bochs,QEMU。
    在硬件上运行着一台主机,主机上运行一个虚拟化模拟软件,此软件可以模拟出一个或
    多个硬件环境。模拟出的硬件环境就是虚拟机。
  • 完全虚拟化:也称为native virtulization
    cpu不做模拟,只对其做相应的分配和管理,IO需要做模拟,Memory也不需要做模拟。
    虚拟的cpu架构和底层的cpu架构要保持一致。
    两种加速方式:
      BT
      HVM
      著名产品:VMware Workstation,VMware Server,Parallels Desktop,KVM,Xen(HVM)
  • 半虚拟化:xen,uml(user-mode linux)。虚拟出来的架构与物理架构也必须完全一致
    通常需要修改虚拟机的内核,然后实现就请求转发给物理机内核(hypervisor),让物理机
    内核执行之后再返回(hyper call)给虚拟机
  • OS级别的虚拟化:Openvz,lxc,Solaris Containers
    多个用户空间共用一个内核空间,每个用户空间就是一个虚拟机,由一个虚拟机管理器
    分别多所有虚拟机进行管理。
  • 库虚拟化:wine
  • 应用程序虚拟化:jvm

    三、KVM安装

    3.1检测是否支持虚拟化

  • 开启虚拟化
    开机进入服务器bios,设置虚拟化选项为打开virtualization technology enabled
  • 检查 CPU
    # egrep --color ‘(vmx|svm)‘ /proc/cpuinfo
    # grep --color=auto -Ei "vmx|svm" /proc/cpuinfo

    #如果含有vmx或者svm字样,则表示硬件支持虚拟化,vmx代表Intel,svm代表AMD
    3.2装载模块

    # modprobe kvm
    modprobe kvm_intel
    # lsmod | grep kvm
    kvm_intel            55496   0
    kvm                  337772  1 kvm_intel

    3.3安装kvm相关软件包

    # yum grouplist | grep -i "Virtualization"
    # yum install qemu-kvm qemu-kvm-tools virt-manager virt-viewer libvirt python-virtinst bridge-utils tigervnc
    # ln -sv /usr/libexec/qemu-kvm /usr/sbin/

四、网络设置
4.1桥接网卡

  • 脚本创建桥接口

    #!/bin/bash
    ipaddr=`ifconfig eth0 |awk ‘/inet addr:/{print $2}‘ |awk -F: ‘{print $2}‘`
    brctl addbr br0
    ifconfig eth0 0 up
    brctl addif br0 eth0
    ifconfig br0 ${ipaddr}/16 up
    brctl stp br0 on
  • virsh命令创建桥接口

    virsh iface-bridge eth0 br0

  • 配置文件创建桥接口
    # vim /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    HWADDR=00:50:56:39:11:f4
    TYPE=Ethernet
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=none
    BRIDGE=br0
    # vim /etc/sysconfig/network-scripts/ifcfg-br0
    DEVICE=br0
    TYPE=Bridge
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=stitc
    IPADDR=192.168.100.101
    GATEWAY=192.168.100.1
    NETMASK=255.255.255.0

#重启网卡
# /etc/init.d/network restart

#启动Libvirt
service libvirtd start

五、创建虚拟机

创建磁盘映像文件

# qemu-img create -f qcow2 -o size=10G /u01/images/vm1/centos.qcow2
# dd if=/dev/zero of centos6.img bs=1M count=1024

创建稀疏格式
# dd if=/dev/zero of=centos6.img bs=1M oflag=direct seek=1023 count=1

Qemu命令新建虚拟机
# qemu-kvm -name "mhn_node1" -m 512 -smp 1 -hda /u01/images/vm1/centos.qcow2 -cdrom /u01/centos_iso/CentOS-6.5-x86_64-bin-DVD1.iso -boot order=dc

virt-install新建虚拟机

# virt-install --name=centos6 --ram 1024 --vcpus=1 --disk path=/u01/centos6.qcow2  --accelerate --cdrom /mnt/CentOS6.5.iso --graphics vnc,listen=0.0.0.0,port=5920 --network bridge=br0 --force –autostart
# virt-install --name=node1 --ram=1024 --arch=x86_64 --vcpus=1 --check-cpu --os-type=linux --os-variant=‘rhel6‘ -c /u01/iso/centos6.5.iso --disk path=/u01/images/centos6.5_vm001.img,device=disk,bus=virtio --bridge=br0 --noautoconsole --vnc --vncport=5921 --vnclisten=0.0.0.0

virsh基于模板创建虚拟机

# cp centos.img /u01/images/node1.img
# virsh dumpxml centos > /etc/libvirt/qemu/node1.xml
# virsh create /etc/libvirt/qemu/node1.xml -console

# virsh define /etc/libvirt/qemu/node3.xml
# virsh edit node3  不建议直接通过vim修改xml文件
修改id号
修改虚拟机的name
修改uuid
指定新虚拟机的硬盘文件

# virsh start node3

六、管理虚拟机

  • 镜像格式转换

    # qemu-img create -f vmdk -0 ? test.vmdk
    # qemu-img convert –O vmdk –o adapter_type=lsilogic test.qcow2 test.vmdk
    # qemu-img convert -f raw -O qcow2 node1.img node1.qcow2

    -f:源镜像的格式,它会自动检测
    -O:目标镜像的格式
    -o:其他选先

扩大磁盘容量
# qemu-img resize /u01/images/test.qcow2 50G

克隆
# virt-clone -o node1 -n node2 -f node2.qcow2
-o:原来的虚拟机名称
-n:新的虚拟机名称
-f:新的虚拟机磁盘文件

生成随机mac
# openssl rand -hex 6 | sed ‘s/\(..\)/\1:/g; s/.$//‘
cd:8b:7b:ba:c1:b5
创建快照
# qemu-img snapshot –c test-1.snap test.qcow2
恢复快照
#qemu-img snapshot -a test.-1.snap test.qcow2
删除快照
#qemu-img snapshot -d test.-1.snap test.qcow2

virsh管理
# virsh define /etc/libvirt/qemu/node5.xml #将配置导入到虚拟机
# virsh start node3 #启动虚拟机
# virsh create /etc/libvirt/qemu/centos6.5.xml #通过配置文件启动
# virsh shutdown node3 #关闭虚拟机
# virsh destroy node3 #强制关闭电源
# virsh undefine node3 #删除虚拟机
# virsh suspend node3 #挂起虚拟机
# virsh resume node3 #恢复被挂起的虚拟机
# virsh list --all #查看所有的虚拟机

virt-manager管理
# virt-manager

  • 设置虚拟机名字
  • 设置磁盘属性
    将默认的IDE硬盘换成virtio,并打上驱动程序,这样性能就可以得到提升
  • 设置网卡属性
    将默认的网卡换成virtio,并打上驱动程序,这样性能就可以得到提升

原文地址:http://blog.51cto.com/redone/2153044

时间: 2024-11-05 18:38:27

KVM 虚拟化详解的相关文章

KVM虚拟化详解实战视频课程(老段)

KVM是一种开源的虚拟机,应用极其广泛,相关资料极其匮乏. 通过学习本课程,童鞋们可以熟练的使用KVM,比如虚拟机的热迁移.KVM的优化,P2V,V2V等知识. 视频地址>>

Virtualization-Cpu/Memory/IO虚拟化详解

一.定义 虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率. 虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率. 二.虚拟化的类别 虚拟化的类别有很多,定义也很宽泛:无

(转)CentOS7安装KVM虚拟机详解

原文:https://github.com/jaywcjlove/handbook/blob/master/CentOS/CentOS7%E5%AE%89%E8%A3%85KVM%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%AF%A6%E8%A7%A3.md 基于 CentOS Linux release 7.2.1511 (Core) 的环境下命令行的方式安装KVM的详细过程. 目录 检测是否支持KVM 安装 KVM 环境 安装虚拟机 命令行配置系统 连接虚拟机 虚拟机其它管理

kvm使用详解

介绍: KVM(Kernel-based Virtual Machine,即内核级虚拟机)是一个开源的系统虚拟化模块,是使用于 Linux 核心中的虚拟化基础建设,KVM 在 2007 年 2 月被导入 Linux 2.6.20 核心中,它也被引入 FreeBSD.它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少.KVM目前已成为学术界的主流VMM之一.kvm需要经过修改的QEMU软件(qemu-kvm)和virt(libvirt)作为虚拟机上层控制界面,kvm能在不改变l

53 kvm及libvirt、使用virsh管理kvm虚拟机、网络虚拟化技术基础、网络名称空间netns用法详解

01 kvm及libvirt [[email protected] ~]# yum install libvirt libvirt-client python-virtinst virt-manager virt-install -y [[email protected] ~]# yum -y install qemu-kvm [[email protected] ~]# systemctl start libvirtd.service #创建桥 [[email protected] ~]# v

[转帖]PC虚拟化主流:KVM、XEN、OpenVZ详解

PC虚拟化主流:KVM.XEN.OpenVZ详解 https://zhuanlan.zhihu.com/p/90920566 1.pc虚拟化——KVM KVM是完整的硬件虚拟化,可以在Windows / Linux来完美运行操作系统,并且使用virtio驱动程序可以获得接近本机的性能,一些实验表明,在理想情况下本机硬件的损失仅为3%. 它确实支持从ISO进行安装,也支持基于模板的安装,在隐私方面具有良好的隔离性,在重负载下会遭受I / O延迟. 每个用户(VM)在主机节点上均作为进程运行,这非常

centos7部署KVM虚拟化平台详解

KVM自Linux 2.6.20版本后就直接整合到Linux内核,它依托CPU虚拟化指令集实现高性能的虚拟化支持.它与Linux内核高度整合,因此在性能.安全性.兼容性.稳定性上都有很好的表现.在KVM环境中运行的每个虚拟化操作系统都将表现为单个独立的系统进程.因此它可以很方便地与Linux系统中的安全模块进行整合(SELinux),可以灵活的实现硬件资源的管理和分配,KVM虚拟化的架构图如下: 话不多说,开始搭建KVM虚拟化平台: 1.安装: [[email protected] media]

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)

摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式.Bridge方式的配置原理和步骤.Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. NAT的网络结构图: Bridge的网络结构见图: 一.Bridge方式 问题 客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信.事实上,如果要在安装时使用网络通信,需要提前设置客户机的网络连接. KVM客户机网络连接有两种方式: 用户网络(User Networking):让虚拟机访问主机

Xen虚拟化基本原理详解

标签:虚拟化 xen 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wangzan18.blog.51cto.com/8021085/1727106 查看虚拟化技术详解请点击 一.Xen概述 Xen是由剑桥大学计算机实验室开发的一个开源项目.是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个客户操作系统(Guest OS).目前已经在开源社区中得到了极大的推动. Xen支持x86.x