Kvm  只支持x86 64的硬件虚拟化    要求cpu必须支持硬件虚拟化 HVM

Kvm两个组件:

1 kvm.ko模块装入后为/dev/kvm 工作为hypervisor ,在用户空间通过系统调用loctl()与内核中的kvm模块交互,从而完成虚拟机的创建,启动

2qemu-kvm进程:在用户空间用于实现IO设备模拟,用于实现一个虚拟机实例

Kvm架构

Virtio:开源的半虚拟化解决方案

KSM:扫描内存,如发现有多个虚拟机实例的内存有共同的数据内存空间,将其合唯一(用的不多)

Kvm管理工具

1 使用qemu-kvm管理kvm

qemu:

  处理器模拟器

仿真各IO设备

将仿真设备连接至主机的物理设备

提供用户接口

想命令使用qemu  创建链接 ln   -sv   /usr/libexec/qemu-kvm    /usr/bin

Qemu-kvm

  -machine [type=]name:-machine help来获取列表,用于指定模拟的主机类型;

  -cpu cpu:-cpu help来获取列表;用于指定要模拟的CPU型号;

  -smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]:指明虚拟机上vcpu的数量及拓扑;

  -boot [order=drives][,once=drives][,menu=on|off] [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]

order:各设备的引导次序:c表示第一块硬盘,d表示第一个光驱设备;-boot order=dc,once=d

  -m megs:虚拟机的内存大小;

  -name NAME:当前虚拟机的名称,要惟一;

块设备相关的选项:

  -hda/-hdb file:指明IDE总线类型的磁盘映射文件路径;第0和第1个;

-hdc/-hdd file:第2和第3个;

-cdrom file:指定要使用光盘映像文件;

  -drive [file=file][,if=type][,media=d][,index=i][,cache=writethrough|writeback|none|directsync|unsafe][,format=f]:

  file=/PATH/TO/SOME_IMAGE_FILE:映像文件路径;

  if=TYPE:块设备总线类型,ide, scsi, sd, floppy, virtio,...

media=TYPE:介质类型,cdrom和disk;

index=i:设定同一类型设备多个设备的编号;

  cache=writethrough|writeback|none|directsync|unsafe:缓存方式;

format=f:磁盘映像文件的格式;

显示选项:

  -display type:显示的类型,sdl, curses, none和vnc;

  -nographic:不使用图形接口;

  -vga [std|cirrus|vmware|qxl|xenfb|none]:模拟出的显卡的型号;

  -vnc display[,option[,option[,...]]]]:启动一个vnc server来显示虚拟机接口; 让qemu进程监听一个vnc接口;

display:

(1) HOST:N

在HOST主机的第N个桌面号输出vnc;

5900+N

(2) unix:/PATH/TO/SOCK_FILE

(3) none

options:

password:连接此服务所需要的密码;

-monitor stdio:在标准输出上显示monitor界面;

Ctrl-a, c:在console和monitor之间切换;

Ctrl-a, h

模拟:

网络选项:

-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]

为虚拟机创建一个网络接口,并将其添加至指定的VLAN;

model=type:指明模拟出的网卡的型号,ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio

创建个磁盘影像文件:

qemu-img   create  -f   qcow2  -o  perallocation=metadate,size=80g   /vms/centos/centos.img

创建虚拟网络:

创建虚拟网卡,都是成对出现的一个在虚拟机上,另一个添加到桥上这样就可以通信了

ip  link  add  vethm.1  type veth  peer  name  vethm.2

ip  link  show   显示

ip  link  del  vethx.1  type  veth  peer  name  vethx.2   删除

这里可以模拟个空间,然后将一个网卡放进去

ip  netns   add  router1    创建

ip   netns   list     查看

ip  link  set   dev  vethm.2  netns  router1    vethm.2 添加 router1 中

在router1 中查看

ip netns  exec  router1  ifconfig  -a

配置 ip 后激活就可以通信了

一般虚拟机都会将另一个网卡添加到桥中

brctl  show    显示

创建一个桥:brctl   addbr    br-int

Ifconfig    br-int   up     激活

脚本:

#!/bin/bash

Bridge=br-int

If  [ -n  “$1” ]; then

Ip   link  set  $1  up

Sleep  1

Brctl   addif  $bridge   $1

[ $?  -eq  0]  &&  exit 0 ||  exit 1

Else

Echo  “no  interface  specified”

Exit 2

Fi

启动虚拟机实例:

#qemu-kvm  -name  c1  -m  256  -smp  2  -drive  file=/vms/ cirros1.img,media=disk,if=virtio,format=qcow2   -net  nic,model=virtio,macaddr=52:54:00:00:00  -net  tap,script=/etc/qemu-ifup   -vnc  :0  -daemonize

再起一个

~]# qemu-kvm  -name  c2  -m  256  -smp  2  -drive  file=/vms/cirros/cirros1.img,media=disk,if=virtio,format=qcow2   -net  nic,model=virtio,macaddr=52:54:00:00:01  -net  tap,script=/etc/qemu-ifup   -vnc  :2  -daemonize

此时看在桥中关联了两个网卡tap01  tap02

# vncviewer  :0 &    进入虚拟机

基于net与外面交互

打开核心转发:sysctl  -w   net.ipv4.ip_forward=1

在虚拟机中,指定网关  :route  add  default   gw  10.1.1.254

iptables -t nat –vnL

ping  进行抓包发现是宿主机在访问

tcpdump   -i  ens33  icmp

