KVM儲存實踐(一)

2021-07-27 22:14:17 字數 1185 閱讀 1196

引用了網上的一些,感謝沒查到名字的大神們

kvm的儲存模式有很多種,threads,dataplane,vhost等,甚至還可以利用pci直通技術做儲存的直通。當然還有好幾種cache模式,比如none,writeback,writethrough等。本文不會聚焦於這些技術的實現原理,僅從實踐場景出發,總結一下這些模式的特點,和各自能夠勝任的場景。以及在實踐過程中,遇到的一些問題,尤其是效能問題,以及它們對應的解決方案。

如下圖,是乙個典型的kvm虛擬機器的儲存棧,所有儲存模式基本上都大同小異。程式和核心與在物理機上執行沒有什麼差別。guest通過硬體**與qemu通訊;qemu將io轉化成對映象檔案的讀寫;host kernel處理guest裡面來的io和其他一般程式也就沒有什麼差別了。

從上見面這張圖其實就可以看出kvm甚至其他hypervisor虛擬機器儲存棧的一些特點:

從上面描述的這幾條繼續分析,實際上這樣的儲存棧上面是有一些問題的,所有的工作,裡面和外面重複了。實際上 ,在真實的業務場景下,這樣的重複工作確實會帶來一些問題,最典型的就是效能和資料可靠性的問題。

先說資料可靠性,在一些資料可靠性要求高的情況下,應用程式會使用direct io或者sync等命令保證資料已經被正確地寫到了磁碟上面。還有磁碟排程,比如我們常見的電梯演算法,它主要是為傳統的機械硬碟設計的,目的就是最大化地在乙個週期內合併相鄰的io,從而提公升儲存效能。這兩種技術都不是誕生於虛擬化時代,所以將這兩種技術用於虛擬機器時,就有可能會產生一些和預想不太一樣的結果。

因為有映象檔案,host的儲存視角和guest的儲存視角是不一樣的,尤其在精簡置備這種場景下,在guest裡面相鄰的兩個資料塊在host上不一定是相鄰的。所以在guest裡面合併在一起的io到了host以後,又要被拆開。反而造成效能的下降。

所以,一般在虛擬機器裡面做儲存效能優化,都會將排程器設定成為deadline或者none,來減少guest內部排程器做的無用功。

當然在使用一些高階儲存時,也會建議將排程器設定成為deadline或者none,具體原因會在後面的ssd儲存章節裡面分析。

KVM 虛擬化實踐

主要是按照 centos7之kvm虛擬化基礎管理詳解 實踐,其他的注意點 1.vmware下的centos7實踐kvm虛擬化 通俗易懂 開啟巢狀虛擬功能 vmware的虛擬機器cpu設定勾上兩個 虛擬化.就行了 得先關機才能修改 2.vmware虛擬機器如何與主機共享資料夾 3.win10中安裝ce...

kvm 儲存棧分析

1.kvm與qemu的關係 發現好多同學還是不太了解kvm與qemu的關係,首先做個簡單的介紹 總結一下 qemu是kvm的客戶端展現,kvm是核心為qemu提供的服務 用來處理qemu的請求。2.kvm 儲存棧的原理 從上圖的storage stack中可以看出有些模組都是double的,比如 1...

KVM映象靜態複製實踐總結

一 同一宿主情況 假定有了乙個vm1虛擬機器,現在要轉殖出vm2虛擬機器。按照下列步驟執行 1.停止vm1 virsh shutdown vm1 2.virt clone o wm1 n wm2 file kvm01 vm2.img 3.修改 etc libvirt qemu目錄下,有與虛擬機器vm...