就随手记录下自己的NAS用了些什么东西吧

0x00:硬件
Dell R730xd
Seagate Exos 12T x8,仓库盘
Intel S3500 1.2T,系统盘
ps4上拆下来的2.5寸500g机械,挂下载用的炮灰(
老电脑上拆下来的3T和5T盘,型号懒得看了
Intel x550,双万兆电口网卡

0x01:系统
直接Archlinux,不搞什么ESXI、PVE,只玩真实(

0x02:文件系统
LVM + Luks + Btrfs:
拓扑如下,主要有三个分区(1.2T的root,3T+5T用LVM拼起来的一个8T,500G的下载炮灰)。
所有的文件系统(除EFI分区)均使用luks加密,密钥存储在一个U盘上。system-boot在启动时会自动从该U盘中读取密钥并解密root文件系统,之后再根据/etc/crypttab中的内容解密其他分区,保障数据安全。
ZFS:


主要的数据存放处,8块12T希捷企业盘组成的RaidZ2阵列,开启ZFS自带的加密功能功能。key文件索性就放root分区下了,反正root分区也是加密过的。
zrepl:

用来定时对zfs阵列创建快照,并按照规则清理快照。

0x03: 文件分享
Samba:
这没啥好说的,给家里所有设备提供文件访问服务的,顺便开启了Time Machine功能给Mac用。
iSCSI:
前段用的targetcli,后段用内核提供的LIO,在zfs阵列上划一个4T子卷用来给win装Steam游戏库的。一些使用反作弊的游戏(比如彩虹六号围攻,apex)在把游戏文件放在samba上会报错无法启动,iscsi则没有任何问题。

0x04:其他服务
以下服务均在容器中部署
Traefik:

服务网关,所有流量的入口,部署在容器中并开启基于docker的服务发现,这样其他部署在docker中的服务不需要每个都占用一个宿主机的端口,只由traefik绑定80和443即可。
Portainer:

方便管理容器的,喜闻乐见没啥可说的
Prometheus + Grafana:
提供监控和展示的,告警我懒得配所以没装Alertmanager,我主要使用的板子包括
Node Exporter Full:节点监控,由prometheus node exporter提供。

Node - ZFS Status:ZFS监控,可以看到缓存大小、命中率等信息,由prometheus node exporter提供

S.M.A.R.T Dashboard:硬盘信息监控,实现看这个repo(https://github.com/micha37-martins/S.M.A.R.T-disk-monitoring-for-Prometheus)

v2ray dashboard:网关的流量情况,你懂的,实现看这个repo(https://github.com/wi1dcard/v2ray-exporter)

Filebrowser:
基于web的文件管理和对外分享(tls由traefik提供)

Aria2 + AriaNG:
http + bt文件下载,我只用来下http的东西,bt用下面的transmission

Transmission:
bt和pt下载

Syncthing:
多设备文件同步(虽说我只用来备份狒狒14的游戏设置

Bililive-go:
自己写的录直播的小玩具

0x05:其他
tbd