原创 gdb + kvm調試內核

1.編譯內核修改Makefile,修改爲-O1 或者-O0 ifdef CONFIG_PROFILE_ALL_BRANCHES

原创 內存熱添加

static void pc_dimm_class_init(ObjectClass oc, void data){DeviceClass dc = DEVICE_CLASS(oc);PCDIMMDeviceClass ddc = PC_D

原创 qemu trace使用

Qemu有自己的Trace框架並支持多個debug/trace後端包括:nop, dtrace, ftrace, log, simple, ust,可以幫助我們分析Qemu中的問題。關於這些backend的介紹,可以看這個鏈接:http:/

原创 (技術分析)kvm虛擬化原理

VMCS結構VMCS是保持在內存中的數據結構,包含了虛擬cpu的相關寄存器的內容和虛擬cpu相關的控制信息,每個VMCS對應一個虛擬CPU。VMCS在使用時需要與物理CPU綁定。在任意給定時候,VMCS與物理CPU是一對一的綁定關係,即一個

原创 linux kdump原理以及配置

相關的原理kexec是一個快速啓動機制,允許通過已運行的內核的上下文啓動一個linux內核,不需要經過BIOS。實現kdump機制的關鍵,包括二個組成部分:一是內核空間的系統調用kexec_load,負責在生產內核啓動時將捕獲內核加載到指定

原创 qemu HBitmap原理

一:磁盤位圖HBitmap分析使用unsigned long已經能夠勝任bitmap的實現,但是當bitmap比較大的時候,它的操作效率很低。像BloclDriver維持bitmap,磁盤文件的每個塊都對應一個bit爲,那麼這張bitmap

原创 qcow2快照操作

查看虛擬機快照virsh snapshot-list vmname 查看快照的詳細信息virsh snapshot-info vmname snapname 創建內部快照virsh snapshot-create-as vmname sn

原创 libvirt原理及使用

libvirt簡介    libvirt是一套免費的,開源的支持linux下主流虛擬化管理工具。支持c,c++,python,java等多種主流開發語言的綁定。目前,國內大部分虛擬化廠商都是使用libvirt+qemu+kvm來實現雲平臺。

原创 qemu內存管理

1 Qemu內存分佈2 內存初始化Qemu中的內存模型,簡單來說就是Qemu申請用戶態內存並進行管理,並將該部分申請的內存註冊到對應的加速器(如KVM)中。這樣的模型有如下好處: 策略與機制分離。加速的機制由KVM負責,而如何調用

原创 libvirt API非阻塞調用及相關的原理分析

以下的分析基於libvirt 3.0版本。   libvirt是一套免費,開源的支持linux下的主流虛擬化管理工具,目前有大量的應用程序構建在libvirt之上,很多虛擬化產品的開發都是靈活調用libvirt的API接口去實現的。對於應用

原创 qcow2快照原理

關鍵術語:cluster 一個Qcow2 img文件由固定大小的單元組成,該單元稱爲cluster,默認大小爲65536bytes/64Ksector 數據塊讀寫的最小單元,大小爲512字節host cluster 位於Host上q