NAS装机配置
NAS装机配置
最近也是折腾了一台存储服务器,实际上它不仅仅作NAS(网络附接存储)使用,也跑着一些计算,但是为了方便起见就叫它NAS了。
本文既算是一个记录也可以算是一个教程,包含材料选配、硬件组装、系统安装以及网络设置。如果你也准备建一台NAS的话,本文末也有一些QA帮助你分析是否真的需要、需要何种配置。
材料选配
全部配置单如下
硬件 类型 参考价格 来源 准系统 Dell R730XD准系统(带单电双散+背板扩展) TB 阵列卡 H730 准系统带 TB 网卡 双千双万电口 准系统带 TB CPU TB GPU 丽台K600 XY 内存 XY 数据盘 平均 TB 系统盘 TB 此外准系统不带盘架,还花了买了14个盘架以及其他物品搭建环境
硬件 类型 参考价格 来源 UPS XY 电池 TB 路由器 TL-R3473G 45 XY 实际上如果只是组件一台NAS的话,有很多地方可以减配,不过由于自身的一些需求所以最终配置是这样。
例如,家用买R730 8盘就够用了,用不上XD以及背板扩展,网口也不需要万兆,阵列卡走直通用ZFS软RAID的话H330就够了,这样大概650就能拿下准系统。
以及内存的考量是由于ZFS依赖ECC纠错+大内存做缓存,不过自用实际上两条64G也绰绰有余了,这样内存500预算就够了(如果组硬阵列可以更低)。
包括CPU,不需要计算只常规NAS使用两个E5-2640V4就够了。
数据盘方面也是同样,这里我购买两条SSD的作用是做SLOG+缓存,自用实际上可以不用考虑,全部机械就够了。
系统盘方面,实际上R730系列主板都是支持SD模块的,买两张闪存卡做Mirror搭建系统也是一样的。
综上,这套配置花了7245+900=8145元,如果只是考虑NAS(4T*8)使用的话3500就足够了。
后续更新
- 实际组装我才知道机器主板自带核显,所以根本不需要亮机卡,反而亮机卡不知是驱动还是什么问题无法使用。
- 主板不能使用VGA转DP/HDMI线,这也坑了我很久,最后还是直接使用iDrac连接的。
硬件组装
系统安装
PVE
首先在Downloads Proxmox下载ISO镜像文件,关于版本我直接用的最新版(8.3)。
然后烧录启动盘,我选择的是etcher。
安装时先进BOOT Manage将启动盘改为U盘,然后正常进入安装引导安装即可
踩坑记录1:我在安装过程中遇到了Crash界面
Type: Non Maskable interrupt (02) Source: Hardware
。Crash 经过搜索后发现是BIOS版本太低,随后按照DELL服务器使用iDRAC升级BIOS等固件版本更新BIOS,这里注意DELL目前最新是2.86,没有解压选项,可以将其改为zip后缀在payload文件夹下找到
firming.d7
。然而BIOS更新为
2.19.0
后依然同样的错误。于是我选择了第二种方式,先安装PVE6.4,再通过升级的方式升级到8.x。
这样就没有出问题,安装可以参考PVE 8.2 安装指南 如何正确引导 ZFS RAID1
阵列卡
如果你在组ZFS RAID1时只看到一块硬盘,那大概就是你默认开启了硬RAID,需要在iDrac中阵列卡从RAID改为HBA(直通)。
先升级到7.0,教程PVE6.4升级7.0,如果提示没有
pve6to7
命令的话确保源中包含deb http://download.proxmox.com/debian buster pve-no-subscription
。一般升7没问题升8也就改个源的事了。升级完成之后原有内核不会删除,需要手动清除。
# 查看全部内核 dpkg --get-selections |grep kernel # 卸载指定内核 dpkg --purge --force-remove-essential pve-kernel-xxxx # 更新引导 update-grub
风扇转速
这个用网上脚本就行,我这里用的是
#!/bin/bash # 当温度高于目标温度时,此脚本将缓慢提高风扇速度 # 当温度低于目标温度时,将快速降低风扇速度 # 设置远程服务器参数 idrac_host=192.168.0.xxx idrac_user=xxxx idrac_pwd=xxxx # 设置最小和最大风扇速度(百分比) min_fan_speed=5 max_fan_speed=25 # 设置初始风扇速度(百分比) fan_speed=$min_fan_speed # 设置风扇速度增量(百分比) fan_speed_inc=1 # 设置频率检查并更新(以秒为单位) ramp_up_Frequency=20 ramp_Down_Frequency=10 frequency=$ramp_Down_Frequency # 设置所需的 CPU 温度(以摄氏度为单位) desired_temp=60 # 启动内核模块 modprobe ipmi_msghandler modprobe ipmi_devintf while true do # 获取当前的 CPU 温度(以摄氏度为单位) cpu_temp=$(ipmitool -I lanplus -H $idrac_host -U $idrac_user -P $idrac_pwd sdr list | awk -v FS="|" '{print int($2)}' | sed -n '15,16p' | awk '{sum += $1} END {print int(sum/2)}') # 根据温度计算所需的风扇转速 if (( $(echo "$cpu_temp > $desired_temp" | bc -l) )); then # CPU 太热,提高风扇速度 fan_speed=$(echo "$fan_speed + $fan_speed_inc" | bc -l) frequency=$ramp_up_Frequency # 限制最大风扇速度 if (( $(echo "$fan_speed > $max_fan_speed" | bc -l) )); then fan_speed=$max_fan_speed fi else # CPU 足够冷,降低风扇速度 fan_speed=$(echo "$fan_speed - $fan_speed_inc" | bc -l) frequency=$ramp_down_Frequency # 限制最低风扇速度 if (( $(echo "$fan_speed < $min_fan_speed" | bc -l) )); then fan_speed=$min_fan_speed fi fi # 将风扇速度从百分比转换为十六进制 fan_speed_hex=$(printf '0x%02x' $((fan_speed*100/101))) # 使用 ipmitool 设置风扇速度 ipmitool -I lanplus -H $idrac_host -U $idrac_user -P $idrac_pwd raw 0x30 0x30 0x01 0x00 ipmitool -I lanplus -H $idrac_host -U $idrac_user -P $idrac_pwd raw 0x30 0x30 0x02 0xff $fan_speed_hex now=$(date +"%Y-%m-%d %H:%M:%S") echo "$now set FAN PWM => $fan_speed" >> /var/log/r730xd_fan_control.log # 在再次检查之前等待确定的秒数 sleep $frequency done
如果出现
Error: Unable to establish IPMI v2 / RMCP+ session
大概率就是需要修改idrac IPMI没有启动,在web界面启动一下即可。
IOMMU+VFIO
IOMMU的作用是能够让虚拟机直通硬件,因为我们准备使用TrueNAS管理硬盘,所以需要开启此功能,如果你是想直接PVE管理硬盘的话可以跳过此步。
编辑
/etc/kernel/cmdline
,添加intel_iommu=on iommu=pt
编辑
/etc/modules
,添加vfio # 开启直通 vfio_iommu_type1 # 管理 IOMMU 的映射和隔离。 vfio_pci # 绑定和管理 PCIe 设备。 vfio_virqfd # 管理中断。
最后
proxmox-boot-tool refresh
刷新再重启即可。
TrueNAS+ZFS
安装TrueNAS教程很多就不再写了,注意一些注意事项
- 直通前确认设备的in use是否是VFIO
- 用UEFI引导的话注意EFI磁盘不要预设注册密钥。
踩坑记录
我买后置扩展盘(作为系统盘)时说明了接主板,结果还是给我接阵列卡了,导致将阵列卡直通到虚拟机后PVE炸了...一定要注意系统盘的控制器
安装没有问题后便可以将阵列卡设备直通给TrueNAS,注意PCI-Express选项要打勾。然后就可以在TrueNAS中看到硬盘组ZFS存储池了。
我这里采用10块HDD组ZRAID2(即RAID6),一块SSD作为cache,一块SSD作为log。其他选项(去重、压缩、异步)的话可以根据自身需求考虑,我这里采用默认。
admin/admin123 NAS:root/FTYadmin138 iStoreOS:root/password AdGuard:root/passoword
网络设置
开启IPv6
这一步实际上是最重要的,它将决定你能如何使用NAS,如果你真的只是需要家庭数据中心(例如资料存储、影视播放)的话,你可以买个小型交换机或者直连路由器就足够了。
不过如果你有远程访问需求,那么你需要先确定是否能够打开外网。
首先你可以查询你所在省市以及你所使用宽带运营商的政策,目前来说大部分地区都是不再提供公网IPv4了,当然你也可以直接拨打100/86/10/00号咨询。
一般来说,IPv6是开启的,你可以直接进行光猫超密(超密自行查询教程或联系运营商)后台看看是否开启IPv6,是否能够正常拨号获取到前缀。
如果以上都没有问题,那么你便可以通过IPv6访问。
如果没有开启IPv6的话,你也可以联系运营商客服处理即可,这里分享一下我的开通经历。
首先我在中国电信客服人工客服处申请开通外网IP,后续有专人联系我告知外网IP不给了,我要求开通IPv6。接下来便是专人上门,大概告知了一下风险,例如可能会通过IPv6访问外网以及PCDN这些都是严查的,我回复已经了解这些事项了,不放心可以签署保证协议。师傅也就没说什么,后台开启IPv6拨号成功后便结束了。
DDNS
安全组网
大部分家庭级路由器并不支持对IPv6设置防火墙规则,要么就是全开无法外网访问,要么就是全关全部都可访问。网络上的大部分教程都是告诉你IPv6地址太多了,可以放心暴露。
然而,作为一名安全人员,我们便来算一下这到底安不安全。
如果我们只考虑一名黑客从茫茫的IPv6中扫到你,几率是,这个数可以看成无限接近于0。
但是,事实上IPv6和IPv4一样也有许多保留地址和已指定的分配块,具体到电信上,AI给我的数据是16387块/32,也就是,此时几率变成了,还是约等于0,这也便是网上为何都说可以放心暴露。
但,到此为止了吗?
要知道IPv6并不是没有规律的,事实上一般将IPv6分为64位前缀和64位主机地址,也就是说可以先确认存活前缀,再遍历主机,电信的前缀一般都是
240e:xxxx:xxxx:xxx0/64
,并且你的网关可能会默认使用::
,::abcd
,::1
或者:192.168.1.1
等作为主机地址,此时扫描空间变成了,现在看起来这个数没有那么大了。实际上,黑客并不需要扫到你,他只需要从无数个目标中找到有漏洞的目标即可,而你只是恰好在这个目标范围中罢了。你一定听过计算生日概率的事,这里也是一样,我们不应该计算黑客找到你的概率,而应该计算黑客找到一个存活目标的概率。
假设这中有位(约2.5亿)开通了IPv6,对于一个黑客扫描次,他一个存活目标也找不到的概率为
要计算它并不难,每项我们可以改写为由于远小于,所以我们可以使用替代。原式
其中
所以原式等于,而黑客能找到存活目标的概率则为,我们有理由相信黑客总是能在这上亿次扫描中找到存活目标,当然,你可以说这里的扫描空间会更大,存活目标会更少,但同样黑客也不可能只有一个。你又怎能认为你不是会被扫出来的那一个呢?
扫描只是最低效的方式,只要你将服务器接入公网,你总会在其他地方丢下蛛丝马迹,你的DNS日志,你的应用程序请求甚至你访问了一个被劫持的IPv6测试网站。你又怎能保证你的地址不被泄露并利用呢?
所以,我们有必要重视入网安全,目前家庭级别网络有两个方案
- 路由器刷软路由固件,例如Openwrt,这样你想写什么安全组配置都可以。
- 物理隔离,两台路由器分别处理公网私网。
由于这里的重点是NAS服务器,我并没有选择刷软路由,可能后续继续折腾网络的时候会开一篇笔记。我选择加一台路由器的方案,加路由也可以有两种方案,嵌套或者并联。
如果你本身就只有一台带路由的光猫或者接口有限又或者是功能受限制等情况的话(这台路由称为A),可以选择A关闭防火墙进行拨号,将NAS和B路由均连接在A上,此时外网可以访问NAS,而B路由可以关闭IPv6以及打开防火墙,家庭上网连接B路由即可。这样的好处是家庭网络和NAS即在一个大AP中又有防火墙隔离,既可以满足NAS外网访问,也可以满足内网访问。
第二种方案便是两台路由器分别连接光猫,分别v4和v6拨号上网,同时两台路由都接入NAS,所以这里我选择入手了一台企业级AC路由,直连NAS提供高网速+可以防火墙写配置。就算你没有企业级路由的话,普通路由+在NAS上配置防火墙也是一样可行的。这样的好处在于不改变家庭网络原有拓扑(第一种方案给家庭网络增加了一跳多少可能有些速度损失)同时又能满足外网内网隔离,不过需要你的NAS拥有两个网口才行。
P.S.
到这里你可能会问,“早说NAS直接配置防火墙就行了啊”,要知道NAS本身就是一个系统,包括你的Windows、手机通常是很难破解的,但是你家中的其他设备,智能家电、监控、打印机以及路由器本身就没那么安全了。
UPD:后续发现买的路由器只支持IPv4...,最终还是在PVE开了一台iStoreOS作为软路由,具体细节参看网络配置部分。
网络配置
我采用的思路是双路由+VPN+DDNS+自建DNS的方案。
双路由的目的是为了服务器/家庭网隔离。
VPN的考量是考虑不直接暴露任何服务。
DDNS是由于运营商分配的公网IPv6不固定。
自建DNS一是统一管理提供内部域名解析,
二是防止DNS污染。具体配置过程就不放了,这里每个人的需求都不同,网上相应教程也挺多了,就放一张最后的拓扑图。
结语
QA分析
你的存储(目前+需求)是否大于5TB?
若小于,给电脑加块硬盘就够了,别想NAS的事了。
你是否能够看懂/理解本文的大部分内容?
若不能,买个成品NAS算了,别想DIY的事了。
你是否有远程控制需求且能够开通公网IP/IPv6?
若不能,买个网盘+VIP算了,别想私有存储的事了。
这里多说一句,网上很多内网穿透的方案,那种看看就得了,花费、稳定性、速度总有一个你会绷不住。
你是否有地方(托管机房/闲置房间)放置服务器?
若没有,买个塔式机器算了,别想机架式的事了。
- 如果以上都没有问题的话,你便可以根据自身需求写一份适合你自己的配置清单,当然如果你预算足够的话,还可以选择更好的主板(这个已经是老古董了)。
其他事项
安全也是需要特别注意的地方,这种上年代的东西你不能保证它一点风险也没有,何况要是买了UPS的话还有几块大电池搁家里,虽然是铅酸但也不能保证一点风险都没有。
所以机架尽量放置在空处,和能烧的东西隔离开,防尘+降温+除湿一定要做好,这三个一般便是引起短路的关键因素,此外最好再备上几个灭火器(注意别买成泡沫或者水基型灭火器了,干粉或者CO2灭火器都可以)。
总而言之,DIY虽好玩,但安全不能疏忽。