虚拟化介绍

• VMware Workstation就是虚拟化

• 虚拟化简单讲,就是把一台物理计算机虚拟成多台逻辑计算机,每个逻辑计算机里面可以运行不同的操作系统,相互不受影响,这样就可以充分利用硬件资源

• 关键词Hypervisor(VMM) 虚拟机管理器

• 虚拟化技术分为全虚拟化和半虚拟化

• 早期的CPU硬件不支持虚拟化,虚拟机上的操作系统(guestos)要想使用cpu资源,需要通过VMM来翻译指令,这个过程比较耗费资源,这种虚拟化技术叫做全虚拟化(VMware Workstation)

• 半虚拟化技术通过修改guestos内核,让guestos可以直接使用CPU资源,而不需要翻译指令了,从而节省了资源,但修改内核比较鸡肋(XEN)

• 后续cpu厂商直接支持虚拟化,不需要通过VMM翻译指令了,无所谓半虚拟化和全虚拟化

• 参考   http://itoedr.lofter.com/post/1472ba_69c62fa



常见虚拟化软件

• VMware系列

• VMware workstation、VMware vsphere(VMware esxi)、VMware Fusion(Mac)。

• Xen 开源 半虚拟化。

• XenServer 商业,厂商Ctirx,基于Xen的。

• KVM 开源 基于linux内核模块。

• Hyper-V 商业,厂商微软。

• Openvz 开源  基于linux 虚拟机和宿主机共用一个内核。

• VirtualBox 开源  Sun公司开发  Oracle收购Sun。

• http://developer.huawei.com/ict/forum/thread-23385-1-1.html。

• 企业级虚拟化技术类型:完全虚拟化、半虚拟化、模拟虚拟化、库虚拟化、 应用虚拟化、实时迁移,云计算底层虚拟化技术 。

Kvm企业级高级用法,动态添加网卡、动态增删Interface、脚本实现动态管 理、硬盘热加载、故障迁移等。

X86平台虚拟化技术难点及相关解决方案原理、Xen虚拟化技术、全面介绍CPU 虚拟化、内存虚拟化及I0虚拟化,虚拟化种类及相关特



虚拟化架构

vmx虚拟化技术是什么 vmware虚拟化是什么_操作系统

 



KVM介绍

• KVM是以色列初创公司Qumranet开发,2008年9月RedHat公司收购了Qumranet

• KVM是Linux内核的一个模块,它把Linux内核变成了一个Hypervisor

• KVM是完全开源的,RedHat基于KVM的虚拟化解决方案叫做RHEV

• KVM在Linux操作系统里面以进程的形式出现,由标准的Linux调度程序进行调度,这使得KVM能够使用Linux内核的已有功能

• 只有一个KVM内核模块还不能实现虚拟化的全部功能,就好比操作系统只有内核还不能成为一个完整的操作系统一样

• QEMU是一个开源的虚拟化软件,纯软件,可以虚拟化所以的硬件,性能不强

• KVM基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM

• 磁盘、网络设备等都是通过QEMU-KVM这个工具模拟出来的

• KVM和QEMU-KVM通信是通过/dev/kvm实现的

• libvirt是用来管理KVM虚拟机的API,其命令为virsh



KVM架构图

vmx虚拟化技术是什么 vmware虚拟化是什么_操作系统_02



Centos7上安装KVM

• 前提是CPU支持虚拟化

• 虚拟机设置内存2G,增加一个50G的虚拟磁盘,处理器2核,虚拟化引擎两个虚拟化相关的选项打上对勾

• 关闭iptables或者firewalld

• 关闭selinux

• 格式化新磁盘,挂载到/kvm_data

• 下载一个centos7的镜像文件

• 检查cpu参数是否支持虚拟化 

• grep -Ei 'vmx|svm' /proc/cpuinfo

• 安装kvm

• yum install -y  virt-*  libvirt  bridge-utils qemu-img

实例:

环境搭建:

在关机状态设置

第一步

vmx虚拟化技术是什么 vmware虚拟化是什么_vmx虚拟化技术是什么_03

第二步

vmx虚拟化技术是什么 vmware虚拟化是什么_linux_04

vmx虚拟化技术是什么 vmware虚拟化是什么_python_05

vmx虚拟化技术是什么 vmware虚拟化是什么_python_06

设置完成之后,开机

 

查看系统的内存

vmx虚拟化技术是什么 vmware虚拟化是什么_linux_07

查看设置的内核:cat /proc/cpuinfo

