原文在這裡:
kvm中host和guest可以各自維護自己的快取,這導致記憶體中可以有兩份快取資料。這裡說的host上的快取是頁快取,guest上的快取則是說guest機上的disk write cache。一般至少要保留這兩種快取的其中一種。
在linux上,不通過頁快取進行讀寫使用o_direct標識(buffer io vs direct io)。頁快取通過fsync將改動寫入硬碟,大小是剩餘可用物理記憶體,大小差別這麼大。按照文章的描述,我感覺這裡的disk write cache應該是乙個塊快取,並非硬碟自帶快取。
rhel6上,kvm/qemu支援以下快取模式:
1.writethrough:預設快取模式
page cache enable,
disk write cache disabled.重複讀的效能可以,但是寫入的效能可能會受影響。原文說:資料完整性有保障,不理解為何。
2.writeback
both enabled,儘管效能比較有保障,但是仍然怕突然斷電,所以只能做臨時方案,不推薦。
3.none
host cache disabled,guest cache enabled.這意味著對磁碟映像檔案的訪問是direct io,效能很好。如果虛擬機器的disk write cache不怕停電(難道能搞得真想硬碟自帶的快取?),或者guest機有序地儲存資料(fsync,或者檔案系統級別上),資料完整性就有保障了。但是由於host上的page cache被關閉,重複讀效能會下降(不過想想,guest上的系統應該也有page cache,其中的程式也會考慮快取,這樣應該不會有大問題)。
4.unsafe
不安全,安裝guest機效能好,不能用於生產,具體這個策略怎麼工作,原文沒有言明。
本地硬碟推薦使用writethrough,因為效能可以接受,資料完整性***。nfs推薦用none,因為在nfs上o_direct比o_sync快。
ps:感覺水有點深,不能完全理解,只能記下結論。原文中有提到stroage stack,可以搜到ppt:the kvm/qemu storage stack
KVM虛擬化之磁碟 磁碟快取模式
虛擬化一般網路和儲存都是難點。下圖所示,磁碟i o從虛擬機器到宿主物理機儲存的過程。其中虛擬機器映象並不是必須的。並不一定要給虛擬機器建立虛擬磁碟檔案。我們可以通過邏輯對映,將san的塊裝置指定給虛擬機器使用。這裡我們暫討論宿主機模擬磁碟的場景。如上圖,快取模式作用在虛擬化層和宿主機檔案系統或塊裝置...
KVM網橋模式
root kvm host brctl addbr virbr0 新增virbr0這個bridge 再建立vribr0配置檔案 etc sysconfig network scripts ifcfg virbr0 root kvm host cat etc sysconfig network scr...
OpenGL的幾種快取
螢幕是由乙個個具有顏色的微小正方形組成的,這微小正方形稱為畫素。為了在螢幕上顯示三維場景,最終必須將三維模型分解成許許多多的畫素,這個過程就是光柵化。當繪製光柵化得到的畫素時,我們需要顏色及其它輔助資訊,opengi.為螢幕上所有象素的每種資訊的集合都提供了一塊儲存區域,這種儲存區域稱為 快取 bu...