unraid 的假想

我自己目前已经不再使用unraid了,这个只是吸取之前放弃的经验教训。

修改配置,使docker使用某个独立的硬盘(SSD或许会更好,不在阵列中)来加速及独立docker服务器的启动,不过,unraid的docker服务必须在阵列启动的情况下才能启动。因为docker默认使用的是阵列中的docker.img文件,这样 操作可以加速docker服务的快速启动。

通常,docker会挂载外部的目录。通过规划不同的服务数据,将不经常更改的,可以使用阵列的磁盘(可以通过cache加速),经常变更的(比如mysql的数据库的数据,邮件服务器的数据等等),使用独立的硬盘(不在阵列中), 这样来解决阵列修改文件和写入速度慢的影响,如果数据量比较大,机械硬盘也可以,因为不再阵列中,因此,写入和读取速度不受影响。

因为上述的数据不在阵列的数据保护中,因此,需要通过另外的手段进行数据保护,比如rsnapshot来进行定时的增量化备份。备份的目的地可以是阵列中的磁盘或cache。rsnapshot也支持docker化的。

对于虚拟机的硬盘,我建议也这样来做,因为实时的写入速度实在太夸张,碎片文件的情况下几乎整个系统处于崩溃边缘了。

对于下载服务的下载数据,我自己对这个数据的保护性定为可以不保护的,也可以使用独立硬盘的方式。这样也不会受到阵列的影响。共享的化,可以通过在阵列中创建链接的方式,将下载数据共享出去。

上述的方案,通过规避不往阵列中写入数据,来达到可用的目的。不过,我目前是在ubuntu 20.04的基础上,通过docker各种服务,来定制各种内容,这样对我而言,可以不用再安装一个linux的虚拟机了。以后有机会可以按照上述的思路试试。

unraid不好用

准备好好折腾下NAS,之前一直用的是ubuntu,从14.04到16.04到18.04,看中unraid主要是看中了可以将磁盘合并到一起, 同时还带校验,支持docker和虚拟机(大赞),加上我的硬盘都是退役的硬盘,所以觉的不错。然后高高兴兴的付款了。

系统安装啥的都没有什么说的,网上各种教程一大把。但只要一添加校验盘,速度就会爆慢,可以到几MB的写入速度, 这是完全不可以接受的,这个速度连docker都启动不起来,因为各种读写超时出错。

无奈之下,去掉了校验盘,先弄数据再说。恢复完数据,然后开始校验,服务当然是不启动的,因为完全难以启动。 好不容易等到校验完了,发现docker在第一次启动还算可以,能启动起来,后面再启动就各种报错。

查看资料,然后各路大神都提到cache盘,我也用了下cache盘,速度确实会提升不少,但牺牲的是cache盘数据 没有校验,达不到保护了。

但cache还不能完全解决我的问题,cache的选项有三个,不使用就不说了,其他的两个,YES表示会使用cache, 在mover后会被移动到硬盘中,这个粗略来看好像适合我,但docker的数据被移动到硬盘后,速度就会爆慢, 于是,最终还是会触发问题。另外一个Prefer, 这个是比较有意思的,这个会尽可能的使用cache,甚至如果 数据在硬盘上,而cache也足够的话,也会存放到cache,从而加速。我没有读到这个Prefer的操作,什么时候 数据会被mover到硬盘上,而我的应用的数据比较大,对于我只有128G的固态硬盘的cache而言,实在是承担不了, 然后接着会承受硬盘那爆慢无比的写入速度。另外还有一个内容就是下载,网络力下载的速度可以达到几十MB 很正常,但写入速度却不够,因为写入的同时要校验。还可能引发的第三个问题就是由于不知道这个数据是否会被 校验,或者磁盘满的情况下,哪些文件会被放入数据盘,恢复的时候会引发部分文件不一致,或者丢失,这个 不确定的丢失文件可能会导致不确定的服务故障,比明确的知道损失更可恨。

总而言之,写入速度的爆慢,导致unraid的各种卡顿,出错。我甚至考虑,干脆不要校验盘算了,恢复原来的 定时对拷。但这样我为啥要用unraid啊,我原来的各种服务都是docker化的,本身可以快速的部署到各个 版本的linux上。