vmx虚拟化技术是什么 vmware虚拟化是什么_python_08

检查cpu参数是否支持虚拟化  :grep -Ei 'vmx|svm' /proc/cpuinfo

vmx虚拟化技术是什么 vmware虚拟化是什么_python_09

                  只要出现vmx和svm,其中一个就行了,出现了说明支持虚拟化

查看新增的硬盘

vmx虚拟化技术是什么 vmware虚拟化是什么_linux_10

格式化EXT4

vmx虚拟化技术是什么 vmware虚拟化是什么_操作系统_11

查看格式化的硬盘情况

vmx虚拟化技术是什么 vmware虚拟化是什么_vmx虚拟化技术是什么_12

编辑配置文件,让他开机启动

vi /etc/fstab

vmx虚拟化技术是什么 vmware虚拟化是什么_运维_13

查看防火墙规则,把firewalld和iptables都关闭了

vmx虚拟化技术是什么 vmware虚拟化是什么_linux_14

vmx虚拟化技术是什么 vmware虚拟化是什么_python_15

安装KVM

vmx虚拟化技术是什么 vmware虚拟化是什么_vmx虚拟化技术是什么_16

 



配置网卡并安装centos7

• 配置网卡,增加桥接网卡

• 设置一个br0网卡,TYPE为Bridge,IP地址设置为ens33的ip

• ens33配置文件里把IP地址去掉,增加BRIDGE=br0

• 检查KVM模块是否加载

• lsmod|grep kvm

• 启动libvirtd服务

• systemctl start  libvirtd

• brctl show可以看到两个网卡br0和virbr0

• 命令行安装centos7

• virt-install --name=aminglinux01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-17081.iso --disk path=/kvm_data/aminglinux01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial  --extra-args="console=tty0 conso

实例:

设置一个br0网卡,TYPE为Bridge,IP地址设置为ens33的ip

le=tt

[root@localhost 01]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0   #假入第一块网卡是ens33,重命名并移到ifcfg-br0
[root@localhost network-scripts]# vi ifcfg-br0 
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

S0"



虚拟机管理

• 安全完虚拟机需要重启,要退出虚拟机使用快捷键ctrl ]

• ps aux |grep kvm           //查看kvm进程

• virsh list        //查看虚拟机列表,只能看到运行的虚拟机

• virsh list --all         //查看虚拟机列表,包括未运行的虚拟机

• virsh console aminglinux01                 //进入指定虚拟机

• virsh shutdown aminglinux01      //关闭虚拟机

• virsh start aminglinux01       //开启虚拟机

• virsh destroy aminglinux01         //类似stop,这个是强制停止

• virsh undefine aminglinux01        //彻底销毁虚拟机,会删除虚拟机配置文件,virsh list --all就看不到了

• ls /etc/libvirt/qemu/            //可以查看虚拟机配置文件

• virsh autostart aminglinux01        //宿主机开机该虚拟机也开机

• virsh autostart --disable aminglinux01     //解除开机启动

• virsh suspend aminglinux01         //挂起

• virsh resume aminglinux01     //恢复

实例:

 



克隆虚拟机

• virsh shutdown aminglinux01

• virt-clone  --original aminglinux01 --name aminglinux02 --file /kvm_data/aminglinux02.img

• --original指定克隆源虚拟机

• --name指定克隆后的虚拟机名字

• --file指定目标虚拟机的虚拟磁盘文件

• 如果aminglinux01虚拟机开机状态,则提示先关闭或者暂停虚拟机



快照管理

• 创建快照  virsh snapshot-create aminglinux01

• raw格式的虚拟磁盘不支持做快照,qcow2支持

• qemu-img info /kvm_data/aminglinux01.img //查看aminglinux01.img信息,同时会查看到快照列表

• virsh snapshot-list aminglinux01 //列出所有快照

• virsh snapshot-current aminglinux01//查看当前快照版本

• ls /var/lib/libvirt/qemu/snapshot/aminglinux01//查看所有快照配置文件

• virsh snapshot-revert aminglinux01 1513440854//恢复指定快照

• virsh snapshot-delete aminglinux01  1513440854//删除快照

实例:

 



磁盘格式

• 虚拟磁盘常用格式raw、qcow2

• qemu-img info /kvm_data/aminglinux01.img//查看虚拟磁盘格式

• qemu-img create -f raw /kvm_data/aminglinux01_2.img 2G//创建2G的raw格式磁盘

• 把raw格式的磁盘转换为qcow2格式

