在去年秋冬天的时候我基本确定了我所有的硬件设施,时间来到今年上半年,由于电子设备的大幅上涨,再进行硬件级别的调整对我来说已经几乎是不可能的了,因此我当下主要的任务是最大程度利用好我现在有的所有硬件,尽可能通过系统级别的调优,优化我的工作流程。
对于wrt的n100软路由和720+的nas存储 其实我基本上整体是比较满意的,问题主要出在计算端的12500T上面。在此之前,我尝试采用NFS挂在的方式去处理存算分离,但是时间一长就发现NFS在大量IO交换的情况下会出现频繁断联的局限性,痛定思痛,我决定彻底放弃群晖的一切服务,转而将其变为一个LUN服务器,通过iscsi挂载的方式,让12500T全权接管主机的存储。
要彻底摆脱群晖的各项服务,首先就需要整理一下我当前使用了群晖的哪些服务 一年时间用下来 觉得使用频率比较高的服务仅有三个:群晖的DDNS域名解析服务;群晖的driveapp服务以及群晖的download station远程下载功能。曾经我也是份依赖于群晖的photostation不过自从使用了immich之后对于photo station的需求是逐步降低了。还有一个很重要的功能,他不是通过应用来实现的:群晖提供了一个很不错的web界面,通过这个web界面,我可以很快访问我的所有应用app。
此外 我还整理了一下我所有的付费订阅app,因此新增了几个开源服务器端的docker需求 以减少我订阅的需求。
把他们列成表格的话 就是这样:
| 应用名称 | 性质 | 解决方案 |
| DSM桌面 | 群晖自带 | Homarr导航页(docker) |
| Drive | 群晖自带 | nextcloud(docker) |
| Download station | 群晖自带 | 未定 |
| DDNS | 群晖自带 | duckDNS+NPM(docker) |
| openwebui | docker | docker |
| kiwix | docker | docker |
| wordpress | docker | docker |
| immich | docker | docker |
| alist | docker | docker |
| 记账 | iNote(3600JPY/年) | firefly(docker) |
| 笔记 | Mindnode(3500JPY/年) | triliumnotes(docker) |
| homeassitant | 12500T虚拟机 | docker |
| windows虚拟机 | 12500T虚拟机 | 天选+rust远程 |
确定了这些东西以后,我们就可以进一步针对性的解决他们了
系统的选择上面,我还是采用没有桌面环境的debian13作为服务器的系统,在稳定性上面无可挑剔。此外,因为我最开始学习的linux系统就是ubuntu系统,debian相比于arch系,对我来说认知负担也是更小的。
初始化debian
首先是安装sudo 因为debian系统是没有sudo的,很不方便:
切换到 root 用户
在终端直接输入以下命令并回车,然后输入你安装系统时设置的 root 密码:
su
2. 安装 sudo
切换成功后(你会发现命令提示符从 $ 变成了 #),执行:
apt update
apt install -y sudo
3. 将你的用户添加到 sudo 组
将常用用户名添加到 sudo 管理员组:
# 将 <your_username> 替换为你实际的登录用户名
usermod -aG sudo <your_username>
4. 使权限生效
你需要 注销并重新登录,或者直接重启一下小主机,权限才会生效:
reboot
先验证一下 sudo 是否正常:
sudo -v
如果上面没有报错,就可以进行下一步了
安装软件
初始化完系统以后,更新源,更新软件完毕,就需要开始进行初始设置。debian相比于ubuntu,他给的预装软件比较少,所以有一些工具需要自己安装,因为我的iscsi硬盘用10TB那么大,所以需要一个能够在后台持续运转的指令工具screen
sudo apt install screen -y
同时,还需要安装iscsi相关组件,由于我的720+是双1G网口,iscsi支持聚合,所以我为12500T的小主机配备了2.5G网卡
sudo apt install open-iscsi multipath-tools -y
配置 iSCSI 节点
修改 Initiator Name
确保 Initiator 名称是唯一的(如果存储端已配置 ACL,请保持一致):
cat /etc/iscsi/initiatorname.iscsi
发现并登录目标
# 发现目标(通过任意一条链路即可)
sudo iscsiadm -m discovery -t sendtargets -p 192.168.X.X
# 登录所有发现的节点
sudo iscsiadm -m node --login
登录成功后,使用 lsblk 应该会看到多个同样大小的磁盘设备,它们实际上是同一个逻辑卷的不同路径。
配置 Multipath
多路径工具负责将这些重复的路径聚合成一个虚拟设备。
生成配置文件(/etc/multipath.conf)
建议开启基本的负载均衡配置:
defaults {
user_friendly_names yes
find_multipaths yes
}
devices {
device {
vendor "SYNOLOGY" # 根据你的存储品牌修改
product "LUN"
path_grouping_policy multibus
path_selector "service-time 0"
failback immediate
}
}
重启服务
sudo systemctl restart multipath
sudo systemctl enable multipath
验证多路径状态
使用以下命令查看路径聚合情况:
sudo multipath -ll
看到下面的代码的话 就是成功了
mpatha (3600...) dm-0 SYNOLOGY,LUN size=1T features='0' hwhandler='0' wp=rw -+- policy='service-time 0' prio=1 status=active |- 1:0:0:0 sdb 8:16 active ready running - 2:0:0:0 sdc 8:32 active ready running
挂载与持久化
格式化设备
sudo mkfs.ext4 /dev/mapper/mpatha
持久化挂载 (/etc/fstab)
由于 iSCSI 是网络设备,必须在挂载选项中添加 _netdev,防止系统在网络启动前尝试挂载导致卡死:
/dev/mapper/mpatha /mnt/iscsi_data ext4 defaults,_netdev 0 0
10TB在2Gb的网络下格式化需要约16个小时左右,所以后面的内容之后再更新。