日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

云计算和虚拟机基础梳理

發布時間:2023/12/15 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 云计算和虚拟机基础梳理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

云計算介紹

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

1)云計算之前的使用模式

IDC 托管

IDC 租用

虛擬主機(買空間)

VPS:虛擬專用主機

2)傳統數據中心面臨的問題

資源使用率低

資源分配不均

自動化能力差

3)云計算的優勢

云計算是一種使用模式,不是一種技術

云計算的使用方式:通過網絡訪問

云計算的優勢:彈性計算、按需計費

4)云計算的特點

資源池化

無處不在的網絡訪問

可隨時調節的自助服務

可測量的服務量

快速的變化伸縮

5)云計算的服務模式

1--支撐服務

由支撐網絡來提供,云計算模式實現的使用的方式。

2--IaaS基礎設施即服務

消費者通過支撐網絡可以從完善的計算機基礎設施獲得服務。這類服務稱為基礎設施即服務,基于 Internet 的服務(如存儲和數據庫)是 IaaS的一部分。

3--PaaS平臺即服務

PaaS(Platform-as-a-Service:平臺即服務)是指將軟件研發的平臺作為一種服務,以SaaS的模式提交給用戶。因此,PaaS也是SaaS模式的一種應用。

4--SaaS

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

6)云計算的類型

1--公有云

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

2--私有云

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

3--混合云

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

虛擬化介紹

擬化,是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。

虛擬化使用軟件的方法重新定義劃分IT資源,可以實現IT資源的動態分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務于各行各業中靈活多變的應用需求。

1)虛擬化的分類

全虛擬化:直接使用底層的硬件 比如:KVM

半虛擬化:通過一個中間件,來調用底層的硬件 比如:xen

平臺虛擬化

硬件虛擬化(Inter vt-x/EPT) (AMD AMD-v /RVI)

軟件虛擬化

桌面虛擬化

應用虛擬化

存儲虛擬化

網絡虛擬化

2)虛擬化的優勢

虛擬化可以虛擬出不同的虛擬操作系統。

虛擬機之間是相互獨立互不影響的。

支持異構。

支持快照、克隆、還原等操作

云計算與虛擬化的區別與聯系

云計算與虛擬化的區別與聯系

1)虛擬化是一種技術,云計算是一種使用模式。

2)虛擬化是指將物理的實體,通過軟件模式,形成若干虛擬存在的系統,其實真是運作還是在實體上,只是劃分了若干區域或者時域劃分。

3)云計算的基礎是虛擬化,但虛擬化只是云計算的一部分,云計算其實就是在虛擬化出若干資源池以后的應用,但虛擬化并不是只對應云計算的。

KVM虛擬化

KVM是開源軟件,全稱是kernel-based virtual machine(基于內核的虛擬機)。

KVM是x86架構且硬件支持虛擬化技術(如 intel VT 或 AMD-V)的Linux全虛擬化解決方案。

它包含一個為處理器提供底層虛擬化 可加載的核心模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko)。

KVM還需要一個經過修改的QEMU軟件(qemu-kvm),作為虛擬機上層控制和界面。

KVM能在不改變linux或windows鏡像的情況下同時運行多個虛擬機,(它的意思是多個虛擬機使用同一鏡像)并為每一個虛擬機配置個性化硬件環境(網卡、磁盤、圖形適配器……)。

1)KVM的優勢

嵌入到Linux的Kernel中 (提高兼容性)

代碼級資源調用(提高性能)

虛擬機就是一個進程

直接支持MUMA技術(NUMA(Non Uniform Memory Access Architecture)技術可以使眾多服務器像單一系統那樣運轉,同時保留小系統便于編程和管理的優點。

2)KVM安裝前提

CPU要支持虛擬化,服務器上默認一般是開啟的,虛擬機要自己啟動VT-EPT技術

[root@oldboy-node1 ~]# grep -E "(vmx|svm)" /proc/cpuinfo

Inter處理器對應:VMX

AMD處理器對應:SVM

3)KVM虛擬機安裝

查看系統版本

[root@linux-node1~]# cat /etc/redhat-release

CentOSLinux release 7.1.1503 (Core)

安裝KVM相關的組件

[root@oldboy-node1 ~]# yum -y install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install

kvm:linux內核中的一個模塊,不需要安裝只要加載就行,通過用戶態進程來管理。

qemu:虛擬化軟件,支持多種架構,可擴展,可移植

qemu-kvm:用戶態管理KVM,網卡、聲卡、PCI設備等的管理

libvirt:是一個虛擬化 API 和虛擬機(VMs)管理后臺,支持遠程或本地訪問,支持多種虛擬化后端 (QEMU/KVM, VirtualBox, Xen,等等) 。

檢查KVM是否加載

[root@oldboy-node1 ~]# lsmod | grep kvm

kvm_intel 148081 0

kvm 461126 1 kvm_intel

啟動并設置開機啟動libvirt

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

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

[root@oldboy-node1 ~]# systemctl status libvirtd.service

創建虛擬機

1--虛擬機的創建命令

