KVM虛擬化之磁碟 磁碟快取模式

2021-10-23 11:14:55 字數 1701 閱讀 2119

虛擬化一般網路和儲存都是難點。下圖所示,磁碟i/o從虛擬機器到宿主物理機儲存的過程。

其中虛擬機器映象並不是必須的。並不一定要給虛擬機器建立虛擬磁碟檔案。我們可以通過邏輯對映,將san的塊裝置指定給虛擬機器使用。這裡我們暫討論宿主機模擬磁碟的場景。

如上圖,快取模式作用在虛擬化層和宿主機檔案系統或塊裝置之間。

效能:none>unsafe>writeback>writeththrough

資料一致性:writethrough>none>writeback>unsafe

directsync類似於writethrough,屬於新增快取模式,效能應該略強於writethrough,一致性很高。

快取方式

標誌位效能

安全性磁碟快取屬性是作用在映象檔案或塊裝置上的

不指定,預設

qemu-kvm <1.2版本

qemu-kvm >1.2版本

宿主機:centos

qemu-kvm >1.2版本

&ide\scsi\virtio

writethrough

writeback

none

writethrough

writethrough/透寫

o_dsync

讀較快寫超慢

高不使用任何快取,直接操作磁碟寫,只有資料被寫入磁碟才會返回成功。雖然保持了資料一致性,但是因為磁碟的寫入速度很慢,所以該模式下寫速度很慢,但是讀速度較高。無需刷盤。

writeback/回寫

讀寫快低

將資料寫入宿主機頁面快取則返回寫成功。頁面快取再合併資料寫磁碟。虛機磁碟控制器也知道使用了back cache,所以為了保持資料一致性(虛機側資料新,磁碟側資料舊),在需要的時候,虛機會傳送刷盤(將快取裡的資料強制持久化到磁碟。)指令。

none

o_direct

隨機讀寫快

順序讀寫慢

高繞過宿主機頁面快取(os cache),而是在qemu-kvm使用者空間直接訪問宿主機磁碟。這個過程就相當於讓vm直接訪問了你的host的磁碟,從而效能得到了提公升。資料被放入宿主機磁碟寫佇列則返回成功。需要時刷盤。

unsafe

讀寫快低

同writeback,但是unsafe忽略所有的刷盤指令。無刷盤。

directsync

o_dsync

o_direct

讀寫快高

應該屬於writethrough和none方式的結合。無需刷盤。

注釋:o_direct - 繞過緩衝區快取記憶體 - 直接io:linux允許應用程式在執行磁碟io時繞過緩衝區快取記憶體,從使用者空間直接將資料傳遞到檔案或磁碟裝置,稱為直接io(direct io)或者裸io(raw io)

應用場景:

writeback:效能較好,不太安全(取決於刷盤週期,刷盤週期跟fs配置相關,ext4預設5秒刷一次,可以在guest fs中配置刷盤週期),可使用者測試環境。

wirthrough:效能差,安全性高,可用於單機虛擬化場景。

unsafe:效能較好,最不安全,只有在虛擬機關機(虛機程序結束),才會執行一次刷盤操作。可用於安裝虛機。

KVM虛擬機器磁碟加密

最近在找虛擬機器磁碟加密的資料,發現網上資料還是比較少,在這裡彙總一下。之前qcow2格式的磁碟預設加密方式似乎已經不再支援,官方推薦luks或dm crypt加密。man qemu img use of qcow qcow2 encryption is thus strongly discoura...

更改kvm虛擬機器磁碟大小

kvm 虛擬機器的磁碟大小可通過命令 qemu img resize filename size 來改,要注意的是resize只支援raw格式的磁碟檔案,如果想更改qcow2等格式的磁碟大小,需先用qemu img convert 轉換磁碟格式後才能更改大小 另外,用命令改完大小後需重啟kvm虛擬機...

KVM虛擬機器調整磁碟大小

首先備份原虛擬機器檔案 cp vm.qcow2 vm.qcow2.bak 檢視虛擬機器分割槽情況 virt df h vm.qcow2 建立乙個新的虛擬機器磁碟檔案,並設定想要的磁碟大小 qemu img create f qcow2 vm big.qcow2 100g 調整分割槽大小 virt r...