云计算与虚拟化工具之KVM

云计算与虚拟化工具之KVMhtml

云计算与虚拟化工具之KVM

云计算
时间:2016年10月27日
node

由于不少人会将云计算和虚拟化弄混,我下面为你们介绍一下mysql

  云计算指的是资源使用和交互的一种模式   虚拟化指的是技术,能够将物理计算机虚拟成多个逻辑计算机(VMware)
   他俩是彼此独立,互不影响,可是云计算又须要使用虚拟化技术。咱们也能够说成云计算包含虚拟化,他们两个是没法相比较的。linux

若是咱们不想使用KVM,也可使用LXD来替代KVM虚拟化技术ios

拓展知识:

LXD是容器虚拟化技术,能够用来替代KVM。测试的性能是远远的超过KVM,它是lxc管理工具来实现的。LXD是一个完整的操做系统
   相关文章连接请点我
LXC是容器是一种内核虚拟化技术。
   相关文章连接请点我
LXCFS主要是用做docker隔离,例如咱们执行uptime,出来的时间是物理机的而不是容器里面的proc下面的文件docker是没法隔离的,咱们可使用LXCFS技术进行隔离
   相关文章连接请点我web


云计算介绍

传统数据中心面临的问题:算法

资源利用率低
资源分配不合理
自动化能力差
初始成本高

IDC托管传统流程:买台机器-放到IDC-安装系统-部署应用-买个域名-绑定上去-对外访问-ICP备-ICP证-文网文sql

1、云计算是什么?

云计算是一种模式云计算必须经过网络来使用弹性计算、按需付费、快速扩展 (VPS就没法作到)不须要关心太多基础设施,都有云计算提供商提供

2、云计算分类

私有云 解释:私有云就是本身构建一个云计算平台
公有云 解释:公有云提供商来进行提供云计算服务
混合云 解释:既有私有云又包含公有云

提示:如今私有云在国内比较火docker

3、云计算分层

提示:有了云计算之后,下面绿色的才是咱们须要维护的shell

三种不一样的场景
1.IDC环境  须要考虑网络、服务器、机房位置、带宽等,都须要考虑
2.基础设施环境  平台级别,相似于阿里云的ces 提供一个平台 服务是咱们本身搭建的
3.平台环境  软件级别相似于腾讯企业邮箱,只须要买用户就能够安全措施腾讯有提供服务
1.jpg-101.4kB
        2.jpg-35.2kB

云计算是一种资源经过网络交互的一种模式,同时这个资源要具备弹性扩展按需付费等特性
提示:如今大多数互联网基本上都是SaaS只卖服务不卖产品

4、什么是KVM?

KVM是内核级虚拟化技术
KVM全称Kernel-based Virtual Machine
3.jpg-33.3kB
4.jpg-35.1kB
提示:在虚拟化中,每台系统之间都是不会相互影响的。

5、虚拟化分类

1.硬件虚拟化 硬件虚拟化表明:KVM
 2.软件虚拟化 软件虚拟化表明:Qemu

提示:硬件虚拟化是须要CPU支持,若是CPU不支持将没法建立KVM虚拟机

6、虚拟化技术

 全虚拟化:全虚拟化表明有:`KVM` 半虚拟化:半虚拟化表明有:`Hypervisor`针对`IO层面半虚拟化`要比全虚拟化要好,由于`磁盘IO`多一层一定会慢。通常说IO就是网络IO和磁盘IO 由于这两个相对而言是比较`慢`的  提示: Qemu和KVM的最大区别就是,若是一台物理机内存直接4G,建立一个vm虚拟机分配内存分4G,在建立一个还能够分4G。支持超配,可是qemu不支持

7、虚拟化使用场景分类

