一、虚拟化

虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模 拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢?这个主要是通过一个叫做 Hypervisor 的程序实现的。根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种: 1型虚拟化和2型虚拟化

1型虚拟化

Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。这种虚拟化中 Hypervisor 直接管理调用硬件资源,不需要底层操作系统,也可以理解为 Hypervisor 被做成了一个很薄的操作系统。 这种方案的性能处于主机虚拟化与操作系统虚 拟化之间 。代表是VMware ESX Server、Citrix XenServer 和 Microsoft Hyper-V,Linux KVM。

2型虚拟化

物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。

二、kvm架构

kvm是一种基于内核的虚拟化(属于2型虚拟化),主要分为两大部分

1、位于内核空间的的kvm.io:主要负责虚拟机的虚拟CPU也就是vCPU ,还有就是对虚拟内存进行管理和调度

2、QEMU-KVM:qemu运行在用户空间,kvm运行在内核空间,两者通过/dev/kvm打交道。这个QEMU-KVM就是通过修改QEMU代码而得出的专门用来创建和管理虚拟机的管理工具,是为了KVM能更好的和内核打交道。VM 运行期间,QEMU 会通过 KVM 模块提供的系统调用进入内核,由 KVM 负责将虚拟机置于处理的特殊模式运行。为一个虚拟机提供的是io等设备。

三、kvm实现示例

实验环境:VMware Workstation 10、centos7(64位)

前提:(需要开启VMware 创建的虚拟机支持虚拟化,如下图红框所示)

1、查看系统是否支持

看到“vmx”表示支持

2、安装kvm相关包

yum install qemu-kvm libvirt virt-install virt-manager bridge-utils
systemctl start libvirtd
  • qemu-kvm    ----模拟计算机的工具,为KVM虚拟机提供IO设备
  • libvirt    ----用于管理 KVM 的Hypervisor
  • virt-install    ----命令行的虚拟机创建安装工具
  • bridge-utils   ----网桥工具
  • virt-manager 是 KVM 图形化管理工具

 3、在宿主机创建用于虚拟化的网桥

1)增加 /etc/sysconfig/network-scripts/ifcfg-br0

   

2)找到本机现在ip使用的网卡,本例中为  /etc/sysconfig/network-scripts/ifcfg-eno16777736

3)重启网卡

systemctl restart network

可以看到ip,已经跑到br0上去了。

4、在宿主机创建虚拟机

1)下载测试镜像:cirros-0.3.4-x86_64-disk.img  ,从网址:http://download.cirros-cloud.net

2) 创建安装磁盘

[root@localhost ~]# qemu-img create -f qcow2 /var/kvm-images/disk-10g.img 10G
Formatting '/var/kvm-images/disk-10g.img', fmt=qcow2 size= encryption=off cluster_size= lazy_refcounts=off

3)安装虚拟机

[root@localhost ~]# virt-install --name boshen-vm --virt-type kvm --vcpus 1 --ram 512 -c /var/kvm-images/cirros-0.3.4-x86_64-disk.img --network bridge=br0 --noautoconsole --graphics none --console pty,target_type=serial --os-type=linux --os-variant=rhel7 --disk path=/var/kvm-images/disk-10g.img,size=10,format=qcow2

Starting install...
Domain installation still in progress. You can reconnect to
the console to complete the installation process.

5、虚拟机基本管理命令

1)查看虚拟机列表

[root@localhost ~]# virsh list
Id Name State
----------------------------------------------------
boshen-vm running

2)进入虚拟机

virsh console boshen-vm

3)关闭虚拟机

virsh shutdown boshen-vm

4)强制关闭虚拟机

virsh destroy boshen-vm
[root@localhost ~]# virsh list --all
Id Name State
----------------------------------------------------
- boshen-vm shut off

5)启动虚拟机

[root@localhost ~]# virsh start boshen-vm
Domain boshen-vm started
[root@localhost ~]# virsh list
Id Name State
----------------------------------------------------
boshen-vm running

6)删除虚拟机

virsh destroy boshen-vm
virsh undefine boshen-vm

7)查看虚拟机硬盘

[root@localhost ~]# qemu-img info /var/kvm-images/disk-10g.img
image: /var/kvm-images/disk-10g.img
file format: qcow2
virtual size: 10G ( bytes)
disk size: 196K
cluster_size:
Format specific information:
compat: 1.1
lazy refcounts: false

8)添加硬盘

首先创建一块新的硬盘:disk-5g.img

[root@localhost ~]# qemu-img create -f qcow2 /var/kvm-images/disk-5g.img 5G
Formatting '/var/kvm-images/disk-5g.img', fmt=qcow2 size= encryption=off cluster_size= lazy_refcounts=off

然后为虚拟机添加硬盘

[root@localhost ~]# virsh attach-disk boshen-vm /var/kvm-images/disk-5g.img vdb --live --cache=none --subdriver=qcow2
Disk attached successfully

