• VMware Workstation就是虚拟化html
• 虚拟化简单讲,就是把一台物理计算机虚拟成多台逻辑计算机,每一个逻辑计算机里面能够运行不一样的操做系统,相互不受影响,这样就能够充分利用硬件资源linux
• 关键词Hypervisor(VMM) 虚拟机管理器docker
• 虚拟化技术分为全虚拟化和半虚拟化centos
• 早期的CPU硬件不支持虚拟化,虚拟机上的操做系统(guestos)要想使用cpu资源,须要经过VMM来翻译指令,这个过程比较耗费资源,这种虚拟化技术叫作全虚拟化(VMware Workstation)安全
• 半虚拟化技术经过修改guestos内核,让guestos能够直接使用CPU资源,而不须要翻译指令了,从而节省了资源,但修改内核比较鸡肋(XEN)服务器
• 后续cpu厂商直接支持虚拟化,不须要经过VMM翻译指令了,无所谓半虚拟化和全虚拟化网络
• 参考 http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html http://itoedr.lofter.com/post/1472ba_69c62fa架构
• VMware系列dom
• 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虚拟化,虚拟化种类及相关特
•
•
• 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
• 前提是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
实例:
环境搭建:
在关机状态设置
第一步
第二步
设置完成以后,开机
查看系统的内存
查看设置的内核:cat /proc/cpuinfo
检查cpu参数是否支持虚拟化 :grep -Ei 'vmx|svm' /proc/cpuinfo
只要出现vmx和svm,其中一个就好了,出现了说明支持虚拟化
查看新增的硬盘
格式化EXT4
查看格式化的硬盘状况
编辑配置文件,让他开机启动
vi /etc/fstab
查看防火墙规则,把firewalld和iptables都关闭了
安装KVM
• 配置网卡,增长桥接网卡
• 设置一个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
实例:
• 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
实例:
• 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
实例:
• 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子机
实例:
一、出现error processing drive:
解决:
--ram 设置到1024
二、分区的时候磁盘文件大小为0
解决:建立虚拟机的时候添加参数ormat=qcow2,size=7,bus=virti:
连接 : https://www.cnblogs.com/liang-wei/p/6905310.html
常见问题:
一、若是没有新磁盘,可不能够直接找一个空目录用?
答:保证此目录所在磁盘分区有足够大的空间。宿主机装了docker,不要继续装kvm虚拟化
连接:
kvm学习路线 :https://mp.weixin.qq.com/s/wtgybHYpz9W6xuALoAKKGw
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
centos7上测试部署kvm虚拟机 : http://blog.51cto.com/11555417/2149718
kvm 建立新虚拟机命virt-install 使用说明 : https://www.cnblogs.com/liang-wei/p/6732055.html
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备忘(2) : https://www.jianshu.com/p/67d87c5d7d38
KVM建立和调整虚拟机 : https://www.jianshu.com/p/aeb1953d6c7f
原 QEMU和QEMU-KVM的关系 : https://blog.csdn.net/shengxia1999/article/details/52244119
原 KVM中的网络IO设备虚拟化方式 : https://blog.csdn.net/shengxia1999/article/details/52211617
CentOS6.5部署KVM及实如今线迁移 荐 : http://blog.51cto.com/zlyang/1902657
cloudstack+gluster+kvm集群 : http://blog.51cto.com/zlyang/1760452
KVM和QEMU简介 : https://www.cnblogs.com/hsqdboke/p/4143212.html
Linux-让Kvm虚拟机开放服务端口! : http://virtual.51cto.com/art/201808/580825.htm
技术分享:KVM虚拟化如何取证? : http://virtual.51cto.com/art/201808/580821.htm
kvm 建立新虚拟机命virt-install 使用说明 : https://www.cnblogs.com/liang-wei/p/6732055.html
让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复制后的虚拟机不能上网问题解决 https://www.cnblogs.com/hsqdboke/p/4148187.html
KVM基于X86硬件辅助的虚拟化技术实现机制【转】 : https://www.cnblogs.com/hsqdboke/p/4146422.html
KVM和QEMU简介 : https://www.cnblogs.com/hsqdboke/p/4143212.html