–virt-type:指定虛擬機類型(kvm、qemu、xen)

–name:指定虛擬機的名稱

–raw:指定內存大小

–cpu:指定cpu的核數(默認為1)

–cdrom:指定鏡像

–disk:指定磁盤路徑(即上文創建的虛擬磁盤)

–network:指定網絡類

2--創建硬盤(創建虛擬磁盤,-f指定格式,路徑/opt/CentOS-7.1-x86_64.raw,大小10G)

[root@oldboy-node1 ~]# qemu-img create -f raw /opt/CentOS-7.1-x86_64.raw 10G

Formatting '/opt/CentOS-7.1-x86_64.raw', fmt=raw size=10737418240

3--鏡像的拷貝

[root@oldboy-node1 ~]# dd if=/dev/cdrom of=/opt/CentOS-7.1.iso

4--虛擬機的創建

[root@oldboy-node1 ~]# virt-install --name CentOS-7.1-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.1.iso --disk path=/opt/CentOS-7.1-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

5--使用VNC連接虛擬機

使用VNC客戶端連接虛擬機 物理機的地址:5900 默認是從5900開始,以此類推。也可以通過端口grep vnc查看。

6--修改網卡的名稱

因為CentOS7以后,網卡的命名發生改變。可以在安裝的時候就做出修改

按下Tab鍵,然后在quiet后面添加 net.ifnames=0 biosdevname=0

至此,一臺KVM虛擬機安裝成功。

KVM的日常應用管理

1--虛擬機的查看

# 當前正在運行中的虛擬機

[root@linux-node1 opt]# virsh list

Id Name State

—————————————————-

1 CentOS-7-x86_64running

# 當前物理機中的所有的虛擬機

[root@linux-node1 opt]# virsh list --all

也可以在物理機進程中查看,KVM虛擬機就是一個KVM進程在運行

2--虛擬機的開關

關閉虛擬機

[root@oldboy-node1 ~]# virsh shudown CentOS-7.1-x86_64(主機名)

[root@oldboy-node1 ~]# virsh destroy CentOS-7.1-x86_64(主機名)

打開虛擬機

[root@oldboy-node1 ~]# virsh start CentOS-7.1-x86_64

刪除虛擬機

[root@oldboy-node1 ~]# virsh undefine CentOS-7.1-x86_64

掛起

[root@oldboy-node1 ~]# virsh suspended CentOS-7.1-x86_64

恢復

[root@oldboy-node1 ~]# virsh resume CentOS-7.1-x86_64

3--虛擬機CPU的擴容

編輯虛擬機

virsh edit CentOS-7.1-x86_64

# 為了實現CPU的熱添加,就需要更改Cpu的最大值,當然熱添加值不能超過最大值

# 當前為1,自動擴容最大為4

[root@linux-node1 opt]# virsh edit CentOS-7-x86_64

<vcpu placement=’auto’ current=”1″>4</vcpu>

# 熱修改為2個cpu(不知減少),高版本自動激活

[root@linux-node1 opt]# virsh setvcpus CentOS-7-x86_64 2 –live

# 通過vnc登錄KVM虛擬機查看是否擴容成功

[root@KVM]# grep processor /proc/cpuinfo |wc -l

# 在創建虛擬機時指定cpu

[root@linux-node1 ~]# virt-install –help|grep vcpus

–vcpus VCPUS

"""

為虛擬機配置的 vcpus 數。

例如:

–vcpus 5

–vcpus 5,maxcpus=10,cpuset=1-4,6,8

–vcpus sockets=2,cores=4,threads=2,

"""

4--內存熱膨脹和壓縮

# 查看當前KVM內存大小

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

balloon: actual=1024

# 熱添加600M

