• 那是云首页
  • 快捷导航
  • 更多
    设为首页收藏本站
  • |
花生壳

威联通Virtualization Station虚拟机工作站补丁

威联通 QNAP  / 其他  / 正序浏览   © 著作权归作者本人所有

#楼主# 2020-7-17 15:54

跳转到指定楼层
本帖最后由 r-MT 于 2021-7-11 15:57 编辑

由于个人原因不在折腾qnap了,补丁已经取消分享了,大家还在不停的刷楼,真不好意思了。还是谈谈我当时的思路和方法,让有能力的人继续接上

一。几个关键文件
/share/CACHEDEV1_DATA/.qpkg/QKVM/qvsd.sh 启动脚本
/share/CACHEDEV1_DATA/.qpkg/QKVM/ qnap的虚拟机安装目录,启动后生成/QVS/软连接目录
/share/CACHEDEV1_DATA/.qpkg/.QKVM/db/qvs.db 虚拟机数据库
/share/CACHEDEV1_DATA/.qpkg/.QKVM/conf/qvs.conf  启动配置文件
/share/CACHEDEV1_DATA/.qpkg/QKVM/usr/etc/libvirt/qemu/*********.xml 虚拟机xml配置文件

vms/models/pci.pyc 该文件里面对pci设备是否可以直通 做了限制
qvs/qvs/define/nas_model.pyc 该文件允许相应机型以及pcie slot插槽是否可以直通
qvs/controllers/constants.pyc 该文件对sata设备做了定义判定0x0106设备为sata,后面就要走蓝光光驱直通流程


qvs/vms/limits.pyc 虚拟机的一些限制文件 比如可以直通的gpu设备限定为2个 sata设备限定几个 自己按需修改,非必要
/usr/share/misc/pci.ids
/lib64/udev/hwdb.d/20-pci-vendor-model.hwdb
这2个文件 不在pci.ids数据库设备 名称能准确的在虚拟机直通界面 显示 非必要

二。2种思路和方法。
2.1
通过/share/CACHEDEV1_DATA/.qpkg/QKVM/qvsd.sh这个启动脚本,
发现里面有熟悉的PYTHON=$QPKG_ROOT/usr/bin/python libvirtd等等
然后在/QVS/usr/bin/可以找到比如pythony和vrish等等命令


那么不出意外猜想 qnap的虚拟机应该就是qemu kvm
简单加载一下环境变量 用virsh+xml启动一下 已经生成的虚拟机A,成功。




通过/sbin/lspci获得需要直通pcie设备的信息
手动编辑一下该虚拟机A的xml文件 添加进去

再次用virsh+xml启动虚拟机A 已经可以在虚拟机A里面看到和使用该pcie设备了

然后通过qnap的虚拟机来启动 改虚拟机A,启动后发现 直通的设备不见了,猜想是qnap校验了不合规的配置

然后找到/share/CACHEDEV1_DATA/.qpkg/.QKVM/db/qvs.db 虚拟机数据库文件
下载个SQLite Expert Professional,然后对qvs.db修正,把刚才添加进xml文件的信息 手动添加进db数据库,
然后再用qnap的虚拟机来启动,成功

此方法的缺点很多 很多需要手动添加,同时不能以后qnap的虚拟机里面修改该虚拟机的任何配置 否则修改就会进行合规性检查。



但是这方法 可以进行比如/dev/sdb的这种直通,具体自己百度吧,我测试过 完全没有问题




2.2
既然qnap使用pythony写的,花了点时间简单学习了下python,同时理了下思路,应该是qnap的ui进行了限制
然后反编译一下 整个/QVS/qvs/目录,花点时间读一下代码,得到大概限制如下


qnap的虚拟机启动过程中本机机型进行判定主要通过nas_model.pyc,同时nas_model.pyc还有允许直通的pcie slot信息,会和/etc/model.conf其中的pcie slot配置进行匹配,然后通过pci.pyc这个文件来判断该设备类型是否允许直通。sata设备只允许直通qnap的蓝光光驱等等。

知道了qnap虚拟机大概流程,

修改文件1
/vms/models/pci.py找到类似这样

    def _is_allowed_device_type(self):
        if is_qts_gateway_model():
            if any([
#            self.is_storage_controller, #删除或者注释掉 磁盘控制器不允许直通
             self.is_bridge_controller]):
                return False
        elif not self._in_register_sub_classes:
            return False #修正为return True 不在注册类的不允许直通
        return True

等等 每个版本也许不一样 位置也许不一样,限制的设备位置类型也许改了,原理是一样的 他不允许的 你让他允许 返回TRUE或者FALSE等等 自行修改吧

修改文件2
qvs/qvs/define/nas_model.py

比如TS-886修改成如下
'TS-886': {'pci_slots': [{'id': '0000:00:01.0', 'name': 'PCIe 1'},{'id': '0000:00:03.0', 'name': 'PCIe 2'}, {'id': '0000:00:03.1', 'name': 'PCIe 3'},{'id': '0000:00:03.2', 'name': 'PCIe 4'},{'id': '0000:00:03.3', 'name': 'PCIe 5'},{'id': '0000:00:02.2', 'name': 'PCIe 6'}]

这样就是允许设定6条pcie插槽直通 这里全是16进制 不需要转换 具体看我以前写的文档
默认这里的条数要小于等于/etc/model.conf里面的pcie插槽数 而且会进行匹配校验

修改文件3
qvs/controllers/constants.py
CLASS_SATA_CONTROLLER = '0x0106'此行修正为
CLASS_SATA_CONTROLLER = '0x0107'
这样就能sata设备的直通了

原理,qnap的虚拟机系统把sata设备只认可为蓝光设备,并允许其直通,所以一旦检测为sata设备 直接走蓝光直通流程。中间有很多很多的校验,如果在qnap虚拟机里面设定0107也就是软盘的代码设定为sata,那么虚拟机就会把0106的stat设备还是认为是0x01磁盘设备CLASS_MASS_STORAGE_CONTROLLER大类进行直通,并不影响其性能

其实正常应该去跟踪对sata判定后的走蓝光光驱直通的流程,我发现后面有很多判定,偷点懒,直接改了类型.

修改文件4
pci.ids
20-pci-vendor-model.hwdb自行修改美化一下 直通设备名称,非必要
limits.py文件按需自行修正

最后的一些注意要点
直通sata设备,/etc/model.conf必须写上对应的pcie solt,,qnap的磁盘管理UI就会接管,虚拟机直通sata的时候就会对该pcie设备进行unbind,造成qnap的磁盘管理报警,警告磁盘丢失,如果不写上对应的pcie slot,qnap的虚拟机软件直通sata(很多地方要去读取model.conf的solt)校验失败
以前通过启动脚本 在启动过程直接unbind sata,其实可以在启动的时候 model不写上sata的pcie slot,启动完成后 在启动qvs虚拟机的时候 通过脚本 对model.conf和model.ini文件进行对比,自动补上对应的solt。





威联通Virtualization Station虚拟机工作站补丁,
解锁了带pcie插槽X53B X53D相关机型的 pcie设备直通
解锁了网卡 sata转接卡等pcie设备直通

安装Virtualization Station,关闭Virtualization Station
上传补丁包到qnap,解压
找到对应的pcie插槽,修改补丁包中的modle.ini文件,运行./patchkvm -hq
再打开Virtualization Station软件,虚拟机列表 右下角 PCie

具体看补丁包中的说明新版补丁去除了版本限制,以及部分机型限制

游客,如果您要查看本帖隐藏内容请回复


PS:qnap的内核支持iommu的分组了X53B X53D机型需要在grub加上pcie_acs_override=downstream如下

linux        /boot/bzImage root=/dev/ram0 rw pcie_acs_override=downstream

X72 X82等无需添加了




那是云论坛 - 国内知名的NAS交流平台
http://www.nasyun.com
分享淘帖
回复 印象

使用道具

0

精华

12

回帖

113

积分

入门用户

Rank: 1

云币
1
贡献
4
活跃
86
精华
0
枫叶飘落 发表于 2024-11-19 22:55 来自 中国广东广州
国内首批关注qnap编译的大佬
回复 支持 反对 印象

使用道具 举报

0

精华

7

回帖

64

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
60
精华
0
ttimasdf 发表于 2024-9-1 22:34 来自 中国海南
感谢大佬的无私分享!
回复 支持 反对 印象

使用道具 举报

0

精华

22

回帖

161

积分

入门用户

Rank: 1

云币
0
贡献
4
活跃
129
精华
0
lsjjcj 发表于 2024-8-28 10:21 来自 中国四川乐山
r-MT大佬的母盘好用。但是不知道怎么我实体机启动了以后无法安装固件,一直提示没有硬盘。同一model用老骥伏枥的就可以
回复 支持 反对 印象

使用道具 举报

0

精华

23

回帖

212

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
200
精华
0
xiaofu151 发表于 2024-8-27 20:15 来自 中国福建厦门
感谢分享。。。谢谢分享
回复 支持 反对 印象

使用道具 举报

0

精华

89

回帖

677

积分

入门用户

Rank: 1

云币
0
贡献
2
活跃
622
精华
0
johnhowe5503 发表于 2023-11-14 21:49 来自 中国重庆
威联通Virtualization Station虚拟机工作站补丁
回复 支持 反对 印象

使用道具 举报

0

精华

17

回帖

73

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
64
精华
0
紫荆 发表于 2023-10-25 20:31 来自 中国广东韶关
#在这里快速回复#学习下,谢谢大佬
回复 支持 反对 印象

使用道具 举报

0

精华

13

回帖

108

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
101
精华
0
karl321 发表于 2023-9-12 02:08 来自 中国湖南长沙
好东西必须支持!!!!!!!!!!!!!!!!!!
回复 支持 反对 印象

使用道具 举报

0

精华

30

回帖

147

积分

入门用户

Rank: 1

云币
0
贡献
2
活跃
121
精华
0
Viper_lf 发表于 2023-7-25 16:39 来自 中国广东广州
学习 学习  PCIE 直通设置
回复 支持 反对 印象

使用道具 举报

0

精华

2

回帖

29

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
28
精华
0
xuanxindong 发表于 2023-6-30 14:10 来自 中国福建福州
我想看看网卡有没有直通
回复 支持 反对 印象

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 搜索 官方QQ群
懒人地图| 手机版|小黑屋| 智能生活 , 上那是云 |闽ICP备2020018196号-1 |网站地图