是骡子是马是拉出来溜溜,通过《KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机》跑一遍,就会对KVM、QEMU-KVM有个大概的认识了。

qemu-kvm已经不单独存在,qemu加上-enable-kvm可以实现同样的功能。

关于不同CPU支持的硬件虚拟化技术,参考Processor_support

Intel: VT-x,在/proc/cpuinfo中对应vmx标识。
AMD:AMD-V,在/proc/cpuinfo中对应svm标识。
ARM:ARMv7-A的A15、A7、A17和ARMv8-A。

查看x86系列CPU支持硬件虚拟化情况:

egrep '(vmx|svm)' /proc/cpuinfo

Ubuntu下QEMU开发环境搭建

开始QEMU-KVM从QEMU fork一个分支开发qemu-kvm,后来都何如QEMU,并且fork的分支停止更新。官方WiKi

git clone git://git.qemu-project.org/qemu.git

  

获取qemu源文件由于此git存在问题,github.com有个QEMU mirror,其他相关bios文件亦可以在里面找到:

git clone https://github.com/qemu/qemu.git
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev

  

安装编译依赖文件

编译安装QEMU:

mkdir -p bin/debug/native
cd bin/debug/native
../../../configure --enable-debug

配置编译环境

make -j4  

开始编译

sudo make install  

安装

创建磁盘文件:

qemu-img create -o preallocation=metadata -f qcow2 images/centos.qcow2 60G

在虚拟机上安装操作系统:

qemu-system-x86_64 -smp 2 -m 2048 -enable-kvm images/centos.qcow2 -cdrom images/CentOS-7-x86_64-DVD-1611.iso -vnc :1

使用2个CPU,2048M内存,使用KVM虚拟化技术安装CentOS 7,开始安装CentOS。

安装gvncviewer,通过VNC查看界面:

gvncviewer 127.0.0.1:1

输出如下:

Connected to server
Remote desktop size changed to 640x480
Connection initialized
Remote desktop size changed to 720x400
Remote desktop size changed to 1024x768

启动虚拟机:

qemu-system-x86_64 -smp 2 -m 2048 -enable-kvm images/centos.qcow2 -vnc :1

一个简单的启动性能测试

背景:基于Host-Ubuntu Desktop 14.04启动Guest-Ubuntu Server 16.04。

4CPU 1G:

2CPU 2G RAM:

1CPU 1G RAM:

粗看结果貌似RAM不是瓶颈,CPU影响相对比较大一点。这也和systemd的并行启动特定吻合。

关于Linux虚拟化技术KVM的科普 科普一(先用起来!)的更多相关文章

  1. 关于Linux虚拟化技术KVM的科普

    虚拟化技术应用越来越广泛,虚拟化技术需求越来越强劲.KVM.XEN.Docker等比较热门,尤其是KVM技术越来越受欢迎. 基于此背景,了解一下KVM+QEMU就有点必要了. 从网上收集了一些资料进行 ...

  2. 关于Linux虚拟化技术KVM的科普 科普三(From OenHan)

    http://oenhan.com/archives,包括<KVM源代码分析1:基本工作原理>.<KVM源代码分析2:虚拟机的创建与运行>.<KVM源代码分析3:CPU虚 ...

  3. 关于Linux虚拟化技术KVM的科普 科普四(From humjb_1983)

    另一组关于KVM的分析文档,虚拟化相关概念.KVM基本原理和架构一-概念和术语.KVM基本原理和架构二-基本原理.KVM基本原理及架构三-CPU虚拟化.KVM基本原理及架构四-内存虚拟化.KVM基本原 ...

  4. 关于Linux虚拟化技术KVM的科普 科普五(From 世民谈云计算)

    另一位大神写到KVM文章,KVM 介绍(1):简介及安装.KVM 介绍(2):CPU 和内存虚拟化.KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtual ...

  5. Linux虚拟化技术KVM、QEMU与libvirt的关系(转)

    说明:个人理解,KVM是内核虚拟化技术,而内核是不能使用在界面上使用的,那么此时QEMU提供了用户级别的使用界面,相互辅助.当然,单独使用QEMU也是可以实现一整套虚拟机,不过QEMU+KVM基本是标 ...

  6. 关于Linux虚拟化技术KVM的科普 科普二(KVM虚拟机代码揭秘)

    代码分析文章<KVM虚拟机代码揭秘--QEMU代码结构分析>.<KVM虚拟机代码揭秘--中断虚拟化>.<KVM虚拟机代码揭秘--设备IO虚拟化>.<KVM虚拟 ...

  7. Linux的桌面虚拟化技术KVM(五)——virsh常用命令

    Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机 Linux的桌面虚拟化技术KVM(二)——远程桌面管理 Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照 Linux的桌面虚 ...

  8. Linux的桌面虚拟化技术KVM(四)——虚拟机镜像格式对比与转换

    Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机 Linux的桌面虚拟化技术KVM(二)——远程桌面管理 Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照 (1).常用镜像格 ...

  9. Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照

    Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机 Linux的桌面虚拟化技术KVM(二)——远程桌面管理 (1).KVM虚拟机克隆 KVM虚拟克隆命令virt-clone [选项] 常用选项 ...

随机推荐

  1. 【一天一道LeetCode】#6 ZigZag Conversion

    一天一道LeetCode系列 (一)题目 The string "PAYPALISHIRING" is written in a zigzag pattern on a given ...

  2. Spring--FileSystemXmlApplicationContext

    //从文件系统或者统一定位资源中获得上下文的定义 public class FileSystemXmlApplicationContext extends AbstractXmlApplication ...

  3. 第一个Polymer应用 - (3)使用数据绑定

    原文链接: Step 3: Using data binding翻译日期: 2014年7月7日翻译人员: 铁锚我们创建的个人信息卡还算漂亮,但对整个应用来说,只有一张卡片看起来有点空荡荡的感觉.在本节 ...

  4. PS 滤镜——Skewing

    %%%% Skewing clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorith ...

  5. TCP连接建立系列 — 服务端发送SYNACK段

    本文主要分析:服务器端如何构造和发送SYNACK段. 内核版本:3.6 Author:zhangskd @ csdn blog 发送入口 tcp_v4_send_synack()用于发送SYNACK段 ...

  6. C++语言之构造函数

    #include <iostream> using namespace std ; class Cat { public: char name[20]; void Say_Name(voi ...

  7. 面试之路(18)-java的函数参数传递类型之值传递还是引用传递

    关于这个问题争论了很久,最近也是偶然发现这个问题 经典名言: O'Reilly's Java in a Nutshell by David Flanagan (see Resources) puts ...

  8. vector向量容器的一些基本操作

    #include <vector> #include <iostream> using namespace std; void print(vector<int>& ...

  9. The 14th tip of DB Query Analyzer

      The 14th tip of DB Query Analyzer Ma Genfeng (Guangdong Unitoll Services incorporated, Guangzhou 5 ...

  10. NIO 多线程

    本文可看成是对Doug Lea Scalable IO in Java一文的翻译. 当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作.他们都有一个共同的 ...