基于pve+openmediavault搭建nas,替换unraid

YUKI-avatar

YUKI

2020-04-01T14:24:19+00:00

前几天使用unraid作为主系统把nas搭好了,不过不清楚是不是启动u盘有问题,偶尔会出现无法开机的情况,考虑到unraid只有30天的试用期,加上unraid的底层是slackware这个小众Linux发行版,遇到问题难以排查,而且还是个闭源系统,就转向了开源方案。
首先选定nas系统,采用开源方案,自然就是freenas,openmediavault等等几个nas操作系统了,freenas因为底层是freebsd,而且我用不上zfs,也没有原生的docker,排除掉之后便转向了openmediavault这个nas系统(以下简称OMV)。
从底子上来说,OMV就十分优秀,omv底层采用的是debian10,相比Ubuntu和arch等发行版更加稳定,同时相对于centos等服务器专用发行版,在软件包管理上面更加方便,软件包还很新,更加适合家用。
omv简单来说就是套了一层nas专用gui的debian10,而且对于nas这个方向的功能也增加了一些方便的插件和配套的gui,让你点点鼠标就能实现相当多的功能,例如一键安装docker,采用zfs系统,组建raid池等功能。
仅仅作为一个nas系统,omv已经十分足够了,然而在虚拟化方面,omv仅仅支持virtualbox,比起kvm和esxi等根本不够看,于是我采用了promox ve这个专业、开源的虚拟化系统,在这之上虚拟omv,并运行软路由,黑群晖等其他虚拟机。
简单形容pve的话,就是基于debian的kvm方案。是的,和omv一样,因为debian的开源和稳定性等原因,pve也采取了debian为底层,并在这之上使用kvm和qeum虚拟机实现方案,添加方便的gui和相当多的虚拟机功能例如快照、备份、迁移,开发出了这样一款type型的hypervisor。(VMware workstation、vbox、unraid这样的属于type型hypervisor)。
如此一来,结合pve和omv各自的优点,便形成了这样一个具有强大的虚拟化功能、友好界面、底层稳定的nas系统方案。
安装完pve后,给omv分配了20gb的虚拟硬盘作为安装系统的空间,同时将两块原来在unraid系统里的硬盘“直通”到虚拟机里,挂载后omv直接识别了原来的xfs格式硬盘。
这里我之所以在“直通”这里使用了引号,是因为这里的“直通”是假直通,并不是像显卡,usb,网口那样的“真直通”。硬盘“直通”,准确说应该是映射,虚拟机并没用获取直接控制硬盘的权限,数据的传输依然需要走宿主机,而且虚拟机无法让硬盘休眠、停转、获取smart信息,真正的硬盘“直通”,应该是让虚拟机获取sata控制器,或者直通pcie接口的sata拓展卡,这样虚拟机才能直接控制硬盘,甚至在宿主机运行的时候让硬盘停转。
由于我的pve系统目前还装在一块sata硬盘中,自然是无法把sata控制器直通给虚拟机了,但仅仅是硬盘“直通”就能让虚拟机直接格式化整个硬盘了。
在omv中,我们可以凭借插件来获取类似unraid这样的文件系统。这点b站司波图的视频介绍的很详细,推荐观看。
首先是采用unionfs这个插件,将存储空间合并成一整个存储池,方便管理文件,而无需顾及每个硬盘,例如我将3+4+4的硬盘合并成了一个11t的存储池。同时,为了进行冗余,我使用了snapraid这个目录级别的冗余软件,对存储池进行冗余,即使毁坏一块硬盘,也能保证数据的恢复。
第一次运行snapraid进行同步花了七个小时,由于是增量同步以后的时间就短多了,设置了脚本每天夜里一点开始运行。
关于snapraid,我前两个关于nas和unraid的帖子说的比较多了,而且司波图和网上的文章也说的很详细,有兴趣的可以了解一下这个不同的raid的冗余方案。
除了以上两个插件,omv还有不少其他实用的,例如zfs插件,sftp服务器插件,brogbackup插件,搜索插件,下载插件等等,虽然大部分都能通过命令行或者docker安装使用,但提供了这么多开箱即用的工具也是蛮爽的。
折腾完文件系统,把smb和nfs分享开启,下一部就是docker了,直接网页点几下无脑安装。
omv默认提供的docker管理界面是portainer,这个软件本身也是以一个docker容器形式安装的,也提供了一些例如远程管理docker的高级功能。虽然界面稍微有些复杂,不过比起群晖或者unraid的docker管理界面,portainer对于图形界面和命令行部署的docker容器都“一视同仁”,在一些其他nas系统中,使用图形界面是无法管理命令行创建的容器的,而使用portainer则不痛,你可以用你喜欢的方式管理部署容器和docker镜像,从这点来看,portainer比起其他nas系统的docker管理界面好多了。
考虑到这点,我感觉部署docker容器还是尽量使用命令行,把每个容器的部署信息备份下来,直接复制粘贴运行即可,也省得鼠标点来点去。
以前一直担心使用虚拟机运行nas系统会造成性能大幅下降,但几天使用下来,并没有想象中的不堪,根据官方测试的结果,kvm造成的cpu性能下降只有3%以下,主要是io性能的下降,不过在家用nas这种场景下,这点性能下降也并非无法接受,实在不行还能网卡、硬盘直通,最大限度减少损耗。
在这之后部署黑群晖和软路由略过不提,值得一提的是使用虚拟机运行nas的相当大的一个优点:虚拟机快照
在进行文件系统冗余和备份后,“直通”的数据盘安全性已经很高了,但nas系统也有挂掉的风险,例如设置不当,而且恢复起来虽然没用数据方面的损失,安装插件和docker应用,进行设置也费时费力。
而这时,虚拟机快照功能就起作用了,pve支持在虚拟机进行运行的时候直接把虚拟机的所有设置和系统都备份起来,在虚拟机系统挂掉甚至pve物理机本身挂掉后,只要有备份文件,就能一键恢复,你所要做的是保存好虚拟机的备份文件。
所有内容就差不多这些了,这不是一份教程,仅仅是把我折腾的内容大致叙述了一遍。
使用虚拟机平台运行nas,这样的组合好处是很多的,甚至安全性比起物理机都要高,只要你能够利用好pve的快照功能,每天定时进行备份,保存好系统备份,即便是虚拟机或者物理机平台挂了,也能直接恢复系统和数据,而物理机挂了,也只需要重新安装pve,而pve本身也无需多少的设置。
其次的好处便是更加灵活。由于nas是虚拟机的,因此你可以在任意硬件的pve平台上转移你的系统,而无需在意物理机硬件的变更。同时,整台电脑也因为虚拟化而抽象成了计算机资源,你可以更加游刃有余地分配资源,例如cpu核心、内存、硬盘空间、网络接口、pcie设备、usb接口等等。
要说对于nas最大的不足,应该是硬盘“直通”后无法获取硬盘的底层信息如smart和温度,无法进行休眠和停转等操作,但pve本身内置了smart信息查看程序,你也可以通过hddtemp等软件获取硬盘温度,邮件进行警报等等,无非是麻烦了点。
当然,上面的缺点你也可以通过直通主板sata控制器,pve安装在nvme或m2接口的硬盘里来解决,使用pcie接口的sata拓展卡解决等等。
最后就是性能损耗这个绕不开的问题了,尤其是io性能,家用的话相信大部分人都能接受,而且virtio等半虚拟化技术也能一定程度解决这个问题,只能说无法接受损耗的尽量直通设备以减少损耗,或者上物理机吧。
ZER0-avatar

