讀KVM虛擬化技術實戰與原理解析
1、軟體虛擬化和硬體虛擬化:實現虛擬化的重要一步在於:虛擬化層必須能夠截獲計算元件對物理資源的直接訪問,並將其重定向到虛擬資源池中。硬體虛擬化,就是物理平臺本身提供了對特殊指令的截獲和重定向的硬體支援
2、準虛擬化與全虛擬化:改動客戶作業系統,使他以為自己執行在虛擬環境下,能夠與虛擬機器監控協同工作叫做準虛擬化,準虛擬化弱化了對虛擬機器特殊指令的被動截獲要求,需要修改客戶機作業系統的原始碼實現主動通知
3、記憶體管理:記憶體頁面共享通過一項名為核心同頁合併ksm)的核心功能來支援。KSM掃描每個虛擬機器的記憶體,如果虛擬機器擁有相同的記憶體頁面,將它合併到一個在虛擬機器之間共享的頁面,僅存一個副本。如果一個客戶機嘗試更改這個共享頁面,他講得到自己的專用副本
4、kvm的作用:kvm僅支援硬體虛擬化,他開啟並初始化系統硬體以支援虛擬化的執行,在被核心載入的時候,kvm模組會先初始化內部的資料結構,檢測當前的cpu,開啟cpu控制暫存器的cr4中的虛擬化控制開關,執行VMXON指令將宿主作業系統置於虛擬化模式種的根模式,最後,kvm模組建立特殊裝置/dev/kvm並等待來自使用者空間的命令,接下來虛擬機器的建立和執行將是一個使用者空間的程式qemu與kvm配合互動過程
5、處理器中的記憶體管理單元(MMU)是通過頁表的形式將程式執行的虛擬地址轉換成為實體記憶體地址。在虛擬機器模式下,記憶體管理單元的頁表則必須在一次查詢的時候完成倆次地址轉換,客虛地址-->客物地址-->真物地址
解決方案:影子頁表,客戶機執行的時候,處理器使用的頁表不是客戶機作業系統維護的頁表,而是kvm模組根據這個頁表維護的另外一套影子頁表,但他開銷蠻大的,intel的EPT技術解決,即通過·引入第二級頁表來描述客戶機虛擬地址和真是實體地址的轉換,硬體可以自動進行倆級轉換生成正確的記憶體訪問地址,kvm稱二維分頁機制 (影子:單層表;ERT:倆層表)
VPID:虛擬處理器標誌,是在硬體上對TLB資源管理(tlb用於快取頁表)的優化,通過在硬體上為每個TLB項增加一個標誌,用於不同虛擬處理器的地址空間,從而區分開hypervisor和不同處理器的TLB。
6、記憶體過載使用:記憶體交換swapping + 氣球+頁共享(ksm)
7、總的來說,記憶體訪問密集型的應用,使用huge page 可以提高客戶機效能,但注意大頁記憶體不能被換出(swap out),也不能使用氣球機制自動增長
8、buffer/cache:前者快取超級塊、inode資訊,後者快取檔案資訊;free命令顯示的總記憶體是除去核心執行檔案佔用記憶體和一些系統保留的記憶體之後使用的記憶體 (buffer/cache),查記憶體用dmesg
9、Cache寫機制:Write-through與Write-back http://witmax.cn/cache-writing-policies.html
Write-through(直寫模式)在資料更新時,同時寫入快取Cache和後端儲存。此模式的優點是操作簡單;缺點是因為資料修改需要同時寫入儲存,資料寫入速度較慢. Write-back(回寫模式)在資料更新時只寫入快取Cache。只在資料被替換出快取時,被修改的快取資料才會被寫到後端儲存。此模式的優點是資料寫入速度快,因為不需要寫儲存;缺點是一旦更新後的資料未被寫入儲存時出現系統掉電的情況,資料將無法找回。
10、半虛擬化驅動:virtio,i/o頻繁時cpu過高; qemu是全虛擬化模擬,vm頻繁進出exit;VT-d是裝置直接分配 。。。SR-IOV使網絡卡產生多個獨立的虛擬網絡卡