如何自己搭建家庭服务器?
家庭服务器的功能
大家好,我姓宏亩,名莱卜,英文名是Homelab,是一台家庭服务器。我是7*24小时开机的,偶尔会被停机清理一下。相比于一些大家伙,我“吃”的电量不算多,平时没啥事的时候,大概60W左右。
我的主要工作是提供家庭存储,像一家人手机里的照片会通过wifi同步到我这儿。我也存了一些最近的电视剧或者电影,不管是电视,pad,手机,都可以观看这些媒体资源。我还能作为家里笔记本或者台式机的“磁盘存储”,万一笔记本丢了或者坏了,存在我这儿的资料也不会丢。Time Machine 备份也在我这儿……
我还能提供不少应用,比如nas-tools(媒体资料整理),jellyfin(影音资料播放),transmission(下载客户端),alist(网盘整合工具),resilio sync(多端文件同步工具)等等,这些应用基本都是基于docker部署的,详情可以参考这篇文章。
打造我的Home Lab—应用篇最后,我还可以提供许多虚拟机,不管是Windows、Linux还是MacOS,都不在话下。
家庭服务器的硬件组成
我其实和普通的PC机没有太大的区别,只是部分资源比一般PC机多一些。看看我的样子
我的内部还有主板,cpu,内存,硬盘,电源,风扇等零件。
主板
一般PC机是只能安装一个CPU的,但是服务器主板则被设计成可以安装多个CPU,用路作为单位,我的主板是超微X10DRL-i,它是一块双路CPU主板。
这块主板是ATX板型,有10个SATA3接口,两个千兆网卡,自带显卡,6个PCIe插槽并且支持拆分功能,扩展性还是挺强的。另外,这块主板还有IPMI功能,它最大的功能就是可以通过手机app或者浏览器对我进行管理(开关机)。
CPU
我的CPU是一颗志强E2630Lv3,它是一颗低压CPU,TDP 55W,8核心16线程,有40条PCIe通道,支持ECC内存,支持虚拟化,支持硬件直通,为服务器提供了更大的可玩性。
内存
我的内存是两条三星DDR4 32G RECC内存,一共64G,足够开不少虚拟机,也为下面要讲的truenas提供了更高的可靠性。
硬盘
目前主流的硬盘为机械硬盘,SATA SSD硬盘以及M.2 NVME硬盘,非主流的还有U.2 NVME硬盘,通俗点讲就是大容量的固态硬盘,一般在企业级服务器中使用。
我有两块致钛256G的SATA SSD,用于安装操作系统;4块海力士960G M.2 NVME固态,组了一个ZFS RAIDZ1存储池;1块海力士256G M.2 NVME固态,安装Windows系统;两块东芝1.92T的SATA SSD,存放媒体资源;三块希捷酷鹰4T的机械硬盘,也是组ZFS RAIDZ1存储池,用于备份数据。
这些硬盘的容量并不大,但是对我来说已经够用了,这点还是根据自己的数据量进行估算比较好。
其他参考
更详细的硬件选择方案可以参考这篇文章
打造我的Home Lab—硬件篇家庭服务器的系统
PVE是我的操作系统,它是一个基于Debian Linux发行版的虚拟化平台。
安装教程可以参考下面的视频
司波图】2022版通用型PVE_AIO服务器布局教程(上)TrueNAS CORE
第一个系统,也是最重要的一个系统,就是TrueNAS CORE(前身为FreeNAS),它是开源的NAS系统之一。
At the heart of TrueNAS is the self-healing OpenZFS filesystem. Previously only available on the highest-end enterprise storage systems, TrueNAS gives you direct, user-friendly access to ZFS. With its built-in RAID, powerful data management tools, and ability to automatically detect and repair silent data corruption (and bit rot), TrueNAS and OpenZFS ensure data integrity from start to finish.
TrueNAS的核心是自愈的OpenZFS文件系统。以前仅在最高端的企业存储系统上可用,TrueNAS为您提供直接、用户友好的ZFS访问。凭借其内置的RAID、强大的数据管理工具以及自动检测和修复静默数据损坏(和位腐烂)的能力,TrueNAS和OpenZFS从头到尾确保数据完整性。
ZFS文件系统对内存的消耗是比较大的(1T数据配1G内存),尽可能使用ECC内存,防止内存位反转导致的数据损坏。
安装教程及配置可以参考下面的视频
【司波图】TrueNAS新手视频教学(1)——系统安装,存储池建立TrueNAS CORE使用PVE直通的4块M.2 NVME,建立ZFS RAIDZ1 存储池,然后通过NFS协议共享给PVE数据中心,通过SMB协议共享给其他设备(笔记本,PAD等)。
这个存储池的数据直接存在这四块固态硬盘上,万一这台家庭服务器宕机了,也可以安装或还原新的TrueNAS CORE系统,将这四块盘组建的存储池直接导入。
其他虚拟机(备份机PBS和Windows虚拟机除外,下面会讲)所用到的存储空间,其实都是存在TrueNAS CORE中。
PBS(Proxmox Backup Server)
第二个系统则是PBS,它是我的备份服务器。
Proxmox Backup Server is an enterprise backup solution, for backing up and restoring VMs, containers, and physical hosts. By supporting incremental, fully deduplicated backups, Proxmox Backup Server significantly reduces network load and saves valuable storage space. With strong encryption and methods of ensuring data integrity, you can feel safe when backing up data, even to targets which are not fully trusted.
Proxmox Backup Server是一种企业备份解决方案,用于备份和恢复虚拟机、容器和物理主机。通过支持增量、完全重复数据删除的备份,Proxmox Backup Server显著减少了网络负载,并节省了宝贵的存储空间。通过强大的加密和确保数据完整性的方法,您可以在备份数据时感到安全,即使是不完全信任的目标。
PBS的系统盘是从TrueNAS CORE中划分的,但它的备份存储池,则是由PVE直通的SATA控制器上那3块机械硬盘组成的ZFS RAIDZ1阵列。所有的虚拟机数据(除了媒体文件)都会备份到PBS中。
这台PBS大部分时间都是处于关机状态,只有在需要备份时才会被唤醒。这样可以减少机械硬盘的工作时间,降低功耗。
LXC容器
我还有一个基于Debian Linux的LXC容器,它承担了所有的docker应用。安装教程请参考下面的视频
【司波图】2022版通用型PVE_AIO服务器布局教程(中)除了从TrueNAS CORE中分配过来的存储,PVE上挂载的两块1.92T SATA SSD也挂到了这台LXC容器中,用来存放下载器下载过来的媒体文件,以及resilio sync的同步文件。
Windows虚拟机
因为一些办公需求,我还创建了一台Win11虚拟机,系统盘直接安装在一块固态硬盘上。这么做的原因是Windows比较占用资源,使用单独的固态硬盘可以避免卡顿。建议使用远程桌面,而不是VNC,去连接这台Win11进行使用。
Win11上也安装了resilio sync客户端,方便接收共享的文件,同时它也能访问TrueNAS CORE的共享文件夹。
关于数据安全
虽然我是一台All in One的家庭服务器,但是我在数据安全方面做了很多的工作。
首先操作系统PVE是安装在RAID1上的,假如有其中一块盘坏了,也不会影响系统的使用。就算我运气差,两块盘都坏了,我也有定时备份的PVE配置文件,重装系统就可以恢复所有的虚拟机。
TrueNAS CORE的存储池是RAIDZ1阵列,也有一块硬盘的冗余,基于它创建的虚拟机,都会定时备份,存到备份服务器PBS上。PBS也有RAIDZ1阵列来保证数据的安全,万一它也挂了,我还有一手—所有虚拟机备份文件会在百度云盘也存一份。
总结
这篇文章不算太全面,这台家庭服务器也还有不少需要完善的地方,这种组装方式也只是一种玩法,姑为抛砖引玉,仅供大家参考。