服务器虚拟化:解决资源利用率低的问题
桌面虚拟化:有一些弊端,图形显示层面会有问题
应用虚拟化:没接触过,公司比较穷买不起,基本上只有银行等国企才会用`**Xenapp  ICA

8、虚拟化工具KVM介绍

KVM 全称Kernel-based Virtual Machine内核级虚拟化机器
  本来由以色列人建立,如今被红帽收购
ESXI 虚拟套件,如今是无偿使用
VMware vSphere Hypervisor – 安装和配置
提示:一台服务器首选ESXI

9、KVM安装

调整虚拟机
1.png-84.6kB
虚拟化Intel使用的是intel VT-X  AMD使用的是AMD-V

建立虚拟机步骤
1.准备虚拟机硬盘
2.须要系统iso镜像
3.须要安装一个vnc的客户端来链接

查看系统环境

[root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@linux-node1 ~]# uname -r3.10.0-327.36.2.el7.x86_64

Centos7下载:http://pan.baidu.com/s/1c2MHsGg 密码:5w1u

检查是否有vmx或者svm

[root@linux-node1 ~]# grep -E '(vmx|svm)' /proc/cpuinfo flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt

安装kvm用户态模块

[root@linux-node1 ~]# yum list|grep kvmlibvirt-daemon-kvm.x86_64               1.2.17-13.el7_2.5              updates  pcp-pmda-kvm.x86_64                     3.10.6-2.el7                   base     qemu-kvm.x86_64                         10:1.5.3-105.el7_2.7           updates  qemu-kvm-common.x86_64                  10:1.5.3-105.el7_2.7           updates  qemu-kvm-tools.x86_64                   10:1.5.3-105.el7_2.7           updates  [root@linux-node1 ~]# yum install qemu-kvm qemu-kvm-tools libvirt -ylibvirt 用来管理kvmkvm属于内核态,不须要安装。可是须要一些相似于依赖的

启动

[root@linux-node1 ~]# systemctl start libvirtd.service[root@linux-node1 ~]# systemctl enable libvirtd.service

启动以后咱们可使用ifconfig进行查看,libvirtd已经为咱们安装了一个桥接网卡

[root@linux-node1 ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 192.168.56.11  netmask 255.255.255.0  broadcast 192.168.56.255        inet6 fe80::20c:29ff:fef4:affe  prefixlen 64  scopeid 0x20<link>        ether 00:0c:29:f4:af:fe  txqueuelen 1000  (Ethernet)        RX packets 34379  bytes 41300995 (39.3 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 11590  bytes 1384679 (1.3 MiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10<host>        loop  txqueuelen 0  (Local Loopback)        RX packets 103  bytes 7866 (7.6 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 103  bytes 7866 (7.6 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255        ether 52:54:00:f6:bd:c9  txqueuelen 0  (Ethernet)        RX packets 0  bytes 0 (0.0 B)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 0  bytes 0 (0.0 B)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

libvirtd为咱们启动了一个dnsmasqp,这个主要是用来dhcp链接的,这个工具会给咱们的虚拟机分配IP地址

[root@linux-node1 ~]# ps -ef|grep dnsnobody     5233      1  0 14:27 ?        00:00:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelperroot       5234   5233  0 14:27 ?        00:00:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelperroot       5310   2783  0 14:31 pts/0    00:00:00 grep --color=auto dns

查看磁盘空间大小
  最好是20G以上

[root@linux-node1 tmp]# df -hFilesystem               Size  Used Avail Use% Mounted on/dev/mapper/centos-root   48G  1.7G   46G   4% /devtmpfs                 1.9G     0  1.9G   0% /devtmpfs                    1.9G     0  1.9G   0% /dev/shmtmpfs                    1.9G  8.6M  1.9G   1% /runtmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup/dev/sda1                497M  167M  330M  34% /boottmpfs                    378M     0  378M   0% /run/user/0

上传镜像
提示:若是使用rz上传镜像可能会出现错误,因此咱们使用dd命令,复制系统的镜像。只须要挂载上光盘便可

[root@linux-node1 opt]# dd if=/dev/cdrom of=/opt/CentOS-7.2.iso[root@linux-node1 opt]# lltotal 33792-rw-r--r-- 1 root root 34603008 Jun 12 18:18 CentOS-7.2-x86_64-DVD-1511.iso

下载VNC
下载地址:http://www.tightvnc.com/download/2.8.5/tightvnc-2.8.5-gpl-setup-64bit.msi
安装完VNC以下图
2.png-22.9kB
3.png-105.1kB

建立磁盘
提示: qemu-img软件包是咱们安装qemu-kvm-tools 依赖给安装上的

[root@linux-node1 opt]# qemu-img create -f raw /opt/CentOS-7.2-x86_64.raw 10GFormatting '/opt/Centos-7-x86_64.raw', fmt=raw size=10737418240 [root@linux-node1 opt]# [root@linux-node1 opt]# ll /opt/Centos-7-x86_64.raw -rw-r--r-- 1 root root 10737418240 Oct 26 14:53 /opt/Centos-7-x86_64.raw-f 制定虚拟机格式,raw是裸磁盘/opt/Centos  存放路径10G 表明镜像大小

安装启动虚拟机的包

[root@linux-node1 tmp]# yum install -y virt-install

安装虚拟机
 可使用—help查看相关存储

[root@linux-node1 tmp]# virt-install --help咱们能够指定虚拟机的CPU、磁盘、内存等

安装虚拟机

[root@linux-node1 opt]# virt-install --name CentOS-7.2-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.2.iso --disk path=/opt/CentOS-7.2-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole--name = 给虚拟机起个名字--ram = 内存大小--cdrom = 镜像位置,就是咱们上传iso镜像的位置,我放在/tmp下了--disk path = 指定磁盘--network network= 网络配置 default 就会用咱们刚刚ifconfig里面桥接的网卡--graphics vnc,listen= 监听vnc,

默认链接端口是从5900开始的

[root@linux-node1 tmp]# netstat -lntupActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2036/mysqld         tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      5767/qemu-kvm       tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      4401/rpcbind        tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      1163/epmd           tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      5233/dnsmasq        tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1105/sshd           tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      1101/beam           tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1701/master         tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      1101/beam           tcp6       0      0 :::111                  :::*                    LISTEN      4401/rpcbind        tcp6       0      0 :::4369                 :::*                    LISTEN      1163/epmd           tcp6       0      0 :::22                   :::*                    LISTEN      1105/sshd           tcp6       0      0 ::1:25                  :::*                    LISTEN      1701/master         tcp6       0      0 :::5672                 :::*                    LISTEN      1101/beam           udp        0      0 192.168.122.1:53        0.0.0.0:*                           5233/dnsmasq        udp        0      0 0.0.0.0:67              0.0.0.0:*                           5233/dnsmasq        udp        0      0 0.0.0.0:111             0.0.0.0:*                           4401/rpcbind        udp        0      0 0.0.0.0:123             0.0.0.0:*                           866/chronyd         udp        0      0 127.0.0.1:323           0.0.0.0:*                           866/chronyd         udp        0      0 0.0.0.0:760             0.0.0.0:*                           4401/rpcbind        udp6       0      0 :::111                  :::*                                4401/rpcbind        udp6       0      0 ::1:323                 :::*                                866/chronyd         udp6       0      0 :::760                  :::*                                4401/rpcbind

提示:由于vnc默认是从5900开始的,因此咱们若是是第一台不须要输入端口号

4.png-23.2kB

安装界面以下:
5.png-13.7kB
由于centos7 默认网卡发生改变,咱们须要修改内核参数,使用eth0做为网卡
6.png-15.1kB
光标移动到Install CentOS上,按tab键 输入net.ifnames=0 biosdevname=0 回车

分区说明
提示:咱们不分交换分区,由于公有云上的云主机都是没有交换分区的
7.png-25.2kB

分区以下:
8.png-126.2kB
而后咱们点击Done
本次分配分区按照10G内存进行分配
分配标准分区
9.png-102.7kB
10.png-122kB
11.png-108.5kB
12.png-300kB
舒适提示:在虚拟机的世界里,越简单越好。像阿里云系统分区之前是给20个G,如今是给40个G
 装系统步骤不详细说明了,过于简单,请自行百度

虚拟机安装完成后是关闭了,咱们须要启动

[root@linux-node1 ~]# virsh list --all[root@linux-node1 ~]# virsh start CentOS-7.2-x86_64#CentOS-7.2-x86_64 是虚拟机的名字,是咱们建立的时候定义的

启动以后将虚拟机网络进行修改
13.png-24kB
重启/etc/init.d/network restart 或者systemctl restart network
14.png-15kB
咱们还须要修改一下DNS
15.png-25.5kB
如今咱们就能够安装软件包了
16.png-10.3kB
咱们启动的这个虚拟机在宿主机上显示这只是一个进程
17.png-84.6kB
提示:只有虚拟机启动才可使用vnc进行链接

10、Libvirt介绍

libvirt是一个开源免费管理工具,能够管理KVMVMware
他须要起一个后台的进程,它提供了API。像openstack就是经过libvirt API来管理虚拟机
5.jpg-78.8kB
像咱们virt-install 等命令底层都是经过libvirt来完成的

[root@linux-node1 ~]# ll /etc/libvirt/qemutotal 4-rw------- 1 root root 3896 Oct 26 16:34 CentOS-7.2-x86_64.xmldrwx------ 3 root root   40 Oct 26 16:11 networks

  kvm虚拟机都是靠libvirt xml来定义的,咱们是没法对他进行修改的,可使用virsh edit CentOS-7.2-x86_64进行编辑
  
咱们能够查看一下配置文件,大多数都是能够看的懂的
1.png-54.4kB

KVM管理命令

[root@abcdocker ~]# virt-install  #创建kvm虚拟机[root@abcdocker ~]# virsh list  #查看正在运行的KVM虚拟机[root@abcdocker ~]# virsh list --all  #查看全部KVM虚拟机[root@abcdocker ~]# virsh start name   #启动KVM虚拟机[root@abcdocker ~]# virsh shutdown name #正常关闭KVM虚拟机[root@abcdocker ~]# virsh destroy name  #强制关闭KVM虚拟机(相似于直接断电)[root@abcdocker ~]# virsh suspend name  #挂起KVM虚拟机[root@abcdocker ~]# virsh resume name  #恢复挂起的KVM虚拟机[root@abcdocker ~]# virsh dumpxml name  #查看KVM虚拟机配置文件[root@abcdocker ~]# virsh edit name  #编辑KVM虚拟机的xml配置文件[root@abcdocker ~]# virsh undefine name  #完全删除KVM虚拟机,不可逆,若是想找回来,须要备份/etc/libvirt/qemu的xml文件[root@abcdocker ~]# virsh snapshot-create name  #建立快照[root@linux-node1 ~]# virsh snapshot-create CentOS-7.2-x86_64error: unsupported configuration: internal snapshot for disk vda unsupported for storage type raw提示:kvm默认有一个镜像,咱们如今作的镜像只是虚拟机修改过的地方作的快照.raw磁盘格式没法进行快照.咱们在安装的时候须要修改成qcow2.具体介绍能够看下方io优化部分[root@abcdocker ~]# virsh snapshot-delete name  #删除快照[root@abcdocker ~]# virsh snapshot-dumpxml name    #导出XML[root@abcdocker ~]# virsh snapshot-list name     #查看快照[root@linux-node1 ~]# virsh snapshot-list CentOS-7.2-x86_64 Name                 Creation Time             State------------------------------------------------------------

11、KVM虚拟机配置

一、CPU设置

修改CPU的数量,咱们在建立的时候就能够指定cpu数量

[root@linux-node1 ~]# virt-install --help | grep cpu  --vcpus VCPUS         Number of vcpus to configure for your guest. Ex:                        --vcpus 5                        --vcpus 5,maxcpus=10,cpuset=1-4,6,8                        --vcpus sockets=2,cores=4,threads=2,  --cpu CPU             CPU model and features. Ex:                        --cpu coreduo,+x2apic                        --cpu host

修改CPU咱们只能修改虚拟机XML的配置

[root@linux-node1 ~]# head /etc/libvirt/qemu/CentOS-7.2-x86_64.xml <!--WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BEOVERWRITTEN AND LOST. Changes to this xml configuration should be made using:  virsh edit CentOS-7.2-x86_64or other application using the libvirt API.--><domain type='kvm'>  <name>CentOS-7.2-x86_64</name>  <uuid>9c00c23f-505e-4e77-9fcd-34c0c834fc8d</uuid>

这里已经提示咱们须要使用virsh edit CentOS-7.2-x86_64进行编辑修改

修改前
<vcpu placement='static'>1</vcpu>
如今是静态的,不能进行改变。 咱们修改成auto动态

<vcpu placement='auto' current="1">4</vcpu>Auto=静态Current=当前cpu数量4= 最大是4

动态修改不须要重启

[root@linux-node1 ~]# virsh setvcpus CentOS-7.2-x86_64 2 --live正常状况须要重启虚拟机,可是咱们可使用virsh setvcpus 使它动态获取2 表示cpu的个数

还可使用

[root@linux-node1 ~]# virsh shutdown CentOS-7.2-x86_64[root@linux-node1 ~]# virsh start CentOS-7.2-x86_64

效果图以下:

修改前
2.png-18.6kB
3.png-35.3kB

二、内存设置

  内存是咱们在安装的时候制做的,如今没法进行扩展,可是能够进行缩小。没法扩展的意思是咱们执行virsh –install分配内存多大在如何修改也不能够超过设定的这个数

修改内存为512

[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7.2-x86_64 --hmp --cmd balloon 512[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7.2-x86_64 --hmp --cmd #第一条命令是修改,第二条命令是查看

修改前
4.png-3.9kB

修改后
5.png-13.6kB
恢复

[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7.2-x86_64 --hmp --cmd balloon 1024[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7.2-x86_64 --hmp --cmd info balloon

6.png-7.9kB

提示: 因而可知内存修改能够是动态的,可是有一个缺点是不能高于咱们建立虚拟机的内存

三、硬盘设置

提示: 虚拟机磁盘支持扩容,可是生产不要使用。

Raw :全镜像模式,没法制做快照
Qcow2:稀疏模式,qcow2镜像格式是QEMU模拟器支持的一种磁盘镜像。它也是能够用一个文件形式来表示一块固定大小的块设备磁盘。
 与普通raw格式的镜像相比,有如下特征:

1.更小的空间占用,即便用文件系统不支持空洞(hosts)
2.支持写时拷贝(COW,copy-on-write),镜像文件只能反映底层磁盘的变化
3.支持快照(snapshot),镜像文件可以包含多个快照的历史
4.可选择基于zlib的压缩方式
5.能够选择AES加密

Raw和Qcow2区别:

1.Raw 性能会比Qcow2快,由于没有那么多的功能
2.Raw磁盘没法扩展,分配多大就占用多大
3.Qcow2就是动态的,你用多大就占多大
4.经过Raw能够转换其余格式

咱们可使用qemu-img info来查看镜像格式

[root@linux-node1 ~]# qemu-img info /opt/CentOS-7.2-x86_64.raw p_w_picpath: /opt/CentOS-7.2-x86_64.rawfile format: rawvirtual size: 10G (10737418240 bytes)disk size: 1.0G

转换格式

[root@linux-node1 ~]# qemu-img convert -f raw -O qcow2 /opt/CentOS-7.2-x86_64.raw test.qcow2

提示: 生产环境仍是不要使用,可能会形成数据丢失

-rw-r--r-- 1 qemu qemu 4.1G Oct 26 16:33 CentOS-7.2.iso-rw-r--r-- 1 qemu qemu  10G Oct 27 15:08 CentOS-7.2-x86_64.raw-rw-r--r-- 1 root root 1.1G Oct 27 15:12 test.qcow2

按照用多少占多少进行分配的

[root@linux-node1 opt]# qemu-img info test.qcow2 p_w_picpath: test.qcow2file format: qcow2virtual size: 10G (10737418240 bytes)disk size: 2.0Gcluster_size: 65536Format specific information:    compat: 1.1lazy refcounts: false

四、KVM网络设置

默认虚拟机网络模式是NAT,咱们能够看一下iptables

[root@linux-node1 ~]# iptables -L -nChain INPUT (policy ACCEPT)target     prot opt source               destination         ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67Chain FORWARD (policy ACCEPT)target     prot opt source               destination         ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHEDACCEPT     all  --  192.168.122.0/24     0.0.0.0/0           ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachableREJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachableChain OUTPUT (policy ACCEPT)target     prot opt source               destination         ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68

查看桥接网卡

[root@linux-node1 ~]# brctl showbridge name bridge id       STP enabled interfacesvirbr0      8000.52540012d483   yes     virbr0-nic                            vnet0

添加桥接网卡,由于DHCP会使咱们没法使用xshell进行管理,因此咱们将网卡变动为桥接网卡。.

[root@linux-node1 ~]# brctl addif br0 eth0添加br0并桥接到eth0上

如今br0已经和eth0关联起来
7.png-6.2kB

删除eth0的IP地址
8.png-2.3kB

配置网桥IP地址
10.png-3.2kB

如今已经能够链接上,没法出外网。缺乏路由

[root@linux-node1 ~]# ip ro li192.168.56.0/24 dev br0  proto kernel  scope link  src 192.168.56.11 192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1

添加路由,ping百度进行测试

[root@linux-node1 ~]# route add default gw 192.168.56.2[root@linux-node1 ~]# ping www.baidu.comPING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.64 bytes from 61.135.169.125: icmp_seq=1 ttl=128 time=9.52 ms^C--- www.a.shifen.com ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 9.529/9.529/9.529/0.000 ms

提示:kvm 桥接网卡和eth0只能一个有IP地址,这样才算是正常的结果

[root@linux-node1 ~]# ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 192.168.56.11  netmask 255.255.255.0  broadcast 192.168.56.255        inet6 fe80::20c:29ff:fef4:affe  prefixlen 64  scopeid 0x20<link>        ether 00:0c:29:f4:af:fe  txqueuelen 0  (Ethernet)        RX packets 251  bytes 18832 (18.3 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 157  bytes 19763 (19.2 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet6 fe80::20c:29ff:fef4:affe  prefixlen 64  scopeid 0x20<link>        ether 00:0c:29:f4:af:fe  txqueuelen 1000  (Ethernet)        RX packets 15047  bytes 1796201 (1.7 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 23525  bytes 1763895 (1.6 MiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0        inet6 ::1  prefixlen 128  scopeid 0x10<host>        loop  txqueuelen 0  (Local Loopback)        RX packets 108  bytes 8966 (8.7 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 108  bytes 8966 (8.7 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255        ether 52:54:00:12:d4:83  txqueuelen 0  (Ethernet)        RX packets 28  bytes 3842 (3.7 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 20  bytes 3615 (3.5 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet6 fe80::fc54:ff:fee2:1482  prefixlen 64  scopeid 0x20<link>        ether fe:54:00:e2:14:82  txqueuelen 500  (Ethernet)        RX packets 28  bytes 4234 (4.1 KiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 6677  bytes 350011 (341.8 KiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

如今里面的虚拟机还没法上网,咱们须要编辑虚拟机
[root@linux-node1 ~]# virsh edit CentOS-7.2-x86_64
修改前

    ...    <interface type='network'>      <mac address='52:54:00:e2:14:82'/>      <source network='default'/>      <model type='virtio'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>    </interface>    ...

修改后

    ...    <interface type='bridge'>      <mac address='52:54:00:e2:14:82'/>      <source bridge='br0'/>      <model type='virtio'/>      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/></interface>    ...#br0是桥接网卡的名字

如今咱们就须要重启虚拟机

[root@linux-node1 ~]# virsh list --all Id    Name                           State---------------------------------------------------- 2     CentOS-7.2-x86_64              running[root@linux-node1 ~]# virsh shutdown CentOS-7.2-x86_64[root@linux-node1 ~]# virsh start CentOS-7.2-x86_64

重启以后咱们须要修改虚拟机的网卡配置文件
11.png-14.9kB
修改完并重启,而后ping 网关ping百度查看是否能够ping通

提示:修改的是重启的虚拟机的网卡文件
如今咱们就可使用xshell进行链接了
12.png-26.7kB
13.png-32.5kB

12、KVM优化

KVM优化分为三个方面 CPU内存IO(磁盘)

CPU优化:

  Kvm是一个进程,是受cpu的调度,对于一个多口的cpu,进程会被调度到任何一个cpu上去。例如CPU缓存如今在1上面,进程被分配到2上面,那么就没法使用1的缓存就会遭成没法命中
  咱们可使用taskset来进行操做

[root@linux-node1 ~]# taskset -cp 0 8337pid 8337's current affinity list: 0-3#表示当前8337会在0-3CPU上调度pid 8337's new affinity list: 0#表示当前8337会在cpu0上进行调度8377 是进程号,经过ps -ef|grep kvm 来获取到-p pid 指定进程-c 指定cpu(能够写多个)

提示:能够减小开机miss,性能能够提升10%

内存优化

  内存须要优化的不多,可是须要开起Memory EPT。这个技术是在bios里面开通的。还须要设置内存的寻址,简单的来讲就是使用大页内存
  默认内存是分页的,一页是4096K.

[root@linux-node1 ~]# cat /proc/meminfoHugePages_Total:       0HugePages_Free:        0HugePages_Rsvd:        0HugePages_Surp:        0Hugepagesize:       2048 kB

内存合并技术
  咱们操做系统有一个内核级的进程会按期的去扫描内存,把连续的内存合并成一个2兆的大页内存,减小内存碎片。默认已经开启了

[root@linux-node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never

提示: 内存咱们要作的很少,基本上系统已经咱们优化好了。

IO优化

  IO优化基本上咱们要作的没有,由于默认kvm就使用virtio。Virtio是一种半虚拟化技术,让磁盘知道你是运行在虚拟机里面。这是一种半虚拟化技术,有兴趣能够了解一下

IO调度算法介绍
 IO调度算法有三种(cenots6有四种)
Noop: 不进行任何调度算法(SSD必定要把这个设置为Noop,由于这个队列是针对磁盘的)

相关资料:
http://www.cnblogs.com/zhenjing/archive/2012/06/20/linux_writeback.html
http://jackyrong.iteye.com/blog/898938

查看当前调度算法

[root@linux-node1 ~]# cat /sys/block/sda/queue/scheduler noop [deadline] cfq

更改调度算法以下:

echo “noop” > /syc/block/sda/queue/scheduler

   完!

相关文章
相关标签/搜索