雲計算與虛擬化工具之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

   完!

相關文章
相關標籤/搜索