ZER0

上物理机也要考虑装系统那个盘的损耗吧,unraid的处理方法就是系统装U盘上,其他所有的硬盘都是array,除了U盘不太可靠,思路倒是对了。要是主板上能板载一个16G/32G emmc,就完美了。
YUKI-avatar

YUKI

[quote][pid=411393978,21173703,1]Reply[/pid] Post by [uid=14603289]Hiths[/uid] (2020-04-07 22:41):
上物理机也要考虑装系统那个盘的损耗吧,unraid的处理方法就是系统装U盘上,其他所有的硬盘都是array,除了U盘不太可靠,思路倒是对了。要是主板上能板载一个16G/32G emmc,就完美了。[/quote]现在不少主板有m2接口了,还支持nvme,一些不支持m2接口的,也能安装一个pcie转m2的拓展卡。
不过unraid官方倒是只提供了系统装u盘一个选项,虽然也能装在m2接口硬盘里启动起来,固态硬盘只充当一个启动序列,也太过浪费了
不知道为啥我总感觉usb接口不靠谱,可能是因为这接口是支持热插拔?
ZER0-avatar

ZER0

[quote][pid=411396319,21173703,1]Reply[/pid] Post by [uid=41926672]knightHart[/uid] (2020-04-07 22:52):

现在不少主板有m2接口了,还支持nvme,一些不支持m2接口的,也能安装一个pcie转m2的拓展卡。
不过unraid官方倒是只提供了系统装u盘一个选项,虽然也能装在m2接口硬盘里......[/quote]硬盘接口太珍贵了,不能浪费给系统,更何况是m2,巴不得2t插满。之前我还看到有人整了个16G的傲腾当系统盘,[img]http://img.nga.178.com/attachments/mon_201209/14/-47218_5052bc4cc6331.png[/img]
确实比U盘稳定,也解决了系统盘数据盘分离的问题
angel-avatar

angel

我是从pve+omv转到unraid,和楼主刚好相反。

pve+omv对我来说最大的问题还是硬盘直通,华擎j3455用了修改版内核还是有一组硬盘控制器无法直通,导致硬盘休眠解决不了,再加上omv用起来总感觉小毛病多,可能是我不会用。

换成unraid操作顺手了不少,虚拟机装了软路由,运行了几个docker,几个月连续运行也没啥问题。

不管是pve+omv还是unraid,跑满千兆网都没有问题。
crokswithsocks-avatar

crokswithsocks

我就是在pve上跑的ikuai主+lede旁路由+winserver共享文件夹搭配可道云,用的I 6700所以集显直通给winserver还能挂暗黑3…
之前也是用freenas装nextcloud,最后发现还是Windows好用就给改过来了,zfs我也用不着