virtio blk原理

virtio blk原理,第1张

别人写的virtio blk原理

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命令后,最终会执行到相应的虚拟磁盘文.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11227344.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存