我的HomeLab服务器

前端时光机

共 2852字,需浏览 6分钟

 ·

2023-05-15 12:22

adc5efa51630cad9c5c05a79aa4329dc.webp

今天接着上篇文章,介绍一下我的一台作为HomeLab使用的机器。

硬件

首先,先看一下硬件:

af647b76200a1d51557d500516132b17.webp
  • 主板 - 微星迫击炮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地址和端口号,以及对应的一个域名,如下图:9e357baa7a697ab62590c1e624aa30e9.webp之后,我们如果想访问Jellyfin,就可以直接访问域名:http://jellyfin.alpine.lan,而不需要输入IP地址和端口号了。项目地址在:https://github.com/NginxProxyManager/nginx-proxy-manager
    • wg-easy - 我用这个来管理WireGuard服务,用来实现在外面连回到家里的网络。它的操作界面非常简洁,如下图:c949cc4b1bea4a9fea62e62e0ee62eb9.webp
    • 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直接管理它。原因是,我需要多台虚拟机都能往这块硬盘中读写数据,所以我使用了nfssamba的服务把这块硬盘共享给其他机器来读写。而为了PVE系统本身的简洁,我不想在它上面跑服务,所以我把硬盘直通给Alpine,然后使用在Alpine上面跑的nfssamba来做共享。下面是在PVE中添加nfs作为一个存储器,我主要用来存储虚拟机的备份:67f8e222c0ef90ec40d6c5db022cb915.webp

在Windows中我们可以添加网络映射磁盘:3c7ea61ee007988aeeab70f810f21697.webp

在其他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的情况:ed321d6bcf886e2149238d372b0757b8.webp

关于GPU的虚拟化,可以参考这篇文章:https://foxi.buduanwang.vip/virtualization/pve/2695.html/

总结

以上就是关于我这台Home Lab服务器的大致情况,这个架构是我经过了很多简化的结果。之前追求极致的All-in-one,把OpenWRT也跑在了这台机器上,但后来发现这样做有很大弊端,就是这台系统如果关机或者挂掉了,这个家庭网络就会瘫痪,连基本的百度都上不了。所以后来就把网络和HomeLab分开了,这样就算这台机器整个挂掉,至少网络是丝毫不受影响的。另外就是关于存储,以前也折腾过NextCloud之类的,后来觉得还是直接用iCloud比较省心~

好了,下次见。


浏览 52
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报