紧那罗 发表于 2022-6-14 09:43

开个长帖更一下homelab的折腾经历兼做经验交流

本帖最后由 紧那罗 于 2022-6-14 09:59 编辑

看之前版里的几个homelab帖子有感
也来开贴记录一下去年换了gen10plus以后的折腾经历 也方便后续折腾的时候做一些交流吧
硬件相关的我了解不多 就不展开讲了 简单说就是买了台gen10plus 插上硬盘用了……
有兴趣可以看我的博客 https://blog.goatman.me/build_new_nas_use_gen10_plus/ 后续更新内容也会发到博客上


楼里主要更一下软件服务相关的折腾
目前想到的会先写下面这些做了的,其他的想到了或者折腾到了再补

[*]系统搭建(#2)
[*]数据备份(#3)
[*]内网访问配置(#4)
[*]本子下载和管理
[*]RSS阅读



紧那罗 发表于 2022-6-14 09:46


底层系统本着所有系统都虚拟化了方便管理备份的原则,这次底层采用的是esxi。不过这只是凭着过去几年的刻板印象选的,事前没有做过很完善的调研,事后想想,也许PVE会更合适。gen10 plus的唯一的pcie卡槽我用来接了m2转接卡来使用ssd作为系统盘,esxi本身是否放在ssd上并不重要,这块盘更主要的作用是存储虚拟机系统。不过因为sata控制器计划是直通给上层的nas虚拟机使用,所以底层系统自然是需要有独立的介质存储的,能存在机器里面多少还是比插u盘方便一些。整个pcie槽位只用来接一块ssd其实有点浪费,理论上来说分拆成2~4个m2接口或者提供2个2.5G网口都是可行的。不过支持这些功能的转接卡价格会高很多,同时和机器本身也可能存在这样那样的适配性问题。因为暂时来说我的需求只要接一块ssd就够了,所以就姑且先只用单接口的转接卡就行。由于这次的iLO与Gen8存在一些差别,底层系统的安装比起gen8稍微要波折一点,设置gen10plus的iLO配置需要先找一台显示器接上,在BIOS中设置好iLO使用共享网口的相关配置,配好以后就可以把机器插上网线塞到柜子里去了,后面的环节都可以通过iLO远程配置。安装esxi的过程很快,底层系统安装完成后,后面的系统安装都可以在esxi的web端进行。truenas(文件服务)首先是安装truenas系统,在esxi中上传系统镜像并创建虚拟机,再把sata控制器直通给truenas即可。出于稳妥考虑,这里我安装的系统是truenas core,因为是基于freeBSD的系统,从便利性上来讲可能会差一些。如果需要额外的功能,就需要用其他虚拟机来支援了。不过事后发现这么做带来的一个好处。由于sata控制器被直通给了truenas,整个truenas系统要做备份就变得比较困难,把整个存储系统做的比较简单,复杂的软件服务集中在独立的虚拟机上,单独对这些虚拟机做备份就比较简单了。在使用上,这套系统只用于提供存储服务使用,存储池定义,用户ACL设置,设置smb、nfs、afp、webdav等文件服务,其余功能一概不用。这样一来,整套系统除了存储的数据以外,就只有配置信息了。只要定期备份配置(这些配置变动其实也是比较少的,所以备份的频次也会很低),就能防备系统发生故障后能够顺利恢复。硬盘数据的备份,是个很复杂的方案,这个以后再具体展开讲。ubuntu server(docker宿主)因为除了基础的文件服务,通常我还会用到很多额外的软件服务,所以需要至少一套额外的虚拟机来充当软件服务器,之所以说是至少一套是因为部分软件如果限定了特定平台(比如windows),那么单独一套linux server是搞不定的,不过目前这种情况没有,所以我就先只装了一套linux系统,后面有需要再按需安装。这里选什么系统倒是并不重要,大部分server软件都会以docker方式运行,所以并没有区别。选ubuntu一方面是延续原有的使用习惯,另外是考虑到部分软件或命令行工具会以原生方式安装,选个保有量大的版本很多时候会更方便(和买车一个道理)。openwrt(软路由)这个系统只是实验性质,我对软路由的主要需求是流量控管与监控以及透明代理。目前尝试下来效果还不太令人满意,就不展开讲了。只能说折腾网络设备确实是最麻烦的,一个没配置好导致断网就很麻烦。即便作为尝试,我已经是只拿这套系统做旁路由使用,但是在底层esxi部署好以后,大部分时间我都是在外面通过代理方式访问家里的局域网设备,所以一旦中断,可能这天都干不了什么了…vinchin(系统备份)因为ubuntu server上做了很多配置和安装的活计,此外除了server,我也还有其他几套用途的虚拟机需要备份。查了一下感觉vmware的备份方案都挺重的(这也是让我觉得一开始如果用的是PVE可能就没那么多事了)。相对而言vinchin(云祺)的这套方案还算不错。唯一的问题是付费模式主要面向企业用户,不太适合个人用户。好在有永久的免费授权可以一直使用,只是有三台虚拟机的限制。结语最后整理一下,系统整体结构图如下,还算清晰吧。https://blog.goatman.me/all_in_one/AIO.drawio-16544876426702.png系统的搭建到这里基本告一段落了。可能还会再尝试一些软路由系统,或是出于软件需要装个windows server之类的小变更,也没必要展开说了。

紧那罗 发表于 2022-6-14 09:48

本帖最后由 紧那罗 于 2022-6-14 09:55 编辑

数据备份

开始之前在规划一切方案之前,有一件我一直觉得很重要的事情,就是先要识别自己有哪些数据资产。这件事情并不简单,甚至可以说很难,使用过的设备越多,在互联网上留下的足迹越多,这些数据可能就越散乱。有些数据可能就在哪部电脑或者手机里装着,而有些则可能只存在于某个供应商提供的网盘里,甚至有些数据,服务商觉得并不属于你,你只是被授权访问了…识别有效的数据资产是件很繁杂的事情,这里就不展开讲了。总之,在开始之前,我已经把所有我觉得需要做备份的数据都标识好了,这是一切的起点。基本策略数据备份有个被称为“3-2-1”的原则。即一份数据包含三份副本,保存在两种不同的介质上,并保持有一份数据存放在异地。这个原则对于个人用户来说,最简单的实践方案是这样
[*]在原始设备上(比如手机、电脑)存一份
[*]定期将数据备份到移动硬盘或NAS
[*]再存一份数据到云盘
我个人并不反感云存储,所以这个策略对于多数数据备份场景都是合适的。很多人会提到对于网盘,需要区分”同步“和”备份“。原因是”同步盘“无法防止误操作,如果本地误删除了某个重要文件,”同步盘”会在云端同步删除文件。对于这一点,我个人觉得很难界定。一些同步网盘也会提供如历史版本、近期删除的文件等功能,来弥补“同步”的缺陷。但是回过头来说,很多“同步盘”都提供了像“文件随选”这样的功能,文件只在需要的时候才会下载到本地来,这时候就要注意了。其实对于云盘,多数时候我并不担心数据丢失的风险,这本是供应商会考虑的问题。但是从近几年的情况来看,云盘或者说云存储的商业模式并不稳定,这反倒是需要担心的。对我而言,还有另外一种情况需要关注,就是对于一些大文件(比如照片、视频),单一设备可能存不下的时候,可能本地只会在nas上留存了一份,这时候就需要有额外的方案了。备份需求当然,也不是所有数据我都会遵从“3-2-1”原则来处理,实际上我大概把数据分了三类。
[*]第一类是不希望丢失的重要数据,会严格遵从“3-2-1”模式。
[*]第二类是在一定程度上可容忍丢失的数据。比如手机、电脑如果故障坏了,能够完全恢复当然好,但是只要圈定的重要数据不丢,重新装一遍系统、应用,做一遍配置之类的,也不是不能接受。这类数据我会挑最简单的备份方案来执行,比如手机、平板就用厂商提供的云服务,实在恢复不了就算了。
[*]第三类主要是网上下载的各类资源,这类数据定期记录一下目录信息就好,丢了的话再下一遍就好了。
商业上在容灾方案中,经常会提到RTO、RPO指标,通俗来讲,这两个分别指故障发生后,恢复需要花费的时间,以及,能够容忍的丢失数据时长。对个人用户来说,前者通常是一个相对宽裕的值。假如我电脑坏了,需要买台新的,耽搁几天再正常不过,没什么不能接受的。后者就需要自己好好评估了,如果觉得丢失一天数据都无所谓,那每天晚上做一次备份就足够了。如果丢失一两个小时的数据都不能接受,那可能就需要在使用的工具软件上做好方案,能够支持更及时的备份。不过其实我提到这个,是我觉得需要结合这两个指标评估好自己能管理好的数据范围。比如我NAS上管理的数据如果有50TB,假如有一天硬盘全挂了,我需要重新买一套硬盘再把数据从网盘下回来,结果发现网速太慢,光是下载数据就要花6个月…这也是不能接受的。工具与实施明确了策略和需求以后,实际实施起来就没有多复杂。主要用的工具包括:
[*]syncthing,用于实时同步文档,当然这里的同步并不是备份。
[*]borgbackup,用于本地备份,同时兼顾增量备份、保留历史等需求。
[*]rclone、BaiduPCS-Go,用于将文件备份到云盘。
其中syncthing会安装在nas和常用的电脑上,将变更的文件实时同步回来。另外其他如相机上的照片、视频,或是电脑上录制的视频,定期拷到nas上以后,原设备上会删除,需要额外备份一份。这里我暂时没想到特别好的方案,只是刚好旧nas的硬盘(已经使用6~7年)并没有故障,所以就先拿来做备份副本使用,用borg backup制作备份副本的同时进行加密,也解决了上传云盘(主要是百度网盘)的安全问题。云盘的备份我现在同时在用百度网盘和onedrive。前者单价更低,但是即使文件已经做了加密,我依旧担心会因为各种原因导致文件在云端不可用,因为office365赠送了tb级别的onedrive空间,所以姑且先拿来用。使用rclone可以直接将原始文件加密备份到onedrive上。不过因为onedrive的空间较小,而且分散在多个用户下,使用上还是有一些不便。另外云厂商的提供的对象存储也是可以考虑使用的,可靠性比云盘可能会略好一些,不过价格也略高,对可靠性要求高,数据量不是特别大的话可以考虑使用。本地的备份前后零零散散大概花了一周左右做完,之后上传两个网盘则在半个月左右(总共4t左右数据)。随着直播行业的热捧,国内宽带的上行带宽略有好转,百兆以上宽带基本提供了30兆左右的上行速度,额外加钱也有套餐可以提升到百兆的上行带宽。另外也有临时的方案,电信提供了为期1天的加速包,可以临时将上行速度提升到百兆,在跑满的情况下,一天可以上传700G左右的文件,我在处理数据备份的这几天使用,很快就完成了全部文件的上传备份。




紧那罗 发表于 2022-6-14 09:53

本帖最后由 紧那罗 于 2022-6-14 09:57 编辑

内网访问

这篇说一下homelab相关的内网访问配置,本来想写一些资源管理的内容,提纲列到一半发现存在一些依赖,只好先把网络配置的部分说了。基本需求在硬件部署完成以后,剩下的步骤其实都可以通过web端进行,而我大部分捣腾这台机器的时间也不是在家里,这样一来就需要能通过外部网络环境访问到家里的局域网。出于安全考虑,需要尽可能少的暴露端口到公网上。此外,国内的家用宽带常规是不允许提供互联网服务的,暴露homelab上的web服务端口也可能给自己带来不必要的麻烦。方案设计

动态域名解析远程访问需要解决的第一个问题是获取家里宽带的ip。家用宽带的IP每次拨号都会发生变化,且存在固定时间间隔强制断开重新拨号的情况,从便利性上来说这一步也是必要的。不过方案也是现成的,很多路由器或者nas系统都提供了动态域名解析功能,一般是使用品牌商提供的子域名用于解析,直接使用即可。不过因为我有几个托管在aws上的域名,就索性定义了一个二级域名,用一个定时脚本结合aws-cli工具来做更新,脚本是网上找的,因为aws查询IP的服务器地址是在国外,调用时走代理路线导致拿到代理的IP,于是换用了国内的ip查询服务。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash

#Variable Declaration - Change These
HOSTED_ZONE_ID=<HOST_ZONE_ID>
NAME=<DOMAIN_NAME>
TYPE="A"
TTL=60

#get current IP address
#IP=$(curl http://checkip.amazonaws.com/)
res=$(curl myip.ipip.net)
res_sub=${res: 6}
IP=${res_sub%% *}
#validate IP address (makes sure Route 53 doesn't get updated with a malformed payload)
if [[ ! $IP =~ ^{1,3}\.{1,3}\.{1,3}\.{1,3}$ ]]; then
      exit 1
fi

#get current

/usr/local/bin/aws route53 list-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID | \
jq -r '.ResourceRecordSets[] | select (.Name == "'"$NAME"'") | select (.Type == "'"$TYPE"'") | .ResourceRecords.Value' > /tmp/current_route53_value

cat /tmp/current_route53_value

#check if IP is different from Route 53
if grep -Fxq "$IP" /tmp/current_route53_value; then
      echo "IP Has Not Changed, Exiting"
      exit 1
fi


echo "IP Changed, Updating Records"

#prepare route 53 payload
cat > /tmp/route53_changes.json << EOF
    {
      "Comment":"Updated From DDNS Shell Script",
      "Changes":[
      {
          "Action":"UPSERT",
          "ResourceRecordSet":{
            "ResourceRecords":[
            {
                "Value":"$IP"
            }
            ],
            "Name":"$NAME",
            "Type":"$TYPE",
            "TTL":$TTL
          }
      }
      ]
    }
EOF

#update records
/usr/local/bin/aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID --change-batch file:///tmp/route53_changes.json


代理服务这里的实现方式和科学上网相似,只要把服务端部署在家里的homelab上即可。部署VPN也是可以的,不过我个人感觉这种方式有点重,安全性上来说我觉得应该相差不大,都算的上是经过考验的。最终暴露在公网上的端口只有两个,一个是http代理服务端口,另一个是方便登录维护的ssh端口。当然这两者都建议映射到五位数以上的端口上,不是说这样就能确保安全,至少能减少一些无聊的嗅探也算节约一些资源吧……安全性上,ssh服务建议关闭密码登录,或者是使用Fail2Ban这类软件防止恶意爆破。以上方案适用于家庭网络至少具有公网IP的情况。如果没有的话,则需要使用一些内网穿透的方案,像是frp、ngrok之类。不过这类方案需要一台vps转发,有公网IP的情况下我就不折腾这个浪费流量了。另外我也准备了zerotier这条备用路线以备不时之需。据说因为是基于udp打洞的方式,在网络质量上由于运营商qos的缘故要比tcp差一些,我实测下来在跨网络运营商的情况下确实差一些,暂时只做备用。反向代理这一步不是必要的,不过个人觉得做了以后可以一定程度上优化访问体验。由于在同一台服务器上部署了大量web服务,访问时通过端口区分,所以浏览器上会有很多类似192.168.x.x:xxxx这样的地址。一方面不方便自己记忆,另外似乎浏览器的密码管理对这种情况处理的也不太好。因此我加了一步用nginx作为反向的代理,根据不同的域名代理不同的后端服务。因为走的是内网代理路线,这个nginx是不需要暴露端口到公网的,也不存在安全性的问题。nginx的配置比较简单,为了便于维护,核心的nginx配置我只做了基本的日志配置和引入配置目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
http {
    log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log/var/log/nginx/access.logmain;
    server_tokens off;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    gzip                on;

    include             /etc/nginx/mime.types;
    default_type      application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
}
                     


每个服务的反向代理配置分拆为单独的配置文件,内容也很简单,以qbittorrent为例
1
2
3
4
5
6
7
8
9
10
server {
listen       80;
server_name<qbit_domain>;
location / {
proxy_pass http://<qbit_domain>:8080;
proxy_set_header   Host    $host;
proxy_set_header   X-Real-IP   $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}


这里需要解决一个小问题就是将各个服务配置的域名都指向homelab使用的局域网ip。域名配置有两种做法,可以在hosts文件或者路由器的dns配置里按需配置,将域名指向homelab使用的局域网ip。这么做比较灵活,域名想配成什么都行。另一个做法是使用公开域名做泛域名解析。比如配置一条A记录为*.home.xxxx.com指向192.168.1.100。这个方案的好处是只要配一次就好了,不需要逐个设备配置,也不需要每加一个服务就逐个设备改一遍hosts。缺点就是域名设置上没那么灵活了。需要注意一点,我在用openwrt做软路由的时候使用了dnsmasq服务,结果发现域名解析无法指向私网地址,解决办法是在防火墙设置中打开IP动态伪装。如果代理路线不能保证通信安全的话,还可以在nginx上配置ssl证书,通过https线路访问,来起到加密通信的作用。



revoer 发表于 2022-6-14 17:58

顶一下

cybernetics31 发表于 2022-6-14 20:14

pve在用 主要是debian习惯了 而且esxi直接不认我那堆垃圾配件 pve有pve tool这个脚本后省事不少
连回家这种我是直接起个debian小鸡用wireguard了 主要我需求不大https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif

紧那罗 发表于 2022-6-14 20:19

本帖最后由 紧那罗 于 2022-6-14 20:22 编辑

本子管理

背景我有一个服役超过7年的android平板Sony z3 tablet compact,上面运行着号称android核心竞争力的应用:ehviewer。长久以来,我都有每天登录ehviewer刷新一下订阅并下载新的漫画本子的习惯。之前我就有想过这个流程能不能优化,一方面每天手动刷新下载比较繁琐,并且若是不及时下载,一些资源在上传之后又会被删除。此外由于ehentai的资源限制,ehviewer下载原图并不方便,通常下载的还是重采样后的缩放图片,在平板上阅览虽然影响不大,若是作为仓鼠收藏则有点过意不去。而且在长年使用之后,ehviewer中的下载列表变的很长,在翻阅上也有一些不便,大量漫画的管理并不是ehviewer的核心功能,基础的检索、收藏功能也是依托ehentai提供的api实现的。ehentai在功能上虽然没什么可以挑剔的,不过也曾面临过关站风险,而且部分版权物也会被删除,如果有办法做本地管理作为替代和补足,自然也更好。
订阅下载使用到的软件:RSSHub、qBittorrent本来以为整套流程都需要自己处理,结果调研的时候发现RSSHub+qBittorrent就可以把整个流程完美的解耦后串联了起来。ehentai原站提供的RSS功能比较单一,无法满足个性化订阅的需要,不过有了RSSHub就比较方便了,这里主要用到的是RSSHub中ehentai的搜索路由。路由参考RSSHub官网的说明,格式为 /ehentai/search/:params?/:page?/:routeParams?。可以先在ehentai网站上搜索一次,复制网址后面的搜索参数。这里额外补充一点,其中页码参数page是从0开始而非1。以及因为要用于后续下载使用,所以还需要把获取种子地址参数打开。例如我会订阅所有评分为5分的汉化漫画和同人志,最后的路由为:/ehentai/search/f_cats=1017&f_search=language%3AChinese&advsearch=1&f_sname=on&f_stags=on&f_sr=on&f_srdd=5/0/bittorrent=1。qBittorrent在server端需要额外安装qBittorrent-nox来提供web管理功能,稍微需要注意,qBittorrent-nox的版本不能太低,否则是没有rss订阅功能的。把订阅地址扔到qBittorrent的RSS订阅里,配置好自动下载,整个流程就算完成了。本来还想着对于没有提供种子的漫画需要额外处理一下走http下载,搜了一下近半年的汉化漫画都提供种子文件,决定暂时先不折腾这块了。当然这样一来下载的漫画就不方便在ehviewer里看了,需要额外的阅读工具,这部分在下面详述。
额外的EX部分资源只在里站exhentai有,所以最好还是配置从里站下载。不过这比表站就要多几步折腾。RSSHub本身支持检索exhentai,只需要在环境变量中添加EH_IPB_MEMBER_ID, EH_IPB_PASS_HASH, EH_SK, EH_IGNEOUS这四个参数,就会自动改成从里站爬取信息。这里有一个小坑,添加上述变量后,访问ehentai和exhentai,会采用用户的个性化配置,可能会对网页元素造成影响,影响爬取。可以在网站的个人设置中,添加一个默认的profile供RSSHub使用。另外一个麻烦的问题是,exhentai只能在登录后访问,所以输出的exhentai的种子文件地址,在qBittorrent中是无法下载的。搜了一圈qBittorrent好像也没有提供在下载种子文件的时候配置自定义header这么偏门的功能。RSSHub ehentai路由的作者也许在其他场景下碰到了这个问题,因此提供了一个EH_IMG_PROXY参数,用于替换生成的RSS文本中图像的链接为代理服务器地址,从而在RSS阅读器中可以看到exhentai上的封面,不过他可能没想过把这个参数应用在种子下载地址上……这个思路倒是可行,在代理服务中手动配置Cookie到header中,应该可以解决exhentai无法访问的问题,遂尝试在nginx上添加一项代理配置
1
2
3
4
5
6
7
8
9
10
11
12
server {
listen       80;
server_nameexhentai.<HOMELAB_DOMAIN>;
location / {
proxy_pass https://exhentai.org;
proxy_set_header   Host      exhentai.org;
proxy_ssl_server_name on;
proxy_set_header   X-Real-IP   $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header   Cookie      <EXHENTAI_COOKIE>;
    }
}


测试了一下使用代理地址下载种子文件,没有问题,看来方法可行。理论上可以把server_name直接配置成exhentai.org,然后在hosts或者自定义的dns中把这个域名指向homelab的内网ip,这样不需要修改RSS输出结果就能让qBittorrent通过反向代理下载到种子文件。不过exhentai的下载地址使用了https,虽然不清楚qBittorrent和ehentai在保障https通信安全上做的如何,使用自签证书或许可以绕过去,不过我也不太想干这种左右互搏的事情。所以为了让qBittorrent订阅到的地址指向代理服务器,本来最后一步应该是给RSSHub提个PR,把代理地址应用到替换种子地址上,不过这样多少要费些时日。临时性的又想了个法子,反正是要做反向代理的,索性在nginx的反向代理里加一项配置,把RSSHub的响应体中的exhentai域名直接替换成代理的域名。修改的配置也很简单:
1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen       80;
server_namersshub.<HOMELAB_DOMAIN>;
location / {
proxy_pass http://<HOMELAB_DOMAIN>:<RSSHUB_PORT>;
proxy_set_header   Host    $host;
proxy_set_header   X-Real-IP   $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
sub_filter_once    off;
sub_filter_types   application/xml;
sub_filter "https://exhentai.org/" "http://exhentai.<HOMELAB_DOMAIN>/";
    }
}



管理阅览我之前试过用calibre来做管理,calibre也有从ehentai获取元数据的插件,把ehviewer上的漫画导进去之后,先编辑好基础的名称和作者信息,然后用插件从e站获取余下的tag等信息。整个管理流程是没有问题,不过体验也说不上来有多好,另外calibre基本只能解决管理的问题,阅览的需求需要另外想办法。本以为没有更好的方案就只能把这两步分开,结果意外发现Lanraragi用起来还不错。在管理功能上,比起calibre更适合做漫画和同人志的管理,也有插件从ehentai获取元数据。此外在阅览方面也做的不错,网页端的功能算不上很完善但是够用,而且非常难得的有tachiyomi插件,移动端的体验也比较好。因为Lanraragi和tachiyomi插件都是最近才开始用,暂时还没有什么大问题,后续折腾的时候碰到什么问题再单独更新吧。因为元数据都在本地,后期即使要迁移到其他管理方案上,也具有一定可行性。唯一比较麻烦的是这个应用的后端是Perl写的,看起来有点头疼,希望后续不会有需要钻进去改代码的时候。使用中的一个小插曲,下载的漫画我是放在nas上通过smb挂载到运行Lanraragi的虚拟机上,本想着数据库也直接存在nas上方便备份,结果应用一启动硬盘吵的像破锣似的,但是又没有大量读写。我本以为是因为频繁需要扫描文件变更来做更新,感叹以后漫画本子只能存ssd了,后来看了日志发现是因为smb权限问题导致Redis AOF持久化失败了疯狂重试导致的,算是给我刚服役不久的两块机械盘留了条活路。


紧那罗 发表于 2022-6-14 20:35

上面的东西可能没啥好讨论的抛砖再问几个我不熟的问题

1. 像我这种场景 sata硬盘直通给truenas 有什么好办法查哪个进程或者用户占用了磁盘IO吗 最好能查到具体读写文件之前LRR一开硬盘吵炸的问题查了我好久
2. ZFS做备份用的场景是不是不应该开去重? 上周末给一个月没备份的MBA做备份,结果备份2小时做完了,删前几个月的旧备份删了40多个小时

赤色彗星SEXY 发表于 2022-6-14 20:51

一个linux系统可以干完的事情
非要虚拟化拆到几个系统里

oskneo 发表于 2022-6-14 21:59

偶也是用esxi布置homelab,基本做完了。
不过有几个问题想问,
1.esxi那autostart虚拟机怎么用,怎么偶enable了,调了delay10s,却永远不见自动启动?
2.偶的文件服务器是vm的windows server,开了nfs,然后在esxi上挂载nfs,有些虚拟机放在这nfs上。但每次开机这nfs储存必死,等server启动后再刷新都恢复不了,需要手动去除这datastore再添加,有啥自动的方法?
3。用的esxi是7u3,不知道为啥无法为下面的vm添加usb设备,搞得鼠标键盘用不了。只能整个usb控制器直通。
4。嵌套虚拟加显卡直通是否真的没希望。
5.偶的nas是vm的windows server,应该怎样部署esxi的备份好?
6.nvme做datastore后再放vmdk的磁盘性能好像低了不少,是否只能给虚拟机直通nvme才能保持性能?

—— 来自 Sony XQ-AT52, Android 10上的 S1Next-鹅版 v2.5.2-play

紧那罗 发表于 2022-6-14 22:46

赤色彗星SEXY 发表于 2022-6-14 20:51
一个linux系统可以干完的事情
非要虚拟化拆到几个系统里

看个人习惯吧
我觉得虚拟化用起来更方便

紧那罗 发表于 2022-6-15 10:03

oskneo 发表于 2022-6-14 21:59
偶也是用esxi布置homelab,基本做完了。
不过有几个问题想问,
1.esxi那autostart虚拟机怎么用,怎么偶enab ...

其他几个不清楚

2. 为啥要这么搞 装vm的盘就单独给esxi 剩下的看需要在vm里面挂载不行吗
5. 是说vm的备份吧?我是觉得正常备到nas上就好了,nas没挂的话其他vm恢复起来都很方便,nas挂了重做也不会影响存储的数据。要求高一点的话做备份的机器单独搞,不过我觉得个人用没必要
6. 我只简单测过单个vm的ssd性能是比裸盘差一些 不过我只拿来装系统起应用 够用就行,如果特别在意性能大概只能直通了。

pfermat 发表于 2022-6-15 14:59

试了下楼主介绍的Lanraragi,好东西,马上用起来

再请教一下ZFS用的哪种raid,读写速度如何
顺便备份用文件系统自带的snapshot就行了吧,如果备份软件支持,会自动比较差异创建snapshot

桐敷沙子 发表于 2022-6-15 15:01

eh的话可以直接下archive吗?

oskneo 发表于 2022-6-15 15:47

本帖最后由 oskneo 于 2022-6-15 15:48 编辑

紧那罗 发表于 2022-6-15 10:03
其他几个不清楚

2. 为啥要这么搞 装vm的盘就单独给esxi 剩下的看需要在vm里面挂载不行吗

谢谢回答。
2.因为有些虚拟机需要大的数据盘。例如偶在esxi里挂了个网心云的虚拟机vm,需要给它2t的数据盘。我datastore是nvme的512g盘,全给它肯定是不行的,那么肯定是从我作为nas的windows server里的机械盘阵列中划出2t来给它。因为我把装硬盘阵列的raid卡直通给这虚拟机了。
5.上面可能没说清,这nas不是独立的nas,是esxi里的虚拟机vm,系统是windows server。备份的不止vm的系统盘,想备份整个装esxi的nvme盘,包括设置,直通之类的。

—— 来自 HUAWEI LYA-AL00, Android 10上的 S1Next-鹅版 v2.5.4

cybernetics31 发表于 2022-6-15 17:24

说起来我选择pve的一个原因就是自带zfs ,甚至你还能单盘zfs,esxi对于正儿八经服务器是ok的,自组的话配件杂七杂八还是牡蛎

superlattice 发表于 2022-6-15 17:28

本帖最后由 superlattice 于 2022-6-15 17:35 编辑

oskneo 发表于 2022-6-14 21:59
偶也是用esxi布置homelab,基本做完了。
不过有几个问题想问,
1.esxi那autostart虚拟机怎么用,怎么偶enab ...

1.autostart默认发生在ESXi彻底启动的120秒后,所以这个120秒要改短,我改的0秒。

2.不建议Windows nfs,最好Linux nfs,且nfs必须先于ESXi启动。

3.ESXi单USB直通好像得上电状态下插拔一下,才能在ESXi里识别出来,开机就插着的可能不行(我6.5u3是这样的。

4.现在最新n卡驱动已经解除了虚拟机限制,理论上n卡和a卡都可以按直通普通PCIe设备的方式直通给虚拟机(以前不得不改vmx文件骗过nv驱动直通1050ti和3090那个麻烦哟……)

5.最简单的办法是买个sata机械盘,每隔一段时间关虚拟机到文件管理器复制。当然不加硬件直接ssh下载回来也行。

6.跑分低了也正常,不过nvme ssd算是系统内最性能过剩的硬件了,随便吧,硬盘控制器删掉原来的sas,添加nvme存储控制器,再把硬盘控制器改为nvme那个,有性能提升。

superlattice 发表于 2022-6-15 17:41

本帖最后由 superlattice 于 2022-6-15 17:55 编辑

紧那罗 发表于 2022-6-14 20:35
上面的东西可能没啥好讨论的抛砖再问几个我不熟的问题

1. 像我这种场景 sata硬盘直通给truenas...

1.iotop这个命令,可以看到每个进程占用多少io
2.以前ZFS还主要在BSD上的时候,就有不少文章指出ZFS的数据去重是个很糟糕的功能,内存资源消耗巨大,和快照搭配食用可能导致挂整个数据集(dataset),能不开就不开。估计现在的OpenZFS也好不到哪去。

Windows存储空间直通里的离线数据去重也是一个极度耗内存极度耗CPU的玩意,更别提ZFS的在线了。想想你内存要存每个粒度的哈希还要在写时比对,就会感觉很流汗黄豆。

紧那罗 发表于 2022-6-15 20:16

oskneo 发表于 2022-6-15 15:47
谢谢回答。
2.因为有些虚拟机需要大的数据盘。例如偶在esxi里挂了个网心云的虚拟机vm,需要给它2t的数据 ...

2. 这个需求我明白 我的意思是你的数据盘不要给esxi做datastore 哪个虚机用到了在虚机里面单独挂载不就没这个问题了吗
5. 我是没有备份esxi本身 主要这层底层系统我没做什么配置感觉没什么好备份的 真坏了就重装吧 包括直通存储的truenas也没想到什么好办法 所以这一层的系统我装完就不动了 定期备份一下配置 真坏了就重装一下导一下配置吧vm备份到nas就是用之前坛里推荐的云祺

紧那罗 发表于 2022-6-15 20:19

pfermat 发表于 2022-6-15 14:59
试了下楼主介绍的Lanraragi,好东西,马上用起来

再请教一下ZFS用的哪种raid,读写速度如何


我对ZFS没多熟 以我粗浅的了解 ZFS的快照和虚拟机快照是一类东西 都是基于变更的
你原盘数据丢了的话 只靠快照是不能恢复数据的...

暗影翔 发表于 2022-6-15 20:35

esxi备份其实也简单。比如我是u盘启动,直接备份整个u盘就好。
我现在用超微x10dri,直接在ipmi里启动再生龙备份到大奶。
虚拟机使用vmsa导出就好。
@pfermat 如果单盘不大的话,数量不多的话,raidz1也还可以。我的4盘z1用了1年没出问题。4个都是2t,2个新盘,2个旧盘,其中还一个是机房淘汰的3w小时的盘。
最近打算升级到6盘z2,单盘4t。
raidz1和raid5主要问题是降级重建阵列的时候万一又有另一个盘坏了就寄了,z2和6需要又有两个盘坏才能寄,概率就很小很小了。
单盘小的话,重建时间短,坏的概率低。

暗影翔 发表于 2022-6-15 20:40

lz的贴子挺好的,把内网访问和备份都写了。

pfermat 发表于 2022-6-16 11:45

紧那罗 发表于 2022-6-15 20:19
我对ZFS没多熟 以我粗浅的了解 ZFS的快照和虚拟机快照是一类东西 都是基于变更的
你原盘数据丢了的话 只 ...

文件系统的快照功能比这个强
给文件夹A建立一个快照A',然后把A里面的东西删了,不会影响A',想要恢复的话直接把A'拷回去

pfermat 发表于 2022-6-16 11:51

暗影翔 发表于 2022-6-15 20:35
esxi备份其实也简单。比如我是u盘启动,直接备份整个u盘就好。
我现在用超微x10dri,直接在ipmi里启动再生 ...

我手里盘不多,容量比较尴尬
有3个8T,2个10T,还有几个更小容量的
最简单的办法是再买块8T的,不过3个8T有一个在群晖里,要倒一遍数据

现在用unraid无校验盘,想买16T,但是上校验的话至少要买2块,痛苦

oskneo 发表于 2022-6-16 16:45

superlattice 发表于 2022-6-15 17:28
1.autostart默认发生在ESXi彻底启动的120秒后,所以这个120秒要改短,我改的0秒。

2.不建议Windo ...
感谢回答。
1.所以我就是不明白,调了延迟10秒后,等10分钟依然没vm自动启动。
2.具体有什么区别呢?其实nfs用得不多,主要用smb3和smb直通所以选windows server。
3.明白了,下次重启试试。
4.直通说一早做了的,不过貌似esxi 6.5后的版本无法直通和嵌套虚拟一起来,这样想在vm做一些操作无法做,
例如半虚拟化显卡,桌面的安卓之类的。不过6.5之前试过一起开,bug是很严重的。可能是因为当时主板只是家用主板不兼容esxi,也可能同时开就是这问题,导致现在禁止同时开。
5.总感觉不是太方便。
6.nvme偶现在甚至感觉速度不够,上大内存做缓存了,现在划了15g做写入读取缓存。不过长期用应该有问题,要购买支持esxi的ups?不过到时候关机逻辑又要烦了。

oskneo 发表于 2022-6-16 16:52

本帖最后由 oskneo 于 2022-6-16 16:54 编辑

暗影翔 发表于 2022-6-15 20:35
esxi备份其实也简单。比如我是u盘启动,直接备份整个u盘就好。
我现在用超微x10dri,直接在ipmi里启动再生 ...
就是建议转usb启动?不过看ls这么多,看来在线备份对于esxi来说是不可能的吧。
最多在线备份就是备份vm,但备份不了设置和直通。
不过直接usb备份不知道和移动硬盘里弄个备份系统然后做个备份镜像和这种哪个方便。
而这种备份现在是哪种方式最火?
现在偶考虑如果要压缩备份空间的话,其实其他虚拟机都可以备份到windows server的raid6储存里。
偶另外需要备份的就是esxi的主要设置直通和windows server这个虚拟机而已。

oskneo 发表于 2022-6-16 17:00

紧那罗 发表于 2022-6-15 20:16
2. 这个需求我明白 我的意思是你的数据盘不要给esxi做datastore 哪个虚机用到了在虚机里面单独挂载不就没 ...

2.数据盘是raid卡里的,没做datastore,直接直通给做文件服务器的vm了。好吧,看来是没啥方便的自动方法,只能研究esxi的scheduler,还是task?
5.好的,偶看看云崎,谢谢。

dejavuuuuuuuu 发表于 2022-6-16 17:01

紧那罗 发表于 2022-6-14 09:53
内网访问

这篇说一下homelab相关的内网访问配置,本来想写一些资源管理的内容,提纲列到一半发现存在一些 ...

请问楼主的博客是搭建在nas上的吗?
是怎样实现家庭宽带访问不带端口的

尼特geek 发表于 2022-6-16 17:07

pfermat 发表于 2022-6-16 11:51
我手里盘不多,容量比较尴尬
有3个8T,2个10T,还有几个更小容量的
最简单的办法是再买块8T的,不过3个8T ...

上什么校验,硬盘坏了就换呗,少量数据丢失在可接受范围内。

紧那罗 发表于 2022-6-16 17:13

dejavuuuuuuuu 发表于 2022-6-16 17:01
请问楼主的博客是搭建在nas上的吗?
是怎样实现家庭宽带访问不带端口的 ...

当然不是了,家用宽带又没有80端口,哪怕布到其他端口上,也会被电信查封的呀

—— 来自 HUAWEI JAD-AL50, Android 10上的 S1Next-鹅版 v2.5.4

ashunicorn 发表于 2022-6-16 17:14

紧那罗 发表于 2022-6-16 17:13
当然不是了,家用宽带又没有80端口,哪怕布到其他端口上,也会被电信查封的呀

—— 来自 HUAWEI...

Bas上直接限制80 443这些端口访问的

—— 来自 S1Fun

暗影翔 发表于 2022-6-16 19:46

oskneo 发表于 2022-6-16 16:52
就是建议转usb启动?不过看ls这么多,看来在线备份对于esxi来说是不可能的吧。
最多在线备份就是备份vm, ...

esxi在线备份估计不行,不知道研究研究vcsa行不行。其实esxi弄好之后基本就不会调整,也就是几个月vmware出补丁,升级之后备份。所以备份频率不高。
usb启动的话应该没法raid1弄ha。

暗影翔 发表于 2022-6-16 19:49

oskneo 发表于 2022-6-16 16:45
感谢回答。
1.所以我就是不明白,调了延迟10秒后,等10分钟依然没vm自动启动。
2.具体有什么区别呢?其实n ...

esxi的关机,可以考虑nas系统里的ups检测,常用的omv、群晖都有。然后esxi里安装NutClient登录nas系统监控ups。
随手搜了一下:https://post.smzdm.com/p/az6p6ern/

暗影翔 发表于 2022-6-16 19:50

pfermat 发表于 2022-6-16 11:51
我手里盘不多,容量比较尴尬
有3个8T,2个10T,还有几个更小容量的
最简单的办法是再买块8T的,不过3个8T ...

可以考虑我的策略,买旧盘。比如最近买的5块4t,总共花了1600多。

cybernetics31 发表于 2022-6-16 19:50

回家又不是只有端口转发,,,,,,,wireguard zerotier 方法不要太多现在https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif

oskneo 发表于 2022-6-17 00:24

啊,已经太迟,这esxi今天不知道为啥突然自动重启了一次。
偶用本子rdp进去不成才发现,这时候网页端能进,但vm全部关了。
进去windows server,绝望了,偶那44t的refs变raw了。是8盘8t的raid6。
查了一下refs,居然refsutil不支持refs3.7,
而且这问题在2022和win11发售半年多的现在还没解决,巨硬究竟在干啥。

—— 来自 HUAWEI LYA-AL00, Android 10上的 S1Next-鹅版 v2.5.4

pfermat 发表于 2022-6-17 15:10

再来问问楼主和各位
有遇到过rsshub无法获取易叉横态内容的情况么

直接路人状态拉易横态没问题,但是按照文档把cookie填上后就会提示authorization failed
cookie数据肯定是对的,其他软件可以获取数据

Kryss 发表于 2022-6-17 15:38

oskneo replied on 2022-6-17 00:24 啊,已经太迟,这esxi今天不知道为啥突然自动重启了一次。 偶用本子rdp进去不成才发现,这时候网页端能进,但vm全部关了。 进去windows server,绝望了,偶那44t的refs变raw了。是8盘8t的raid6。 查了一下refs,居然refsutil不支持refs3.7, 而且这问题在2022和win11发售半年多的现在还没解决,巨硬究竟在干啥。—— 来自 HUAWEI LYA-

以后换truenas吧,windows server真的一言难尽,还有就是8盘8t别搞z2/raid6了,四组mirror/raid1或者两组z2/raid6比较稳虽然亏点容量

cybernetics31 发表于 2022-6-17 16:00

win server就别组raid了………………

紧那罗 发表于 2022-6-18 19:42

pfermat 发表于 2022-6-17 15:10
再来问问楼主和各位
有遇到过rsshub无法获取易叉横态内容的情况么



没碰到过 看下是不是格式填的不对吧
我只有用户设置里有些自定义的配置导致内容爬取失败的 换一个profile就好了
页: [1] 2
查看完整版本: 开个长帖更一下homelab的折腾经历兼做经验交流