前言

因为准备上大学了,根据我自己的需求,可能需要一个存储业务。
这个存储业务不可能在阿里云啊,腾讯云这些地方购买存储的

这样四年下来花的钱太多了,而且没有必要,我还要到处节省下载所消耗的网费。
所以就打算自己整理一个服务器,当然这个服务器不是只做NAS业务,后续有需要可以配置其他项目。

至于为什么想做这个项目呢?因为昨天(2022-08-15) 我在老家捡到一个还不错的主机,我主要看中里面的主板和CPU。
它满足了我近期需要的工程。

本篇文章耗费巨资,应该花了我快1500块钱,主要目的就是构建一个相对稳定的私人网盘,当然会不会对外开放就看高校方面,有没有公网开放的这些操作。
如果没有,我也不会使用内网穿透,最多只是跟朋友MC联机以及一些小东西会用这玩意。

配置

物理迁移

其实吧,我捡到这一台主机的时候,机箱特别小,装不了什么东西。也就是说根本没有什么拓展的空间。不方便我后期修改配置。

所以我就拿出了我珍藏多年的机箱,专门用来这个时候的(不,其实是我以前电脑替换下来的机箱而已,已经是一个已经有七八年历史的机箱了)。



装电脑

我装电脑也是非常简单的。
麻,这个玩意已经有CPU,风扇,内存,主板了。大多数需要的已经弄好了。
其实只要小小的配置一下就可以了的。

因为我拿到的这一台电脑因为是小机箱,这个机箱叫什么我也不太清楚,M-ATX?(不太记得了,反正我的大机箱可以装进去,因为是大机箱)。
放不了多少东西。
也就是说,我后面不方便添加阵列卡和硬盘。

所以我就换了一个大机箱,买了一个全模组电源,原来的电源没有大4pin的口。(为什么要大4pin的口呢,因为硬盘电源不够呀,原来的电源只有两个硬盘电源口,而我需要6个左右。而且万一以后需要拓展呢?所以说完全不够我用。)
最后就变成了现在的这个样子。

装系统

最先,我本来装的是 Windows Server 2016 的。为什么我后面不想用 Windows 呢?
毕竟 Windows 在某些方面还是做的不是很好,对于数据的传输呀,网卡链路聚合。以及其他服务不是特别好。

那为什么我第一次直接选择了 Windows 系统。因为我以前因为 Centos7.6 的问题丢失过一次数据,当时因为没有什么钱,没有买硬盘,也没有组件阵列,也就是说我的系统和我的数据是存储在一个物理盘的,所以说系统寄掉了后,其他也跟着寄掉了。
这次因为比较豪横,花了一堆钱买了阵列卡和硬盘,所以说装Linux系统,就算系统炸了也不会影响数据。

最终,我选择安装了 Ubuntu Server 22.04.1 LTS

系统进入

选择语言,以及其他键盘格式(反正默认就行)


接着选择安装大小(图里面选择的是全量包,其实后面我又重装了一次,选择了最小安装,这样可以符合我自己需要安装)

然后就是选择代理,嘛,不管

网卡配置,起初我还不清楚最下面的 bond 是什么意思,后面想了想是绑定,也就是说是网卡绑定。
因为我两个网卡都是千兆网卡,而且想寻求速度较快和稳定,我就选了平均模式。(这一部分因为重装的原因,我没有单独记录下来,下次再说吧)

接着,配置源,这样可以方便后期更新等等,利于速度,没必要浪费不必要的时间

下面的顺序我就记得不太清楚了,因为我是做完才写的博文
配置镜像安装的地方,因为我这个时候我的存储盘还没有到,所以只有固态硬盘,我也本来就是要安装在固态硬盘里面的



接着就是配置用户名等等的信息(这个配置不是我现在的配置,我后面重装一次的时候修改过了)

接着配置 SSH ,而且是可以直接获取 Github 的公钥直接配置信息的


最后就是等待安装完毕即可,Reboot 服务器

Windows Server 2016 服务器安装记录

没办法,最先还是想用用 Windows Server 的,后来还是放弃了











配置服务器

上面展示的是我安装的 Ubuntu 22.04.1 LTS 后面因为安装问题我重新安装了一次,当然系统没有变,还是 Ubuntu Server 22.04.1 LTS 。
接着就是简单配置一下服务器了。

配置网卡绑定

我选择的模式是 round-robin 负载均衡模式
也就是所说的 mode=0

这样对于我后面构建网盘来讲可以做到负载均衡,没那么容易出现网络塞车等等的情况。
其实我前面也改了,改了一次用 active-backup ,但是最后发现用不怎么到啊,我寻思我这玩意没那么容易坏,而且我跑网盘还是看负载。
因为我自己粗略算了一下,组Raid5走的硬盘,速度明显大于我的网络速度,所以网络塞车多半是常有的事情。
所以,最终还是选了了负载均衡模式。
(因为忘记拍照了,所以没有图QWQ)

简单配置服务器

我嘛,也是大懒逼,虽然我也不知道我的高校可不可以开公网,不过我猜多半是没有的,而且还是校园网,不过还不错。
所以说,随便啦,偷懒安装一个宝塔,我就懒得一个个自己搞了,弄宝塔呗。

日常更新

1
2
$ apt-get -y update
$ apt-get -y upgrade

设置服务器语言为中文
安装对应语言包

1
$ apt-get install language-pack-zh-hans

配置服务器

1
$ vim /etc/default/locale

替换全部至以下内容

1
2
3
4
5
6
7
8
9
10
11
12
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
LC_NUMERIC="zh_CN"
LC_TIME="zh_CN"
LC_MONETARY="zh_CN"
LC_PAPER="zh_CN"
LC_NAME="zh_CN"
LC_ADDRESS="zh_CN"
LC_TELEPHONE="zh_CN"
LC_MEASUREMENT="zh_CN"
LC_IDENTIFICATION="zh_CN"
LC_ALL="zh_CN.UTF-8"

接着配置下一个

1
$ vim /etc/environment

除了第一行的 PATH=...... 不去修改,在另起一行添加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
LC_NUMERIC="zh_CN"
LC_TIME="zh_CN"
LC_MONETARY="zh_CN"
LC_PAPER="zh_CN"
LC_NAME="zh_CN"
LC_ADDRESS="zh_CN"
LC_TELEPHONE="zh_CN"
LC_MEASUREMENT="zh_CN"
LC_IDENTIFICATION="zh_CN"
LC_ALL="zh_CN.UTF-8"

最后重启服务器后,就可以看到翻译后的中文界面

然后就是配置允许 root 用户登录

该操作有风险,如果您的服务器对外开放,不建议开启

为什么我要这样做。
额,Ubuntu Server 在默认安装的时候是不会开放 root 用户登录的权限的。
也就是说如果需要,要么使用自己在创建的时候创建的个人用户然后使用 su 增加权限。
不过就算使用增加权限也不能达到最大的权限,所以有些东西还是配置不了,对于我来说还是开启 root 用户权限比较好。

首先

1
$ sudo vim /etc/ssh/sshd_config

将此内容修改

1
2
#PermitRootLogin without-password
#PasswordAuthentication yes

1
2
PermitRootLogin yes
PasswordAuthentication yes

重启 sshd 服务

1
$ sudo systemctl restart ssh.service

如果没有重置服务器密码的话,就可以用

1
$ sudo passwd root

重置一次 root 的密码。
最后就可以通过 Xshell 等软件用 root 用户登录啦。

阵列卡

这个阵列卡的型号是 IBM M5110 阵列卡(非直通卡)

当然,这个我肯定是二手淘的,毕竟一手这玩意不太能买得起。还是二手比较适合我,我买的这一个是服务器上服役下来的,所以对我来价格价格比较亲民,而且对于机房服役下来的,也比市面上的翻新卡,暗病卡会好很多。(尽管用了很久)
这张卡我买的不是直通卡,是原版固件,最大支持8t的单盘。支持Raid 0/1/5/10以及JBOD直通模式

所以还是不错的,加上8087转*4SATA,电池,缓存,卡一共170块钱,还是不错的一张卡。


IBM的卡进入webBIOS是使用 Ctrl+H 进入阵列。
可以直接在webBIOS直接配置阵列信息,因为我的存储硬盘还没到,所以就还没有开始搞。

额外

毕竟我的硬盘发货地方比较远,顺丰也等了三四天,所以就闲着没事做继续做我的其他事情。

理线

额,因为我准备去大学了,家里面的网络配置呀,各方面的东西基本都是我弄的。
我上了大学以后,也就只有节假日才会回家,所以把线理清楚还是挺重要的,万一哪一天突然断网了,或者我爸妈需要操作什么东西呢。
而且,因为我准备上大学了,我家里我的那台电脑又不带去学校,所以索性给我爸用好了,于是当天晚上(2022年08月17日)就重新梳理了家里的线路。

当然我的线标标记的不像是机房那样,又要写IP地址呀又要写MAC地址。(我主要不这么做的原因是我家里面的路由器或者说交换机没有console口或者说对应的控制口。对我来讲没有什么必要,而且我们家内网口大部分是动态分配的,只有我的服务器和我的个人电脑是静态分配,所以说没必要写IP地址,MAC的话不经常看路由器,也没没有什么必要,家里的网络环境没有那么复杂)
所以我就写了从哪里到哪里,就不用那么复杂啦。