9)卸载硬盘

[root@localhost ~]# virsh detach-disk boshen-vm --target vdb
Disk detached successfully

kvm虚拟化平台搭建的更多相关文章

  1. kvm虚拟化平台搭建入门

    KVM虚拟化有两种网络模式:1)Bridge网桥模式2)NAT网络地址转换模式Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. 环境: 本次实验要开启VMWare中对应Ce ...

  2. KVM 虚拟化基本搭建

    KVM虚拟化技术 KVM是基于x86架构上Linux操作系统的全虚拟化解决方案 ,在Centos6.3系统中,kvm已经被集成到内核中,相当于使用内核来做虚拟机管理程序.由于KVM本身就工作于内核环境 ...

  3. Linux 部署KVM虚拟化平台

    简单介绍 KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案.KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Lin ...

  4. KVM虚拟化平台环境部署

    一:安装依赖包 二:配置网卡 三:配置环境 实验环境: KVM01   192.168.200.10 关闭防火墙及相关的安全机制 [root@KVM01 ~]# systemctl stop fire ...

  5. KVM虚拟化技术实战全过程

    今天准备开始.................... centos安装-kvm 教程: http://www.linuxidc.com/Linux/2017-01/140007.htm http:// ...

  6. KVM虚拟化技术

    KVM虚拟化技术 Qemu-kvm kvm virt-manager VNC Qemu-kvm创建和管理虚拟机 一.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machi ...

  7. kvm虚拟化之convirt集中管理平台搭建

    情况说明: (1)本文采用OEL6.3x64操作系统,需要有KVM安装环境.(2)convirt2.1.1采用源码方式安装,convirt环境分别两部分,一部分是cms,用于管理kvm/xen虚拟主机 ...

  8. <Mastering KVM Virtualization>:第三章 搭建独立的KVM虚拟化

    在第二章,你了解了KVM的内部结构:在本章中,您将了解如何将Linux服务器设置为虚拟化主机.我们正在讨论将KVM用于虚拟化并将libvirt作为虚拟化管理引擎. KVM开启了虚拟化并利用你的服务器或 ...

  9. [原创]KVM虚拟化管理平台的实现

    KVM虚拟化管理平台的实现 源码链接:https://github.com/wsjhk/IaaS_admin.git 根据KVM虚拟化管理的要求,设计并实现网页操作管理KVM虚拟机.设计原理架构如下图 ...

随机推荐

  1. php的三种CLI常量:STDIN,STDOUT,STDERR

    PHP CLI(command line interface)中,有三个系统常量,分别是STDIN.STDOUT.STDERR,代表文件句柄. 应用一: <?php while($line = ...

  2. 问题1:设置了text-overflow : ellipsis未起作用

    <style type="text/css"> * { padding: 0; } .div01 , .div02 { margin-top: 10px; border ...

  3. 解决在Mac的Vmware Fusion中装win7系统和mac原生系统直接切换win7系统分辨率变化的问题

    虚拟机 - 设置 - 显示屏 - 全屏显示retina (此选项钩去掉)

  4. 数字&字符串

    一.数字 数字分为整型(int)和浮点型(float) int(整型):整数数字 >>> a = 12 >>> a 12 >>> b = 12.3 ...

  5. ThreadLocal ——android消息机制handler在非主线程创建not called Looper.prepare() 错误的原因

    引用自:https://www.jianshu.com/p/a8fa72e708d3 引出: 使用Handler的时候,其必须要跟一个Looper绑定.在UI线程可直接初始化Handler来使用.但是 ...

  6. python:在for遍历list时使用remove出现的问题以及解析(转)

    原文地址:http://blog.csdn.net/circle2015/article/details/64444300最近面试时,面试官在纸上写了几行代码,说是很简单的问题,我看后直接懵逼...如 ...

  7. opencv版本的问题

    opencv版本的问题(由于我安装了两个版本opencv-2.4.9 and opencv-3.1.0),搜了相关问题,可以通过修改了CMakeList.txt解决此问题. 参考了这个博客:http: ...

  8. Oracle性能优化2- 依据场景选择技术

    1.索引的坏处 索引可以加快查询效率,但是使用不当,会造成插入性能很低 drop table test1 purge; drop table test2 purge; drop table test3 ...

  9. c#dev tabcontrol 与嵌套gridcontrol 总结

    Gridcontrol设置 1: 拖进去的时候别拖到tabcontrol外边, 否则dock 停靠的时候,停靠错了地方. 2:去掉Drag a column header here to group. ...

  10. 转easyui datagrid 前台分页的实现

    easyui datagrid 前台分页的实现java采用的版本 来源:本站原创 js知识 超过5,090人围观 暂无评论 使用easyui分页,有后台服务器端实现和前台浏览器端实现.服务器端实现按规 ...