论VT-d对虚拟化NAS之价值

2019-03-02 作者:

Here the post is to talk about how to build a vm-based homelab NAS file server to make the entire unit (host and vm guest) working perfectly well, with both low power consumption, and highly flexible features like timer power on/off, completely spin down HDDs (as data warehouse) with a “power-off” vm – while the host is running well in 7×24. And the key to all of those, is Intel VT-d (feature of x64 processor), with an extra SATA controller attached on the motherboard.

Then btw, clear thinking, after 10 years working experience, should be considered as one of the most valued personalities of a professional.

硬件:产自圣地华强北,3205U,4 Intel i211,HDMI,4 USB,3.5mm音频,1 9pin COM

初始状态:一台基于KVM虚拟化的NAS(文件服务器),Host系统是Proxmox VE 5.3。

  • 当大部分教程选择esxi 5.x时,博主经仔细选择玩了PVE,原因1母鸡是标准debian本身可以做很多事(比如crontab,比如nfs server,比如gitlab等),2基于kvm稳定且不缺文档,3开源,4玩转了可以在工作中使用,毕竟是远近驰名的专业私有云solution。
  • 小鸡操作系统是DSM6,参考别的资料,应该是基于BSD的定制魔改版本。
  • 虚拟机(小鸡)分配2核1.5G内存作为计算资源。
  • 硬盘共3块。
    • sata1,引导盘,尺寸50M,用于引导无系统的DSM6进入可以安装系统的状态。虚拟盘,位于母鸡Intel SATA控制器下的mSATA SSD上的一个qcow2文件。
    • sata0,系统盘,尺寸20G,用于安装DSM6系统。同样虚拟盘,位于母鸡Intel SATA控制器下的mSATA SSD上的一个qcow2文件。
    • sata2,数据盘,尺寸2.0T,从基于PVE(Proxmox VE)的母鸡“伪·直通”到小鸡的物理磁盘。
  • 网卡是从PVE母鸡“真·直通”到小鸡的物理网卡,Intel i211千兆网。

 

存在问题:一台既无性能,也不可靠的文件服务器。

  • 所谓无性能,就得搞明白“真·直通”和“伪·直通”的区别,这里有关于Intel VT-x和VT-d的简介
    • 对于已经通过VT-d做了直通的i211网卡,其DMA和Interrupt都会remapping到虚拟机去,不再累及母鸡的cpu和内存来做传声筒;换句话说,几乎等价把母鸡的物理外设直连到了小鸡。小鸡关机,可以直接关掉物理网卡,这一点是最好佐证。
    • 而对于通过PVE命令“qm set –sata2”接到小鸡的磁盘,无非是把母鸡身上这个整体存储区间(整个硬盘),映射到小鸡虚拟的sata2通道(看起来还是整个硬盘)。也就是说,所有从小鸡对这块磁盘的读写,事无巨细都得母鸡全部过一遍,中断响应和IO性能差异高下立现。
  • 所谓不可靠,此处指两点细节问题。
    • 首先,对“伪·直通”的硬盘。我们到小鸡身体里面看(下图右),虚拟出来的QEMU SATA硬盘,其身份信息以及可支持的健康功能统统不见;与同一块硬盘在母鸡身上所得的详细数据相比(下图左),堪称凄惨。这就造成DSM6系统对磁盘健康程度(SMART)是一无所知的。
    • 然后,单数据盘,无RAID,对文件服务器而言……尤其对于一台连磁盘的SMART状态都看不到的服务器,屋漏偏逢连夜雨,绝了。

 