先上一个原来的样子




然后,就开始用 Excel 表格写线标的格式,写完后就开始整理线
(上面的图因为以及整理了一部分了,所以有些已经贴好了线标了)

后面就开始配置这些东西


接下来就开始理线。
整理完大概就是这样了。




感觉,还不错了。

弄完这一堆,也就差不多凌晨 12 点了,是差不多该睡觉了。
等待明天我的硬盘到来。

硬盘到位


阵列

我先说说吧,下面的图是最初成功构建的图,但是呢我后面想把系统盘也走阵列卡,但是最后发现并不太会设置,所以还是简单一点,走主板啊AHCI会好很多。
所以呢,我总共重新配置了三次阵列,其中第一次就是我上面说的那个样子。
第二次就是加上了系统盘(SSD固态硬盘)和我自己的一个500G的机械硬盘,用来放其他杂项。

构建阵列

我的阵列卡为 MegaRAID 所有的配置都是符合 MegaRAID 的配置逻辑

对于我的IBM阵列卡(我最初以为这个阵列卡在DELL无法识别,因为DELL会限制其他厂商的阵列卡,结果可以用),进入阵列就在出现LOGO界面按下
Ctrl + H 进入 webBIOS 配置阵列
对于接入阵列的硬盘,只要是正常的硬盘可以识别的硬盘,都可以在 webBIOS看到阵列信息。

这个时候就可以看到 Unconfigured Good 也就是说未配置成功,而且最前面没有 (Foreign) 字样

(Foreign) 表示这个硬盘有阵列信息,但是没有在这张阵列卡进行配置
为什么我会知道这个呢,因为我因为这个问题在后面走了弯路。

那么,开始配置阵列信息。
点击左侧的 Configuration Wizard 进入配置表

在这里面可以看到三个配置信息

  • Clear Configuration
  • New Configuration
  • Add Configuration

以下是对这三种意思的解释

  • Clear Configuration
    • 表示清除此阵列卡所有的阵列信息(当然,修改阵列和清除阵列都会导致数据丢失)
  • New Configuration
    • 表示新建这张阵列卡的阵列信息(会清空以前阵列卡的信息,也就是说一样会丢失以前的数据信息)
  • Add Configuration
    • 表示在现有的阵列信息里添加阵列(不会清空数据,就是往已经有的阵列信息添加新的阵列或者将已有阵列添加硬盘等等的操作)

对于我来说,原本就没有阵列,现在是新的四块硬盘,所以说应该是创建新的阵列。
我不管这张阵列卡以前有什么东西,反正跟我没有任何关系。

这里提示我会清除所有的阵列信息,后面才会提示清空数据的

