基于Samba实现在Windows下访问Linux共享文件夹

0. 背景

公司需要配置1个ArcGIS Server分布式集群,其中需要一个存放地图数据的共享目录,数据量大约在20T左右。于是,专门搞了台Dell服务器作为存储,挂载3T的SATA盘7块。原计划使用Win7作为存储机的操作系统,但分区后发现MBR格式的分区表,单分区最大为2.2T。百度之后发现使用GPT格式的分区表可以支持更大的单分区,但是需要以UEFI方式启动。可惜,服务器较老,不支持UEFI。好不容易使用RAID将众多磁盘转为了一块大磁盘,再分区RAID就毫无意义。于是将目光从Windows转向Linux。

此处使用的ArcGIS版本为ArcGIS 10.1

在ArcGIS时指定的地图根服务器目录和配置存储目录都使用了UNC路径。于是想当然的使用Linux部署NFS服务,并共享文件夹。路径为:

配置存储目录: \\192.168.2.160\home\server\gisData\arcgisserver\config-store

服务器根目录:\\192.168.2.160\home\server\gisData\arcgisserver\directories

结果,在创建站点过程中,出现如下情况:

config-store文件夹创建了,但directories文件夹并未创建,并提示

Another process is accessing the config-store,

如果在出现错误之后再次运行,则提示config-store already existed,应当删除后再试。删除之后,故障依旧。

1. 问题分析

在ESRI官网上检索该问题,没有太多实质性的收获。回到了ESRI官网上,找到了关于一个站点多主机配置的的说明。于是找到了蛛丝马迹。如下:

A. 官网上的描述中总是有种假定在Windows平台下的味道

B. 官网描述中从来没有找到非Windows平台下的蛛丝马迹

毕竟Windows和Linux是有区别的,由此推断官方有可能也仅是在Windows平台上验证通过的。反过来想,这玩意本身就是.NET开发的。

2. 调整思路

及时使用Linux服务器作为存储,那么对外提供存储的路径也一定要和Windows下的UNC路径一致。那么windows下的UNC路径和NFS路径有什么区别和关系呢?联想到之前,同事在Windows共享文件夹下面是部署成功了的。那问题就转换成了Windows共享文件夹路径与NFS路径的区别。继续百度,Windows共享协议使用的是smb,跟NFS还是完全两码事。可见无知是多么可怕。既然之前使用Windows共享协议是成功的,还是老老实实的用SMB。接下来就是在CentOS上配置Samba的事情了。

此处的CentOS版本为CentOS 7

3. 开始解决

  • yum install -y samba-common  samba-client  samba  // 安装samba
  • vi /etc/samba/smb.conf  // 建议在配置之前先复制一下原始的 smb.conf文件,以免配置错误导致smb服务无法启动时,尴尬。其中配置内容如下:

-------------------------Global-------------------------

workgroup = WORKGROUP  // 个人担心Windows共享发现中不能识别,所以修改,是否必须并未验证

-------------------------Standalone Server Option-------------------------

security = user  // 由于此处为新版本 security = share将导致服务无法启动

map to guest = Bad Password

passdb backend = tdbsam

。。。。

# A publicly accessible directory that is read only, except for users in the...

[public]
        comment = Public Stuff
        path = /home/nobody
        #path = /gisData
        guest account = guest
        public = yes
        browseable = yes
        guest ok = yes
        writable = yes
;       printable = no
;       write list = +staff

 

:wq 保存,其中访问路径为\public,权限也是public即支持匿名访问。

  • id nobody  // 查看在当前系统中nobody用户的标示,如属于哪个用户组
  • mkdir /home/nobody  //创建文件夹,不建议太深,因为这一路的文件夹的权限可能会阻碍我们走向成功;但是注意,创建的文件夹一定在大磁盘的分区下面。如果使用CentOS自动分区,/home所在的分区最大。
  • chown nobody:nobody /home/nobody // 修改该文件夹所有者为nobody,这样就可以匿名访问了
  • systemctl restart smb    //重启Smb服务
  • Win7 旗舰版下试验,\\192.168.2.160\public。

        出人意料的是Windows要求输入用户名和密码,一阵百度之后的结果是,Windows默认的设置导致。修改步骤如下:

    单击[开始]——[运行] 输入 “secpol.msc”打开管理工具,展开“本地策略”;

    然后,单击“安全选项”。 双击“网络安全:LAN Manager 身份验证级别”;

    最后,单击列表中:发送LM和NTLMv2,如果已协商,则使用NTLMv2协议。,然后退出

  • 继续试验,在Win7的网络中,找到了192.168.2.160这么个节点,也能看到public共享文件夹,但是双击,依然提示无法访问。想到了常见的两个问题。SELinux和防火墙。
  • systemctl stop firewalld // CentOS6时代使用service iptables stop
  • setenforce 0  //临时禁用SElinux,重启后失效。永久禁用需要编辑 /etc/selinux/config SELINUX = disabled
  • 在Win7下终于顺利挂载成功
  • 继续新建站点配置路径为  \\192.168.2.160\public\arcigsserver\config-store,\\192.168.2.160\public\arcigsserver\directories
  • 成功搞定新站点发布

4. 后记

在部署之前,我甚至还考虑过是不是NFS的连接数被用完了。于是各种百度寻找问题答案,没有找到。从中学习到了几个方面,软件是非常严谨的玩意,就像计算机一样仅有YES,NO两个选项。在这个行当中存在很多,非常相似的东西,但是不能耍小聪明,想当然的认为双方可以互相替代,实践是检验真理的唯一标准。工作经验越多越是容易犯这么个错误。反过来讲,如果在写说明产品手册的时候,更严谨一些。将节约更多时间,这样大家可以花更多时间在更有意义的事情上面。

今天解决了这么个小事情,略有成就,分享给需要的小伙伴!

转载于:https://my.oschina.net/ddl007/blog/700163

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值