我的HomeLab服务器
共 2852字,需浏览 6分钟
·
2023-05-15 12:22
今天接着上篇文章,介绍一下我的一台作为HomeLab使用的机器。
硬件
首先,先看一下硬件:
- 主板 - 微星迫击炮B660M
- CPU - i7 12700
- 内存 - 96GB
- 硬盘 - 1TB SSD + 16TB HDD
- 显卡 - 集成显卡
系统
操作系统我使用的PVE,为了给做显卡虚拟化我将PVE和内核都升级到了最新版本。PVE当前为7.4-3
,Linux内核为6.2.2-1
。后面我会介绍显卡虚拟化。
Guest系统
PVE之上我安装了以下Guest系统:
- Windows 11 - 主要用来办公,我是用Mac上的Microsoft Remote Desktop来连接这台虚拟化的Windows,基本可以做到接近原生的体验,但是建议使用有线连接,无线的话延迟会增加。
- Windows 10 - 这台Windows上主要安装了一些下载服务,比如迅雷、百度网盘之类的,还在它上面安装了tinyMediaManager,用来管理电影和电视剧的信息。
-
Alpine - 这台Linux机器主要用来跑一些服务,之所以选择Alpine是因为它更轻量一些,因为上面跑的服务都是基于Docker的,所以希望宿主系统越轻量越好。其中跑的主要的服务包括:
- nfs - 这个主要用来共享16TB的HDD给其他系统,后面会单独介绍这套系统的存储
- nginx-proxy-manager - 通过它我们可以不用记每个服务的IP地址和端口号,而可以实现访问一个域名就可以直达一个服务的效果。它提供一个UI界面,可以直接在上面添加服务的IP地址和端口号,以及对应的一个域名,如下图:之后,我们如果想访问Jellyfin,就可以直接访问域名:http://jellyfin.alpine.lan,而不需要输入IP地址和端口号了。项目地址在:https://github.com/NginxProxyManager/nginx-proxy-manager
- wg-easy - 我用这个来管理WireGuard服务,用来实现在外面连回到家里的网络。它的操作界面非常简洁,如下图:
- godns - 这个主要用来实现ddns的功能,配合上面的WireGuard来实现网络回家的功能。项目地址:https://github.com/TimothyYe/godns
- samba - 这个和nfs的功能类似,都是为了分享硬盘给其他系统。只不过nfs是共享给Linux系统,samba是共享给Windows和macOS系统。
- EndeavourOS - 这是我主要用来写代码的系统,以前一直用的Debian,后来觉得很多软件都很老以及为了新鲜感,就换到了一个类Arch的系统EndeavourOS,目前体验下来感觉很好,没什么坑
- Jellyfin - 这不是一台VM,而是一台LXC。以前我是把Jellyfin服务跑在Alpine系统内的,后来因为GPU虚拟化的问题,就单独为它起了一个LXC,由于LXC本质上是一个Linux容器,所以它可以很方便地共享宿主Linux的GPU,而不需要再单独做GPU虚拟化和直通了。
存储
硬件
现在的这套存储的架构是我当时花了很长时间思考的结果,因为涉及到数据,所以必须非常谨慎。现在的架构大致如下:首先,从硬件上来说:
-
SSD - 1TB,这个是完全分配给PVE系统的,它主要用来存储:
- ISO Images / CT Templates - 可以认为是用来安装系统的系统光盘
- VM Disks / CT Volumes - 已经创建的虚拟机的系统盘
- HDD - 16TB,这个硬盘是用来存储个人数据的,目前主要是一些电影/电视剧等,它也用来作为PVE虚拟机的备份硬盘。
上面的SSD其实没什么好说的,它基本是完全由PVE来分配和控制的,存储的也都是PVE和虚拟机本身的一些东西。所以我们规划的点主要是在这个16TB的HDD上。
HDD
这块HDD我是直通给了Alpine,而没有让PVE直接管理它。原因是,我需要多台虚拟机都能往这块硬盘中读写数据,所以我使用了nfs
和samba
的服务把这块硬盘共享给其他机器来读写。而为了PVE系统本身的简洁,我不想在它上面跑服务,所以我把硬盘直通给Alpine,然后使用在Alpine上面跑的nfs
和samba
来做共享。下面是在PVE中添加nfs作为一个存储器,我主要用来存储虚拟机的备份:
在Windows中我们可以添加网络映射磁盘:
在其他Linux中,需要访问这块硬盘的话可以直接添加nfs网络磁盘:
root@jellyfin:~# cat /etc/fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM
10.1.1.4:/TVShows /root/TVShows nfs defaults 0 0
10.1.1.4:/Movies /root/Movies nfs defaults 0 0
GPU虚拟化
我给CPU自带的集成显卡做了虚拟化,这样多台虚拟机就可以共享使用这块显卡,下面是Windows11系统中访问这台GPU的情况:
关于GPU的虚拟化,可以参考这篇文章:https://foxi.buduanwang.vip/virtualization/pve/2695.html/
总结
以上就是关于我这台Home Lab服务器的大致情况,这个架构是我经过了很多简化的结果。之前追求极致的All-in-one,把OpenWRT也跑在了这台机器上,但后来发现这样做有很大弊端,就是这台系统如果关机或者挂掉了,这个家庭网络就会瘫痪,连基本的百度都上不了。所以后来就把网络和HomeLab分开了,这样就算这台机器整个挂掉,至少网络是丝毫不受影响的。另外就是关于存储,以前也折腾过NextCloud之类的,后来觉得还是直接用iCloud比较省心~
好了,下次见。