kvm介绍

一、KVM的历史

Kvm在2007年2月正式合并Linux2.6.20核心中,成为内核源代码的一部分。2008年9月4日,RedHat公司收购了Qumranet,开始在RHEL中用kvm取代Xen,第一包kvm的版本的是RHEL5.4。从RHEL6开始,kvm成为默认的虚拟化引擎。Kvm必须在具备IntelT或AMD-V功能的X86平台上运行。它也被移植到S/390、PowerPC与IA-64平台上。在Linux内核3.9版中,加入了对ARM架构的支持。

二、KVM的架构

KVM的架构非常简单,它其实就是一个内核的模块,用户空间通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机就是一个普通的Linux进程,通过对这个进程管理,就可以完成对虚拟机的管理。

三、QEMU与KVM

QEMU是一个开源项目,实际上是一台硬件模拟器,可以在其它平台上运行Linux程序,可以存储及还原虚拟机运行状态,还可以虚拟多种设备,包括网卡、多CPU、IDE设备、软驱、显卡、声卡、多种并口设备、多种串口设备、多种USB设备、PC喇叭、PS/2键盘鼠标(默认)和USB键盘鼠标、蓝牙设备。

QEMU的优点是因为纯软件模拟,所以可以在支持的平台模拟支持的设备。它的缺点也是因为纯软件模拟,所以非常慢。

KVM是一个内核模块,没有用户空间和管理工具,KVM的虚拟机可以借助QEMU的管理工具来管理。QEMU也可以借助KVM来加速,提升虚拟机的性能。

四、Libvirt与KVM

Libvirt的设计目标是通过相同的方式管理不同的虚拟化引擎,比如KVM、Xen、HyperV、VMware ESX等。但是目前实际上多数场景使用Libvirt的是KVM,而Xen、HyperV、VMware ESX都有各自的管理工具。

Libvirt可以实现对虚拟机的管理,比如虚拟机的创建、启动、关闭、暂停、恢复、迁移、销毁,以及虚拟机网卡、硬盘、CPU、内存等多种设备的热添加。

配置安装

一、 操作系统最小化安装并关闭SELinux、Network Manager和防火墙,并配置主机名、IP地址、DNS解析

[root@kvm-server ~]# uname -a
Linux kvm-server 3.10.-.el7.x86_64 # SMP Thu Nov :: UTC x86_64 x86_64 x86_64 GNU/Linux
[root@kvm-server ~]# cat /etc/redhat-release
CentOS Linux release 7.2. (Core)
[root@kvm-server ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@kvm-server ~]# setenforce
[root@kvm-server ~]# systemctl stop NetworkManager
[root@kvm-server ~]# systemctl disable NetworkManager
[root@kvm-server ~]# systemctl stop firewalld
[root@kvm-server ~]# systemctl disable firewalld

二、安装阿里源EPEL源

