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

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

下面来说点儿更实用的东西了~
分别是iSCSI和SVN,这俩玩意儿在现代的中小企业或者比较高端点儿的家用(自由职业或者创业者)中非常有用~
以下所讨论的技术实施~全部是在Debian Linux的土炮NAS中实施~
1、iSCSI

首先我们要搞清楚什么是iSCSI~我这里不想长篇大论的说它的由来或者详细技术原理,我估计来这里看的人也没兴趣知道~
所以我就以最简单易懂的方式超简单快速的说说~
因为我们的硬盘插在我们的电脑里面,当我们需要读写的时候是直接由CPU控制的,也就是说硬盘的读写会直接占用CPU的资源。
在数千万年前的遥远的宇宙….哦不是~说远了~是数十年前…
某技术大牛团发明了把磁盘读写控制分离出来~就不需要占用当时极其紧张的CPU资源~
这中间必须有一个标准规I/O,形成了一个标准~就是Small Computer System Interface也就是SCSI~
而iSCSI你可以超简单直接粗暴的理解为基于TCP/IP网络的SCSI
大概理解就这样吧~如果你觉得错的话~当你对~

那么这玩意儿跟我们的NAS有啥关系呢~
现代的电脑越来越追求小型化~尽量做到不占用桌面资源~同时又有了NAS负责储存~而普及的局域网已经随手抓一个都是千兆的网络~反正你懂我的意思的~~
另外对于中小企业而言,所有的员工电脑处理系统盘是SSD,数据盘全是NAS负责~那岂不是省不少…而且也更安全更易管理。
那么我们下来就说说怎么给我们的NAS做iSCSI服务器

要确保我们SSH登录到NAS是以root模式运行
首先我们安装iSCSI服务器端的管理软件

apt-get update #这个不用我说都知道是必须的了
apt-get install tgt dkms

创建一个目录专门用来放我们的iSCSI磁盘的,我们现在假设放在/NAS/Documents/iscsi_disks/目录下
然后把磁盘创建到这个目录下,并定义容量为100GB

mkdir -p /NAS/Documents/iscsi_disks
dd if=/dev/zero of=/NAS/Documents/iscsi_disks/disk01.img count=0 bs=1 seek=100G

创建完成后就可以开始编辑配置文件了

vi /etc/tgt/conf.d/target01.conf

内容为

<target iqn.2019-03.home.nas:target01> #这里写的是你的target01的名字
    backing-store /nas/Documents/iscsi_disks/disk01.img #你刚刚创建的磁盘的磁盘文件
    initiator-address 192.168.1.101 #允许连接的IP地址
    incominguser username password #最后这里就是用户密码了,但需要注意密码长度最起码要13位,否则Windows会以安全理由不允许连接的
</target>

然后重启tgt服务就可以了

/etc/init.d/tgt restart

下面以Windows 10为例简单说说怎么连接~

打开控制面板里面的管理工具,里面有一个iSCSI连接器~双击它,如果第一次运行系统会问你是否启动iscsi服务,这里选是~

然后你就可以看到iscsi连接器了~
最简单的方法是在快速连接那里输入你的NAS的IP地址~然后点快速连接~就会出来你刚刚建立的那个target给你选择

在这里直接点连接~~然后出来的对话框中点高级

出来的对话框中,上面3项绝大部分情况下都可以直接默认,然后中间勾选需要登录
下面填写配置文件中你定义的用户名密码然后就可以进行连接了~
点了3次OK后~iscsi在你本地的挂载就完成了~下来就按照正常的新硬盘使用一样进行分区和使用~

在磁盘管理器中你可以看到新硬盘~下面就不用我教了吧….

2、SVN
很多人对SVN很陌生,这个其实是码农常用的东西~叫做版本控制器~其实主要是用来做代码的版本管理以及多人协同开发用的。
但随着Git的普及以及分支项目等开发的新要求的大环境下,SVN渐渐淡出了研发市场。
但是SVN拥有着众多对于中小企业文档管理以及多人协同办公的巨大优势,对于普通的文件共享简直是天渊之别~
我们下面来简单说说服务器上怎么部署~
首先我们要安装基础程序

apt-get install subversion

然后创建SVN的项目目录~
例如我有一家公司叫做Risinfo,我创建Risinfo SVN目录用来管理我的文档
那么我就需要

mkdir -p /NAS/SVN/Risinfo
svnadmin create /NAS/SVN/Risinfo

系统会创建一些文件,其中配置文件在conf文件夹~我们进入文件夹后会发现有以下几个文件

这些文件分别管理用户密码、权限、服务器配置
首先我们编辑权限authz文件
在文件的末尾我们可以添加文件权限

[/]
chris = rw
[/Project/work2019]
programmer = rw
designer = rw
sales = r

这里的意思是,在这个文件系统里面根目录里,chris用户也就是我拥有完整的读写权限。
在/Project/work2019目录下programer以及designer账号都读写,而sales用于则是只读。

然后我们要定义这些用户的用户的密码
用户名密码在passwd文件

[users]
chris = 123
programmer = 321
designer = 1234
sales = 567

最后我们编辑SVN的项目配置文件svnserve.conf
修改里面的内容
anon-access=none
auth-access=write
password-db=passwd
authz-db=authz
realm = /NAS/SVN/Risinfo
修改完成后
使用svnserve -d -r /NAS/SVN/Risinfo来运行~
如果你想系统自动运行怎么办呢?~由于Debian 9并不自带rc.local
那么我们现在就要给系统添加rc.local自启动了
1、我们需要添加rc-local.service服务,做法如下

#>

cat > /etc/systemd/system/rc-local.service <<EOF
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local
 
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
EOF

2、然后创建rc.local文件

#>

cat > /etc/rc.local <<EOF
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
 
exit 0
EOF

给权限~并且设置系统自动运行该服务

chmod 777 /etc/rc.local
systemctl enable rc-local
systemctl start rc-local.service

搞定!~
那么下来就是把刚才的svn启动命令写入到rc.local里面了
在/etc/rc.local文件的exit 0之前
添加一行svnserve -d -r /NAS/SVN/Risinfo
保存~那么下次启动就可以自动启动svn服务了

最后我们在Windows 10上创建SVN用户目录~
首先我们需要下载SVN的Windows客户端,比较常用的是TortoiseSVN
TortoiseSVN 1.11.1 64位
一路回车法安装完毕~~

然后随便找个你喜欢的地方新建一个目录~然后在这个目录上点鼠标右键选择SVN Checkout….

然后填写服务器地址svn://你的NAS地址/名/,然后点OK输入用户密码就搞定了
当你每次在这个文件夹中添加了或者修改了内容
就在文件夹点右键,选择SVN Commit,就会把你的修改的内容同步到SVN服务器上,去别的电脑或者别人改了文件
你只需要点SVN Update就可以把别人修改的内容同步到你的本机。
至于详细的SVN怎么用,怎么玩出花我这里就不详细说了,还是那句~谷歌一下你知道的太多了~~

喜欢的话或者有什么意见欢迎留言~