这个页面写的是,阵列信息如何配置,默认为手动配置,下面的一行就是让阵列卡自行配置(我怎么可能用自动配置,万一不是我需要的呢)
所以大多数还是手动配置的比较多
而且手动配置也不是很复杂,相对来讲点点鼠标就行(比大多数主板的BIOS好啦,只能用键盘的,当然你要全部用键盘也不是不可以)
(默认的就是手动配置,下面的一个选项才是自动配置

我这里是选择完毕的图片,点进来正常来说,只有左边显示蓝色或者黄色(亮蓝色)等颜色,表示没有配置的
点击一个硬盘然后点击 Add To Array 添加进入阵列
添加完毕就会显示跟我图类似的界面,添加阵列后,颜色就会变成绿色,然后显示 Online 表示构建阵列(当然,在这里只是显示而已,还没有真正进行构建操作)。
右侧显示的 Accept DG 可以创建新的阵列,就跟我图已有样子一样。
之后旁边的 Reclaim 是去除你所选中的硬盘,也就是从这个阵列去除掉。

那么,一切准备完毕后就可以下一步继续操作啦~

之后就是跳转到这个页面,在这个页面中,会告诉你你上一个页面准备构建的阵列支持什么模式,例如我这一张卡支持 RAID 0/1/5/6 一样,就会给我显示
R0,R1,R5,R6。当然后面现在显示的是你这个阵列总共硬盘的容量(这个容量不是你最终创建的阵列的容量)

因为每一个不同的阵列所消耗的容量不同,为了保证数据冗余,牺牲掉部分大小还是可以接受的。

这一个页面也没啥好看的,点击 Add To SPAN 之后下一步即可

紧接着就会来到这个页面
在这个页面中,才是真正开始配置你的阵列的时候。

左侧第一栏写的 RAID Level 就是你需要的阵列模式。对于不同的阵列模式,可以参考 百度 的阵列等级。
因为我将要存储的数据虽然不是说顶级重要或者说什么的,但是还是比较重要的,而我又有四块硬盘,那么我一般就会在 Raid 1/5/6 之间选择。
至于为什么不选 Raid0 ,额你要是可以自己组件阵列的话可以试试,然后存储数据的时候或者说电脑开机的时候拔出任意一个组 Raid0 的硬盘你看看。(数据会丢失,根本找不回)

处于性能,安全,经济等等考虑,对我来说还是 Raid5 会比较好一点,而 Raid6 会安全过度了。
简单说说 Raid6 ,对于这个模式,最低配置四块硬盘,但是如果数据出现问题的时候,最多可以出现两块硬盘的损坏而不丢失数据。
也就是说数据安全的问题是大大提升了,但是又因为需要存储校验数据,也就是他的写入能力大幅度降低,相较于 Raid5 来说也是降低很多的(虽然均达到我的网络I/O)。

而 Raid5 最多允许一个硬盘的损坏而不丢失数据,因为只有一份校验数据,所有写入能力的损失并不是特别大。(如果你有不重要的数据而且需要大量的写入操作的话,Raid0还是可以玩玩的,Raid0的速度你可以粗略理解为全部硬盘速度的叠加)
这两者阵列在硬盘损坏时候,只要把错误/损坏的硬盘重新安装或者换一个同样大小的新硬盘即可。
如果只是发生错误重新安装进去那还好说,可以不用重新构建数据。
如果还是发生了不可逆转的硬盘损坏,替换一个硬盘就需要等待数据重构。(至于数据重构可以粗略地说,就是此两个阵列在存储信息的时候都会在不同的硬盘放入校验数据,在硬盘损坏的时候重构数据就会根据剩下硬盘中的校验数据模拟并恢复其中的数据)

最终出于以上考虑我选择了 Raid5 ,且最终获得了 10.913T 的存储空间(原本硬盘都是4T的硬盘,另外注意:硬盘厂商标注硬盘大小不是按照1024去标记的,而是用1000。所以说买的4T硬盘实际看到的容量也就快接近4T而已,对于数据容量越大的硬盘,差距可以看的更加明显)

第二个 Strip Size 这个我也不是很清楚,应该是分块或者说其他(我不知道),默认就好了。
第三个 Access Policy 也是默认的 RW 就可以了,这就是代表的可读可写,当然如果你有特殊需求可以修改为只读,只写或者全部禁止(我不是数据中心出来的,我也不知道这些有什么用处,但是既然有那肯定有他的归宿)。
第四个第五个默认就行,不懂得翻译以下就差不多清楚了

第七行 Drive Cache 额,硬盘缓存,不清楚。反正不一定加载速度变快,反而可能变慢,所以说看着咯,反正我是默认的。
下面一行的储存大小不用管,如果你有其他用途按需吧

最后点击 Update Size 差不多就是创建了,创建完毕后就可以点击 Accept 即可,最后下一步


最后看到如图所示的样式就代表创建成功啦,最后就可以退出操作了。

系统重装

前言

额,原本这张阵列卡只是想专门放我买的四个企业硬盘的,但是因为我的主板比较老(其实也不是很老也就是2012年的崽种货)
我当时怕因为接口带宽不够,然后想走PCI通道,于是就把我的主板的SATA接口(AHCI)接到我阵列卡的SATA接口(Raid)

于是安装完系统就出现了这种情况

也就是说老是加载不出我的硬盘,以及引导信息。
所以最后我就去查了一下,就看到关于 ATA,ACHI,RAID 方面的知识,所以最终还是决定把我的系统盘恢复成原来的样子走主板 AHCI 会好配置一些。

但是这一修改我又忘记了一个重要的信息。
因为上文配置阵列的时候我已经配置好了我固态硬盘的阵列信息(单个硬盘支持RAID0),所以我就默认配置了RAID0(应该配置直通模式的)。
而取下阵列卡和固态硬盘链接的时候忘记删除固态硬盘存有的阵列信息(构建的阵列会在硬盘内存入对应的阵列数据,这也是为什么硬盘换用其他阵列卡是可以识别的原因(当然有另外一种模式是通过阵列卡存储信息的,但是那个需要阵列卡电源,而且对于阵列卡损坏后不太方便,所以我还是选择了硬盘存储我的阵列信息)。

简单说就是我的固态硬盘有阵列信息,导致无法系统内正常格式化。

重装系统

这是最后一次重装系统,这一次重装完毕也就代表着我服务器正式构建完毕了。
系统依旧是 Ubuntu Server 20.04 LTS

我在前言说过了(就是做铺垫),在上文提到的 Ubuntu 系统安装,原本跟上面是一样的。但是这次不一样出现了安装报错。
当时我心里想“这不应该啊,为什么会报错呢,好奇怪啊”。

接下来上一张图

当时我确实很懵逼,我都不知道咋回事,我之前也是这么安装的,但是唯独这一次出现了错误(错误原因我已经我已经写在前言了,因为阵列问题)。
后面我就反复执行 Restart the installer 重复安装,每次都是到硬盘处理的时候,准备进入安装格式化硬盘的时候出现问题。

起初我以为是我的四块企业硬盘的阵列问题,或者说就是我前面说的 DELL 的电脑不支持或者拒绝其他厂商(IBM)阵列卡的问题。
之后我就尝试取出了我的阵列卡,但是问题依旧存在,当天也比较晚了(2022年08月18日 23点56分)先睡觉吧。
(当时我没有想那么多,因为比较晚了,脑子转的也比较慢也就会比较迟钝)

第二天我想是不是我原来的系统盘(固态硬盘)的问题,打算去格式化,但是我又不想重新用U盘拷贝一个 PE 系统,因为太麻烦了,比较懒。所以我就想到了阵列卡。利用阵列卡组件阵列和删除阵列的功能可以达到数据格式化。
当我把这一块硬盘插入阵列卡重新打开 webBIOS 的时候,哇,直接看到惊喜。

我昨天晚上重新安装了那么多次,结果根本没有格式化,也就是说 Ubuntu Server 20.04 LTS 的安装组件根本没有格式化我的硬盘。
为什么我知道呢,因为插进去的时候显示了 (Foreign) 我去百度一查,结果发现就是这个硬盘有阵列信息,这个阵列卡可以直接导入阵列信息。

好家伙,还有阵列信息,也就是说安装系统根本没办法动我的固态硬盘。
我直接连忙恢复阵列后直接删除了阵列全部重新配置了一遍,所以说我上面的阵列配置其实是旧版的阵列配置,但是我第二次配置的时候几乎跟这个是一致的,所以我就懒得重新再拍照了(本来就懒)。

后面的系统安装就跟上面一样,正常了起来。

软件

此次构建

我这一次吧,其实走了很多弯路的,因为贪玩(就是想玩这些东西),原本我应该等全部配件都到齐了后再一起配置的,不然的话会出现初始时候就配置不完善,导致后面会很麻烦,所以我后面新配件到了之后都是采取重装系统等其他操作。
如果全部配件都到了后再配置,那么我就会轻松很多,不会搞得这么乱。(文章可能不怎么体现出来,我后面梳理过一遍的了)
我自己在玩的时候一共重装了四次系统,其中第一次和第二次就是我上面所说的 Microsoft Windows Server 2016 的安装和后面修改成 Ubuntu Server 20.04 LTS 系统。剩下两次也都是 Ubuntu Server 20.04 LTS 都是因为适配的问题我懒得直接配置,所以最终还是选了重装会直接解决问题。(hhh大懒逼来的)

那么现在配置完不是立马启用的,这接近 11T 的容量是给我拿到大学去使用的(当然我会根据校园网继续配置这台主机,可能会有续文?不清楚)。这台主机我目前主力还是拿来存东西,这个容量对于我大学4年来讲是绰绰有余的了,除非我搁那天天剪4K啊8K的视频(啊这样我自己的电脑也受不住,买的笔记本也是一般般的呀)。

总之就是走了不少弯路,不过我还没有测试性能,至于性能嘛,后面我看看要不要再写一篇文章(这等于挖坑了)。

软件安装

额,内网,懒,网络安全不咋需要。所以索性安装宝塔,解决我的一些东西。

1
$ wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

日常选择 LNMP

然后,好像就没然后了
安装下几个linux常用的软件就好了

  • vim
  • screen
  • docker
  • ……

至于网盘嘛,我还在考虑中。因为既然我都把这台主机拿到学校去了,我自然想走 SAMBA ,毕竟 WebDAV 感觉限制还是挺多的,不如 SMB 方便(当然SMB能吐槽的地方还是很多的)。

最后

域名到期

今天(2022年08月19日)和明日(2022年08月20日)我旗下两个域名(xiaolfeng.top | xiaolfeng.cn)正式到期。
至此有需要的服务已经转移,不需要的服务已经撤销。

如果您还在使用此两个域名,请及时更换,并且我已经在公告写清楚了。


支持

本博文采用图床 晓白图床
封面图片采用Pixiv Photo editing