2021-01-16
最近入手了一台蜜獾超存作为 NAS,完成了第一篇体验《蜜獾矿渣:上手、换电源、安装 OpenMediaVault》。
随着硬盘陆陆续续到手,在本篇中进行储存方案的搭建。整个方案采用3块硬盘,两块 4t 机械硬盘,一块 SSD 固态硬盘。没有采用常见的 RAID 方案,而是采用定时任务加 rsync 的方式。记录了如何在 OpenMediaVault 中实现这个方案。自己并非这个领域的专家,这个方案也不成熟(气氛民科了起来),还请各位大佬批评指正。最后通过 Docker 部署了一个个人书库,将 NAS 正式利用起来。
在选购硬盘时,首先上网了解了一下适合作为 NAS 盘的方案。
首先了解到的是 NAS 盘,但是发现价格太贵。而且 NAS 盘中的优化是为 RAID 准备的,在我的方案中使用不到这些功能。
监控盘成为不错的选择,这种盘主要用于 7x24 小时工作的监控设备,适合长时间工作。
随后又发现了海康威视盘,即西数和希捷都会给海康威视 OEM 的硬盘,价格比自营要低一些。
我入手了两块海康西数紫盘 4TB,型号为 WD40PUR,便宜也意味着风险,西数自营的紫盘型号为 WD40EZRZ,可以看到型号是不同的。另一点区别是海康盘走的是海康自己的售后,享受海康的三年质保换新服务,而非西数或希捷的售后。
提示:价格美丽的背后可能会有坑……
收到的硬盘外包装长这样:
海康紫盘的型号,可以看到印着海康的标:
SSD 选用一款铠侠的 240GB,享有 3 年厂商质保:
将硬盘放入硬盘笼后,3 块新硬盘 + 1 块老硬盘,6 盘位的主机一下子充实起来。
三块硬盘插入后在 OpenMediaVault 系统中正确识别:
均格式化为 ext4 分区。点击【存储器】-【文件系统】,点击创建。
每块硬盘创建文件系统大约需要 5min。
文件系统创建成功后,点击【挂载】。
两块机械硬盘的 S.M.A.R.T 信息:
SSD 的 S.M.A.R.T 信息:
这 SSD 里面为啥会有这么多 Unknown_Attribute……
在上一篇中曾说道:
当时机箱里没有装硬盘。当我把2块紫盘装进去之后,发现噪声也进一步下降。分析来看,硬盘笼为空的时候,机箱后面两个 8cm 风扇的风噪较大,当填充硬盘后,风量减小,风噪也得到下降。目前的噪声,放在桌子底下基本可以忽略了。
PS:最近又发现这两个 8cm 是两线扇,插在主板的四线风扇接口上。于是又买了俩四线扇,这样就能够 PWM 调速了,从而进一步降低噪声。风扇还在路上,等到了再评估效果。
存储方案是本文的核心,这套存储方案主要由 3 块新硬盘构成,整体结构如下图所示:
图中可以看到每块硬盘是有编号的,每个编号都有具体含义:
ssd3_bk
,将会分别备份到另外两块硬盘中 ssd3_bk_m
、ssd3_bk_m2
,其中后缀 m 为镜像(Mirror)的含义,bk 为备份(Backup)的含义hd1_bk
:此目录下数据会备份到 hd2 的 hd1_bk_m
hd1_nbk
:ssd3_bk_m
hd1_bk_m
ssd3_bk_m2
在实际使用中:
整个存储系统即包含有备份空间,也存在无备份空间,充分利用磁盘空间。在数据读取性能上,采用 SSD 盘提高读取速度。
整个方案中重要数据有多份备份,任何一块盘损毁都不会导致数据完全丢失。但由于同步是每天一次,可能会丢失最新的部分。这个限制是可以接收的,因为我平时往 NAS 里存文件频率不高,而且有保留源文件的习惯。
与其它方案一样,这个方案也要多留意硬盘的健康状态,硬盘健康出现问题后及时更换,可降低数据丢失的风险。
冷备份是不可或缺的,具体做法为用移动硬盘连接 USB 3.0,使用 rsync 同步 hd2 全盘数据即可。
如果有硬盘出现健康问题,需要进行换盘,具体操作为将新硬盘插入空余硬盘位,进行格式化操作,建立 ext4 分区。将问题盘数据全盘拷贝到新分区中。关机,取出问题盘。开机,为新硬盘添加问题盘同标签(ssd3/hd1/hd2)。
风险声明:该存储系统仍处于概念阶段,未经过长时间、广泛验证。因此可能存在潜在问题,包括数据丢失、磁盘加速老化等风险。这些都需要后续进行大量验证。对数据可靠性有高要求的用户建议使用成熟的冗余备份方案。
在本节中介绍如何在 OpenMediaVault 中实现这个存储方案。
首先创建根目录的共享目录,通常不会直接访问根目录,一般用作维护。
分别创建:
目录名 | 路径 |
---|---|
ssd3 | ssd3/ |
hd1 | hd1/ |
hd2 | hd2/ |
进入【访问权限管理】-【共享文件夹】进行添加操作:
之后进入【服务】-【SMB/CIFS】,将共享文件加添加共享。
分别创建:
目录名 | 磁盘 | 路径 | SMB/CIFS共享 |
---|---|---|---|
ssd3_bk | ssd3 | /ssd3_bk | 是 |
hd1_bk | hd1 | /hd1_bk | 是 |
hd1_nbk | hd1 | /hd1_nbk | 是 |
ssd3_bk_m | hd1 | /ssd3_bk_m | 否 |
hd2_nbk | hd2 | /hd2_nbk | 是 |
hd1_bk_m | hd2 | /hd1_bk_m | 否 |
ssd3_bk_m2 | hd2 | /ssd3_bk_m2 | 否 |
最终共享目录效果如下:
凌晨 5 点开始执行增量备份。原因是我经常因失眠而通宵,但是到了凌晨 5 点,哪怕自己还没睡也没什么生产力了,可认为是空闲时间。
每天从五点开始:
时间 | 源路径 | 目标路径 |
---|---|---|
05:00 | ssd3/ssd3_bk | hd1/ssd3_bk_m |
05:10 | ssd3/ssd3_bk | hd2/ssd3_bk_m2 |
05:20 | hd1/hd1_bk | hd2/hd1_bk_m |
第二天打开 hd2/hd1_bk_m,可以看到数据已经备份过来了:
打开 OpenMediaVault 日志后台,看 rsync 日志:
首先可看到 05:00 和 05:10 的两个 SSD 备份任务执行:
在上图可看到 05:20 hd1 向 hd2 备份的任务执行。hd1 中包含了大约 2GB 电子书库,21 秒备份完成。基本上 100MB/s 的速度吧。
参考文献《OpenMediaVault(OMV)配置Docker》、《OpenMediaVault(OMV)安装omv-extras》、omv-extras.org、《OMV安装:系统安装设置及一些功能的开启》。
首先安装 omv-extras,之后【系统】中会多出【OMV-Extras】项。
值得一提的是,omv-extras 的 deb 包放在 GitHub 上 CDN 上面,这个网址通常是连不上的。这里有两个办法,一个是想办法连上去,另一个是下载 deb 包,在 OpenMediaVault 的 Web 管理页上手动安装。
进入【OMV-Extras】,进入【Docker】,选择分页内的【Docker】下拉框,选择安装。
docker 安装好后接下来安装 【Portainer】,安装完成后【Open Portainer】。
首次打开会创建一个用户,默认用户名为 admin。进入首页:
calibre-webserver 是一个基于Calibre的简单的图书管理系统,支持在线阅读。主要特点是:
虽然 OpenMediaVault 提供了网页的 Docker 管理,但是 OpenMediaVault 是基于 Debian 的,还是 ssh 上去撸命令行比较方便。而且还能实时看到网络拉取进度。
在命令行里拉取镜像:docker pull talebook/calibre-webserver
docker 官方源速度有点慢,参考Docker必备六大国内镜像更换为国内镜像。
数据存储路径:/srv/dev-disk-by-uuid-{hd1-uuid}/hd1_bk/calibre-webserver-data,即 hd1 的主备份目录。
启动容器:
docker run -d --name calibre -p 8080:80 -v /srv/dev-disk-by-uuid-{hd1-uuid}/hd1_bk/calibre-webserver-data:/data talebook/calibre-webserver
之后进入配置页面:
登录后进入主界面:
上传图书时遇到失败:
原因是上传的电子书太大了……其实也并不大,40MB 的 pdf。
解决方法,需要设置 nginx 的最大上传大小,参见。改完后重启容器即可。
改完了之后,100MB 以内的基本上都能上传成功,再大的还是会失败,这就跟这个项目的实现方式有关了。
经过一周多的使用,可靠性还是不错的。每天我都会整理一部分数据,备份到 NAS 上去。从上学到现在积累了很多文件,有课程设计,有毕业论文、发表论文,还有工作后的一些资料,之前都没有好好去整理,散落地到处都是。希望自己能够养成分门别类、定期整理的好习惯~