[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7.1-x86_64 –hmp –cmd balloon 600

# 在配置文件中修改

[root@linux-node1 network-scripts]# virsh edit CentOS-7.1-1-x86_64

最大內存<memory unit='KiB'>4048576</memory>

當前內存<currentMemory unit='KiB'>1048576</currentMemory>

5--硬盤的模式

生產中不建議對線上的服務器的硬盤進行更改,因此直接不對此贅述。

硬盤格式:

RAW:全鏡像格式:設置多大就是多大,寫入速度快,可以隨便轉換成其他的格式。性能最優。但是占用空間大。

QCOW2:稀疏格式:支持寫時拷貝(Cow,copy-on-write)壓縮,快照,鏡像,更小的存儲空間。(用多少給多少)可選擇基于Zlib的壓縮方式,可以選擇AES加密

創建qcow2和raw文件

[root@linux-node1 ~]# qemu-img create -f qcow2 test.qcow2 10G

Formatting 'test.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off

[root@linux-node1 ~]# qemu-img create -f raw test.raw 10G

Formatting 'test.raw', fmt=raw size=10737418240

空間使用情況對比

[root@linux-node1 ~]# ll -sh test.*

200K -rw-r--r-- 1 qiaoliyong qiaoliyong 193K 5 月 6 10:29 test.qcow2

0 -rw-r--r-- 1 qiaoliyong qiaoliyong 10G 5 月 6 10:28 test.raw

[root@linux-node1 ~]# stat test.raw

文件:"test.raw"

大小:10737418240 塊:0 IO 塊:4096 普通文件

[root@linux-node1 ~]# stat test.qcow2

文件:"test.qcow2"

大小:197120 塊:400 IO 塊:4096 普通文件

6--網卡的配置

# 先建立一個虛擬網卡,名稱為br0(可以看做是一個邏輯網段,也可以看做是一個VLAN名稱)

[root@linux-node1~]# brctl addbr br0

# 查看網卡信息

[root@linux-node1 ~]# brctl show

bridge

name bridge id STP enabled interfaces

br0 8000.000000000000 no

virbr0 8000.5254009f0311 yes virbr0-nic

# 把eth0加入網橋,使用橋接模式,給br0設置ip段,添加路由網關,關閉防火墻

[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

# 查看網橋的IP

[root@linux-node1~]# ifconfig br0

br0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.56.111 netmask 255.255.255.0 broadcast 192.168.56.255

inet6 fe80::20c:29ff:fe5d:cc27 prefixlen 64scopeid 0x20<link>

ether 00:0c:29:5d:cc:27 txqueuelen 0(Ethernet)

RX packets 4813 bytes 472527 (461.4 KiB)

RX errors 0 dropped 0overruns 0 frame 0

TX packets 2705 bytes 510369 (498.4 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0collisions 0

# 編輯虛擬機的網絡配置使用br0網橋模式

[root@linux-node1 ~]# virsh edit CentOS-7-x86_64

<interface type=’bridge’> #虛擬機網絡連接方式

<mac address=’52:54:00:22:04:0f’/> #為虛擬機分配MAC地址,務必唯一,如果是dhcp獲得同樣IP會引起沖突

<source bridge=’br0’/> #當前主機網橋名稱

# 重啟虛擬機

# 關閉KVM虛擬機

[root@linux-node1 opt]# virsh shutdown CentOS-7-x86_64

Domain CentOS-7-x86_64 is being shutdown

# 啟動KVM虛擬機

[root@linux-node1 opt]# virsh start CentOS-7-x86_64

Domain CentOS-7-x86_64 started

# 然后配置靜態IP地址,重啟網卡,即可以通過xshell連接上KVM虛擬機了。

KVM性能優化

1)CPU的優化

Inter的cpu運行級別,按權限級別高低Ring3->Ring1->Ring0(Ring2和Ring1暫時不使用)Ring3為用戶態;Ring0為內核態

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

2)CPU緩存綁定

[root@linux-node1 ~]# lscpu|grep cache

L1d cache: 32K

L1i cache: 32K

L2 cache: 256K

L3 cache: 3072K

L1是靜態緩存,造價高。

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

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

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

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

cpu綁定的優點:提高性能,20%以上

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

3)內存優化

原本實現方式:

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

宿主機的虛擬內存===>宿主機的物理內存

現在實現方式:EPT(inter)

虛擬機的虛擬內存=====EPT=====宿主機的物理內存

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

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

KSM內存合并

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

[root@linux-node1 ~]# ps aux |grep ksmd

root 280 0.0 0.0 0 0 ? SN 20:37 0:00 [ksmd]

大頁內存

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

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

[always] madvise never

[root@linux-node1 ~]# ps aux|grep hugepage|grep -v grep

root 2810.0 0.0 00 ? SN 04:220:03 [khugepaged]

4)磁盤IO優化

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

1--Noop Scheduler:簡單的FIFO隊列,最簡單的調度算法,由于會產生讀IO的阻塞,一般使用在SSD硬盤,此時不需要調度,IO效果非常好

2--Anticipatory IO Scheduler(as scheduler)適合大數據順序順序存儲的文件服務器,如ftp server和web server,不適合數據庫環境,DB服務器不要使用這種算法。

3--Deadline Schedler:按照截止時間的調度算法,為了防止出現讀取被餓死的現象,按照截止時間進行調整,默認的是讀期限短于寫期限,就不會產生餓死的狀況,一般應用在數據庫

4--Complete Fair Queueing Schedule:完全公平的排隊的IO調度算法,保證每個進程相對特別公平的使用IO

# 查看本機Centos7默認所支持的調度算法

[root@linux-node1 ~]# dmesg|grep -i “scheduler”

[ 1.332147] io scheduler noop registered

[ 1.332151] io scheduler deadline registered (default)

[ 1.332190] io scheduler cfq registered

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

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

noop [deadline] cfq

[root@linux-node1 ~]# echo cfq >/sys/block/sda/queue/scheduler

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

noop deadline [cfq]

# 使更改的IO調度算法永久生效,需要更改內核參數

[root@linux-node1 ~]# vim /boot/grub/menu.lst

kernel /boot/vmlinuz-3.10.0-229.el7 ro root=LABEL=/ elevator=deadline rhgb quiet

***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************

總結

以上是生活随笔為你收集整理的云计算和虚拟机基础梳理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。