以下来我将会发表几篇文章,分享一个家用,甚至可以是入门商用NAS方案
包含硬件、系统、软件服务、维护脚本4个部分
这是第三部分软件服务篇(储存、共享)

在讨论前首先戴头盔
以下看法纯属以个人主观与偏见的看法进行技术讨论~各位大神如果有不同意见或者技术比我高超欢迎留言讨论
如果觉得在下太水皮的话~就当你赢~我输就好~

其实所谓NAS严格而言就是网络储存只要能做到储存~这里的储存包含磁盘阵列,还有基于用户管理的共享,最多加个nfs服务或者ftp服务就基本完成了。
这些对于Linux而言都极其简单并且多年来用于全球各地的商用环境已经证明其稳定性和实用性。
至于要求别的功能,只需要按需搭建服务就好。

下面我将会简单的说说在Debian下如何完成这些~
这里说的硬件平台依然是我在之前的文章中所提及的
有兴趣可以留意我之前的文章分享个入门nas方案-第一部分,硬件篇

首先我们先选定磁盘的方案,我个人比较建议家用或者中小企业是用Raid 5
原因很简单,Raid 5不会特别的浪费空间~最起码磁盘空间使用率不是特别低,第二对于一般个人用户和中小企业而言,足够的安全稳妥,可以容许挂掉1个硬盘。
当然有人跟我说0+1更安全或者Raid 1更安全,有几百个硬盘的时候Raid 5找死….好吧上街还有可能遇到火箭筒,所以必须开坦克上街~所以我错了~
另外Raid 5确实是比较消耗CPU资源,但NAS的CPU资源要是不用的话又用来干嘛呢~难道NAS要支撑个系统几百人一起工作?那么你需要个更强的CPU….
最后Raid 5写入性能的确略差~还有小文件读写的性能也略差~但对于千兆网络访问文件而言~….并不是瓶颈….当然了如果是万兆的话你需要更强的CPU…或者有更多硬盘做RaidZ + ZFS就更好了…..

现在开始了~把硬盘都装在NAS上后
在NAS上应该会表现为系统盘是/dev/sda,数据盘则是/dev/sdb、/dev/sdc、/dev/sdd 3个硬盘

首先要把su,以root来执行下面的事情~
首先安装Raid的管理程序mdadm

apt-get install mdadm -y

然后对硬盘进行Raid格式分区
这里如果你的数据盘小于2T的话可以直接用Fdisk,如果大于2T就需要使用parted

apt-get install parted -y

fdisk /dev/sdb
按 n 创建新的分区。
然后按 P 选择主分区。选择主分区是因为还没有定义过分区。
选择分区号为1。默认就是1。
选择柱面大小,按两次 Enter 键将整个容量分配给它。
按 t 修改分区类型
这里使用fd设置为 RAID 的类型
然后再次使用p查看我们所做的更改
使用w保存更改
sdc和sdd一样的操作


由于大于2T的单盘容量的话需要GPT磁盘分区,所以如果单盘大于2T就需要parted了

parted /dev/sdx
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Y
(parted) mkpart primary 1MiB xxxxGB
(parted) set 1 raid on
(parted) print

当3个盘都分好区后就可以开始组件磁盘阵列了

mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

意思是说创建一个磁盘阵列/dev/md0,Raid 5,硬盘有3个,分别是/dev/sdb1、/dev/sdc1、/dev/sdd1

查看状态可以看到Raid初始化的进度

cat /proc/mdstat

查看阵列同步进度
mdadm –detail /dev/md0
可以看到
state : Clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0

最后保存配置文件

mdadm --detail --scan --verbose >> /etc/mdadm.conf
update-initramfs -u

当校验完了就可以开始使用磁盘了~当然没完也可以就是会比较慢~
或者你也可以晚些再校验~使用某个命令可以让校验停止~~我最后发阵列维护脚本的时候会详细说明

然后我们开始对磁盘进行格式化

mkfs.ext4 /dev/md0

当然了如果你不喜欢用ext4的话~自己决定用什么就好~

下面整湿开始使用磁盘~~
首先创建挂载目录,这里的目录是什么自己决定~

mkdir /Store
mount /dev/md0 /Store

那么/Store就是你刚创建的阵列盘了。
最后要编辑/etc/fstab文件

vi /etc/fstab

在内容里面加入

/dev/md0  /Store ext4 defaults  0  0

就可以使用了
最后就是说说在阵列维护上~如果坏了一块硬盘~假设是sdd坏了
那么我们需要做的是标记故障硬盘,然后换上好的硬盘~

mdadm /dev/md0 -f /dev/sdd1

然后更换新的硬盘按照开始的方法分好区然后添加回去

mdadm /dev/md0 -a /dev/sdd1

那么数据重建就会自动完成

那么下来就说共享了,毕竟我们平时使用是台式机或者笔记本~不会直接在NAS上操作文件
那么我们就需要共享,而共享必不可少的就是Samba / NFS
我们首先安装samba

apt-get install samba -y

首先如果我们要创建一个不用验证就可以访问的共享文件夹/Store/Media 假设专门用来在局域网内共享电影、电视剧或者音乐的
然后创建一个需要验证才能访问的文件夹Document 假设专门用来在局域网内给专门的电脑访问文档、照片之类的
我们首先创建文件夹/Store/Media和/Store/Document
我们要编辑/etc/samba/smb.conf
然后在[global]下面加入

unix charset = UTF-8
security = user

然后把[home] / [printers] / [print$]的这几段前面全部都添加一个#
然后加入一段新的内容

[Media]
path = /Store/Media
available = yes
browseable = yes
public = yes
guest ok = yes
create mask = 0700

然后添加需要管理管理用户密码的

[Document]
path = /Store/Document
available = yes
browseable = yes
public = yes
valid user = root
create mask = 777
writable = yes

最后给在共享情况下的root用户加密码

smbpasswd -a root

然后输入两次密码,然后重启Samba服务就可以了

/etc/init.d/smbd restart
systemctl enable smbd

当然了~你可以把Media的共享设置为只读read only = yes,然后多做一个全局控制的共享负责管理媒体文件,
由于自己管理配置文件所以自由度就很大了,自己尽情发挥就是了….
最后Windows挂载


然后是NFS
为什么要做NFS呢?其实主要作用是给安卓机顶盒用的,因为安卓机访问Samba的性能比不上NFS服务,为了在局域网内共享能爽玩4K蓝光原盘….
这里贪方便直接安装

apt-get install nfs* -y

安装完成后

vi /etc/exports

添加内容

/Store/Media    192.168.1.0/24(rw,no_root_squash,insecure)

然后运行

/etc/init.d/rpcbind restart
/etc/init.d/nfs-kernel-server restart

大概意思就是/Store/Media目录允许192.168.1.网段进行后面的操作
至于后面要怎么根据个人需求修改,谷歌一下你知道的太多了~
最后

systemctl enable rpcbind
systemctl enable nfs-kernel-server

那么一个基础的NAS的功能基本就具备了