解决思路:把SATA控制器“真·直通”到小鸡。

  • ↑这是tm不可行的,常见家用计算机,包括我手里这台软路由,只有一个SATA控制器。意即给母鸡的系统盘,和给小鸡的数据盘,挂在同一个SATA控制器下,一根绳上蚂蚱,要走都走,要留都留。
  • 既然如此,那么外接一个SATA控制器。接在哪,去看技术手册。

  • 写的是用于WIFI模块/蓝牙模块/3G模块等,能否使用pcie-sata卡呢?不清楚。
  • 要先搞清楚是否有mini-pcie转sata3的卡,搜之。找到,就是它了。

 

  • 那么问题回来了,能否使用呢?卖软路由的店家是这么回复的。

 

  • 那么能接还是不能接呢?得学习一下Mini PCIE的pinout定义。
    • 标准Mini PCIE,是全pin,官方解释可以接wifi或者其他高速设备。
    • 仅USB Mini PCIE,少了7个pin,但USB管脚比如36~38等都健在,官方解释是4G或者GPS卡可以直接连在USB上,说白了就是用mini-pcie之名,行USB之实。
    • 那么这就成问题了,实际上USB转WIFI是可能的,软路由的这个Mini PCIE究竟是不是标准槽呢?
    • 然后Mini PCIE转SATA3,有没有用到标准槽的23、25、31、33几个pin呢?

 

  • 先看机器带的是不是标准槽。
    • 怎么看?拍照,看槽上pin脚是否悬空,是否统一拉高/拉低。
    • 刚好,这4个pin都接到了看起来像是电容或电阻的器件上,而且打了过孔到了板子背面,起码不是统一拉低,应该也不会是统一拉高。
    • 这是个好现象,说明这个插槽很有可能是标准槽。

 

  • 那么接下来就是,转接卡是不是用到了这4个pin呢?
    • 这算是一个佐证,因为单纯的USB 2.0不可能够得上SATA3的带宽。
    • 所幸taobao卖家的广告图非常细致,看的清布线,红绿蓝黄四个信号,全部进入了主控芯片。
  • 现在清楚了,软路由上的Mini PCIE极有可能是标准槽,而转接卡也确实需要一个标准槽(否则无法工作)。

 

  • 下单,到货,装机,接硬盘(x2)。
    • 红框是转接卡转出的SATA数据口。蓝框是原机给的SATA供电接口1分2。
    • 给两块机械盘做个“临时工棚”。

 

结果测试:成败在此一举。

  • 开母鸡,进入PVE web管理页面。
  • 在直通设备列表看到新的SATA controller,名叫ASM1062。
  • 把ASM1062直通给DSM6,成功一半。

 

  • 开小鸡,ssh分别登录母鸡和小鸡,查看硬盘。
    • 首先母鸡有两个SATA控制器,是对的。
    • 其次母鸡物理连接3块硬盘,一个mSATA在Intel SATA控制器,两个SATA3在ASM1062 SATA控制器;但列出只有1块,说明另外2块随着ASM 1062直通小鸡,母鸡已经不管了。
    • 再看小鸡,首先ASM 1062控制器可以看到。
    • 查看小鸡的磁盘,一共4块。sda是之前提到的系统盘,是qcow2虚拟盘;sdb是引导盘,qcow2虚拟盘;sdg和sdh是跟着ASM 1062进来的物理盘;离成功一步之遥了。
    • 查看小鸡上sdg和sdh的smart信息,成功返回所有信息,PERFECT!!!

 

  • 下一步就容易了,在DSM6内,将原来单盘的Basic升级成RAID 1,然后等待软RAID进行数据同步。

至此打完收工。

可以说从cpu到io层面都极其接近物理机,而又实际是vm,从而可以得益于方便的硬件配置变更,启停,快照等。

 

意外之喜:两张经过VT-d进行“真·直通”的物理盘,可以随着DSM6小鸡一起关机!没错,可以让硬盘完全停转,而PVE母鸡依然正常工作!!这意味着什么?

  • 母鸡依然可以在0噪声、低功耗水平下进行7×24小时服务。
  • 需要文件服务器的时候,web点一下,或者使用crontab每天定时运行qm start dsm6就可以自动开启DSM6。两块物理盘随之开工。
  • 不需要文件服务器时,同样web点一下,或者使用DSM6内置的定时关机功能,自动关机。两块物理盘随之停转。
  • 加上前篇所述基于阿里云API实现简单DDNS,无法更完美!!!

 

总结:想要对DSM6做“真·直通”硬盘,两个(或以上)磁盘控制器是关键,可以是SATA,可以是RAID等等。

  • 简单来说,磁盘是不能真正直通的,顶多将完整磁盘空间通过去,磁盘SMART信息以及与虚拟机同起同停是无法实现的,因为本质上对磁盘的所有操作还是会经过HOST母鸡。
  • 能直通的是基于PCI-E总线的磁盘控制器,控制器直通给了VM,完整的磁盘就跟着过去了,想怎么玩就是小鸡自己的问题了。

原创文章,转载请注明: 转载自渔人小径

本文链接地址: 论VT-d对虚拟化NAS之价值

打赏 PayPal