如何将外面服务器连接到虚拟机,添加dnat规则

Iptables   -t  nat  -A  preroutung   -d  172.16.0.67  -p  tcp   --dport  22922   -j  DNAT  --to  destination  10.1.1.1:22

#ssh  -p  22922  root@172.16.0.67

Dnsmasq   是一个轻量级的dns和dhcp服务器

#dnsmasq   -i  br-int  -F  10.1.1.11,10.1.1.100  -o  3,10.1.1.254

kvm虚拟化2-qemu-kvm的更多相关文章

  1. [Virtualization][qemu][kvm][virtio] 使用 QEMU/KVM 模拟网卡多队列

    序: 做DPDK例子的时候,发现一些例子需要多队列,而我当前所使用的虚拟机并不是多队列的.关于我当前虚拟机的状态,可以见前文. 所以,我的需求就是,让虚拟机里的网卡,有多队列! 参考: http:// ...

  2. KVM虚拟化技术

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

  3. KVM虚拟化环境准备

    1. 概述2. 环境准备2.1 硬件环境2.2 软件环境2.2.1 YUM安装软件包2.2.2 环境检查2.2.3 启动libvirtd服务2.3 网络环境2.3.1 复制网卡配置文件2.3.2 修改 ...

  4. KVM虚拟化概述与安装

    虚拟化是构建云计算基础架构不可或缺的关键技术之一,云计算的云端系统,其实质上就是一个大型的KVM分布式系统,虚拟化通过在一个物理平台上虚拟出更多的虚拟平台,而其中的每一个虚拟平台则可以作为独立的终端加 ...

  5. QEMU KVM Libvirt(12): Live Migration

    由于KVM的架构为 Libvirt –> qemu –> KVM 所以对于live migration有两种方式,一种是qemu + KVM自己的方式,一种是libvirt的方式,当然li ...

  6. [原] KVM 虚拟化原理探究(2)— QEMU启动过程

    KVM 虚拟化原理探究- QEMU启动过程 标签(空格分隔): KVM [TOC] 虚拟机启动过程 第一步,获取到kvm句柄 kvmfd = open("/dev/kvm", O_ ...

  7. KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  8. Qemu/kvm虚拟化源码解析学习视频资料

    地址链接:tao宝搜索:Linux云计算KVM Qemu虚拟化视频源码讲解+实践​https://item.taobao.com/item.htm?ft=t&id=646300730262 L ...

  9. [原] KVM 虚拟化原理探究(1)— overview

    KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...

  10. [原] KVM 虚拟化原理探究 —— 目录

    KVM 虚拟化原理探究 -- 目录 标签(空格分隔): KVM KVM 虚拟化原理探究(1)- overview KVM 虚拟化原理探究(2)- QEMU启动过程 KVM 虚拟化原理探究(3)- CP ...

随机推荐

  1. 【LOJ6074】【2017 山东一轮集训 Day6】子序列 DP

    题目描述 有一个由前 \(m\) 个小写字母组成的串 \(S\),有 \(q\) 个询问,每次给你 \(l,r\),问你 \(S_{l\ldots r}\) 有多少个非空子序列. \(m=9,n=\l ...

  2. Addrss already in user 解决方案 (linux)

    Addrss already  in user 解决方案 查pid netstat -lptu 查看当前用户的进程 pid kill -9 pid 杀进程 重复上面步骤一次, 因为一遍杀不死.他会换一 ...

  3. Hdoj 1847.Good Luck in CET-4 Everybody! 题解

    Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载 ...

  4. Dubbo2.6.5入门——管控台的安装

    首先去下载管控台:GitHub 然后解压到本地,截止到目前2019-01-18,最新管控台基于Dubbo2.7.0-SNAPSHOT版本,但是2.7.0还没有正式发布,不过影响不大. Dubbo Op ...

  5. CMDB服务器管理系统【s5day91】:数据库表结构补充

    1.表机构补充图 2.用户信息表(UserProfile) 1.解决了什么问题 1.这台服务器是谁管理的?2.真正出问题了我敢上去改代码了?不能3.所以一台机器必须有运维人员和业务负责人,但是业务负责 ...

  6. Python通过分页对数据进行展示

    # 通过分页对数据进行展示 """ 要求: 每页显示10条数据 让用户输入要查看的页面:页码 """ USER_LIST = [] for ...

  7. A fine property of the convective terms of axisymmetric MHD system, and a regularity criterion in terms of $\om^\tt$

    In [Zhang, Zujin; Yao, Zheng-an. 3D axisymmetric MHD system with regularity in the swirl component o ...

  8. [物理学与PDEs]第1章第6节 电磁场的标势与矢势 6.3 例 --- 电偶极辐射

    1. 偶极子: 相距为 $l$, 带电量分别为 $\pm q$ 的一对电荷组成的系统. 称 $$\bex {\bf m}=q{\bf l} \eex$$ 为电偶极矩, 其中 ${\bf l}$ 为 $ ...

  9. CDQ分治求不知道多少维偏序 (持续更新 ]

    求三维偏序的模板 : //Author : 15owzLy1 //luogu3810.cpp //2018 12 25 16:31:58 #include <cstdio> #includ ...

  10. JQuery EasyUI 初始

    基于jQuery的用户界面插件集合 1. jQuery easyui提供了一个完整的组件的集合,包括强大的DataGrid,树网格,面板.用户可以使用他们一起,或者只是用一些组件,组合和构建他想要的跨 ...