VMware存储栈那点儿事儿

本文首发于http://oliveryang.net,转载时请包含原文或者作者网站链接。

VMware存储栈那点儿事儿

解释什么是Virtual Machine的工作就交给万能的维基百科了。

本篇文章只限于VMware vShpere VMKernel的Storage Stack(存储栈)的介绍。这里要说的一些概念都是VMware虚拟化技术里存储相关的概念。VMware vShere的存储栈是VMKernel的重要组成部分,存储栈的大图可以从VMKernel Storage TOI下载到。我们就按照存储栈自下而上的顺序来一一介绍。

1. Storage Device Drivers

和其它操作系统一样,VMKernel的存储栈最底层就是驱动程序和驱动程序的框架了。而驱动和硬件的生态系统通常都是非Windows和Linux操作系统的一大弱点。VMKernel对硬件驱动程序的支持分为两大类,

  • Linux Device Drivers and Linux Emulation Layer

    早期的vSphere VMKernel用了一个巧妙的办法来解决这个问题,那就是通过Linux驱动模拟层(vmklinux)来让Linux驱动源代码可以和VMKernel链接在一起。这个Linux模拟层为Linux原生驱动程序提供和Linux一致的API,降低驱动移植的代价。这种方式利用了Linux良好的硬件驱动生态系统,为vSphere的硬件兼容支持铺平了道路。

    个人理解,Linux模拟层的另一个作用就把GPL许可的Linux驱动和商业许可的VMKernel隔离起来,解决中间的法律风险。具体来说就是,vmklinux作为一个Linux驱动模拟层,起到翻译GPL接口到VMware原生接口的作用。把Linux驱动的API,尤其是导出符号为GPL许可的API模拟实现,再调用vmkernel的原生API。这里面vmklinux已经按照GPL开源,但vmkernel就不用了,因为它没有直接使用GPL许可的API。(本人是法盲,但Linux兼容层的设计和代码绝对是经过律师专业的review,经得起考验的。) 虽然这貌似也不是VMware一家的这么做,但是这种作法依旧为VMware招来了诉讼。LWN也做了相关报导,前几个月还有一些进展,估计VMware不会败诉,否则一大堆公司要遭殃了。

    Linux模拟层的代码在存储栈里对应了IDE,SCSI,Block,iSCSI,FC,FCOE驱动的所有相关协议API的模拟,应该还是有一定复杂度的。

  • Native Device Drivers and VMKernel Device Layer

    Linux驱动兼容层的做法虽然巧妙,但带来了性能,可靠性和稳定性的一些问题。vSphere 5.5开始,Native Device Dri

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值