[root@kvm-server ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

三、安装常用命令

[root@kvm-server ~]# yum install net-tools vim lrzsz tree screen lsof tcpdump nc mtr nmap openssl-devel ntpdate sysstat -y

四、查看CPU虚拟化是否打开(能过滤到内容表示开启)

[root@kvm-server ~]# egrep '(vmx|svm)' /proc/cpuinfo

五、安装KVM软件包

[root@kvm-server ~]# yum install qemu-kvm libvirt virt-install -y

六、启动libvirtd服务

[root@kvm-server ~]# systemctl start libvirtd
[root@kvm-server ~]# systemctl enable libvirtd

七、检查是否安装成功、KVM模块是否载入成功、KVM是否安装成功

[root@kvm-server ~]# rpm -qa | egrep 'qemu-img|libvirt-[1-9]|virt-install'
libvirt-3.9.-.el7_5..x86_64
qemu-img-1.5.-.el7_5..x86_64
virt-install-1.4.-.el7.noarch
[root@kvm-server ~]# lsmod |grep kvm
kvm_intel
kvm kvm_intel
[root@kvm-server ~]# virsh -c qemu:///system list
Id Name State
----------------------------------------------------

八、启动libvirtd后会自动创建一个桥接网卡virbr0

[root@kvm-server ~]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 .5254008deb7b yes virbr0-nic
[root@kvm-server ~]# ifconfig virbr0
virbr0: flags=<UP,BROADCAST,MULTICAST> mtu
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether :::8d:eb:7b txqueuelen (Ethernet)
RX packets bytes (0.0 B)
RX errors dropped overruns frame
TX packets bytes (0.0 B)
TX errors dropped overruns carrier collisions

九、手动配置桥接网络

[root@kvm-server ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  #修改ifcfg-eth0配置文件
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
[root@kvm-server ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 #修改ifcfg-br0配置文件
TYPE="Bridge"
BOOTPROTO="static"
DEVICE="br0"
ONBOOT="yes"
IPADDR=192.168.12.11
NETMASK=255.255.255.0
GATEWAY=192.168.12.2
[root@kvm-server ~]# systemctl restart network #重启网络服务
[root@kvm-server ~]# ifconfig #查看IP是否在br0之上
br0: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.12.11 netmask 255.255.255.0 broadcast 192.168.12.255
inet6 fe80::20c:29ff:fe47:9adf prefixlen scopeid 0x20<link>
ether :0c:::9a:df txqueuelen (Ethernet)
RX packets bytes (14.3 KiB)
RX errors dropped overruns frame
TX packets bytes (15.7 KiB)
TX errors dropped overruns carrier collisions eth0: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
ether :0c:::9a:df txqueuelen (Ethernet)
RX packets bytes (134.8 MiB)
RX errors dropped overruns frame
TX packets bytes (3.6 MiB)
TX errors dropped overruns carrier collisions lo: flags=<UP,LOOPBACK,RUNNING> mtu
inet 127.0.0.1 netmask 255.0.0.0
inet6 :: prefixlen scopeid 0x10<host>
loop txqueuelen (Local Loopback)
RX packets bytes (7.6 KiB)
RX errors dropped overruns frame
TX packets bytes (7.6 KiB)
TX errors dropped overruns carrier collisions virbr0: flags=<UP,BROADCAST,MULTICAST> mtu
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether :::8d:eb:7b txqueuelen (Ethernet)
RX packets bytes (0.0 B)
RX errors dropped overruns frame
TX packets bytes (0.0 B)
TX errors dropped overruns carrier collisions [root@kvm-server ~]# route -n #查看路由表
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.12.2 0.0.0.0 UG br0
169.254.0.0 0.0.0.0 255.255.0.0 U br0
192.168.12.0 0.0.0.0 255.255.255.0 U br0
192.168.122.0 0.0.0.0 255.255.255.0 U virbr0
[root@kvm-server ~]# brctl show #查看br0桥接网络
bridge name bridge id STP enabled interfaces
br0 .000c29479adf no eth0
virbr0 .5254008deb7b yes virbr0-nic

十、安装virt-manager图形化管理工具

[root@kvm-server ~]# yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts -y      #安装图形化界面
[root@kvm-server ~]# yum install virt-manager tigervnc tigervnc-server libguestfs-tools -y #安装virt-manager图形化管理工具、vnc连接工具、磁盘管理工具
[root@kvm-server ~]# vncserver You will require a password to access your desktops. Password: #设置连接VNC的密码
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:
xauth: file /root/.Xauthority does not exist
xauth: (stdin):: bad display name "kvm-server:1" in "add" command New 'kvm-server:1 (root)' desktop is kvm-server: Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/kvm-server:.log

[root@kvm-server ~]# netstat -lntp | grep vnc                                                   #5901为VNC服务所监听端口
  tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 2216/Xvnc
  tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 2216/Xvnc
  tcp6 0 0 :::5901 :::* LISTEN 2216/Xvnc
  tcp6 0 0 :::6001 :::* LISTEN 2216/Xvnc

十一、VNC客户端连接

十二、创建第一台虚拟机

[root@kvm-server ~]# qemu-img create -f raw /opt/CentOS-7.2-x86_64.raw 40G
Formatting '/opt/CentOS-7.2-x86_64.raw', fmt=raw size=
[root@kvm-server ~]# virt-install --name CentOS-7.2-x86_64 --virt-type kvm --ram --cdrom=/opt/CentOS-7.2-x86_64-DVD-.iso --disk path=/opt/CentOS-7.2-x86_64.raw --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
[root@kvm-server ~]# netstat -lntp | grep qemu-kvm
tcp 0.0.0.0: 0.0.0.0:* LISTEN /qemu-kvm

端口默认是从5900开始的,60s以内进行连接。

十三、虚拟机的管理可以使用virt-manager,直接在vnc界面运行virt-manager命令即可。

总结

此方法适用于KVM服务器和虚拟机同在一个网段的环境下。

KVM虚拟化的安装的更多相关文章

  1. KVM虚拟化主机安装

    KVM虚拟化主机安装 最小化安装CentOS6.X或者CentOS7.X,RHEL6.X以上系列建议建议选择安装最小虚拟化主机 如果要安装桌面可以先选择最小化虚拟主机,再选择Gnome桌面包 安装过程 ...

  2. kvm虚拟化学习笔记(一)之kvm虚拟化环境安装

    平时一直玩RHEL/CentOS/OEL系列的操作,玩虚拟化也是采这一类系统,kvm在RHEL6系列操作系统支持比较好,本文采用采用OEL6.3操作系统,网上所有文章都说KVM比xen简单,我怎么感觉 ...

  3. KVM虚拟化环境安装随笔

    1. KVM由来 KVM:Kernel-based Virtual Machine 2.软件说明 libvirt  作用:虚拟机的管理软件 virt   virt-install virt-clone ...

  4. kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  5. kvm虚拟化学习笔记(二)之linux kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  6. kvm虚拟化关闭虚拟网卡virbr0的方法

    我们知道:kvm虚拟化环境安装好后,ifconfig会发现多了一个虚拟网卡virbr0这是由于安装和启用了libvirt服务后生成的,libvirt在服务器(host)上生成一个 virtual ne ...

  7. kvm虚拟化管理平台WebVirtMgr部署-完整记录(0)

    打算部署kvm虚拟机环境,下面是虚拟化部署前的一些准备工作: 操作系统环境安装1)修改内核模式为兼容内核启动[root@ops ~]# uname -aLinux openstack 2.6.32-4 ...

  8. KVM虚拟化学习笔记系列文章列表(转)

    Kernel-based Virtual Machine KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之k ...

  9. kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

随机推荐

  1. GPU性能:光栅化、图层混合、离屏渲染

    So, shouldRasterize will not affect the green/red you see using Instruments. In order to have everyt ...

  2. HTML的CoreText流畅度超过WebView。CoreText第三方框架DTCoreText的介绍

    为什么要用CoreText(富文本)来取代WebView去显示内容.主要的原因就WebView有很大的问题,性能,FPS,卡顿,与原生不搭.这些都是大问题. WebView的缺点 1.直接使用WebV ...

  3. 一句话解释:C2C / B2C / O2O / B2B

    C2C (Customers To Customers):个人到个人,就是我卖东西你来买B2C (Business To Customers):公司到个人,就是我成立个公司卖东西,你来买O2O (On ...

  4. 23、springboot与缓存(1)

    一.JSR107 Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry. 1.CachingPro ...

  5. [转]浅谈利用SQLite存储离散瓦片的思路和实现方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在多个项目中涉及到互联网地图的内网显示,通过自制工具完成了互联 ...

  6. JDK(一)JDK集合框架

    JDK中的集合框架分为两大类:Collection和Map.Collection以一组Object的形式保存元素,Map以Key-Value对的形式保存元素. 上图列出的类并不完整,只列举了平时比较常 ...

  7. 404 Note Found队 Alpha7

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  8. Linux Shell常用技巧(十)

    二十. 通过管道组合Shell命令获取系统运行数据:  1.  输出当前系统中占用内存最多的5条命令:    #1) 通过ps命令列出当前主机正在运行的所有进程.    #2) 按照第五个字段基于数值 ...

  9. Apache2.4.34 + php 7.28 + MySQL8.0.12 安装及配置

    服务端的学习 Apache2.4.34 的安装及配置 1.基本安装 最新的 Apache 已经不提供 Windows 的安装版本,所以我们这里使用的是解压版 -下载地址:https://www.apa ...

  10. mpvue微信小程序开发随笔

    mpvue上手很快,学习成本低,目前是开源的,适合技术实力不是很强的公司采用. spring boot 做后台,开发效率杠杠的.建议会java的开发尽量使用spring boot 开发,省事. 最近用 ...