另外还有一个就是加密磁盘的挂载,unraid只支持整盘加密的形式,不支持device mapper的形式,我一度 考虑是否要切换到unraid上,但由于速度爆慢的影响,这个只能是个遗憾。不过最后还是决定放弃了。

所以我各种不服气,关键是花了钱却无法达到目的令我很不爽。然后我进行了各种优化,但最后都卡在了数据 校验引起的速度爆慢上。最后干脆放弃了。

最后,我又老老实实的换回了ubuntu,现在运行的版本是20.04,使用mergerfs将各个硬盘合并到一起, 备份采用的是snapraid,定时校验。由于我的docker部分数据容易变化,因此我将这部分容易变化的数据 单独放到一个目录中,snapraid校验的时候忽略掉这一部分,然后使用rsnapshot定时进行差异化备份到另外的目录 中,这样来确保各部分正常。由于尽可能的各个服务都是docker化的,除了没有unraid这种专用的nas系统的 界面好看,我自己觉得各种操作还是很方便的。

期间,我考虑过 OMV,但OMV基本就是一个debian的定制版本,然后加上各种界面,后来考虑各个软件的配置, 觉得还不如直接从我最喜欢的ubuntu来重头定制呢

xpra 是个好工具

我经常需要在别人的电脑上操作一些我自己电脑上的事情,虽然现在win10已经内置ssh了,但每次连上去,受限于win10自带的控制台,spacemacs经常花屏,错位,随便动 两下就不知道当前在哪一行了,可以说完全无法使用了。如果用图形界面的话,就需要xming之类的工具了,电脑里默认又没有。

昨天看到一个很不错的工具:xpra, 这个工具最强大的地方在于,可以将X11服务以h5的形式推送出去,类似与vnc的网页版本,但又不需要安装各种插件,想想下通过网页 操作linux服务器,对客户端的需求只有一个网页浏览器,这不正是我需要的么。

于是赶紧屁颠屁颠的安装配置,这样我从任何地方操作就只需要一个浏览器了。

网络故障记录

之前给家里的路由器升级版本,为了防止中间有需要网络的地方,因此将一个原来做无线热点的路由器临时配置成主路由,后来升级完成后,就直接将网线插入lan口去做桥接,接着做无线热点。

但网络一直是比较奇怪的,有的时候,会突然提示无法联网,或者连着连着会突然断掉。我的一台老手机,经常需要把无线断开重连才能正常上网。

前几天在配置macvlan网络的时候, 表现就更怪异了,我配置过很多次的macvlan。结果在docker容器中,发现网关ping可以通,但无法联网,ping域名,可以显示ip,但无法连通。这个很 奇怪的现象,按正常而言,可以拿到ip,一般可以ping通,不会只有一半。但很偶尔的一下,网络可以通了,一切都可以正常了。新启动的,90%都不通。

macvlan模块的加载,检查了, 存在。

我检查了网卡的模式,混杂模式我也开了,无用

我以为必须要一个bridge的网桥,然后我添加了,macvlan的parent也设置为网桥,无用。

只要不是macvlan,就可以通,ip forward?开了,无用。总之,我能找到的办法都找了,但就是不管用。

后来,我在使用curl测试的时候,访问主路由(同时也是网关)的网页时,忘了输入端口号了,我一般不会采用默认的端口号,然后curl竟然返回网页内容了。这是个什么鬼?我看了下网页内容, 是我那台做热点的wifi路由器的页面。添加端口号后,无法访问,但那台路由不是桥接么,为啥还能提供服务啊?想起之前路由替换的时候,为了不影响网络布局,就把临时的路由器的地址段和 老的保持一致,dhcp服务也开着,相当于现在局域网中有两台dhcp服务,而且,这两个dhcp服务分配的地址都一样的,互相在抢资源。。。。。于是,赶紧把做热点的无线路由器重置掉(让两个路由器不在同一个网段),并且 把dhcp服务关掉。紧接着所有的一切都正常了,网络也比原来好太多了。