在树莓派上构建 NAS 存储系统
参考资料:
本文索引:
背景
树莓派由于其能耗低、稳定性好的优点,非常适合跑 7*24 小时的长时服务,家庭 NAS 服务器是一个比较常见的需求,那么用树莓派来跑 NAS 服务再合适不过了。
准备工作
要实现家庭 NAS 服务,硬件和软件设备都需要做准备。
软件部分
软件部分指的是实现网络传输和共享的服务程序,可基于以下文件传输协议之一实现网络共享:
- SMB: Server Message Block
- NFS: Network File System
- FTP: File Transfer Protocol
- SFTP: Secure File Transfer Protocol
无论采用哪种协议进行文件共享,都需要有相应的软件服务的实现,本文采用实现了 SMB 协议的 Sabma
服务。
硬件部分
NAS 存储系统主要依赖于高容量的附加存储设备(即硬盘),可以依据自己的需求投入相应的成本,或直接使用树莓派本身的 SD 卡存储。楼主使用了从旧笔记本电脑上拆机所得的两块硬盘,再买了一个硬盘阵列盒组了个 RAID 1 实现,其中涉及到的硬件有:
- 2.5 英寸 500GB HDD * 2
- 2.5 英寸双盘位磁盘阵列盒 * 1
当然,可以仅使用一块硬盘 + 外置硬盘盒实现,树莓派本身没有 SATA 口,只能通过 USB 接入外置硬盘,并且目前最新的 3b+ 型号上仍然是 USB2.0 接口。
传统方式架设 Samba 服务
为简单起见,以演示 Samba
服务搭建为目标,本文以 home/pi/downloads
为目标共享目录作为演示,挂载外接存储设备可参考这里。
更新本地包:
树莓派 Raspbian
系统的镜像已经包含了 Samba
的包,执行:
1 | $ sudo apt update |
安装 Samba 服务
执行以下命令将安装 Samba
服务及其依赖的所有程序:
1 | $ sudo apt install samba samba-common-bin |
备份原始 smb.conf 文件
安装完成后,使用 root
用户权限编辑 /etc/samba/smb.conf
来配置服务,但在此之前,先备份原始配置文件:
1 | $ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.default |
配置 smb.conf
使用喜欢的文件编辑器(树莓派内置了 nano
)打开配置文件,并在文件的最下方插入以下内容:
1 | [Share] |
这表示可通过以 Samba 用户(见下文)或 Guest
身份读取、写入、或执行 /mnt/shared
目录下的内容,如果不想允许 Guest
身份访问,注释掉 Guest ok
一项即可。
关于
smb.conf
的更多选项可自行参考这里
希望在 Windows 系统的网络(Network
)下看见树莓派主机,需要设置 [global]
节点下的 wins support = yes
执行 testparm
以检查刚刚的更改没有造成错误:
1 | $ testparm |
创建用于访问 Samba 的用户
多数情况下,我们不希望任何人在不认证的情况下就随意访问局域网内的 Samba
服务,但又不想为此创建专门的用户帐户(这将增加管理成本),可告知 Samba
对已有 UNIX 用户授权并设置专属于 SMB 的密码:
1 | $ sudo smbpasswd -a pi |
接下来,重启 Samba 服务:
1 | $ sudo /etc/init.d/samba restart |
解决 Windows 系统下无法访问 Share 目录的问题
由于使用 pi
用户作为访问共享目录的凭证,但 Windows
系统会默认以当前登录 Windows
的本地帐号作为访问共享目录的用户,这会导致无法访问共享目录。为了解决这个问题,需要清除 Windows
记住的网络共享目录的登录凭证。
- 查看
Windows
当前记住的所有网络共享主机映射,Windows
针对单个 host 记录一条映射:1
2
3
4
5
6
7$ net use
Status Local Remote Network
-------------------------------------------------------------------------------
OK \\192.168.1.140\Share Microsoft Windows Network
OK \\raspberrypi3b\share Microsoft Windows Network - 清除这些映射记录:
1
2
3
4
5
6
7
8
9
10$ net use * /d
You have these remote connections:
\\192.168.1.140\Share
\\raspberrypi3b\share
Continuing will cancel the connections.
Do you want to continue this operation? (Y/N) [N]: y
The command completed successfully. Win + E
在Explorer
中映射网络驱动器,并在弹出的认证对话框中输入先前创建的pi
帐号及密码: