一个属于自己的 iCloud:NAS入门 Part II

一个属于自己的 iCloud:NAS入门 Part II

一个属于自己的 iCloud:NAS入门 Part II 1%title%

那么接下来是NAS重点中的重点,也是决定你使用体验的部分:软件。请注意,本篇仅用于入门,详细教程请查阅参考资料。本篇会着重按照我当前的使用方案来选择介绍推荐的方向,无法事无巨细,请自行搜索网络资料查看感兴趣内容。最后会给出一个直接按照我的配置来的配置过程。

请参考以下问题来阅读这篇文章:

  1. 你是否有兴趣或需求在同一台硬件上运行多个虚拟电脑系统,即使用虚拟机技术?
  2. 如果你选择了使用虚拟机,你更倾向于哪一个主流的虚拟机系统:ESXI 还是 PVE?
  3. 在操作系统的选择上,你更倾向于使用哪一种:TRUENAS、unraid、黑群晖、普通的 Linux 发行版还是 Windows Server with WSL2?
  4. 你是否需要设置软/硬raid或者Windows跨区卷?如果需要,你会选择哪种类型?
  5. 在文件系统的选择上,你更偏向于使用哪一种?常规的 EXT4、NTFS 还是高性能的文件系统如 ZFS 或 Windows 分层存储?
  6. 在安装用于处理数据以及提供服务的软件时,你更喜欢哪种方式:预装式、Docker 还是已发布 EXE 软件包的方式?
  7. 针对常用的软件推荐(如 Jellyfin(视频在线播放)、CloudReve(自建网盘)、NasCab(综合管理系统) 等),你有没有特别感兴趣或需要的?
  8. 你是否有在外部网络访问你的数据的需求?
  9. 如果你需要在外部网络访问你的数据,你打算采取什么样的网络解决方案:IPV6, P2P, FRP, WIREGUARD, TAILSCALE, ZEROTIER?
  10. 你是否打算购买云服务器作为中转跳板?你对云服务器有多少了解?
  11. 你是否需要一份公网访问配置的教程?

好的,那么接下来我将按照我本人的配置来进行讲解。

本人配置:早期使用ESXI上安装ubuntu/windows server/rocky linux作为路由器系统。中途过渡使用过unraid/router OS,目前使用物理机直接安装windows server with WSL+docker desktop。网络方面机器使用千兆对等教育网固定IP,并使用国内千兆对等跳板机作为ipv4公网中转。实现ipv6延迟40ms,ipv4延迟70ms,全链路对等千兆。

一步步来,在挑选操作系统之前,我们先来决定是否需要将操作系统装在虚拟机上。虚拟机是一项可以在同一台硬件电脑上同时运行多个电脑系统的技术。那么为什么会有人需要同时运行多个系统呢,因为不同系统适合承担不同的功能。如果你的钱不足以购买多台机器来提供软路由、NAS、高性能服务器这三项服务,那么你可以选择这项技术来方便分系统管理。

当然这项技术有一个问题就是把所有鸡蛋放在一个篮子里,如果出现物理硬件错误,会导致所有服务宕机。个人推荐将软路由服务单独拿台机器来弄,高性能服务器可以选择和NAS放在一起,但是没必要运行在虚拟机上,因为高性能服务器里运行的服务所依赖的数据一般也由NAS系统进行管理,分为两个系统平白增加通讯延迟。这也是我目前的运行方案。

那么如果你需要虚拟机,有以下两个主流的虚拟机系统可以选择:ESXI,PVE。ESXI的配置过程更简单,PVE的自定义能力更高,对于入门用户来说二者均可,更推荐使用ESXI因为操作比较简单。

那么我们假设你选择不使用虚拟机系统,进行之后的讲解。

选择完是否需要使用虚拟机系统之后,接下来不管你是打算把操作系统装在物理机里还是虚拟机里,我们都要进行选择。操作系统有以下几种主流选择:TRUENAS、unraid、黑群晖、普通linux发行版、windows server with wsl2。

TRUENAS、unraid、黑群晖属于特化修改用于NAS的系统,具有web管理界面,并且有方便的功能拓展/管理方式。普通linux发行版虽然没有预设好的管理方式,但是有大量丰富的社区工具可以配置用于提供和TRUENAS等类似的管理功能。同时linux发行版能更方便的部署开源项目而不用担心适配问题,大部分开源项目可能只提供linux的部署方式,不提供打包好的EXE程序供Windows server直接使用。缺点是非图形化界面学习成本较高,即使有图形化界面的桌面版本大部分时候可能还是在使用终端进行设置。

windows server with wsl2是本人目前在使用的,也是养老的推荐系统。主打一个图形化界面简单易学操作简便,兼容性高稳定性好不容易自己配爆,驱动一般也不用自己编译很好找,缺点是社区很差,性能要求高,遇上玄学问题很难解决,有些bug一直没人解决。我们来详细讲讲这个。

首先这个名字,Windows server with WSL2,分为两个部分,第一部分是Windows server,即我们熟知的windows操作系统的服务器版本,有两个主要区别,其一,不会有主动的无操作重启/关机进行升级等操作,系统稳定性高;其二,windows server独有的服务器管理器程序能更方便的设置一些服务。而WSL2是windows subsystem for linux,即windows中的linux子系统,比起linux虚拟机系统更方便。当然WSL2和原生的linux系统还是有一些玄学问题,如果无法解决请使用hyper-V或者vmware软件来在windows上安装linux虚拟机系统,或者回退回ESXI并在ESXI上同时安装windows server+linux系统。目前在升级到WSL2后兼容性很好,最起码在使用docker部署项目时没有出现任何兼容性bug。

为什么一定要强调with WSL2呢,原因和介绍linux系统的时候一样,大部分开源项目可能只提供linux的部署方式,不提供打包好的EXE程序供Windows server直接使用,通俗来说有了WSL2就相当于兼容了linux系统的程序。

同时我们要决定是否需要软/硬raid或者windows跨区卷。

首先来介绍RAID。RAID,即 独立磁盘冗余阵列,是一种将多个磁盘通过某种管理方式组合成一个大的磁盘系统,来提供比单块磁盘更高的可靠性或者更好的性能。目前常见的RAID形式有以下几种:RAID0、RAID1、RAID5、RAID10。

请注意,RAID叫做冗余,不叫作备份,提高的是可用性,数据安全性还是要靠异步备份来解决.

用更实际的例子来讲解,这里有6块1T硬盘,如果你组成RAID0,那么你就是简单的把六块硬盘变成一块硬盘,拥有的是6T的总空间,没有任何校验。同时因为数据分布在6块硬盘里,通过6个接口连接电脑,并发读写,理论上读写速度会变成原来的6倍,实际可能低一些。但是同时会导致这六块硬盘中任意一款损坏都会导致数据丢失,安全性下降。

如果你使用两块1T盘(只能两块)组成RAID1,效果和RAID0刚好相反,它会将你的数据一模一样的写一份到另一块硬盘里(包括错误),即你只能获得1T的实际容量和1T一样的内容,但是如果一块硬盘损坏了,另一块会保持在线,不会让你的服务宕机。

RAID5至少需要三块盘,它使用奇偶校验码技术,将RAID1中需要完全写入一模一样的数据变成了只需要写入校验码即可进行恢复。容量变为三分之二,速度比RAID1快,你可以简单理解为RAID0和RAID1的中间综合的技术。

而RAID10则是,假设你有六块硬盘,则分为三组,每组两块互相组成RAID1,然后所有这三组再共同组成RAID0。这样就能在使用RAID1的情况下还保证读取速度。但是仍旧要浪费一半的空间。

介绍完RAID,我们来区分软/硬RAID。软RAID即使用软件/文件系统来配置的RAID,所有涉及到的将数据分发写入的操作都由CPU完成,硬RAID即使用RAID控制卡来进行写入分发,配置控制的RAID。区别上主要是:软RAID需要更高的CPU性能,硬RAID要单买一张RAID卡,但是能提供断电保护等硬件功能,以及早期的硬RAID性能比软RAID更好,不过随着ZFS等文件系统带来的软RAID,软RAID性能已经追上甚至超过了硬RAID。一般对于新手来说,可以不使用RAID/使用软RAID。

那么在我们假设你选择使用了WINDOWS SERVER的情况下,如果你的盘比较多并且容量比较碎,同时硬盘质量比较好,数据丢失的后果不大,只是想要把零碎的多个盘合成一个盘来管理,可以使用windows的跨区卷功能直接配置。

数据安全是个概率问题,一切RAID/备份都只能改变概率。请权衡数据重要性并做好备份。

在确定完硬盘提供服务的连接形式后,在使用软件之前,还有一个重要的系统:文件系统,即管理硬盘中的文件数据的系统:除了常规的EXT4、NTFS,还有以下更高性能的文件系统:ZFS、windows分层存储。

EXT4和NTFS就不提了,默认的文件系统,重点讲一下ZFS和windows分层存储。两者功能比较相似,一个用于除了windows server以外的系统,一个只用于windows server。二者均可提供软RAID功能,并且可以设置内存和固态硬盘作为机械硬盘的缓存来提高读写速度。对于需要大量读写的使用场景比如剪辑等,建议选用。

终于,如果你已经通过查阅这些名词装完了系统,我们终于可以介绍NAS如何提供服务了。和你平时在手机或者电脑上使用服务的方式一样,NAS给你提供服务也需要安装软件然后通过一些界面比如网页/GUI程序/终端界面/QQ机器人等方式来为你提供服务。对于新手有以下几种推荐形式:docker和项目直接发布的程序/脚本或者项目发布的部署教程。

以以下这个项目为例: GitHub – Kerwin1202/chatgpt-web: 用 Express 和 Vue3 搭建的 ChatGPT 演示网页

翻阅下方的README,你就能看见多种不同部署方式的介绍。我们首先来介绍docker和docker compose。

docker,你可以简单理解为,由其他发布者帮你把一个项目部署所需要的依赖和环境都配好打包好了,只需要你填写一些配置文件的参数就可以一键启动。是目前最简单的部署方式之一,几乎就是一键部署。同时它的兼容性很强,不管是linux、windows还是群晖等系统都可以使用。

请按照这个方法安装: 轻量应用服务器 安装 Docker 并配置镜像加速源-最佳实践-文档中心-腾讯云 (tencent.com) ,注意windows安装之前请先配置好WSL2功能。

安装完后,不管是linux还是windows都可以在终端内直接使用指令来安装docker项目。同时在windows上我们使用的是docker desktop,具有一个方便的图形化界面

一个属于自己的 iCloud:NAS入门 Part II 2%title%

我们回到我们举例的那个项目中

往下翻,找到docker字样。(图被吞了)

在大部分项目中你都能看到诸如此类的以docker开头的命令,只需要将这些命令复制到linux终端或者windows cmd或者powershell中运行即可。如图所示只需要将该项目下载到本地,然后在终端中移动到目录中,再根据自己需求运行对应命令即可。

而docker-compose是比docker更一键启动的版本,windows所用的docker desktop已经预装好了可以直接使用。也是我更推荐的形式,它给出了一个配置文件,只需要改动这里面的设定值就可以改变设置,如图所示

一个属于自己的 iCloud:NAS入门 Part II 3%title%

只需要将这里面的内容复制(务必不要修改任何格式/间距),并且粘贴到一个txt文本中,然后根据注释修改冒号后的内容为你需要的内容即可。然后保存txt文件,修改txt文件为docker-compose.yml,注意yml是后缀名,即原来的文件叫新建文本文档.txt,现在叫做docker-compose.yml,然后打开cmd或者powershell,移动到这个yml文件所在的位置,然后使用docker-compose up -d 就能看见项目启动了。想要关闭就输入docker-compose down即可。非常的轻松。

同时GitHub右侧的release点开进去有时候可以看到作者发布了EXE程序或者RPM DEB包等可以直接在对应程序上使用的软件,那就下载下来按照对应系统方式安装使用即可,不再赘述。