文章的脚注信息由WordPress的wp-posturl插件自动生成

打赏 赞(3)
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

最近文章

分享

21 条评论

  1. zt

    你好 请问一下 你的群晖用的什么引导文件 跟你一模一样 就是启动小鸡后看不见smart信息 感觉应该是没有驱动,能不能分享一下,谢谢!7590690@qq.com

    • 用的是23739对应的引导文件,应该是1.03b吧,随便下载的image没有做任何改动,直接转成qcow2格式(也可以用pve默认的lvmthin),扔进DSM对应虚拟机
      然后额外加了一个20G的qcow2用来装DSM系统(也可以用pve默认的lvmthin,只用到4G多,松散格式不会占20G硬盘),后来才把直通的sata controller放进来
      所以其实一开始就能直通的sata controller的话,20G的qcow2必要性不大
      当然放qcow2进来做个failsafe也不错,即使把直通的sata去掉,DSM系统还能起来,无非是数据损毁,但关机后把sata controller还给他,大概率数据可以重新同步,不受任何影响

    • 此外,从母鸡走qm set过来的硬盘是不会有smart信息的,因为是本文所言“伪·直通”;只有额外的SATA控制器直通进来,本文称之为“真·直通”,数据盘才会有smart信息

  2. andy

    兄弟,我也是这个转接板,esxi下直通以后挂载两块硬盘,在群晖里只能看到一块硬盘

    • 先别走到黑裙的话,在esxi下有几块硬盘?
      我在proxmox VE下就是1+2块硬盘,1块是pVE的系统盘,2块是数据盘;等黑裙虚拟机起来以后,pVE下就只剩1块盘,那两块进黑裙了

    • 哦对了,还有一个可能,我印象这个板在taobao上还有自带固件RAID的版本。如果你买的是固件RAID版本,可能(只是说可能,我没买过没测过)那你的两块硬盘是不是已经过了RAID卡打成了RAID0或RAID1,然后传给的esxi?
      这一点很好验证,如果过了RAID卡,那硬盘列smart应该厂商信息会变,因为要看到真的硬盘需要用RAID卡驱动提供的命令。

  3. ripley1901

    你好,最近在玩虚拟机,您的文章真的给了我很大的帮助,让我了解到直通真不简单,显卡,硬盘,真直通,伪直通等等
    由于我的硬件支持VT-x 和 VT-d,所以我的解决方案是
    母鸡系统盘装在 usb3.0的 U盘上,把主板上的SATA控制器 直通到 小鸡上
    不知您对这种做法有何看法?
    另外,(母鸡系统+小鸡系统)+直通SATA控制器的数据盘
    和 (母鸡系统)+直通SATA控制器的(小鸡系统盘+数据盘)是否有区别?
    我听说 DSM系统需要小鸡系统盘和数据盘在同一控制器下

    • 首先,谢谢你的点子
      其一,我没有试过将整个pve部署到U盘上,听起来感觉不算可靠,仅为研究可行性的话,未尝不可,能跑起来就是好的。起码这U盘不能太小,也不能太慢(你提到3.0听起来速度够了),最起码要装下pve,小鸡的虚拟磁盘,还有一些系统镜像。
      其二,关于DSM的系统盘和数据盘是否处于同一个控制器下,答案比较明确。
      1)非官方DSM需要至少一个引导盘(自行下载)和一个数据盘。引导盘可以是镜像写进物理盘,也可以是任何的虚拟磁盘,包含但不限于vdi、img、vmdk、qcow2等等;同样,数据盘也可以是物理盘或者虚拟盘,当然这里我们希望用物理盘。
      2)DSM系统内部,除了引导盘外,所有数据盘(无论虚拟盘还是物理盘)都会被分成3个区,1是DSM系统,2是swap,3是纯数据。你插3块盘,3盘各分3区;你插5块盘,5块盘各分3区。所有盘1区RAID在一起,2区RAID在一起,3区(数据区)看用户怎么设置。除此以外DSM啥都不在乎,因为除了下载的引导盘之外,每张盘都既是系统盘,又是数据盘,根本不关心硬盘是虚拟还是物理,是哪个控制器之下。

      以上用纯文字解释有点晦涩,有兴趣走ssh登进DSM系统看一下各盘分区和RAID阵列信息就都明白了;这一点我自己曾经记了一份笔记,但好像不是很适合直接公开的样子,毕竟人家不是开源系统。

    • 因此,对DSM而言,其实不需要开虚拟盘给他做系统盘,虚拟盘只要给一个引导盘即可,如果要做真直通,就直通sata controller给他,数据盘自然会被用来装系统。
      我这篇文章写得早,那会儿整个DSM有3块盘,#1是引导盘,#2是所谓“系统盘”,#3是伪直通的“数据盘”。你可以理解为,#2和#3各有系统,各有swap,#2没存数据,#3存了数据而已;其实#2没必要,只有#3也能工作,但#3我是要拿来做实验的,一旦系统挂了就是无可修复;但此时如果#2存在,作为处于degraded的DSM系统区RAID是可以自动rebuild的;这就避免了实验中需要对DSM系统整体重装。
      而当实验完成之后,你可以看到,随着新的sata controller直通DSM,两块2.0T物理盘进了DSM,我们称之为#3和#4。那么加上#2的20G虚拟盘,DSM系统RAID一共存了3份,其实这时候#2已经变得完全没必要了(去掉它,系统还剩2份)。只不过#2作为虚拟盘,20G其实只占4G多真实硬盘,而且删它没啥必要,就留在DSM内了。

      • 靓坤

        不可能吧,1个引导盘1个系统盘,系统盘删了还能进web吗

        • 仔细看文章和DSM命令行里的截图,引导盘当然必须在。至于系统盘,其实每块数据盘上都有2.x G分出来用于系统和swap —— again 这个系统和swap是位于每一块数据盘的(贡献于同一个RAID1),所以当你有两块以上数据盘时,单独留个系统盘(如我,用qcow2虚拟盘)就显得不是很有意义了,只是懒得删而已,因为删了可能造成RAID1处于降级状态,还得折腾这个状态的问题。

  4. 筱枫

    我就是使用的将pve装进U盘的方法,然后跑xigmanas,之后再通过xigmanas共享nfs挂载给pve做数据盘用….一直发现速度的问题,看了您的文章方才恍然大悟,稍后可以试试直通整个sata控制器

  5. 靓坤

    非常不错的文章,还以为qm set直接就能直通了。看来吃灰的3215u又能焕发新生命了,之前装的垃圾smr 2t盘刷pt大包,只要文件一多永远不能上200m。改天试试博主的方案组个raid
    现在升级到了魔改4712hq做软路由,两块7k1000给dsm组raid0刷pt, 满速300m下载dsm也会卡,明明系统已经装在ssd上了,搞不懂。
    全套待机30w左右,体验提升太多,可惜体积也上去了,而且魔改cpu死活直通不了核显给win10

    • 你的4712HQ是物理装DSM还是用虚拟机,如果是虚拟机,还得看是哪家,vmware还是pve,我用pve做DSM时,用的是最普通默认cpu(KVM processor),这个性能不够好,你需要的话可以试着提高虚拟CPU的规格。至于直通核显,我没有这样的需求,前两天在DELL R630试了直通GTX1050Ti给vm,没问题,但后来也没啥新鲜感就又拆了。

      • 靓坤

        就是pve装的dsm,的确cpu选的kvm, 换成其他会有提升吗?
        直通核显目的是方便win10虚拟机解码或者开大型程序,核显不用白不用。不过不用plex之类的服务端解码也可以,毕竟现在客户端基本都4k硬解无压力了

        • yungilike

          如果已经装好的DSM,cpu类型就别换了,换了可能会起不来;我是假设会有一定性能提升的,毕竟默认的看起来指令集上有限制。至于直通核显,好吧,如果很闲就折腾吧,毕竟人不折腾枉少年……

          • 靓坤

            最后还是不直通核显了因为一直搞不定。。直接用pve做nas更省资源,装个emby很方便,大姐姐还能搞海报墙很有满足感。用过emby现在吃灰的3215u也准备挖出来做本地nas了,软路由放的地方太尴尬不能放机械盘不然会吵,3215u这么小看了这篇文刚好能扩展放房里做nas

    • QWQWQWQW

      核显直通要5代以上的CPU才可以,4代不行。

  6. TIPS:核显直通要5代以上的CPU才行,亲测。

引用

  1. 从NAS4FREE迁移到PVE – 筱枫的小小空间 - […] 论VT-d对虚拟化NAS之价值 […]

发表评论

电子邮件地址不会被公开。 必填项已用*标注