捡垃圾
来自 @awpak78 的图👇
作为一名运维工程师,白天在工地上搬砖养家糊口,晚上下班回家后就开始折腾一堆破铜烂铁自娱自乐😂。最近东拼西凑花了 2000 来块钱捡垃圾整了台 HomeLab 玩玩,折腾一些没用的东西🙃
其实很早之前就想搞一台低功耗的 HomeLab 主机玩儿了,最早开始选择的是 Dell T1700 SFF + E3-1271V3 +32GB DDR3,但是呢,E3 V3 系列是 Intel 第四代 CPU ,1150 芯片组无法从 M.2 启动,磁盘速度只能达到 SATA III 也就是顶多 600 MB/s 的读写速度,而目前随便一块支持 PCI-e M.2 NVMe 的主板普遍都能达到 3000MB/s 了。所以这一点来讲 E3 V3 已经不值得捡了。而且我想把我台式机上 SN750 500GB 换到这台机器上,所以还是要选择一个支持 PCI-e M.2 NVMe 的主板。
硬件 | 配置 | 价格 |
---|---|---|
CPU | Intel(R) Core(TM) i5-6600T CPU @ 2.70GHz 35w | 480 |
主板 | Dell OptiPlex 7040 准系统:Intel ®Q170 | 400 |
内存 | 镁光 DDR4 16GB 2666MHz | 310 |
显卡 | 英特尔® 核芯显卡 530 | 0 |
机箱 | Dell OptiPlex 7040 准系统 | 0 |
电源 | Dell OptiPlex 7040 准系统:290W 开关电源 | 0 |
UPS | 某杂牌 UPS 650VA360W | 160 |
固态 | 三星 970PRO 512GB | 820 |
总价 | 2170 |
CPU
至于 6600T 的性能,在 500 块钱的价位内 35W低功耗的 6600T 还算可以能接受,为什么不买 7200U 这种低压 U 呢?,一是低压 U 的装机成本太高,而且性价比很低,我还要在上面跑一堆虚拟机,低压 U 恐怕扛不住,所以一开始就放弃了低压 U 的装机方案。
主板
由于 Dell SFF 系列的机箱是定制的,和普通的主板不太一样,也只有这样才能塞进这么小的空间,对于 MFF 系列的则更小一点。对于这种小机箱而言,拥有 2个 PCI-e*4 和一个 PIC-e*16 是相当不错了,PCI-e*4可以装一个阵列卡个一个四网口的网卡,PIC-e*16又可以装一个低功耗的刀卡显卡。等到以后台式机升级的硬件的时候再把台式机上的 GT1030 亮机卡放上去。三个 SATA 一个 M.2 有点捉襟见肘,机箱空间就那么点,口子多了硬盘也塞不下呀😂。
Model: | Dell OptiPlex 7040 SFF |
---|---|
Form factor: | Small Form Factor |
CPU options: | Intel Gen6 i3/i5/i7 |
Chipset: | Intel Q170 |
RAM slots: | (4x) DIMM DDR4-2133 |
Max RAM: | 64 GB |
USB Ports: | (6x) USB3.0; (4x) USB2.0; |
Video Ports: | (2x) Display Port 1.2; HDMI 1.4; |
Other Ports: | Serial; (2x) PS2; RJ45; Headset; Line-Out; |
Optional Ports: | VGA; Media Card Reader; |
SATA: | (3x) SATA 3.0* |
PCIe: | PCIe 3.0 x16 (low profile); PCIe 3.0 x4 (low profile); |
M.2 slots: | M.2 2280 M-key (PCIe 3.0 x4, SATA 3.0) |
Drive bays: | 3.5-inch/(2x)2.5-inch; 5.25-inch (slim); |
Hard Drive: | max 2TB; RAID 0 & 1; |
PSU: | 180 W |
Weight: | 6.00 kg (13.22 lb) |
内存
两条 8GB DDR4 内从从我台式机上拆下来的,又花了 300 块钱买了个镁光的 16GB DDR4 装了上去,迫于 我的台式机 B350M-K 的缩水板只有两个内存插槽而且支持到 32GB,暂时装一个 16GB 的吧,能以后再装一个上去。
固态
其实本来的预算三星 970PRO 512GB没打算买,是我在找 Dell OptiPlex 7040 时意外碰到的一个老哥,而且这块固态是德亚的,还算靠谱一些,于是剁手买了这个块固态。970PRO 系列的都是 MLC 的颗粒的固态硬盘,通 SM961 一样是属于传家宝系列😂,但是 SM961 淘宝上水太深,清零盘占据多数,所以不建议买。
正好把这块 970PRO 换到我的台式机上,把台式机上的 SN750 512GB 换到 HomeLab 机器上,给 ESXi 上的虚拟机用。在玩儿虚拟化的时候深有感触,宿主机的磁盘是机械硬盘的话,上面的虚拟机达到一定数量时,虚拟机会很卡,所以玩 ESXi 虚拟化,有块固态的体验是非常爽滴😋。
装机
其实装机很快,由于是买的 Dell OptiPlex 7040 准系统,所以只需要把 CPU 、内存、硬盘装上去就完事儿了。
收到准系统后发现没有带 M.2 螺丝,只能临时拿胶带粘糊上去,勉强撑了两天,后来买了个螺丝和散热片完美地解决了。
从以前旧笔记本淘汰下来的 2TB 5400RPM 的石头盘,已经出现坏道了,临时当个下载盘吧,在它还没彻底崩盘之前再压榨一下它吧😂。后面打算再添加一块12TB的氦气盘当仓库盘和备份数据使用,有了 UPS 和这台主机 7*24 小时开机也没啥问题了。
后面那台是我的台式机,也是去年这时候买的,两者比较起来 SFF 的型号确实小很多。Dell 的这种主机还有一种 MFF 型号的,那种更小一些,差不多比路由器大一些而已,不过扩展性不好,而且还需要外置电源,也就没考虑,不过现在想想有点后悔了,当初应该多加点钱买 SFF 的,不过还好也能接受,只不过体积大了些,搬家的时候不太方便。
ESXi
装完机器之后就开始装 ESXi ,对于虚拟化,ESXi 算是比较熟悉的了,听说 Proxmox VE 也不错🤔,等到后面硬盘到了再折腾一下 Proxmox VE。看到隔壁 Proxmox VE:优秀的自建虚拟化方案 愈发想玩玩了。
贯彻「不重复造轮子」的原则,当前版本的 PVE 基于成熟稳定的 Debian 9 “Stretch” 构建。在熟悉和使用 PVE 的过程中,我越发喜欢它「不重复造轮子」的特性。相较之前用过的其他虚拟化方案,PVE 的内部构造和工作原理对我来说不再是一个黑盒,我可以清晰地观测到它在干什么——比如要迁移一台虚拟机到另一个节点,我就可以通过
ps
观察到它启动了一个dd
进程,对接ssh
管道,将磁盘数据通过网络复制到目标机器——这种仿佛透明手表一样能看到内部工作原理的感觉真是太棒了!
从 VMware 家下载好 VMware-VMvisor-Installer-7.0.0-15843807.x86_64.iso
镜像,找了两个 U 盘,一个用于 ESXi 的安装盘,一个用于 ESXi 的系统盘,其中一个 U 盘还是我用读卡器+16GB内存卡拼凑而成的,目的是为了把 ESXi 装到 U 盘里方便迁移数据之类的,之后在网上找一个神 KEY 激活一下(🤫小声
Ubuntu 20.04
当作网关机使用,和我所有的 云主机打通网络,使用 WireGuard 组成一个小内网,关于 WireGuard 的使用建议阅读大佬写得博客 WireGuard 教程:WireGuard 的搭建使用与配置详解 以及 WireGuard 教程:WireGuard 的工作原理。
顺带用 ZBench 测了一下虚拟机的磁盘性能,还算勉强说的过去,实际上 SN750 512GB 只有 2GB 左右的缓存,写满换粗之后,写入的性能会直线下降到 800MB/s,读的性能倒是可以达到 3200MB/s 以上,或许是主板的限制,没能达到理想的读写性能。
1 | -------------------------------------------------------------------------- |
PhotonOS
这个是系统在我另一篇博客 Container Linux OS 从入坑到爬出来 里提到过,Photon OS™ 是针对 VMware vSphere® 虚拟化平台进行内核优化的容器专用操作系统,就和 CoreOS 一样。十分适合专门用来运行容器,当作 Kubernetes 集群中的工作负载来使用。
- 系统初始化启动之后内存仅仅使用了 45Mi
1 | root@photon-machine [ ~ ]# free -h |
- 启动 docker 进程之后的占用情况,也仅仅 109Mi
1 | root@photon-machine [ ~ ]# free -h |
- 使用 OVA 虚拟机模板启动后的虚拟机,磁盘仅仅占用了 515MB ,确实是相当轻量化,这还是包含了 docker。
1 | root@photon-machine [ ~ ]# df -h |
总之,PhotonOS 是个很轻量的 OS ,适合专门用来运行一些容器化的服务,这正好符合我的需求。别问我为什么不用 CoreOS ,CoreOS 已经凉了。
Alpine NFS
把我一块磁盘直通给这个虚拟机,主要用来给 k8s 集群中的 Pod 挂载 PVC 持久化存储使用。
Debian
主要是用来运行 K8s 集群,目前只有一个 master 和一个 node 玩玩儿,跑了一些自用的服务。
Windows
当下载机使用,外加运行一些不得不使用的国产毒瘤软件😡
额外硬件
捡垃圾的乐趣就在于越折腾越好玩,于是又开始打算折腾一些
UPS
由于最近房东家里经常断电,有时一天断电八九次,每次断电我都担心着硬盘里的老婆们会不会挂掉,索性还是买了 UPS ,在马云家看了看,带给 NAS 自动断电的 UPS 普遍在 400块钱以上,而且我这个还是个假的 NAS ,UPS 上的 USB 口不一定支持我的主机。最后为了节省一下预算花儿 160 块钱买了个不支持 USB 的 UPS ,但是又不能没有这个功能,因为家里的 220V 市电断电之后,UPS 的电量只能给主机续命 10~20min 左右,UPS 的电量用完之后就嗝屁了,照阳还是断电。所以在 UPS 用尽电量还是没有来电之前,一定要想办法把主机通过 poweroff 的方式安全优雅滴关机。
首先要考虑的是怎么知道 220V 市电断电了,起初想有没有个 220V 的传感器,我去,有点难度还是算了吧。最后一想,可以通过 ping 房东家光猫的方式。我的路由器和主机等设备连接 UPS ,房东家的光猫并没有连接 UPS ,我在路由器上设置一个定时任务,每分钟去 ping 房东家的光猫,没有 ping 通说明就是断电了,也有可能是网线被拔掉了,但概率很小。! ping -c 8 A && ssh B "poweroff"
一行简单的命令就满足了我的需求,
1 | !/bin/sh |
对于 ESXi 上的虚拟机,还是采用了挂起的方式,将虚拟机的内存状态保存在数据存储的磁盘里,这样重新开启虚拟机后就能恢复到之前的状态,这一点有点像 Windows 的休眠。
1 | !/bin/sh |
网管交换机
当我从台式机向 ESXI 里的虚拟机传输文件的时候,发现网络速度最快只能达到 700Mbits/sec ,看来应该是路由器的性能瓶颈,于是想着升级一下网络设备,把 R6300V2 路由器当作 AP 来用,将流量都汇聚到网管交换机上。
1 | [ 4] local 192.168.0.240 port 50718 connected to 192.168.0.123 port 5201 |
1 | ╭─debian@debian ~ |
准备买 GS108E V2 或者 GS105E V2,
四网口网卡
为了折腾一下网卡直通、端口汇聚、overlay 网络卸载等特性,后面还要添加一块 intel I350 T4 V2 ,闲鱼上的价格也不是很贵。
阵列卡
由于主板的 SATA 接口最大只支持到 2TB ,为了扩展一下存储,只能额外添加一块阵列卡了,由于主板的 PCIe 有限,而且这么大点的机箱最多也就能塞下 1 块 3.5 寸硬盘和 3 块 2.5 寸硬盘,所以找一块入门级的阵列卡就够了,最终花了 50 块钱捡了一块 ServeRAID H1110 SAS/SATA Controller 阵列卡,看来一下手册里的参数,大概也能暂时满足我的需求。
- Four internal 6 Gbps SAS/SATA ports
- One x4 mini-SAS internal connector (SFF-8087)
- 6 Gbps throughput per port
- Based on LSI SAS2004 6 Gbps RAID on Chip (ROC) controller
- x4 PCI Express 2.0 host interface
- Supports RAID 0, 1, 1E, and 10
- Connects to up to four SAS or SATA drives
- SAS and SATA drives are supported, but the mixing of SAS and SATA in the same integrated volume is not supported
- Supports simple-swap SATA and hot-swap SAS and SATA drives
- Supports up to two integrated volumes
- Supports up to two global hot-spare drives
- Supports drive sizes greater than 2 TB for RAID 0, 1E, and 10 (not RAID 1)
- Fixed stripe size of 64 KB
- Compliant with Disk Data Format (DDF)
- S.M.A.R.T. support
后记
2021 年 五一放假后入手了 M1 MacBook Pro ,使用了一段时间后感觉很满意,于是就准备当作主力机来使用。这样一来家里的一台 Ryzen 5 3600 台式机和一台 6600T 的 NAS 小主机就显得多余了。两个台式夹搬家的时候也不方便携带,于是干脆就把 NAS 小主机卖掉了。
然后又发现 M1 的 GPU 好强,众多评测的解决也展示了 M1 的 GPU 性能要比肩 GTX 1050 Ti。Ryzen 5 3600 台式机上的 GTX 1650 平时也不怎么使用,现在也没有太大的兴趣玩游戏,平时只用来看 4K 电影用。既然有了 M1,那 GTX 1650 不如也拆下来卖掉算了,现在显卡涨了很少,多少还能赚点钱😂。
- GTX 1050 vs GTX 1050Ti vs GTX 1650
就这样最终把 NAS 小主机准系统 + 6600T CPU 以及 GTX 1650 显卡拆下来卖掉了,由于今年的显卡价格和 CPU 价格比之前都普遍涨了很多,卖出去这些捡来的洋垃圾之后出去之后稳赚 600¥。然后发现微星 B550M 主板在没有显卡和插显示器的情况下无法完成 BIOS 开机自检启动,导致无法进入 bootloader 启动 ESXi 😭。所以必须要一张亮机卡,于是又在闲鱼上花了 150¥ 买了一张 AMD R5 340x 的亮机卡。光有亮机卡还不行,还需要插上显示器(掀桌儿,无奈又花了十几块钱买了一个显卡欺骗器,用于模拟出一台显示器。
既然把 M1 当作主力机使用了,那么之前的 Ryzen 3600 就改装成 Homelab 机器使用,将之前 NAS 小主机上的一些服务和虚拟机迁移过来,顺带再开几台额外的虚拟机使用。将之前 NAS 小主机上的内存插到台式机上,这样就凑够了 32GB 的内存。当时感觉 32GB 还不够,于是又在闲鱼上花了 320¥ 买了一根 16GB 的 DDR4 内存,不料收到货后就翻车了,插上内存条之后主板 BIOS 里无法识别出内存的型号和序列号,并且进入 ESXi 之后就一直卡住了。尝试拔下该内存条后又恢复了,无奈只能联系卖家退货了。常年捡垃圾为数不多的一次翻车事故🤣。
- 虚拟机列表
- 虚拟机磁盘性能测试
- Windows 直通用显卡
- 直通成功之后,使用工具查看显卡状态