趣谈 Linux 操作系统
刘超
前网易杭州研究院云计算技术部首席架构师
85459 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 72 讲
趣谈 Linux 操作系统
15
15
1.0x
00:00/00:00
登录|注册

53 | 存储虚拟化(上):如何建立自己保管的单独档案库?

qcow2_open函数
bdrv_open_common函数
blk_new_open函数
blockdev_init函数
drive_new函数
configure_blockdev函数
virtio_init函数
virtio_blk_device_realize函数
Virtio Block Device的继承关系
virtqueue
virtio的架构
研究qcow2文件格式
存储虚拟化的过程总结
qemu启动过程中的存储虚拟化
初始化阶段的存储虚拟化
virtio的基本原理
完全虚拟化
硬件辅助虚拟化
CPU和内存虚拟化
课堂练习
总结时刻
存储和网络虚拟化
虚拟化技术
存储虚拟化的过程

该思维导图由 AI 生成,仅供参考

前面几节,我们讲了 CPU 和内存的虚拟化。我们知道,完全虚拟化是很慢的,而通过内核的 KVM 技术和 EPT 技术,加速虚拟机对于物理 CPU 和内存的使用,我们称为硬件辅助虚拟化。
对于一台虚拟机而言,除了要虚拟化 CPU 和内存,存储和网络也需要虚拟化,存储和网络都属于外部设备,这些外部设备应该如何虚拟化呢?
当然一种方式还是完全虚拟化。比如,有什么样的硬盘设备或者网卡设备,我们就用 qemu 模拟一个一模一样的软件的硬盘和网卡设备,这样在虚拟机里面的操作系统看来,使用这些设备和使用物理设备是一样的。当然缺点就是,qemu 模拟的设备又是一个翻译官的角色。虽然这个时候虚拟机里面的操作系统,意识不到自己是运行在虚拟机里面的,但是这种每个指令都翻译的方式,实在是太慢了。
另外一种方式就是,虚拟机里面的操作系统不是一个通用的操作系统,它知道自己是运行在虚拟机里面的,使用的硬盘设备和网络设备都是虚拟的,应该加载特殊的驱动才能运行。这些特殊的驱动往往要通过虚拟机里面和外面配合工作的模式,来加速对于物理存储和网络设备的使用。

virtio 的基本原理

在虚拟化技术的早期,不同的虚拟化技术会针对不同硬盘设备和网络设备实现不同的驱动,虚拟机里面的操作系统也要根据不同的虚拟化技术和物理存储和网络设备,选择加载不同的驱动。但是,由于硬盘设备和网络设备太多了,驱动纷繁复杂。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了存储虚拟化的基本原理和实现过程。首先介绍了硬件辅助虚拟化的重要性,然后详细解释了virtio的基本原理和架构,以及Virtio Block Device的继承关系和初始化过程。通过对VirtIODevice、VirtQueue和vring之间的关系的解释,读者可以快速了解存储虚拟化的核心概念和实现细节。文章还从qemu的启动过程中探讨了存储虚拟化的初始化过程,以及对qcow2文件格式的研究。总体而言,本文内容深入浅出,适合技术人员快速了解存储虚拟化的基本原理和实现过程。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(10)

  • 最新
  • 精选
  • cuikt
    留个言,讲的挺好!

    作者回复: 谢谢

    2019-08-15
    1
  • 潇是潇洒的洒
    留个爪,虽然大部分都看不懂,但是我的初心是了解操作系统的概念,所以第一遍不关注细节,构建系统的大体框架,知道有这么个事儿就好了,好像看到这里,还能坚持的人就很少了,留个言,鼓励自己一下,希望再回来来看的时候,自己会多一些明悟。
    2019-09-06
    1
    37
  • 莫名
    赞,之前只是粗略读了一遍,留个大概印象。最近在优化虚拟机存储性能,重新拜读,受益匪浅,理解深刻了很多。
    2020-07-29
    1
    4
  • 靠人品去赢
    老师他这个协程和go的协程对比有什么异同?
    2019-09-17
    3
  • Geek_c2c8d1
    哇!看到这里的人已经越来越少了,虽然我也看不懂,但是还是想坚持看完第一遍,有个印象。这两个月在找工作,来这里打个卡。
    2021-08-15
    1
  • A免帅叫哥
    这一节比内存和cpu的虚拟化简单很多。
    2021-04-23
    1
  • 焦太郎
    没有什么复杂的问题是分层解决不了的,如果有,就是分的还不够(- -)
    2023-05-17归属地:河南
  • Geek_cc94b0
    看的晕,但是还是坚持下来
    2022-07-28归属地:陕西
  • 在vm里用的大部分是协程的话,是不是一些long running的服务在vm上跑会比在裸机上跑性能更好? 用户/内核态之间的切换会少很多吧?
    2022-01-24
  • luo
    讲的好
    2022-01-23
    1
收起评论
显示
设置
留言
10
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部