1.NFS应用场景
NFS(Network File System网络文件系统),场景中最少包含两台服务器。应用场景中通常是存储。
2.nfs为什么需要RPC?
因为NFS支持的功能很多,不同功能会使用不同程序来启动,
因此,NFS对应的功能所对应的端口无法固定。
端口不固定造成客户端与服务端之间的通信障碍,所以需要RPC来从中帮忙。
NFS启动时会随机取用若干端口,然后主动向RPC服务注册取用相关端口和功能信息,
RPC使用固定端口111来监听来自NFS客户端的请求,并将正确的NFS服务端口信息返回给客户端,
这样客户端与服务端就可以进行数据传输了。
3.NFS的工作流程
1、由程序在NFS客户端发起存取文件的请求,
客户端本地的RPC(rpcbind)服务会通过网络向NFS服务端的RPC的111端口发出
文件存取功能的请求。
2、NFS服务端的RPC找到对应已注册的NFS端口,通知客户端RPC服务。
3、客户端获取正确的端口,并与NFS daemon联机存取数据。
4、存取数据成功后,返回前端访问程序,完成一次存取操作。
所以无论客户端,服务端,需要使用NFS,必须安装RPC服务。
4.安装NFS
服务端配置:
1 关闭防火墙
//停止防火墙
systemctl stop firewalld.service
//关闭防火墙
systemctl disable firewalld.service
2 安装NFS,rpcbind
yum install -y nfs-utils rpcbind
rpm -qa |grep nfs
rpm -qa |grep rpc
3 启动rpcbind服务
systemctl restart rpcbind.service
systemctl status rpcbind.service
4 配置nfs配置文件
1 创建一个文件夹
mkdir data
ll
2 编辑nfs的配置文件
vim /etc/exports
编写内容:
/root/data 客户端地址/24(rw,sync,no_root_squash)
/root/date 192.168.163.111/24(rw,sync,no_root_squash)
systemctl start nfs.service
systemctl status nfs.service
参数:
•ro:目录只读
•rw:目录读写
•sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
•async:将数据先保存在内存缓冲区中,必要时才写入磁盘
•all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
•no_all_squash:与all_squash取反(默认设置)
•root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
•no_root_squash:与rootsquash取反
•anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
•anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户
3 启动nfs服务
systemctl start nfs.service
客户端配置::
1 关闭防火墙
//停止防火墙
systemctl stop firewalld.service
//关闭防火墙
systemctl disable firewalld.service
//临时关闭
vim /etc/selinux/config
图一
setenforce 0
2 安装NFS,rpcbind
yum install -y nfs-utils rpcbind
3 启动rpcbind服务
systemctl start rpcbind.service
systemctl status rpcbind.service
4 启动NFS服务
systemctl start nfs.service
systemctl status nfs.service
5 建立同步文件夹
mkdir nfstest
6 开始执行挂载
mount -t nfs 服务端地址:/data nfstest
mount -t nfs 192.168.110:/data /root/nfstest
ps: 卸载挂载
umount -t nfs 服务端地址:/data /root/nfstest
注意事项:
服务器端:
1、先启动rpcbind,再启动nfs服务
2、如果配置文件发生变化可以使用exportfs -rv重新加载配置无需重启服务。
3、查看rpc服务器是否启动成功rpcinfo -p
4、查看共享目录是否存在showmount -e localhost
5、如果开iptables防火墙的话可以使用rpcinfo -p命令查看都需要允许哪些端口。
rpcinfo -p
showmiunt -e localhost
netstat -nltp | grep rpc
setenforce 0
chmod 777 /root/data
systemctl restart rpcbind.service
systemctl restart nfs.service
ll /root/
客户端:
错误1,:Stale NFS file handle的解决方法
1、首先用umount卸载当前目录,如果卸载不了使用umount -f /root/nfstest强制卸载,
然后再重新挂载即可。
错误2:touch: cannot touch ‘test2’: Permission denied nfs
1、这个是提醒你客户端挂载的nfs服务器的目录没有权限,
你在nfs客户端给权限没用,要不就给nfs服务器目录777权限,
要不就配置文件里面如上加上no_root_squash参数。
rpcinfo -p
showmount -e 192.168.163.111
netstat -nltp | grep rpc
mount -t nfs 192.168.110:/data /root/nfstest
setenforce 0
chmod 777 /root/nfstest
mount -t nfs 192.168.110:/data /root/nfstest
systemctl restart rpcbind.service
systemctl restart nfs.service
mount -t nfs 192.168.110:/root/data /root/nfstest
图一:
5.SAMBA
简介:
Linux和Windows系统之间的文件传输,使用FTP,相对较安全,但是有时还是会出现一些问题,
比如上传文件时,文件名莫名出现乱码,文件大小改变等问题。
相比较来说,使用Samba作为文件共享,就省事简洁多了。
Samba服务器通信协议(Server Messages Block)就是是为了解决局域网内的文件或打印机
等资源的共享服务问题,让多个主机之间共享文件变成越来越简单。
5.1安装SAMBA
1 机器是否安装SAMBA
rpm -qa|grep samba
2 安装SAMBA
yum install -y samba
3 关闭selinux和防火墙
3.1 关闭SElinux
//临时关闭
setenforce 0
//永久关闭selinux
vim /etc/selinux/config
SELINUX=disabled
3.2 关闭防火墙
//停止防火墙
systemctl stop firewalld.service
//关闭防火墙
systemctl disable firewalld.service
4 配置Samba配置文件
1 原文件备份
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
2 编辑文件
vim /etc/samba/smb.conf
3 追加内容
//这个是共享文件夹标识,表示登录samba打开时显示的文件夹名称。
//配置了多少个共享文件夹标识,登录samba时就会显示多少文件夹。
[durant]
//comment是对该共享的描述,可以是任意字符串
comment = this is the info
//共享的路径
path= /home/durant
//是否可写入
writable = yes
//是否公开
public = no
4 设置为不予许登入系统,且用户的家目录为 /home/durant(相当于虚拟账号)的durant账号。
useradd -d /home/durant -s /sbin/nologin durant
5 将durant添加为samba用户
pdbedit -a -u durant
6 启动Samba服务
systemctl start smb.service //启动服务
systemctl enable smb.service //设置为开机启动项
systemctl restart smb.service //重新启动
systemctl status smb.service //查看状态
7 使用Windws进行连接
1.”Win+E键"打开,右键“此电脑”选择“映射网络驱动器”
2. \\服务器IP地址\共享文件夹名称(durant)
3. pdbedit -L
3.无读取权限解决办法
1 编辑文件
vim /etc/sysconfig/selinux
2 修改内容
SELINUX=permissive
5.2pdbedit 命令说明
pdbedit 命令用于管理Samba服务的帐户信息数据库,格式为:"pdbedit [选项] 帐户"
第一次把用户信息写入到数据库时需要使用-a参数,以后修改用户密码、
删除用户等等操作就不再需要了。
pdbedit -L :查看samba用户
pdbedit -a -u user:添加samba用户
pdbedit -r -u user:修改samba用户信息
pdbedit -x -u user:删除samba用户
samba服务数据库的密码也可以用 smbpasswd 命令 操作
smbpasswd -a user:添加一个samba用户
smbpasswd -d user:禁用一个samba用户
smbpasswd -e user:恢复一个samba用户
smbpasswd -x user:删除一个samba用户