• 文章搜索:
  • 战神图录

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    苦练IO,一虚得道--虚拟机硬盘类型修改

    作者:  |  上传时间:2014-03-20  |  关键字:苦练IO,一虚得道--虚拟机硬盘类型修改

    --陈明槐

    一、 硬盘类型介绍

    硬盘接口是硬盘与主机系统间的连接部件,作用是在硬盘缓存和主机内存之间传输数据。不同的硬盘接口决定着硬盘与计算机之间的连接速度,在整个系统中,硬盘接口的优劣直接影响着程序运行快慢和系统性能好坏。

    从整体的角度上,硬盘接口分为IDE、SATA、SCSI 、 光纤通道和SAS五种。

    IDE接口 SCSI接口 光纤通道

    SATA接口 SAS接口

    二、 虚拟机硬盘类型介绍

    H3C CAS系统在创建虚拟机时提供了四种接口类型的硬盘:

    l IDE硬盘:建议使用。

    l SCSI硬盘:Windows操作系统默认没有SCSI硬盘驱动,而SCSI硬盘驱动需要授权购买,因此对于Windows操作系统不建议使用“SCSI硬盘”。

    l USB硬盘:使用USB协议,磁盘的使用效率较低,不建议使用

    l Virtio硬盘:虚拟化环境中进过优化的磁盘类型,提高了磁盘的I/O性能,内部使用SCSI协议,建议使用。

    三、 虚拟机Virtio硬盘介绍

    1. 非Virtio模型介绍

    下图为非Virtio模型架构和实现流程:

    1) 虚拟机中的设备驱动程序发起一次I/O操作请求;

    2) KVM模块中的“I/O捕获程序”捕获I/O操作请求,进行相应的处理,并将请求信息存储在I/O共享页中;

    3) I/O捕获程序通知QEMU模拟程序;

    4) QEMU模拟程序收到I/O捕获程序的通知后,通过I/O共享页获取该I/O操作请求的具体信息;

    5) QEMU模拟程序的硬件模拟代码模拟出对应的I/O操作;

    6) QEMU模拟程序将结果放进I/O共享页中;

    7) QEMU模拟程序通知I/0捕获程序;

    8) I/O捕获程序从I/O共享页中读取操作结果;

    9) I/O捕获程序将结果返回给虚拟机。

    这种方式的缺点:

    l 存在进程阻塞问题,即只有当该I/O操作完成后,才会调用其他任务。

    l 路径特别长,经历多次系统上下文切换,涉及多次数据拷贝,影响虚拟机性能。

    2. Virtio模型介绍

    针对非Virtio硬盘的I/O模拟的缺点,设计出了Virtio模型,如下图所示。

    1) 虚拟机中安装的前端驱动,当虚拟机发生I/O请求时,由该前端驱动处理;

    2) 使用环形缓存区,用来存放前端驱动和后端驱动执行的信息。

    Virtio模型的优点:

    l 不需要模拟硬件,减少了系统开销;

    l 使用的环形缓冲区能一次性保存前端驱动的多个I/O操作请求,并由后端驱动批量处理,信息交互更有效;

    l 后端驱动和设备驱动均运行在内核中,它们间的通讯不需要系统上下文的切换。

    四、 修改虚拟机磁盘类型为Virtio

    通过前面知识的学习,我们知道在虚拟化环境中Virtio硬盘比其他类型硬盘具备明显的优势。通过实验室验证,“Virtio硬盘”的I/O效率是“IDE硬盘”的三倍左右,因此在创建虚拟机时建议使用Virtio硬盘。

    使用Virtio硬盘的关键步骤是在虚拟机中加载Virtio驱动程序,主要包括如下几种方式加载Virtio驱动程序(Windows为例,高版本的Linux模板默认包含了Virtio驱动程序):

    1. 安装操作系统时加载Vitrio驱动

    虚拟机创建时选择Virtio硬盘,接下来安装Windows操作系统时,由于操作系统没有Virtio驱动,导致无法识别到Virtio硬盘。此时可以通过添加软件的方式加载Virtio驱动。

    2. 通过CAS Tools工具加载Vitrio驱动

    虚拟机创建时没有选择Virtio硬盘,在虚拟机创建完成后计划将硬盘类型修改为Virtio硬盘,此时可以通过安装CAS Tools工具实现。

    1) 虚拟机虚拟光驱中选择CAS Tools工具。

    2) 虚拟机中安装CAS Tools工具。

    3) 虚拟机虚拟光驱中断开CAS Tools工具。

    4) 虚拟机关闭状态下在修改虚拟机对话框中删除虚拟机的原硬盘设备。

    5) 在修改虚拟机对话框中增加硬盘设备,将磁盘文件以Virtio硬盘类型重新添加到虚拟机。

    6) 启动虚拟机。