同时这个项目也提供了自己编译部署的选项,一般情况下只需要下载下该项目的源码,然后按照教程一步步输入命令编译即可,需要一定基础,不推荐小白使用。

到这里你终于掌握了一种在NAS上部署软件的方法了。我们先回顾一下按照我的配置来配置的顺序。

  1. 利用RUFUS和windows server2022的镜像(win11的镜像也可以,在我的方案中没有使用windows server的专有功能)制作启动盘并安装系统。过程参考安装普通windows系统。资源地址: Rufus – 轻松创建 USB 启动盘 (系统安装U盘制作软件) NEXT, ITELLYOU (windows server系统镜像下载地址)。如何制作启动盘并安装系统: USB系统安装启动盘制作神器——Rufus – 知乎 (zhihu.com)
  2. 打开windows跨区卷,将你杂乱的硬盘组成同一块: 跨区卷是什么 win10怎么新建跨区卷-百度经验 (baidu.com) ,此步可以跳过
  3. 按下windows键,输入功能,打开这个程序:
一个属于自己的 iCloud:NAS入门 Part II 4%title%

开启 Windows 虚拟化和 Linux 子系统(WSL2)以及Hyper-V。然后根据提示重启完成安装。

然后打开微软商店,搜索ubuntu,点击第一个下载即可。

一个属于自己的 iCloud:NAS入门 Part II 5%title%

4. 接下来安装docker desktop。 Install Docker Desktop on Windows | Docker Docs 点击docker desktop for windows即可下载,下载完成后双击安装,请确认安装中选项让你选WSL 2 还是Hyper-V的时候你选择的是WSL 2。

安装完成后,就可以接着讲软件部署了。其他系统方案的也只需要安装了docker和docker compose后就可以接着往后看。

那么接下来是软件的介绍于推荐。我们不扯别的,就讲功能和部署方式。基本上都是开源项目。

jellyfin:开源的视频播放服务,可以简单理解为搭建你自己的B站。jellyfin搭建好后你可以通过浏览器或者客户端来播放你放在服务器里的视频。 The Free Software Media System | Jellyfin

一个属于自己的 iCloud:NAS入门 Part II 6%title%

cloudreve:开源的网盘系统,你自己的网盘,可以使用web访问内容,也可以使用webdav进行同步。 Cloudreve – 部署公私兼备的网盘系统

一个属于自己的 iCloud:NAS入门 Part II 7%title%

calibreweb:自建的书库,使用浏览器访问 Calibre-web 架设指南(含实际应用推送指南) – 知乎 (zhihu.com)

一个属于自己的 iCloud:NAS入门 Part II 8%title%

ubooquity:更简单的书库,对漫画的适配更好,性能表现比calibreweb好,无需将文件导入数据库,节省空间。 使用Docker安装Ubooquity汉化版,打造个人的漫画小说仓库_哔哩哔哩_bilibili

一个属于自己的 iCloud:NAS入门 Part II 9%title%

piwigo:照片同步软件,有对应的手机客户端,参考 Piwigo – 管理您的图像收藏

firefly III:自建记账程序,我个人觉得账单数据这种应该保存在自己手上,有web和手机客户端。 Firefly III documentation (firefly-iii.org)

memos:一个自建多端同步备忘录,有手机客户端,web,浏览器插件,qqbot等多种方式方便你随时记录。

一个属于自己的 iCloud:NAS入门 Part II 10%title%

NFS:可以将一块盘共享给多台电脑使用,参考 部署网络文件系统 | Microsoft Learn

有了这些程序,现在你可以在局域网使用、存储和处理你的数据了。

但是如果你需要在外部网络访问你的数据,那么这就涉及到网络配置部分。由于这一部分和之后要写的串流功能配置网络部分重合,我们下篇再讲。这里可以预告一下有以下内容:IPV6直接访问,P2P打洞访问,商业FRP服务,WIREGUARD隧道,TAILSCALE、ZEROTIER虚拟局域网,公网服务器iptables中转,机房托管固定IP,cloudflare代理访问。

还有一些小内容,域名,ddns等等。

分享到:

评论已关闭