一 NFS
nfs是在类unix系统之间共享文件的协议,不适用于windows
严重依赖于RPC(rpcbind包),它是在内核中实现的文件系统(客户端内核中的nfs模块),需要依赖户空间的功能(服务端)
nfs服务监听在2049/tcp,udp
nfs本身服务端对客户端不做身份认证,只会简单的限制IP地址,然后把客户端用户id映射为服务端本地同样id对应的用户名,这样容易发生用户名和id映射结果错乱的情况。可以通过为客户端和服务端用户提供一个集中式身份认证服务器来解决名称映射错乱的问题。
在大规模应用场景中,可以为nfs提供认证功能的有:kerberos,NIS+,LDAP
服务端安装包nfs-utils
nfs服务启动以后会运行三个关键进程
nfsd:文件读写操作
mountd:负责客户端来源认证
idmapd:把客户端的id映射为本地用户名
查看指定主机上rpc服务的监听端口(111/tcp,udp)
rpcinfo -p 192.168.1.120
服务端导出共享目录配置文件/etc/exports
/nfsshared 192.168.0.0/16(rw,async,root_squash)
客户端查看服务端的共享
showmount -e 192.168.1.120
客户端挂载nfs共享(_netdev为安全挂载选项,可以在开机时跳过无效的nfs共享挂载)
192.168.1.120:/nfsshared /nfsfile nfs defaults,_netdev 0 0
服务端修改了共享目录配置文件后,重新导出共享
exportfs -ra #重新导出所有共享
-ua #取消所有共享
二 SAMBA
在类unix系统上实现了NetBIOS(名称解析功能,对应nmbd服务,监听在端口137,138,139),SMB(数据传输功能,对应smbd服务,监听在端口445)两种协议。
主配置文件/etc/samba/smb.conf,格式区分大小写,等号两边要有空格。
在centos6上重启samba服务要同时使用两个名令
service smb restart
service nmb restart
配置samba共享过程
修改主配置文件,加入:
[gongxiang]
comment = "samba share"
path = /home/database #共享的目录,可以给777的权限
public = no
writable = yes
#guest ok = no
#read only = yes
#write list = +mygroup, hadoop
测试配置文件语法命令,并显示最终生效值:
testparm
samba的用户都是系统用户,登录后也是位于系统用户家目录,但密码独立存放。
创建samba用户和密码的命令:
smbpasswd -a hadoop
如果开启了SELinux,由于前面把共享目录放到了/home下,所以还要设置:
setsebool -P samba_enable_home_dirs on
semanage fcontext -a -t samba_share_t /home/database
restorecon -Rv /home/database
至此重启samba服务就可以在windows上使用hadoop用户访问共享目录/home/database了。
在linux客户端访问共享
检查服务端共享:
smbclient -L 192.168.1.120 -U hadoop
连入共享:
smbclient //192.168.1.120/gongxiang -U hadoop
挂载共享到本地:
mkdir /mnt/sharedoc
mount -t cifs //192.168.1.120/gongxiang /mnt/sharedoc -o username=hadoop,111
把samba共享加入到开机自动挂载,需要安装客户端包cifs-utils:
cd ~
vim auth.smb
username=hadoop
password=111
domain=MYGROUP #与服务端主配置文件[global]段中的workgroup值对应
chmod 600 auth.smb
vim /etc/fstab
//192.168.1.120/gongxiang /mnt/sharedoc cifs credentials=/root/auth.smb 0 0
mount -a