NFS网络文件共享系统:linux系统之间传输数据
FTP(文件传输协议):权限复杂
分布式存储:Moosefs GlusterFS FastDFS
NF存储服务作用
- 实现数据共享存储
- 编写数据操作管理
- 节省购买服务器磁盘开销
NFS存储服务器搭建
RPC远程调用服务:中介
- 服务端部署
1、rpm -qa | grep -E "nfs|rpc" #检查是否安装了服务
2、yum install -y nfs-utils rpcbind
3、vim /etc/exports #编写nfs的配置文件
man exports #查看配置文件见编写手册
格式:01 02(03) 01:设置数据存储目录/data 02:设置网络白名单 03:配置存储目录的权限、功能
4、mkdir -p /data #创建存储目录
chown nfsnobody.nsfnobody /data #指定文件属主 id nfsnobody 查看是否存在此用户
5、启动服务程序
a、先启动rpc服务 systemctl start rpcbind.service systemctl enable rpcbind.service 开机自启
b、启动nfs服务 systemctl start nfs
netstat -lntup | grep nfs #不会存在任何信息,原因是nfs不会将端口信息告知系统,但是会告知rpc服务
- 配置文件
/data 192.168.1.1/24(rw,sync)
- 客户端部署
1、安装nfs文件系统
2、实现远程挂载文件共享目录
mount -t nfs ip:/data 本地挂载点
3、df -h 检查是否挂载成功
4、在挂载点创建文件,相当于在远程存储服务器创建了目录
- 工作原理
服务端
1、启动RPC服务,开启111端口
2、启动NFS,向RPC注册信息
客户端
1、建立TCP网络连接
2、远程挂载
3、实现数据传输
补充:
①检查nfs服务进程与注册端口信息
rpcinfo -p localhost/ip
- NFS服务端配置参数说明
/etc/exports配置结构
NFS 共享目录 NFS客户端地址[参数1,参数2...] 客户端地址2[参数1,参数2...]
/etc/exports配置权限说明
1、rw:存储目录是否有读写权限
2、ro:存储目录是否有只读权限
3、sync:同步方式存储数据(数据安全)
4、async:异步方式存储数据(缓存作用,先到内存,再到硬盘)
5、no_root_squash:不要将root身份进行转换
6、root_squash:将root用户身份转换
7、all_squash:将所有用户身份转换
8、no_all_squash:不需要将普通用户身份转换
总结:
①共享目录的权限和那些因素有关
a、和存储目录本身的权限有关(755和nfsnobody)
b、配置文件中的权限配置有关(rw/ro xxx_squash anonuid/anongid)
c、客户端挂载的命令模式有关
②企业nfs如何配置squash
a、保证存储数据的安全性,all_squash绝对不能配置,需要配置no_all_sqush;共享目录的权限更新为指定的用户;配置成root_squash,root用户进来会被映射成为nfsbody用户,它只是个普通用户
③nfs的默认配置 cat /var/lib/nfs/etab 记录默认配置,修改此文件是没有任何作用的
④root用户操作www用户管理的data目录
root --- root_squash ----www ---操作data目录
修改anonuid 与 anongid 可以变更目录
⑤nfs服务器重启,挂载后创建数据比较慢
服务器重启的方式不正确
服务重启:
a、restart ————强制断开所有连接
b、reload ————强制断开没有数据传输的链接
- NFS客户端配置说明
mount -t nfs 172.16.16.31:/data /mnt
如何实现自动挂载?
①利用rc.local
echo 'mount -t nfs 172.16.16.31:/data /mnt' >> /etc/rc.local
②利用fstab文件
vim /etc/fstab 此时可能失败,需要依赖一个特殊服务
centOS6:无法实现网络存储服务自动挂载的原因
系统服务启动顺序造成的,串行启动
先加载/etc/fstab ---network服务 ----autofs服务(重新加载/etc/fstab)
centOS7:无法实现网络存储服务自动挂载的原因
系统服务启动顺序造成的,并行启动
先加载/etc/fstab ---network服务 ----服务(重新加载/etc/fstab)
客户端mount参数命令
rw----实现挂载点可读可写
ro----实现挂载点可读
suid---在共享目录中可以让setuid权限位生效(默认)
nosuid---在共享目录中可以让setuid权限位无效(提高共享目录的安全性)
exec---共享目录的文件可以直接执行
noexec---共享目录的文件不可以直接执行(提高共享目录的安全性)
auto---可以实现自动挂载 mount -a 对fstab配置文件批量挂载
noauto---不可以实现自动挂载
nouser---进制普通用户进行卸载
客户端卸载?
1、强制卸载 umount -lf /mnt
-l:挂载点不退出
-f:强制进行卸载
- 异常总结
1、wrong fs type,bad option,bad superlock
原因:不能识别文件系统
解决:yum install -y nfs-utils 安装nfs文件系统
2、permission denyed
原因:①配置的用户映射问题②用户的uid在两台服务器不同
解决:
a、将服务器端的/data目录的属主变更成客户端指定的属主或者root
b、变更其它用户的权限
3、nfs服务挂载不上排查方法
服务端排查?
1、检查nfs进程信息是否注册
rpcinfo -p localhost
原因:服务启动顺序不对,没有启动nfs服务
2、检查是否有可用的存储目录
showmount -e ip
原因:配置文件问题,重启nfs服务
3、服务端挂载自己测试
a、是否可以删除目录
总结
企业中如何编辑nfs配置文件
01、通用方法
/data 172.16.1.0/24(rw,sync)
02、特殊配置(部分人员能看,但是不能操作)
/data 172.16.1.0/24(ro,sync)
03、修改默认的匿名用户(部分人员能看,但是不能操作)
/data 172.16.1.0/24(ro,sync,anonuid=xxx,anongid=xxx)
PS:nfs无法针对用户进行配置权限
NFS服务器的作用?
1、共享数据
2、减少成本开销
NFS工作原理?
1、部署好一台存储服务器,设置好存储目录
2、客户端利用网络挂载的方式进行挂载存储目录
3、将数据存储在客户端本地挂载点等价于存储到远程服务器
NFS存储服务部署流程?
1、RPC 代理服务,管理与协调NFS的随机端口
服务端部署?
1、安装存储软件 nfs-utils rpcbind
2、编写配置文件
3、创建存储目录,并且修改属主权限
4、启动服务/开机启动
rpcbind
nfs
客户端部署?
1、安装nfs软件
2、网络存储挂载
3、mount ip:port/data 挂载点目录
NFS详细配置说明?
服务端配置参数
客户端配置参数
1、开启自动挂载
a、/etc/rc.local 文件要有执行权
b、/etc/fstab 此方式实现文件的自动挂载,必须让remote-fs.target服务开机自启 因为CentOS7是并行启动,网络服务还为加载到;Centos6是串行启动
PS:CentOS7查看开机自启的服务
ll /etc/systemd/system/multi-user.target.wants/
298图
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。