NAS 总结篇

本文最后更新于:2022年7月4日 上午

历时5个半月,个人NAS服务器从无到有终于基本完成正式投入使用了,本文总结我的NAS记录路线与实现经历。

整体框架

第一次尝试自己组建硬件到软件的服务器,经过几个月折腾,服务器框架基本完成,整体框架如下:

graph TD

	subgraph NAS Server

	subgraph Ubuntu
	disk[Disk]
	disk -- 硬盘直通 --> omv-disk
	subgraph KVM
	subgraph OMV
	omv-disk[Disk]
	docker((Docker))
	dataset[Mysql]
	nginx[Nginx]
	Nextcloud[Nextcloud]

	backup_disk[BackupDisk]
	
	rsync[Rsync]

	omv[OMV Controller]

    ddns[DDNS]
	frp[FRP]
	data-center((Data Center))
	omv-disk --> data-center
	data-center --> omv
	
	docker --> dataset
	docker --> nginx
	docker --> Nextcloud
	Nextcloud -- 代理 --> nginx
	dataset -- 数据服务 --> Nextcloud
	data-center --> Nextcloud
	data-center --> rsync

	end
	end

	ssh[SSH]
	rsync --> backup_disk

	end
	access((Access Interface))
	
	ssh --> access
    nginx --> access
    omv --> access
	frp --> access
	ddns --> access
	
	
	end
	subgraph PC Client 
	data-rsync[数据实时同步]
	sftp[数据访问]
	ssh-client[SSH 远程连接]
	controll[后台设置]
	
	access --> data-rsync
	access --> sftp
	access --> ssh-client
	access --> controll
	end
    subgraph Phone Client 

	phone-sftp[数据访问]
	phone-ssh-client[SSH 远程连接]
	
	access --> phone-sftp
	access --> phone-ssh-client
	end

   style data-center  fill:#9df, stroke-width:2px
   style docker  fill:#9df, stroke-width:2px
   style access  fill:#fd9, stroke-width:2px

实现功能

  • 公网 IPv4、 IPv6 SSH 连接
  • 公网 IPv4、 IPv6 读写数据
  • 数据访问控制
  • 互联网终端数据访问
  • 手机文件夹数据同步
  • PC 文件夹同步
  • 数据自动备份
  • ipv6 DDNS

硬件采购

  • 硬件是一切NAS的基础,需要在采购前调研清除自己的需求,以及花最少的钱配置满足自己需求的设备,这里列出我的一些经验和采购记录
  • 相关内容:
内容 链接
硬件调研 硬件调研
采购记录 硬件采购记录

系统架构

  • 为了保持灵活、未来扩展和功能解耦,系统架构为物理机安装 Ubuntu 操作系统,使用 KVM 安装 OMV 系统,在 OMV 中创建 Docker 和服务用于外部访问
  • 相关内容:
内容 链接
NAS 系统 NAS 系统调研
KVM KVM简介
KVM 硬盘直通操作方法
OMV KVM 安装 OMV 过程记录
Docker docker - 常用命令使用教程

NAS系统

  • 直接使用了开源的 OMV 系统,好像口碑没有黑群晖好,但是眼下满足我的使用需求了
  • OMV 相关内容:
内容 链接
IPv6 访问 移动宽带公网 IPv6 访问 OMV 管理端
强制 https 登录 强制 https 登录
安装 omv-extras OMV 5.6 安装 omv-extras
SFTP 搭建并使用公网 SFTP 服务
webdav 配置 webdav 共享文件

公网访问

刚刚搭建好的 OMV 已经可以为局域网内的设备提供服务了,但是不能公网访问要NAS干嘛呢

  • 我的网络是移动家庭宽带,有公网IPv6地址,没有要到IPv4的地址,自己搭建了 IPv6 的公网访问环境,但是并不是所有网络都支持 IPv6,因此买了腾讯云的服务器作为数据中转搭建了 IPv4 公网访问链路,不过速度仅有 8Mbps
  • 相关内容:
内容 链接
内网穿透 frp 使用教程
IPv6 IPv6 理论教程
IPv6 实用教程
DDNS DDNS 动态域名服务

私有云盘

  • 有了 OMV 事实上已经可以按照我们的需求访问数据了,但是还做不到数据动态同步,不是百度网盘一样的私有云,手机也没有合适的APP

  • Nextcoud 可以满足我大部分的私有云幻想了,问题就是配置有些繁琐,速度不快(可能是我网络的问题)

  • 相关内容:

内容 链接
Nextcloud 安装 私人云盘安装配置
挂载外部磁盘 挂载外部磁盘
配置访问域名 修改合法访问域名
配置数据库 连接 MariaDB
配置代理接口 实现多个 https 反向代理

数据备份

  • 数据安全是 NAS 的重中之重,虽然我做的除了风扇也就是数据备份了,讲道理可以异地备份、加个UPS电源什么的,眼下都没有弄,觉得一份数据放在两块物理磁盘上也算是挺安全的了
  • 最初准备上 RAID5,但是害怕同时坏两块磁盘,有可能因此失去所有数据,这是无论如何不能接受的,还是1比1备份最为稳妥,Raid1总觉得也不够直观,出问题的话恢复数据时候操作错了也不是没可能
  • Rsync 已经是很好用的数据备份工具了,可以结合 inotify 实现实时数据备份
  • 不过想来想去没那么实时的需求,为了鲁棒性最终选用了每日定时任务 Rsync的方式备份数据,每月定时任务删除源端删除的数据的方式备份数据
  • 相关内容:
内容 链接
Rsync Rsync 数据同步工具
python 数据同步脚本 Python 执行 Rsync 备份磁盘

访客账户

  • 数据有时需要分享,比如设置一个只读权限的账户,给好友使用,但是SFTP等协议登录后可以向上返回到根目录,我们并不希望这样的事发生,那么可以为分享账号建立Jail,将可以分享的内容软链进去
  • 相关内容:
内容 链接
SSH Jail SSH SFTP Chroot Jail
Jailkit Jailkit

终端访问

  • 搭建好服务器后可以从终端访问设备,终端如果有 IPv6 就走 IPv6 的链路,没有 IPv6 走慢一些的 IPv4

  • 可以访问 OMV 暴露的数据,也可以登录 Nextcloud 访问数据

  • 相关内容:

内容 链接
FolderSync Nas 手机数据备份APP —— FolderSync Pro
PC挂载远程磁盘 挂载
Nextcloud 客户端登录 客户端登录配置

参考资料


NAS 总结篇
https://www.zywvvd.com/notes/environment/nas/nas-summary/nas-summary/
作者
Yiwei Zhang
发布于
2022年2月19日
许可协议