48小时UNRAID从入门到弃坑,算了我还是直接物理飞牛吧
48小时UNRAID从入门到弃坑,算了我还是直接物理飞牛吧
JonyLee本来准备趁换系统盘的这个机会,体验一下UNRAID系统呢,当时手动替换好预编译网卡驱动之后,直接在GUI界面里设置网址并刷新,就可以正常用了,也启用了Docker和虚拟机,打算把原来PVE的三个虚拟机迁移过来,结果只体验了一天,就决定放弃了。
原因呢?主要有硬件和系统两方面的原因:
硬件方面:
我是小主机内置一个m.2+2.5寸SSD,加USB外置五盘位硬盘盒的硬件组合,m.2系统盘拆掉寄去换了,内置2.5寸SSD只有120G,空间不够我放之前的两个虚拟机磁盘。
当我把原来PVE的两个虚拟机虚拟磁盘文件转出来,放到硬盘盒带的外置硬盘中用UNRAID启动虚拟机之后,发现迁移过来的UNRAID飞牛虚拟机,不能单个直通硬盘盒里的原飞牛存储空间所在的硬盘,只能直通USB设备也就是整个硬盘盒,那原来的飞牛存储就没法挂载了。
软件方面:
原来在PVE里虚拟机安装的飞牛,最早是全双工网络,不知道什么版本开始,它网络变成半双工了,我家里局域网设备都是千兆组网,上限本来也不高,变成半双工传输速度直接对半砍,上传下载变成50-60mb/s了,飞牛论坛上有不少人反馈,但是官方回复这个优先级比较低,建议物理机安装。看来一时半会儿是不打算修复了。那么我迁移到UNRAID上还是虚拟机,不还是半双工么?
所以我重新梳理了一下我的需求,觉得NAS速度还是最优先的,因为我家里电脑盘位也不多,电脑工作文件也是直接映射的NAS存储磁盘。另外飞牛现在也有虚拟机功能,我可以把原来的Ubuntu-server虚拟机,迁移到飞牛里去。
至于LebreELEC,我平时其实用的也不多,还因为占了我N100核显直通,导致飞牛没法用核显跑AI相册识别,后面真需要,也可以迁移到飞牛里去,按需启动再直通显卡。
那么UNRAID体验就暂时到这吧,哈哈,其实还没摸透,不过因为系统在U盘上,插哪儿都能启动,打算在台式机上用VMware虚拟一个,有空的时候再研究学习。
装UNRAID的收获
在安装UNRAID做虚拟机跨平台迁移过程中,踩过一些坑,也Get到一点点方法技巧,这里做个分享,给有类似硬件环境的朋友做下参考。
技巧一:PVE虚拟机备份文件提取虚拟磁盘
当时在用PVE给虚拟机做备份的时候,有三种压缩格式选择,后缀分别是.vma
、.lzo
、.zst
,其中.vma
格式可以使用vma解包工具对其进行解包,并提取虚拟磁盘文件。
步骤为:
- 将PVE的
.vma
备份文件拷出,默认备份文件以日期等命名很长,重命名短一些,例如fn-102.vma
。 - 电脑安装Python3,可以直接通过微软应用商店搜索安装。
- 下载解包脚本vma.py,放到PVE备份文件夹。
- 在该文件夹下运行cmd,输入:
1 | # 格式为 python vma.py [vma文件路径] [目标文件夹路径] |
等待解包完成,如果文件比较大,可能需要时间比较久。如果输入命令行后,光标在下一行跳闪,没有其他输出,就是还在运行,不要关闭cmd窗口,等它完成。或者可以进任务管理器看一下是不是有Python.exe程序在运行。结束了会再跳出一行当前运行路径,如下图:
完成之后生成新文件夹里,会有该虚拟机的虚拟磁盘文件和一个虚拟机的配置文件如下。
其中没有后缀名的,就是虚拟磁盘文件,原来的虚拟机创建了几个虚拟磁盘,就有几个这样的文件,原来的数据就都在里面了,该虚拟磁盘是raw格式。
如果是迁移到UNRAID虚拟机,直接把这磁盘文件拷到UNRAID默认创建的isos
文件夹,加上后缀名.img
,然后创建虚拟机磁盘的时候选择手动加载,然后选择这些文件,设置好启动顺序就可以了。
技巧二:虚拟机磁盘格式互转
不同的虚拟机系统支持的虚拟磁盘格式也不一样,如VMware常用的是vmdk
格式,而PVE常用的是qcow2
,UNRAID是raw
、qcow2
,飞牛使用的是qcow2
格式。
我们可以使用转换工具【qemu-img】,将这些虚拟磁盘进行格式互转,然后无损迁移到不同的虚拟机平台上。现在的新的Linux操作系统一般都自带有这个工具,Windows的话可以下载安装一下。
步骤为:
- 以Windows操作为例,下载虚拟磁盘转换工具qemu-img for WIndows。
- 将下载的压缩包解压,把里面的所有文件拷到
C:\Windows\System32
里。
- 可以试试前面解包的PVE虚拟机磁盘文件:
1 | qemu-img info E:\PVE-UNRAID\fn102\drive-sata0 # 显示格式、容量等信息 |
得到结果如下:
- 如果需要将raw格式转换为qcow2格式,参考命令如下:
1 | qemu-img convert -f raw -O qcow2 drive-scsi0.img drive-scsi0.qcow2 |
以上操作最好进到文件所在目录操作,这样就不需要输入绝对路径了,只输入文件名就行。
装UNRAID踩的坑
坑一:
还是这鬼见愁的r8168网卡,每次重启之后,驱动文件默认都无法固定加载r8168驱动,得手动重新加载。
要是这就没法正常用啊,必须得解决它。偶然发现URAID系统U盘文件的config
文件夹下,有个go
文件,这个文件夹都是存储的系统配置文件,隐约感觉这个go文件大有用处,网上搜了一下,果然,这是UNRAID的启动脚本文件,也就是系统启动时会加载的命令。
那我能不能把手动替换网卡驱动的命令,写到这里,让系统在启动的时候加载呢。输进去保存,启动,怎么还是Device “eth0” dose not exist
,别慌好像还没执行完。
继续,看到执行我输入的启动脚本命令了。
呃,没有获取到IP地址。好在我进的是带GUI的界面,进去网络设置一看,网卡识别出来了,但是没有获取到ip地址,手动更新,ok可以获取到了,估计是换了驱动之后没有重新执行DHCP,那还是把它也加到启动脚本里吧。经测试,用启动脚本可以顺利获取ip了,这个r8111/8168网卡,大家玩NAS一定要绕着走,唉。
最后的启动脚本如下:
1 |
|
坑二:
PVE里的虚拟机备份提取到的raw格式虚拟磁盘,默认没有后缀名,不加后缀或者加.raw
后缀之后,拷到UNRAID里创建虚拟机,手动选择硬盘无法识别到文件。
需要将文件名加.img
后缀,才能识别到。
坑三:
飞牛虚拟机创建好之后,引导不了没法启动。显示如下。(shell后面是我按网上方法尝试输入fs0修改启动设置没成功)
最后排查,问题出在引导格式上,飞牛需要选择SeaBIOS
,而不是默认的OVMF
。修改后就可以正常启动了。
但是前面也说了,因为我是硬盘盒个USB3.2接口带的所有盘,UNRAID里虚拟机好像没法单独直通其中的几块数据盘,所以这条路还是算了吧。
刚也看到有网友在我前面All in one的文章留言建议直接物理飞牛,听人劝吃饱饭,马上开干。