• qemu-img convert -O qcow2 /kvm_data/aminglinux01_2.img /kvm_data/aminglinux01_2.qcow2

• 转换后用ls -lh查看磁盘文件的大小,可以看到qcow2文件比较小,raw文件大小和我们指定空间大小一样是2G

• raw格式的磁盘性能比qcow2要好,但是raw格式的磁盘无法做快照

• 给aminglinux02转换为raw格式的磁盘

• virsh shutdown aminglinux02

• qemu-img convert -O raw /kvm_data/aminglinux02.img /kvm_data/aminglinux02_3.raw

• virsh edit aminglinux02//更改格式和文件路径

• virsh start aminglinux02

实例:

 



磁盘扩容 – raw格式

• qemu-img resize /kvm_data/aminglinux02_3.raw +2G

• qemu-img info /kvm_data/aminglinux02_3.raw

• virsh destroy aminglinux02

• virsh start aminglinux02

• virsh console aminglinux02

• fdisk -l 查看磁盘情况,并分新的分区

• 除了对已有磁盘扩容外,还可以额外增加磁盘

• qemu-img create -f raw /kvm_data/aminglinux02_2.raw 5G

• virsh edit aminglinux02 //增加<disk>…</disk>,注意更改source、target、slot

• virsh destroy aminglinux02

• virsh start aminglinux02

实例:

 

 



磁盘扩容 – qcow2格式

• qemu-img resize /kvm_data/aminglinux01.img +2G

• 若提示qemu-img: Can't resize an image which has snapshots,需要删除快照

• qemu-img info /kvm_data/aminglinux01.img

• virsh destroy aminglinux01

• virsh start aminglinux01

• virsh console aminglinux01

• fdisk -l 查看磁盘情况,并分新的分区

• 除了对已有磁盘扩容外,还可以额外增加磁盘

• qemu-img create -f qcow2 /kvm_data/aminglinux01_2.img 5G

• virsh edit aminglinux01 //增加<disk>…</disk>,注意更改source、target、slot

• virsh destroy aminglinux01

• virsh start aminglinux01

实例:

 



调整cpu、内存、网卡

• virsh dominfo aminglinux01 //查看配置

• virsh edit aminglinux01//更改如下部分内容

•  <memory unit='KiB'>1048576</memory>

•  <currentMemory unit='KiB'>524288</currentMemory>

•  <vcpu placement='static' current='1'>2</vcpu>

• virsh shutdown aminglinux01

• virsh start aminglinux01

• virsh setmem aminglinux01 800m//动态调整内存

• virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux01.xml//需要把配置写入到配置文件里

• virsh setvcpus aminglinux01 2 //动态调整cpu数量

• virsh domiflist aminglinux01//查看网卡

• virsh attach-interface aminglinux01 --type bridge  --source virbr0//增加一块新的网卡,并设置为nat网络模式(virbr0类似vmware的vmnet8),这里如果写--source br0,则网络模式为桥接

• virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux01.xml//需要把配置写入到配置文件里

实例:

 



迁移虚拟机

•该方式要确保虚拟机是关机状态

• virsh shutdown aminglinux01

• virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux03.xml  // 如果是远程机器,需要把该配置文件拷贝到远程机器上

• virsh domblklist aminglinux01  //查看虚拟机磁盘所在目录

• rsync -av /kvm_data/aminglinux01.img  /kvm_data/aminglinux03.img  //如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上

• vi /etc/libvirt/qemu/aminglinux03.xml  //因为是迁移到本机,配置文件用的是aminglinux01子机的配置,不改会有冲突,所以需要修改该文件,如果是远程机器不用修改

• 修改domname:   <name>aminglinux03</name>

• 修改uuid(随便改一下数字,位数不要变)

• 修改磁盘路径

• virsh define /etc/libvirt/qemu/aminglinux03.xml //定义新虚拟机

• virsh list --all   //会发现新迁移的aminglinux03子机

实例:

 



kvm 安装操作系统问题

1、出现error processing drive:

解决:

--ram 设置到1024

2、分区的时候磁盘文件大小为0

解决:创建虚拟机的时候添加参数ormat=qcow2,size=7,bus=virti:

 

链接   :  

常见问题:

1、如果没有新磁盘,可不可以直接找一个空目录用?

答:保证此目录所在磁盘分区有足够大的空间。宿主机装了docker,不要继续装kvm虚拟化

 

链接:

kvm学习路线 :https://mp.weixin.qq.com/s/wtgybHYpz9W6xuALoAKKGw



KVM 介绍(1):简介及安装:

Linux环境下虚拟化之KVM常用命令     :https://mp.weixin.qq.com/s/989_2Mh-yc976blEWmDMgg

KVM虚拟化多功能脚本  :  http://blog.51cto.com/xiaogongju/2155547

KVM虚拟化脚本  :  http://blog.51cto.com/xiaogongju/2154120

KVM   系列   :    http://blog.51cto.com/xiaoli110/category6.html/p2

vmx虚拟化技术是什么 vmware虚拟化是什么_vmx虚拟化技术是什么_17

centos7上测试部署kvm虚拟机   :  http://blog.51cto.com/11555417/2149718



centos6.5下kvm环境搭建详解 : https://www.jb51.net/os/RedHat/542532.html

 kvm 创建新虚拟机命virt-install 使用说明   :  

KVM虚拟化技术之virt-manager使用及KVM虚拟化平台网络模型介绍 : https://www.jb51.net/article/94087.htm

RedHat6.6下安装配置KVM虚拟机          :  https://www.jianshu.com/p/5aab59d92b43

 

深入浅出KVM(一) 丨 简介&安装   :  https://www.jianshu.com/p/8886009be152

KVM 介绍(2):CPU 和内存虚拟化  : https://www.jianshu.com/p/f40a297bb333

深入浅出KVM(三) 丨 I/O 全虚拟化和准虚拟化  : https://www.jianshu.com/p/0288235387c7

深入浅出KVM(四)丨I/O PCI/PCIe设备直接分配和 SR-IOV   :  https://www.jianshu.com/p/0d7aff2e8e34

深入浅出KVM(五) 丨libvirt 介绍   :   https://www.jianshu.com/p/a7eac9c71ecf

 

深入浅出KVM (六) 丨Nova 通过 libvirt 管理 QEMU/KVM 虚机  : https://www.jianshu.com/p/dc9cf1858dd3

深入浅出KVM (七) 丨使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照   : https://www.jianshu.com/p/31d11e3bdbbb 

深入浅出KVM(八)丨使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 :https://www.jianshu.com/p/84f71dec693b 

 



kvm备忘(1)   :  https://www.jianshu.com/p/5651ef0c218b

kvm备忘(2)   : https://www.jianshu.com/p/67d87c5d7d38

KVM创建和调整虚拟机   :  https://www.jianshu.com/p/aeb1953d6c7f

原  QEMU和QEMU-KVM的关系   :  

原  KVM中的网络IO设备虚拟化方式   :  

CentOS6.5部署KVM及实现在线迁移 荐               : http://blog.51cto.com/zlyang/1902657

cloudstack+gluster+kvm集群                        :      http://blog.51cto.com/zlyang/1760452

KVM和QEMU简介            :       

Linux-让Kvm虚拟机开放服务端口!                     : http://virtual.51cto.com/art/201808/580825.htm

技术分享:KVM虚拟化如何取证?        :      http://virtual.51cto.com/art/201808/580821.htm 

kvm 创建新虚拟机命virt-install 使用说明    :  

让KVM虚拟机支持console功能               :   https://www.jianshu.com/p/625ac6251e8a

 

Learning KVM - part1 概述                   ;https://www.jianshu.com/p/a83250e13e62

Learning KVM - part2 安装KVM        :    https://www.jianshu.com/p/63674851a2bf

Learning KVM - part3 配置KVM存储共享池        :      https://www.jianshu.com/p/413494ebe74e

Learning KVM - part4 创建虚拟机VM        :    https://www.jianshu.com/p/a1c5f04aa60b

Learning KVM - part5 克隆并初始化VM                        :       https://www.jianshu.com/p/198d90e39553

Learning KVM - part6 挂载并扩容磁盘           :            https://www.jianshu.com/p/17c81a1b8722

Learning KVM - part7 如何为VM添加和删除内存          :       https://www.jianshu.com/p/829def223798

Learning KVM - part8 如何添加/删除vCPU到VM                :  https://www.jianshu.com/p/8765106d7892

 

KVM虚拟化平台部署及管理      :         http://blog.51cto.com/scholar/1675955

让KVM虚拟机支持console功能 荐      :http://blog.51cto.com/nolinux/1589488

物理虚拟化服务器之间的KVM在线动态迁移 荐     : http://blog.51cto.com/rfyiamcool/1293301

 

Vmaware复制后的虚拟机不能上网问题解决 

KVM基于X86硬件辅助的虚拟化技术实现机制【转】    :     

KVM和QEMU简介       :