绿联DX4600 Pro虚拟机探索


本次探索源于上次发现可以使用Docker来管理群晖虚拟机,而绿联本身是自带kvm内核模块的,但是要等到绿联官方支持虚拟机,又不知道会等到猴年马月。所以我有一个大胆的想法,能否使用Docker搭建一个可以自由管理虚拟机的程序,最起码可以安装一个windows替换掉绿联内置的有着各种限制的迅雷

注意:非专业人士请勿模仿,除非你知道什么是KVM,在此期间所造成的系统风险请自行承担

虚拟机管理

选择了我之前使用过的 retspen/webvirtcloud 来管理 KVM,说实话,这个管理程序比起威联通群晖这些官方自带确实不太好用,但用于测试还是足够了,如果有更好更方便的推荐请在评论区留言

retspen/webvirtcloud 没有官方的 Docker 镜像,只能自己编译,虽然它本身带有一个 Dockerfile,但如果自己构建会遇到各种各样的问题,下面是我遇到的部分问题

Ubuntu版本问题

retspen/webvirtcloud 默认是基于一个 Ubuntu22.04 的镜像构建,但是,如果自行构建会发现旧版本的 DockerUbuntu22.04 根本不兼容

  • 报错一

    The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 871920D1991BC93C

    搜索了一下,说是可以使用 apt-key 命令添加公钥解决,实际上

  • 报错二

    /etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg are ignored as the file is not readable by user '_apt' executing apt-key.

    这个报错可以通过删除gpg文件忽略,但实际上没什么用。

真正的解决方式是升级自身的Docker版本,最小要到 20.0 以上,因为我使用的Mac,最新版本的Docker也不过是 19.03.13,所以没办法使用升级Docker的方式解决,只能降级Ubuntu的版本

一开始我直接把版本降到最熟悉的18.04,但在安装Python库发现部分库的指定版本要求Python3.8,否则找不到指定版本

如果使用 apt 直接安装 Python3.8,会发现有两个问题:

  1. 其中一个依赖 python3-lxml 没有3.8的版本,直接安装会同时安装 Python3.6

  2. venv 无法使用

后面甚至想要忽略Python版本强行安装

pip3 install -r conf/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com --ignore-requires-python

但仍然是一堆报错

所以再次测试升级到 20.04 的版本,还好 20.04 安装的Python3正是 Python3.8,故此正常

Libvirt安装依赖

由于 retspen/webvirtcloud 是依赖libvirt对虚拟机进行管理的,而绿联使用的系统本身没有libvirt进程,所以我将在Docker内部安装,在此期间也遇到了部分问题,下面对部分依赖包统一说明一下

  • libvirt-daemon
    libvirtd的进程包

  • libvirt-daemon-system
    libvirtd的默认配置包,如果不安装需要手动编写配置

  • iptables
    libvirtd的依赖,不安装启动libvirtd时会报错

  • dnsmasq
    libvirtd的依赖,不安装kvm的默认网络无法启动,导致后续建立的虚拟机无法联网

  • qemu-kvm
    不安装导致后续新建虚拟机时可选的架构和芯片组为空

  • qemu-utils
    不安装导致虚拟机无法使用qcow2,只能使用raw格式

  • virt-manager(可选)
    通过命令行管理虚拟机

构建Docker

修改完 Ubuntu版本 和添加 KVM所需依赖 后,就能成功构建Docker(实际构建大小在1.4G左右)。

导入镜像

  1. 首先先导出镜像

    docker save -o webvirtcloud.tar webvirtcloud:test-2
  2. 上传到绿联Nas,可以同时上传后面创建虚拟机所用的iso文件

  3. 打开绿联Docker,在镜像管理里选择从设备导入镜像

ssh登录

老传统了,这里就不再过多叙述,具体可看 绿联DX4600 Pro禁用迅雷和中国移动云盘进程 绿联云Nas新版本v3.4.0固件开启SSH

运行Docker

docker run --rm -p 8088:80 -p 6080:6080 --device=/dev/kvm --privileged webvirtcloud:test-2

8088retspen/webvirtcloud 界面端口,启动后可以通过 NasIP:8088 访问,6080VNC 端口,启动虚拟机后可以直接使用浏览器访问

启动libvirtd

由于我只修改了Dockerfile里的依赖,所以libvirtd只能手动启动,如果想要自动启动的可以添加启动脚本到 /etc/service 目录

  1. 进入Docker内部

    docker exec -it {镜像名} bash
  2. 修改配置文件: 使用 vi 打开 /etc/libvirt/libvirtd.conf

    - unix_sock_group = "libvirt"
    + unix_sock_group = "www-data"
    
  3. 启动libvirtd:

    libvirtd -d
  4. 启动virtlogd

    virtlogd -d

管理界面

通过 NasIP:8088 访问管理界面,默认用户名和密码都是 admin

登录成功后,点击计算节点 -> 本地

然后添加一个本地节点

添加后正常情况就会显示已连接

接着继续点击右边的眼睛图案 -> 选择存储 -> 右上角的+号,添加两个存储

  1. test: 路径为 /var/lib/libvirt/images,用于存放虚拟机文件

  2. iso: 路径为 /var/lib/libvirt/iso,存放iso镜像文件

然后返回绿联Nas的ssh界面,复制iso文件到Docker内部,或者在执行Docker命令时使用 -v /mnt/xxxx/Docker/webvirtcloud/iso:/var/lib/libvirt/iso 将文件提前挂载到Docker内部

创建虚拟机

一切准备就绪,现在我们就能创建虚拟机了。

选择实例 -> 创建

点击下一个,注意:webvirtcloud 这里的操作有些反人类,最好选择规格 -> 应用,不要使用自定义和模版,否则无法挂载CD-ROM。我这里选择30G的mini,存储一定要改成 test,然后创建

点击创建后会到实例页面,先不要启动,到设置 -> 磁盘挂载想要安装的系统iso文件,然后在旁边的启动顺序里确认启动第一项是iso所在的磁盘

接着就可以开机了,开机后可以点击访问 -> 控制台使用VNC打开系统安装界面,安装完成后记得重新调整启动顺序以及卸载iso镜像

至此,使用第三方Docker搭建的绿联Nas虚拟机管理也就完成了,如果急需使用虚拟机功能,又想保留绿联Nas的系统,随绿联一起“成长”的用户可以利用此功能创建虚拟机,如果不着急的可以等官方的实现

其它

  1. 没有修改libvirtd里的 unix_sock_group 配置为 www-data

    Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied
  2. Docker内部(不是绿联系统)执行 chmod 666 /dev/kvm

    libvirt 错误- internal error: process exited while connecting to monitor: Could not access KVM kernel module: Permission denied 2023-07-05T16:17:57.942238Z qemu-system-x86_64: failed to initialize KVM: Permission denied
  3. 未安装dnsmasq,如果手动安装,使用 virsh net-start default 手动启动

    libbvirt 错误- Requested operation is not valid: network 'default' is not active
  4. 未安装qemu-utils

    internal error: creation of non-raw file images is not supported without qemu-img.

注意:文章中并未修改绿联Nas本身的系统,所有的安装包和修改文件配置都是在Docker内部进行

作者: honmaple
链接: https://honmaple.me/articles/2023/07/绿联DX4600 Pro虚拟机探索.html
版权: CC BY-NC-SA 4.0 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
wechat
alipay

加载评论