今天过来记录一下,最近折腾NAS的惨痛经历。
最开始的想法
个人生产力需要,我有两台电脑,所以想把一部相对闲置的电脑作为服务器使用。折腾过的系统就太多了,什么Windows 专业版企业版、Windows Server 、Ubuntu、CentOS、RedHat、Manjaro。用了这些系统都始终将这台电脑局限于远程数据库来使用,也就是说它的生产力并没有完全体现出来。
偶然间得知NAS的存在,了解了一翻便决定开始折腾这个东西。本来是想搞一个黑群晖或者FreeNAS的,可这样又限制了我想玩Linux的想法,因为装了纯NAS系统能玩的Linux也就剩Docker了。
经过我对目前学习和生产力的考量,决定自己DIY一台NAS,实现方式如下:
电脑系统:Windows Server 2019,用这个系统的目的是想了解一下Windows Server,必竟Windows Server和Linux是不一样的,多了解一点是好事。
Hyper-V:虚拟平台选择Hyper-V没啥原因,操作简单顺手而已。开关机的时候无感,不需要等待释放内存还挺爽的。
Manjaro: 这个是最近喜欢玩的Arch系Linux。
Ubuntu:玩这个系统是因为平时想学习一下Kubernets,本来是想在Manjaro中折腾的,但是感觉这个东西触及的知识和领域太多了很可能会翻车。所以最好还是单独装一个系统比较好。
OpenWRT:
装这个东西的原因也是无耐之举。如果想让局域网中的其它设备访问这个这台宿主机以及虚拟机的话,最简单的方法就是桥接各个虚拟机设置静态IP就可以了。
这样会出现一个问题,配置的所有IP完全依靠路由器设置。如果网络环境不发生变化的话不会有什么问题,但是有一次我带着我的电脑去别的地方接入那里的环境后,结果不出意外我翻车了。原因是我的环境配置的都是192.168.1.*但是那里的环境并不是这样的调了好长时间才解决。
所以后来我选择了软路由,实现方式为独臂路由,宿主机和各个虚拟机用的就都是OpenWRT分配的IP了,这样就组成了一个局域网,接外网的时候只要将OpenWRT的Wan口IP改为对应环境的IP就可以。
如果想让这台电脑接入网络访问这个由软路由组成的局域网中的程序时,只要在OpenWRT中做对应的端口映射就可以了。
文件处理方式
除此之外,虽然我想用Manjaro操作这台电脑中的所有文件,但是并不想将文件都放在虚拟硬盘里。比如我在Manjaro中搭建一个离线下载并下载一个电影的话,我希望把它存放在Windows Server可以访问的NTFS格式的硬盘中。
解决这个问题的方式我知道的有两种,一种是PCIE硬盘直通,一种是挂载Windows Server的共享目录。
硬盘直通就是将一整块硬盘分给一个虚拟机交由其直接访问,因为必须是一整块硬盘这种方式对我来说还是比较奢侈的。
挂载Windows Server的共享目录是我采用的方式, 只要虚拟机开机挂载就可以了,当然速度不会高于硬盘直通,不过目前还可以。
Windows Server
装完Windows Server后其实就发现了一些问题,比如不能安装无线网卡驱动等等。但还是想了解一点关于Windows Server的知识,也就接着用了。直到后来我开始折腾Jellyfin。
总之最后装了Windows 专业版,放弃了Windows Server。
Emby 和 Jellyfin
下载了不少自己喜欢的电影,不搞一个家庭影院网站的话实在说不过去。
刚开始折腾的时候,玩的就是Emby,这个其实已经很好用了。偶然间发现Jellyfin是Emby开源版本,想着Jellyfin会不会有一些Emby不开放的功能呢。 于是就装上了Jellyfin,配置和Emby基本一样。 果然,发现了一点不一样的东西,Jellyfin支持硬件解码,这个Emby中是没有的。
但是要在Manjaro中使用显卡,我可不会呀。
于是我的惨痛经历开始了。。。。。
显卡问题
Hyper-V解决显卡问题也有两种方式, 一是使用已经弃用的RemoteFX 3D Video Adapter,不推荐就不用了,省得到时候又多出来一些莫名其妙的问题。
另一个方法就是显卡直通,和硬盘直通的道理差不多。
此时我发现了一个致命的问题,Windows Server不光没有无线网卡驱动,就连AMD显卡驱动也没有。此时只能Windows Server换成Windows。
独臂路由的意外丢失
换系统的时候,还一顿想Windows Server上有没有什么是要备份出来的,结果还是忘记了OpenWRT的虚拟机在这个系统里。不过还好,半个小时就完成了从用Rufus烧制启动盘到安装成功。
新的Windows 10 专业版安装完成之后,起手式装了IIS、WSL、Hyper-V(其实就是这个时候发现的OpenWRT已经随着Windows Server一起被擦除了)。
之前有折腾软路由的经验,KoolShare论坛下载虚拟机格式OpenWRT固件,同时下载StarWind V2V Converter用于转换虚拟硬盘格式。配置软路由IP,这个基本上就是把之前遇到的问题再Bing一下就好了,为下次翻车好找一点还是记下吧。
注意
在给虚拟机接线时,要Lan口在上Wan口在下,这样OpenWRT的识别顺序就是先内部再外部,不这样做接外网会有影响。
两个网线均启用Mac地址欺骗。
勾掉安全启动
网段默认也是192.168.1.*的如果想修改,还是修改/etc/config/network比较快, 图型界面操作比较恶心。
如果以上均配置成功,ip地址正常情况下不能方问互联网,多半是DNS的问题。验证方式,可以在OpenWRT中Ping一下其它网址。
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.100.1'
option netmask '255.255.255.0'
option multipath 'off'
option ip6ssign '60'
option dns '8.8.8.8'
config interface 'wan'
option ifname 'eth1'
option proto 'static'
option multipath 'off'
option ipaddr '192.168.1.17'
option netmask '255.255.255.0'
option gateway '192.168.1.1'
除了此文件外还要注意下/tmp/resolv.conf.d/resolv.conf.auto
哈哈,显卡直通翻车了
解决了软路由,下一步就把之前的虚拟机都导入到新的Hyper-V中就可以。
导入成功之后,首先禁用电脑里的A卡,然后用PowerShell下架A卡并指定给Manjaro。Manjaro开机,非常漂亮Hyper-V报了用户权限问题, 就此问题我在搜索引擎上一顿找,就是没看出个所以然来。
所以这通折腾下来,没有啥实质性的收获,但是对个人开发环境,以及NAS、Emby、Jellyfin、KODI有了一点认知。
番外
文件共享
作为NAS的那台Windows主机里有几个共享目录,我是希望开机给独臂路由以外的环境的,了解到文件共享并不只是一个端口而是135,136,137,138,139,445。
FTP也有同样的问题,21端口只是用来访问数据的,如果想做端口映射需要在了解决FTP的主动和被动方式后设定端口范围。
一直以为有Wifi为什么还要用网线, 这下明白了。用Wifi给共享目录传文件默认应该是有限制的,如果将无线网卡的吞吐量开到最大,传送会断开,重新连接后不会续传。