qemu-kvm磁盤讀寫的緩沖(cache)的五種模式


qemu-kvm磁盤讀寫的緩沖(cache)模式一共有五種,分別是
writethrough, wirteback, none, unsafe, directsync
當你對VM讀寫磁盤的性能有不同的要求的時候,你可以在其啟動的參數(cache=xxxx)
里面進行一個合理的選擇.

現在來簡單說一說這五種模式的各自的特點(默認的是writeback)

 

cache=writethrough:
  該模式對應的標志位是O_DSYNC,僅當數據被提交到了存儲設備里面的時候,寫操作
  才會被完整的通告。此時host的頁緩存可以被用在一種被稱為writethrough緩存的模式。
  guest的虛擬存儲設備被告知沒有回寫緩存(writeback cache),因此guest不需要為了
  操縱整塊數據而發送刷新緩存的指令了。此時的存儲功能如同有一個直寫緩存(writethrough cache)一樣

 

cache=none:
  所對應的標志位是O_DIRECT,在 none 模式下,VM的IO操作直接
  在qemu-kvm的userspace緩沖和存儲設備之間進行,繞開了host的頁緩沖。
  這個過程就相當於讓vm直接訪問了你的host的磁盤,從而性能得到了提升

 

cache=writeback:
  對應的標志位既不是 O_DSYNC 也不是 O_DIRECT ,在writeback模式下,IO操作會經過
  host的頁緩沖,存放在host頁緩沖里的寫操作會完整地通知給guest.
  除此之外,guest的虛擬存貯適配器會被告知有回寫緩存(writeback cache),所以為了能夠
  整體地管理數據,guest將會發送刷新緩存的指令.類似於帶有RAM緩存的磁盤陣列(RAID)管理器.

 

cache=unsafe:
  該模式與writeback差不多,不過從guest發出的刷新緩存指令將會被忽視掉,這意味着使用者
  將會以犧牲數據的完整性來換取性能的提升。

 

cache=directsync:
  該模式所對應的標志位是O_DSYNC和O_DIRECT,僅當數據被提交到了存儲設備的時候,寫
  操作才會被完整地通告,並且可以放心地繞過host的頁緩存。
  就像writethrough模式,有時候不發送刷新緩存的指令時很有用的.該模式是最新添加的一種cache模式,
  使得緩存與直接訪問的結合成為了可能.


參考鏈接:
  -https://www.suse.com/documentation/sles11/book_kvm/data/sect1_1_chapter_book_kvm.html
  -http://www.ilsistemista.net/index.php/virtualization/23-kvm-storage-performance-and-cache-settings-on-red-hat-enterprise-linux-62.html?limitstart=0
  -http://smilejay.com/2012/08/qemu-kvm-cache-off/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM