
virtio的原理说起来挺简单的,两边是front-driver,backend-driver,中间是virtio和vring。关键是front-driver如何将io *** 作传到backend-driver,backend-driver又是如何将这些io *** 作解析出来,执行完,通知回front-driver的?这里面的细节,细思极恐!
问题一:Guest,Hypervisor,Host是如何建立联系的?本质就是初始化过程!
virtio初始化函数很有规律基本就是:virtio_*_init,这种形式,那就好搞了,用systemtap抓取初始化的调用:
virtio blk的Qemu相关参数有两个:
可以看到virtio blk的TypeInfo name是:"virtio-blk-pci"。
Instance结构:
上面的结构体有个规律,逐渐由pci device往blk device转变,VirtIOPCIProxy,VirtIOBlock两个就是pci device和blk device的桥梁。
可使用IDE、AHCI、virtio-scsi等driver 实现: QEMU的block层接受到Guest OS通过Driver转发下来的TRIM或UNMAP命令后,最终会执行到相应的虚拟磁盘文.可使用IDE、AHCI、virtio-scsi等driver 实现: QEMU的block层接受到Guest OS通过Driver转发下来的TRIM或UNMAP命令后,最终会执行到相应的虚拟磁盘文.可使用IDE、AHCI、virtio-scsi等driver 实现: QEMU的block层接受到Guest OS通过Driver转发下来的TRIM或UNMAP命令后,最终会执行到相应的虚拟磁盘文.欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)