自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【博文推薦】你不得不知的云計算與虛擬化基礎知識

云計算
云計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網(wǎng)絡訪問,進入可配置的計算資源共享池(資源包括網(wǎng)絡,服務器,存儲,應用程序,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的交互。本文主要靈感來自老男孩架構師班-趙班長實戰(zhàn)講解KVM,以及speedy Cloud云公司CEO董偉(董總)云計算與虛擬化講座,綜合整理而來。
本文轉自51CTO博客博主徐亮偉的博客,如有任何問題,請進入博主頁面互動討論。

博文鏈接:http://liangweilinux.blog.51cto.com/8340258/1729162

1.1云計算概述

云計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網(wǎng)絡訪問,進入可配置的計算資源共享池(資源包括網(wǎng)絡,服務器,存儲,應用程序,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的交互。

在云計算之前的模式和技術

  1. IDC托管
  2. IDC租用
  3. 虛擬主機(賣空間)
  4. VPS:虛擬專用主機 openvz(通過超賣技術坑人) xen(不支持超賣)

相對云計算,傳統(tǒng)數(shù)據(jù)中心面臨的問題

  1. 資源利用率低
  2. 資源分配不合理
  3. 難以實現(xiàn)真正的自動化運維

云計算特點和優(yōu)勢

  1. 云計算是一種使用模式,不是一種技術。(通過網(wǎng)絡、彈性擴展、按需付費)
  2. 云計算使用方法必須通過網(wǎng)絡來訪問。
  3. 云計算的優(yōu)勢是彈性計算(按需付費)。

1.1.1云計算的特點

  1. 資源池化
  2. 無處不在的網(wǎng)絡訪問
  3. 隨需應變的自助服務
  4. 可測量的服務
  5. 快速的伸縮

云計算五大特點,如圖1-1

wKioL1aA3ECRWnBQAAKLPQU1OVs123.png

圖1-1

1.1.2云計算服務模型

云計算服務模型如圖1-2

wKioL1aA3J3SxcL8AAJld1Hdz5E810.png

圖1-2

IaaS 基礎設施即服務

消費者通過Internet 可以從完善的計算機基礎設施獲得服務。這類服務稱為基礎設施即服務?;?Internet 的服務(如存儲和數(shù)據(jù)庫)是 IaaS的一部分。Internet上其他類型的服務包括平臺即服務和軟件即服務。

PaaS 平臺即服務

把服務器平臺作為一種服務提供的商業(yè)模式。而云計算時代相應的服務器平臺或者開發(fā)環(huán)境作為服務進行提供就成為了PaaS。所謂PaaS實際上是指將軟件研發(fā)的平臺作為一種服務,以SaaS的模式提交給用戶。因此,PaaS也是SaaS模式的一種應用。

SaaS 軟件即服務

它是一種通過Internet提供軟件的模式,廠商將應用軟件統(tǒng)一部署在自己的服務器上,客戶可以根據(jù)自己實際需求,通過互聯(lián)網(wǎng)向廠商定購所需的應用軟件服務,按定購的服務多少和時間長短向廠商支付費用,并通過互聯(lián)網(wǎng)獲得廠商提供的服務。用戶不用再購買軟件,而改用向提供商租用基于Web的軟件,來管理企業(yè)經(jīng)營活動,且無需對軟件進行維護,服務提供商會全權管理和維護軟件,軟件廠商在向客戶提供互聯(lián)網(wǎng)應用的同時,也提供軟件的離線操作和本地數(shù)據(jù)存儲,讓用戶隨時隨地都可以使用其定購的軟件和服務。對于許多小型企業(yè)來說,SaaS是采用先進技術的最好途徑,它消除了企業(yè)購買、構建和維護基礎設施和應用程序的需要。

1.1.3云計算部署模型

公有云(Public Cloud)

公有云通常指第三方提供商為用戶提供的能夠使用的云,公有云一般可通過internet使用,可能是免費或成本低廉,公有云的核心屬性是共享資源服務。這種云有許多實例,可在當今整個開放的共有網(wǎng)絡中提供服務。例如:阿里云、騰訊云、青云、百度云、盛大云、迅達云、等等。

私有云(Private Clouds)

私有云是為一個客戶單獨使用而構建的,因而提供對數(shù)據(jù)、安全性和服務質量的最有效控制。該公司擁有基礎設施,并可以控制在此基礎設施上部署應用程序的方式。私有云可部署在企業(yè)數(shù)據(jù)中心防火墻內,也可以將它們部署在一個安全的主句托管場所,私有云的核心屬性是專有資源。

混合云(Hybrid Cloud)

混合云融合了公有云和私有云,是近年來云計算的主要模式和發(fā)展方向。我們已經(jīng)知道私企業(yè)主要是面向企業(yè)用戶,處于安全考慮,企業(yè)更愿意將數(shù)據(jù)存放在私有云中,但是同時又希望可以獲得公有云的計算資源,在這種情況下混合云被越來越多的采用,它將公有云和私有云進行混合匹配,以獲得最佳的效果,這種個性的解決方案,達到二既省錢又安全的目的。

社區(qū)云(Community Cloud)

社區(qū)云是大的公有云范疇內的一個組成部分。是指在一定的地域范圍內,由云計算服務提供商統(tǒng)一提供計算資源、網(wǎng)絡資源、軟件和服務能力所形成的云計算形式。即基于社區(qū)的網(wǎng)絡互連優(yōu)勢和技術易于整合特點,通過區(qū)域內各種計算能力進行統(tǒng)一服務形式的整合,結合社區(qū)內的用戶需求共性,實現(xiàn)面向區(qū)域用戶需求的云計算服務模式。例如:區(qū)域型和行業(yè)型。資源的高效共享。

1.2虛擬化概述

虛擬化,一種具體的技術,用來將物理機虛擬成為多個相互獨立的虛擬機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統(tǒng),并且應用程序都可以在相互獨立的空間內運行而互不影響,可以實現(xiàn)IT資源的動態(tài)分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務于各行各業(yè)中靈活多變的應用需求。從而顯著提高計算機的工作效率。

1.2.1虛擬化的分類

  • 全虛擬化
  • 半虛擬化
  • 平臺虛擬化
  • 軟件虛擬化
  • 硬件虛擬化(Inter vt-x/EPT) (AMD AMD-v /RVI)
  • 桌面虛擬化
  • 應用虛擬化

以上各種虛擬化技術,百度百科都能查閱到相關資料。

1.2.2虛擬化的優(yōu)勢

  1. 虛擬化可以虛擬出來多個操作系統(tǒng),它們之間是相互獨立的,所以每個操作系統(tǒng)上所跑的應用程序是相互不影響的。
  2. 支持異構,linux系統(tǒng)可以虛擬化windows系統(tǒng),方便不同場景系統(tǒng)的使用。
  3. 支持快照、克隆、還原等功能。

企業(yè)案例一

公司虛擬機你也不知道能不能停,也不知道跑什么了,然后問產(chǎn)品經(jīng)理他也不知道,有可能有用你放著把。如果這是一臺物理機你看怎么辦,真的很無奈、想改個啥你都不敢該,只能讓他跑在那里。

企業(yè)案例二

公司這臺物理機有沒有用,所有人告訴你,沒事刪把肯定沒有用,然后到店慶的時候,產(chǎn)品經(jīng)理過來了:我們去年店慶做了一個積分抽獎的活動,我花錢買的,我的代碼哪去了,我的服務器呢?服務器早都格式化多少遍了,產(chǎn)品經(jīng)理說那沒辦法,那么趕緊聯(lián)系提供商把,提供商倒閉了。怎么辦,重新做唄。

如果有虛擬機就好辦了,我把虛擬機關了放在那,只要不刪除,是不是永遠都在,哪天用在起來就行了。無非就占點硬盤,分配的時候,可以使用多少分配多少。

1.2.3虛擬化與云計算總結

  • 云計算不等于虛擬化,兩者并不能相互比較。
  • 云計算是一種資源和使用交互的方式。
  • 虛擬化是一種具體的技術。
  • 云計算要依賴虛擬化技術來實現(xiàn)的一種通過網(wǎng)絡訪問獲取資源,流量,交付的使用模式。(例如:彈性計算)。
  • 虛擬化相當于實干家,而云計算是思想家。

虛擬化企業(yè)安裝實戰(zhàn)

KVM:內核級虛擬化技術(Kernel-based Virtual Machine)

結構簡單,包含兩個部分:

  1. 設備驅動/dev/kvm, 針對模擬PC硬件的用戶空間組件
  2. KVM需要CPU中虛擬化功能的支持,只可在具有虛擬化支持的CPU上運行,即具有VT功能的interCPU和具有ADM-V功能的AMD CPU

1.3.1KVM虛擬化特性

  • 嵌入到Linux正式Kernel(提高兼容性)
  • 代碼級資源調用(提高性能)
  • 虛擬機就是一個進程(內存易于管理)
  • 直接支持NUMA技術(提高擴展性)
  • ------RedHat收購KVM---------
  • 保持開源發(fā)展模式
  • 更好的商業(yè)支持及服務保障

安裝必備條件

實驗必備條件,必須開啟虛擬機VT-EPT技術,在vmware虛擬機選擇上即可。服務器上默認是開啟狀態(tài)。

  1. [root@linux-node1~]# egrep '(vmx|svm)' /proc/cpuinfo  #如果過濾沒有代表不支持虛擬化 
  2.  
  3. flags:fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflushdts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmonpebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pnipclmulqdq vmx ssse3 fma cx16 pcid sse4_1sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrandhypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dthermtpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseedadx smap 

1.3.2安裝KVM虛擬機

  1. [root@linux-node1~]# cat /etc/redhat-release  #查看操作系統(tǒng)版本 
  2.  
  3. CentOSLinux release 7.1.1503 (Core) 
  4.  
  5.   
  6.  
  7. [root@linux-node1~]# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install –y  #安裝KVM 
  8.  
  9. kvm:linux內核的一個模塊,模塊不需要安裝只需要加載,通過用戶態(tài)程序來管理即可。 
  10.  
  11. qeum:虛擬化軟件,可以虛擬不同的CPU,支持異構(x86的架構可以虛擬化不是x86架構的) 
  12.  
  13. qeum-kvm:用戶態(tài)管理kvm,網(wǎng)卡、聲卡、PCI設備等都是需要qemu來管理。 
  14.  
  15.   
  16.  
  17. [root@linux-node1~]# lsmod|grep kvm  #查看kvm內核是否被加載 
  18.  
  19. kvm_intel             148081  0 
  20.  
  21. kvm                   461126  1 kvm_intel 
  22.  
  23.   
  24.  
  25. [root@linux-node1~]# systemctl enable libvirtd.service  #libvirtd加入開機啟動 
  26.  
  27. [root@linux-node1~]# systemctl start libvirtd.service  #啟動libvirtd 

1.3.3建立一臺KVM虛擬機

首先學習下virsh-install創(chuàng)建虛擬機命令

  1. --virt-type:指定虛擬機類型(kvm、qemu、xen) 
  2.  
  3. --name:指定虛擬機的名稱 
  4.  
  5. --raw:指定內存大小 
  6.  
  7. --cpu:指定cpu的核數(shù)(默認為1
  8.  
  9. --cdrom:指定鏡像 
  10.  
  11. --disk:指定磁盤路徑(即上文創(chuàng)建的虛擬磁盤) 
  12.  
  13. --network:指定網(wǎng)絡類 
  14.  
  15. [root@linux-node1~]# qemu-img create -f raw /opt/CentOS-7.1-x86_64.raw 10G  #創(chuàng)建虛擬磁盤,-f指定格式,路徑/opt/CentOS-7.1-x86_64.raw,大小10G 
  16.  
  17. [root@linux-node1~]# dd if=/dev/cdrom of=/opt/CentOS-7.1.iso #掛在鏡像,導入至虛擬機 
  18.  
  19. [root@linux-node1~]# virt-install --name CentOS-7-x86_64 --virt-type kvm --ram 1024--cdrom=/opt/CentOS-7.1.iso --disk path=/opt/CentOS-7.1-x86_64.raw --networknetwork=default --graphics vnc,listen=0.0.0.0 --noautoconsole    #創(chuàng)建一臺KVM虛擬機 
  20.  
  21. Startinginstall... 
  22.  
  23. Creatingdomain...                                      |    0 B     00:03     
  24.  
  25. Domaininstallation still in progress. You can reconnect to 
  26.  
  27. theconsole to complete the installation process. 

1.3.4VNC連接KVM虛擬機

打開一個VNC客戶端,輸入192.168.56.111:5900(第一個默認5900,第二個5901,以此類推)連接虛擬機里面建立的KVM虛擬機,安裝CentOS7的過程,此處不在演示如何安裝。

 

 

wKiom1aA3-PShUgkAABXJeHTZks492.png

 

圖1-3

安裝CentOS7,在啟動前修改內核讓網(wǎng)卡為eth0,如圖1-4

 

wKioL1aA3__TfxwbAABMlWOgCLI245.png

 

圖1-4

1.4KVM日常管理

  1. [root@linux-node1opt]# virsh start CentOS-7-x86_64  #啟動剛才創(chuàng)建的CentOS7KVM虛擬機 
  2.  
  3. DomainCentOS-7-x86_64 started 
  4.  
  5.   
  6.  
  7. [root@linux-node1opt]# virsh list  #查看KVM虛擬機是否啟動 
  8.  
  9. Id    Name                           State 
  10.  
  11. ---------------------------------------------------- 
  12.  
  13.  3    CentOS-7-x86_64               running 

1.4.1CPU擴容

  1. [root@linux-node1opt]# virsh edit CentOS-7-x86_64 #為了實現(xiàn)CPU的熱添加,就需要更改Cpu的最大值,當然熱添加值不能超過最大值 
  2.  
  3. <vcpuplacement='auto' current="1">4</vcpu>  #當前為1,自動擴容最大為4 
  4.  
  5.   
  6.  
  7. [root@linux-node1opt]# virsh shutdown CentOS-7-x86_64  #關閉KVM虛擬機 
  8.  
  9. DomainCentOS-7-x86_64 is being shutdown 
  10.  
  11. [root@linux-node1opt]# virsh start CentOS-7-x86_64  #啟動KVM虛擬機 
  12.  
  13. DomainCentOS-7-x86_64 started 
  14.  
  15. [root@linux-node1opt]# virsh setvcpus CentOS-7-x86_64 2 --live  #熱修改為2個cpu(不知減少),高版本自動激活 
  16.  
  17. [root@KVM]#grep processor /proc/cpuinfo |wc -l  #通過vnc登錄KVM虛擬機查看是否擴容成功 
  18.  
  19. 2 
  20.  
  21. 在創(chuàng)建虛擬機時指定cpu 
  22.  
  23. [root@linux-node1~]# virt-install --help|grep vcpus 
  24.  
  25.   --vcpus VCPUS         為虛擬機配置的 vcpus 數(shù)。例如: 
  26.  
  27.                         --vcpus 5 
  28.  
  29.                         --vcpus5,maxcpus=10,cpuset=1-4,6,8 
  30.  
  31.                         --vcpussockets=2,cores=4,threads=2

1.4.2內存擴容

內存的設置擁有一個氣球(balloon)機制,可以增大減少,但是也要設置一個最大值,默認并沒有最大值,也可以在安裝時指定。

  1. [root@linux-node1opt]# virsh edit CentOS-7-x86_64 #為了實現(xiàn)CPU的熱添加,就需要更改Cpu的最大值,當然熱添加值不能超過最大值 
  2.  
  3. <memoryunit='KiB'>4194304</memory>  #修改最大支持內存擴容為4G 
  4.  
  5.   <currentMemoryunit='KiB'>1048576</currentMemory> #當前KVM虛擬機內存為1G 
  6.  
  7. 重啟虛擬機 
  8.  
  9. [root@linux-node1opt]# virsh shutdown CentOS-7-x86_64  #關閉KVM虛擬機 
  10.  
  11. DomainCentOS-7-x86_64 is being shutdown 
  12.  
  13. [root@linux-node1opt]# virsh start CentOS-7-x86_64  #啟動KVM虛擬機 
  14.  
  15. DomainCentOS-7-x86_64 started 
  16.  
  17.   
  18.  
  19. [root@linux-node1~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon  #查看當前KVM內存大小 
  20.  
  21. balloon:actual=1024 
  22.  
  23. [root@linux-node1~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd balloon #熱添加 
  24.  
  25. unexpected end of expression 
  26.  
  27. [root@linux-node1~]# virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd info balloon  #在次查看 
  28.  
  29. balloon: actual=2001 

1.4.3硬盤管理

更改虛擬機中存儲,硬盤設置(不建議生產(chǎn)環(huán)境使用硬盤的擴大收縮模式,很容易產(chǎn)生故障)

  1. [root@linux-node1~]# qemu-img --help |grep -i "formats:" 
  2.  
  3. Supportedformats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppyhost_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftphttps http cloop bochs blkverify blkdebug 

硬盤格式都可以通過qeum-img管理,具體qemu-img --help

全鏡像格式(代表raw):設置多大就是多大,寫入速度快,方便的轉換為其他格式,性能最優(yōu),但是占用空間大。

稀疏格式(代表qcow2):支持壓縮,快照,鏡像,更小的存儲空間(即用多少占多少)

1.4.4網(wǎng)絡管理

默認情況KVM的網(wǎng)絡是NAT模式,但是在生產(chǎn)情況,用的多的都是網(wǎng)橋模式。

修改eth0(這里CentOS7的eth0在裝機時就指定了,那如果沒指定怎么辦? http://www.xuliangwei.com/xubusi/102.html)

  1. [root@linux-node1~]# brctl addbr br0  #添加一個網(wǎng)卡 
  2.  
  3. [root@linux-node1~]# brctl show  #查看網(wǎng)卡信息 
  4.  
  5. bridgename     bridge id               STP enabled     interfaces 
  6.  
  7. br0             8000.000000000000       no 
  8.  
  9. virbr0          8000.5254009f0311       yes             virbr0-nic 
  10.  
  11.   
  12.  
  13. [root@linux-node1~]# brctl addif br0 eth0 && ip addr del dev eth0 192.168.56.111/24&&ifconfig br0 192.168.56.111/24 up && route add default gw192.168.56.2 && iptables -F  #把eth0加入網(wǎng)橋,使用橋接模式,給br設置ip,添加路由網(wǎng)關,關閉防火墻 
  14.  
  15. [root@linux-node1~]# ifconfig br0  #查看網(wǎng)橋的IP 
  16.  
  17. br0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500 
  18.  
  19.         inet 192.168.56.111  netmask 255.255.255.0  broadcast 192.168.56.255 
  20.  
  21.         inet6 fe80::20c:29ff:fe5d:cc27  prefixlen 64 scopeid 0x20<link> 
  22.  
  23.         ether 00:0c:29:5d:cc:27  txqueuelen 0 (Ethernet) 
  24.  
  25.         RX packets 4813  bytes 472527 (461.4 KiB) 
  26.  
  27.         RX errors 0  dropped 0 overruns 0  frame 0 
  28.  
  29.         TX packets 2705  bytes 510369 (498.4 KiB) 
  30.  
  31.         TX errors 0  dropped 0 overruns 0  carrier 0 collisions 0 
  32.  
  33.   
  34.  
  35. [root@linux-node1~]# virsh edit CentOS-7-x86_64  #編輯虛擬機的網(wǎng)絡配置使用br0網(wǎng)橋模式 
  36.  
  37.  <interface type='bridge'>  #虛擬機網(wǎng)絡連接方式 
  38.  
  39.   <mac address='52:54:00:22:04:0f'/>  #為虛擬機分配MAC地址,務必唯一,如果是dhcp獲得同樣IP會引起沖突 
  40.  
  41.   <source bridge='br0'/>  #當前主機網(wǎng)橋名稱 
  42.  
  43. 重啟虛擬機 
  44.  
  45. [root@linux-node1opt]# virsh shutdown CentOS-7-x86_64  #關閉KVM虛擬機 
  46.  
  47. DomainCentOS-7-x86_64 is being shutdown 
  48.  
  49. [root@linux-node1opt]# virsh start CentOS-7-x86_64  #啟動KVM虛擬機 
  50.  
  51. DomainCentOS-7-x86_64 started 
  52.  
  53. #然后配置靜態(tài)IP地址,重啟網(wǎng)卡,即可以通過xshell連接上KVM虛擬機了。 

1.5KVM常用管理

  1. [root@linux-node1~]# virt-install  #建立kvm虛擬機 
  2.  
  3. [root@linux-node1~]# virsh list  #查看正在運行的KVM虛擬機 
  4.  
  5. [root@linux-node1~]# virsh list --all  #查看所有KVM虛擬機 
  6.  
  7. [root@linux-node1~]# virsh start name   #啟動KVM虛擬機 
  8.  
  9. [root@linux-node1~]# virsh shutdown name #正常關閉KVM虛擬機 
  10.  
  11. [root@linux-node1~]# virsh destroy name  #強制關閉KVM虛擬機(類似于直接斷電) 
  12.  
  13. [root@linux-node1~]# virsh suspend name  #掛起KVM虛擬機 
  14.  
  15. [root@linux-node1~]# virsh resume name  #恢復掛起的KVM虛擬機 
  16.  
  17. [root@linux-node1~]# virsh dumpxml name  #查看KVM虛擬機配置文件 
  18.  
  19. [root@linux-node1~]# virsh edit name  #編輯KVM虛擬機的xml配置文件 
  20.  
  21. [root@linux-node1~]# virsh undefine name  #徹底刪除KVM虛擬機,不可逆,如果想找回來,需要備份/etc/libvirt/qemu的xml文件) 

1.6KVM性能優(yōu)化

1.6.1CPU優(yōu)化

inter的cpu的運行級別,按權限級別高低Ring3->Ring1->Ring0(Ring2和Ring1暫時用不上)Ring3為用戶態(tài),Ring0為內核態(tài)

 

wKioL1aA4GHxHabgAAEnglqB828867.png

 圖1-5

Ring3的用戶態(tài)是沒有權限管理硬件的,需要切換到內核態(tài)Ring0,這樣的切換(系統(tǒng)調用)稱為上下文切換,物理機到虛擬機多次的上下文切換,勢必會導致性能出現(xiàn)問題。對于全虛擬化,inter實現(xiàn)了技術VT-x,在CPU硬件上實現(xiàn)了加速轉換,CentOS7默認是不需要開啟的。

CPU緩存綁定

  1. [root@linux-node1~]# lscpu|grep cache  #centos7自帶查看cpu信息命令 
  2.  
  3. L1dcache:             32K 
  4.  
  5. L1icache:             32K 
  6.  
  7. L2cache:              256K 
  8.  
  9. L3cache:              3072K 

L1是靜態(tài)緩存,造價高。

L2,L3是動態(tài)緩存,通過脈沖的方式寫入0和1,造價較低。

cache解決了cpu處理快,內存處理慢的問題,類似于memcaced和數(shù)據(jù)庫。

如果cpu調度器把進程隨便調度到其他cpu上,而不是當前L1,L2,L3的緩存cpu上,緩存就不生效了,就會產(chǎn)生miss,為了減少cache miss,需要把KVM進程綁定到固定的cpu上。

可以使用taskset把某一個進程綁定(cpu親和力綁定,可以提高20%的性能)在某一個cpu上,例如:taskset -cp 125718(1指的是cpu1,也可以綁定到多個cpu上,25718是指的pid).

cpu綁定的優(yōu)點:提高性能,20%以上

cpu綁定的缺點:不方便遷移,靈活性差

1.6.2內存優(yōu)化

宿主機虛擬內存-> 宿主機物理內存

虛擬機的虛擬內存 -> 虛擬機的物理內存

VMM通過采用影子列表解決內存轉換的問題,影子頁表是一種比較成熟的純軟件的內存虛擬化方式,但影子頁表固有的局限性,影響了VMM的性能,例如,客戶機中有多個CPU,多個虛擬CPU之間同步頁面數(shù)據(jù)將導致影子頁表更新次數(shù)幅度增加,測試頁表將帶來異常嚴重的性能損失。如下圖1-6為影子頁表的原理圖

 

wKiom1aA4Emx-jzmAAC0eKVbcrs159.png

 

圖1-6

在此之際,Inter在最新的Core I7系列處理器上集成了EPT技術(對應AMD的為RVI技術),以硬件輔助的方式完成客戶物理內存到機器物理內存的轉換,完成內存虛擬化,并以有效的方式彌補了影子頁表的缺陷,該技術默認是開啟的,如下圖1-7為EPT技術的原理。

 

wKioL1aA4GWC57w3AAGKtp6Hl0A323.png

 

圖1-7

KSM內存合并

宿主機上默認會開啟ksmd進程,該進程作為內核中的守護進程存在,它定期執(zhí)行頁面掃描,識別副本頁面并合并副本,釋放這些頁面以供它用,CentOS7默認是開啟狀態(tài)

  1. [root@linux-node1~]# ps aux|grep ksmd|grep -v grep 
  2.  
  3. root        280 0.0  0.0      0    0 ?        SN   04:22  0:00 [ksmd] 

大頁內存,CentOS7默認開啟的

  1. [root@linux-node1~]# cat /sys/kernel/mm/transparent_hugepage/enabled 
  2.  
  3. [always]madvise never 
  4.  
  5. [root@linux-node1~]# ps aux|grep hugepage|grep -v grep            
  6.  
  7. root        281 0.0  0.0      0    0 ?        SN   04:22  0:03 [khugepaged] 

Linux默認的內存頁面大小都是4K,HugePage進程會將默認的每個內存頁面可以調整為2M

1.6.3磁盤IO優(yōu)化

IO調度算法,也叫電梯算法,詳情請看趙班長博客:http://www.unixhot.com/article/4

  1. Noop Scheduler:簡單的FIFO隊列,最簡單的調度算法,由于會產(chǎn)生讀IO的阻塞,一般使用在SSD硬盤,此時不需要調度,IO效果非常好
  2. Anticipatory IO Scheduler(asscheduler)適合大數(shù)據(jù)順序順序存儲的文件服務器,如ftp server和web server,不適合數(shù)據(jù)庫環(huán)境,DB服務器不要使用這種算法。
  3. Deadline Schedler:按照截止時間的調度算法,為了防止出現(xiàn)讀取被餓死的現(xiàn)象,按照截止時間進行調整,默認的是讀期限短于寫期限,就不會產(chǎn)生餓死的狀況,一般應用在數(shù)據(jù)庫
  4. Complete Fair Queueing Schedule:完全公平的排隊的IO調度算法,保證每個進程相對特別公平的使用IO
  1. [root@linux-node1~]# dmesg|grep -i "scheduler"   #查看本機Centos7默認所支持的調度算法 
  2.  
  3. [    1.332147] io scheduler noop registered 
  4.  
  5. [    1.332151] io scheduler deadline registered(default
  6.  
  7. [    1.332190] io scheduler cfq registered 

臨時更改某個磁盤的IO調度算法,將deadling模式改為cfq模式

  1. [root@linux-node1~]# cat /sys/block/sda/queue/scheduler 
  2.  
  3. noop[deadline] cfq 
  4.  
  5. [root@linux-node1~]# echo cfq >/sys/block/sda/queue/scheduler             
  6.  
  7. [root@linux-node1~]# cat /sys/block/sda/queue/scheduler       
  8.  
  9. noopdeadline [cfq] 
  10.  
  11. [root@linux-node1~]# vim /boot/grub/menu.lst  #使更改的IO調度算法永久生效,需要更改內核參數(shù) 
  12.  
  13. kernel/boot/vmlinuz-3.10.0-229.el7 ro root=LABEL=/ elevator=deadline rhgb quiet 

1.7虛擬化鏡像制作

1.在開始創(chuàng)建過虛擬磁盤,并命名為CentOS-7.1-x86_64.raw,這個是虛擬機鏡像。

  1. [root@linux-node1~]# ll /opt/ 
  2.  
  3. total5203344 
  4.  
  5. -rw-r--r--  1 qemu qemu 4310695936 12月 28 04:46CentOS-7.1.iso 
  6.  
  7. -rw-r--r--.1 qemu qemu 10737418240 12月 28 08:55CentOS-7.1-x86_64.raw 

2. 分區(qū)的時候,只分一個/分區(qū)(不需要swap分區(qū))。

3. 刪除網(wǎng)卡里面{UUID,MAC}

4. 如果有/etc/udev/rules.d/70-persistent-ipoib.rules 則刪除。

5. iptables關閉、selinux關閉

6.安裝基礎軟件包。(net-tools lrzsz screen tree vim wget)

責任編輯:xinxiaoliang 來源: 徐亮偉博客
相關推薦

2009-06-23 09:06:32

2015-08-17 11:46:07

云計算云服務公有云

2019-11-27 14:20:27

Redis數(shù)據(jù)庫C語言

2017-08-16 18:03:12

Docker安全工具容器

2024-06-05 11:36:28

2018-11-12 15:20:15

CPU虛擬化云計算

2020-10-21 09:36:40

Vue項目技巧

2010-08-27 10:40:55

Android

2022-01-18 08:04:37

數(shù)據(jù)分析 Python

2022-01-27 07:39:57

進程操作系統(tǒng)Linux

2019-12-10 15:30:27

SaaSIaaS云計算

2011-03-31 10:46:54

LinuxCLI軟件

2009-10-30 09:26:26

Linux虛擬化操作系統(tǒng)

2010-07-09 09:15:11

2020-09-22 08:16:20

軟件開發(fā)原則

2018-05-09 11:15:59

服務器緩存技巧

2022-08-30 23:54:42

MySQL數(shù)據(jù)庫工具

2019-08-09 11:40:38

JavaScriptCSS技術

2022-10-27 09:55:00

2019-10-23 08:54:38

程序員CPUALU
點贊
收藏

51CTO技術棧公眾號