Raspberry Pi搭建NAS
- 文件格式选择
优点 | 缺点 | |
EXT4 | 读写速度快 | 支持的最大卷为1EB,单个文件最大为16TB |
BTRFS | 支持快照、RAID、针对SSD优化 | 读写速度比EXT4慢,稳定性有待验证 |
毫无疑问,若要稳定使用,选EXT4,想自己折腾自己,考虑BTRFS吧。
我买了个2T的3.5寸SATA3硬盘,树莓派的USB2.0接口是提供不了需要的电源,而且接口不对,所以额外买了USB2.0和SATA接口互转的线和电源线(转接线上要有专门留出电源接口的)。
格式化硬盘:
#需先确认哪块硬盘需要格式化
sudo mkfs.ext4 /dev/sda
sudo fdisk -l
sudo mount /dev/sda /home/pi/nas
#mount到用户目录下,避免权限问题
#如果mount到/mnt/nas则需执行命令,以便读写
#sudo chmod -R 777 /mnt/nas
#设置开机启动自动挂载(注意配置错误可能导致无法启动或SSH连接上)
#sudo vi /etc/fstab
#/dev/sda /home/pi/nas ext4 auto,noatime,rw,sync 0 2
#sudo reboot
- 协议选择
优点 | |
NFS | 速度快 |
SMB | 基于NetBIOS,Windows兼容 |
DLNA | 速度快,适用于多媒体播放 |
100Mb局域网下,实测SMB速度在13-26Mb/s,平均17Mb/s,而NFS稳定在10-12Mb/s。(本人表示很奇怪,理论上最大速度当为100Mb/8=12.5MB/s,SMB传输速度为何能高出)
- NFS
- 安装NFS
sudo apt-get update
# nfs-common已安装
# 默认使用rpcbind而不是portmap
sudo apt-get install -y nfs-kernel-server
- 配置NFS
# 共享目录必须存在
# /etc/exports第一列表示共享目录,第二列表示授权访问主机,可以是域名、IP,括号内的是选项
# 选项解释:
# rw代表读写权限,ro代表只读权限。sync代表文件同步写入内存和磁盘,async代表文件先写入内存,必要时再写入磁盘。
# no_root_squash代表客户端用root访问时,共享文件也拥有root权限。root_squash代表客户端用root访问时,对分享目录有匿名用户权限。all_squash代表客户端总是只有匿名用户权限。
# anonuid代表匿名用户的uid,默认为nobody。anongid代表匿名用户的gid。
sudo vi /etc/exports
/home/pi/nas 192.168.1.0/24(rw,sync)
# sudo /etc/init.d/nfs-kernel-server restart
sudo systemctl restart nfs-server
# 如果启动失败,根据提示查看原因(一般都是配置写错了)
sudo systemctl status nfs-server.service
- Windows客户端配置启用NFS支持
控制面板 --> 程序和功能 --> 启用或关闭Windows功能 --> NFS服务
- 挂载网络驱动
mount 192.168.1.99:/home/pi/nas X:
#如果想开机自动挂载,可在计算机选择“映射网络驱动器”,在弹出窗口选择驱动器盘符和远程目录。
- 区域设置
控制面板 --> 区域 --> 管理 --> 更改系统区域设置 --> Beta版:使用Unicode UTF-8提供全球语言支持
勾选后重启。
- 权限说明
NFS共享出来的目录所有者是root,所以在Windows客户端默认没有权限写入。
解决办法有两种:
第一种,在NFS服务器上给所有用户读写权限。
sudo chmod 777 /srv/nfs4/share
第二种,让Windows默认以root用户挂载,同时将NFS服务器共享选项设置为不映射root用户(no_root_squash)。在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default项下新增两个DWORD,名称为AnonymousUid和AnonymousGid,值都是0。
- Zone.Identifier
Windows系统在共享文件时默认会加入"原文件名:Zone.Identifier"文件,禁用方法如下图:
设置完成后,可以看到如下效果图(IP及目录信息被擦除):
- SMB
- 安装samba
sudo apt-get install -y samba # 安装过程中可能会提示samba-ad-dc服务配置失败,可以忽略
- 配置samba
#请参考https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
sudo vi /etc/samba/smb.conf #public的配置用于只读,share的配置用于读写,且只授权给用户pi
[public]
comment = Raspberry Pi SAMBA
path = /home/pi/nas
browseable = yes
read only = yes
[share]
comment = SMB
path = /home/pi/nas
browseable = yes
writable = yes
create mask = 0744
directory mask = 0755
write list = pi
#检查配置是否正确
testparm
#将用户加入到samba用户(系统用户必须已创建)
sudo smbpasswd -a pi
#重启smb服务
#sudo /etc/init.d/samba restart
sudo systemctl restart smbd
到Windows系统,地址栏输入SMB服务器IP,显示效果如下(public可直接访问,share需要输入用户名、密码):
- DLNA
- 安装minidlna
sudo apt-get install -y minidlna
- 配置minidlna
sudo vi /etc/minidlna.conf
#修改媒体文件目录
media_dir=/home/pi/nas/media
#修改名称,用于其它设备网络发现识别
friendly_name=Raspberry Pi MiniDLNA
#根据需要修改最大连接数
max_connections=5
#重启minidlna服务
#sudo service minidlna restart
sudo systemctl restart minidlna
#查看状态(Active行状态为"active (runing)"代表运行正常)
#service minidlna status
sudo systemctl status minidlna
#开机自启动
#sudo update-rc.d minidlna defaults
sudo systemctl enable minidlna
#取消开机自启动
#sudo update-rc.d -f minidlna remove
sudo systemctl disable minidlna
#停止DLNA服务
#sudo service minidlna stop
#sudo systemctl stop minidlna
#卸载DLNA
#sudo apt-get remove --purge minidlna
- 配置minidlna
- HTTP
浏览器输入ip以及端口,比如 http://68.76.78.65:8200 ,查看是否显示媒体库信息或已连接信息。 - WMP
需要先启动相关服务。sc start WMPNetworkSvc sc start SSDPSRV 如果在同一个网络下,正常情况下,打开WMP,在右下角能看到我们的设备,如图:
- Kodi
Kodi是一个全平台家庭媒体解决方案开源项目。以Android手机为例:
- 界面语言设置
Kodi本身支持多语言,但是新手在设置时容易掉坑。
Interface --> Regional --> Language --> Chinese(Simple)
此时会全屏乱码,不要惊慌,选择原来Skin下面的Fonts位置,选择Arial,一切变得亲切起来。 回顾一下:
此时,可以把区域的字符集也改成Chinese Simplified(GBK)。
- 为资料库添加源
注意共享的目录和文件不能存在乱码,否则Kodi不显示。Kodi支持SMB、UPnP(即DLNA)、NFS等多种来源。比如SMB:
添加视频 --> 浏览 --> Windows网络(SMB)
确定后再选择 "smb://" ,弹出输入框,填入SMB服务器IP即可。
UPnP添加共享时,只需选“UPnP设备”,无需指定具体IP。
- NAS系统介绍
OpenMediaVault | 群晖DMS | 威联通QTS | 铁马威TOS | |
基础系统 | Debian | Debian? | Linux | busybox? |
文件格式 | EXT4 | BTRFS | BTRFS | BTRFS |
文件协议 | NFS, SMB, AFP | SMB, AFP, NFS | DLNA, NFS, SMB | SMB, AFS, NFS, DLNA |
内置应用 | nginx, php, python | nginx, php, htppd, pg, python | qthttpd, MariaDB, php, python | nginx, php, mysql, python |
在安装OMV时,出现命令找不到的情况,重新安装OMV相关package解决:
apt-get install --reinstall openmediavault && omv-initsystem
omv-firstaid
#此时如果提示web管理控制台信息,则说明安装成功