54 | 存储虚拟化(下):如何建立自己保管的单独档案库?
刘超
该思维导图由 AI 生成,仅供参考
上一节,我们讲了 qemu 启动过程中的存储虚拟化。好了,现在 qemu 启动了,硬盘设备文件已经打开了。那如果我们要往虚拟机的一个进程写入一个文件,该怎么做呢?最终这个文件又是如何落到宿主机上的硬盘文件的呢?这一节,我们一起来看一看。
前端设备驱动 virtio_blk
virtio 的驱动程序代码在 Linux 操作系统的源代码里面,文件名叫 drivers/block/virtio_blk.c。
前面我们介绍过设备驱动程序,从这里的代码中,我们能看到非常熟悉的结构。它会创建一个 workqueue,注册一个块设备,并获得一个主设备号,然后注册一个驱动函数 virtio_blk。
当一个设备驱动作为一个内核模块被初始化的时候,probe 函数会被调用,因而我们来看一下 virtblk_probe。
在 virtblk_probe 中,我们首先看到的是 struct request_queue,这是每一个块设备都有的一个队列。还记得吗?它有两个函数,一个是 make_request_fn 函数,用于生成 request;另一个是 request_fn 函数,用于处理 request。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了存储虚拟化场景下的数据写入过程及相关技术细节。在虚拟化环境中,数据的写入涉及虚拟机和宿主机之间的复杂协调和管理,包括数据传输、缓存处理和文件系统操作等多个环节。存储虚拟化技术通过虚拟磁盘驱动程序和文件系统缓存的协同工作,实现了虚拟机和宿主机之间的高效数据交互,体现了其高效性和灵活性。文章还介绍了在客户机前端和qemu后端之间传递数据的支持,包括设备驱动程序的初始化和队列的设置,以及virtqueue的初始化和管理。通过详细讲解virtio队列的管理和配置过程,读者可以深入了解存储虚拟化技术的重要细节。文章内容涵盖了虚拟磁盘驱动程序、PCI设备配置、队列的格式等多个方面,为读者提供了全面的技术参考。文章内容涵盖了虚拟磁盘驱动程序、PCI设备配置、队列的格式等多个方面,为读者提供了全面的技术参考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- 没心没肺每次看到文中说还记得什么什么吗,我心里总是默默回答:不 记 得😂
作者回复: 的确,体系比较复杂,关联性很强
2019-07-31215 - Adam Lau坦白说,这是极客上技术含量最好的专栏了,听不懂了,但是表示敬意。
作者回复: 谢谢,加油
2020-04-1712 - williamcai调用链条好长,突然来个回马枪,一下子杀到开始的地方2019-12-233
- shangyu老师能不能解释下这种特殊的驱动模式与直接翻译write请求的性能差异2019-12-233
- 追风筝的人好复杂鸭2019-11-261
收起评论