Linux NFS存储服务详解
NFS存储服务概念介绍
NFS是Network File System的缩写,网络文件共享系统
主要功能是通过网络(一般是局域网)让不同的主机系统主机系统之间可以共享文件或目录
存储服务的种类
- FTP(文件传输协议):权限麻烦
- samba:windows——>linux之间数据传输,linux部署samba
- NFS:linux——>linux之间数据传输
分布式存储解决存储服务器压力
- Moosefs(mfs),比较落伍,初学者学习比较简单
- GlusterFS
- FastDFS,企业应用较多
NFS存储服务作用
- 实现数据的共享存储
- 便于数据操作管理
- 节省购买服务器磁盘开销
NFS服务部署流程
RPC:远程过程调用程序(中介)
- 因为NFS会有多个随机端口
- RPC端口固定111,用来管理nfs端口来解决客户端的请求,不然客户端不知道访问哪个端口
NFS服务端(房源)
下载安装软件
#查询是否安装 rpm -qa | grep "nfs|rpc"#安装 yum install -y nfs-utils rpcbind安装好nfs会自动创建好nfsnobody用户
编写配置文件
vim /etc/exports
配置格式:01 02(03)
- 01:设置数据存储的目录
- 02:设置网络一个白名单
- 允许那些主机连接到存储服务器进行数据存储
- 03:配置存储目录的权限信息、存储目录的一些功能
配置内容
/data 172.16.1.0/24(rw,sync)
服务环境配置
mkdir /data chown -R nfsnobody.nfsnobody /data
启动服务程序(先启动rpc、在启动nfs)
#rpc systemctl start rpcbind.service systemctl enable rpcbind.service#检查 netstat -nptl | grep rpc#nfs systemctl start nfs systemctl enable nfsnetstat -nptl | grep nfsnfs启动后系统看不到端口号,交给rpc处理了
客户端(租客)
安装nfs,让系统挂载远程时可以识别到nfs文件系统
yum install -y nfs-utils
实现远程挂载共享目录
mount -t nfs 172.16.1.31:/data /mnt-t:type 挂载存储类型#检查 df -h | grep mnt#创建数据 touch 1.txt#然后服务端和客户端都有这个文件 #别的服务器在挂载,也会看到这个创建的文件
NFS工作原理
服务端
- 启动rpc服务,开启111端口
- 启动nfs服务
- 实现nfs服务进程和端口号注册信息
PS:检查nfs服务进程与端口注册信息
rpcinfo -p ip地址(本机:localhost)
客户端
- 建立TCP网络链接
- 客户端执行挂载命令,进行远程挂载
- 可以数据远程传输存储
查看相关进程
ps -ef | grep -E "nfs|rpc"#检查数据存储一致性
rpc statd#磁盘配额进程
rpc.rquotad#权限管理验证等(NFS mount daemon)
rpc.mountd#NFS主进程
nfsd#name mapping daemon 用户压缩/用户映射(记录)
rpc.idmapd
exports服务端详细配置说明
实现多个网段主机可以进行挂载
#第一种方法 /data 172.1.1.0/24(rw,sync) 10.0.0.0/24(rw,sync)#第二种方法 /data 172.1.1.0/24(rw,sync) /data 10.0.0.0/24(rw,sync)
共享目录的权限和哪些因素有关
- 和存储目录的本身权限有关(要是nfsnobody.nfsnobody)
- 配置文件里面的权限(要是rw)
- rw:读写
- ro:只读
- async:异步方式存储数据
- 放入内存中
- 优点:传输数据快
- 缺点:数据传输不可靠,易丢失数据
- 放入内存中
- sync:同步方式存储数据
- 放入硬盘中
- 优点:传递数据可靠,不易丢失数据
- 缺点:数据传输慢
- 放入硬盘中
- no_root_squash:不要将root用户身份进行转换,客户端是root,创建的文件身份也是root
- root_squash:将root 用户身份进行转换为nfsnobody
- all_squash:将普通用户身份都进行转换为nfsnobody
- no_all_squash:不将普通用户身份进行转换,但需要将目录权限进行修改,其他用户加上w权限(有rw)
(rw,sync,all_squash)
企业中如何配置nfs各种squash参数
保证网站存储服务器用户数据安全性
no_all_squash是必须要配置的(不可以配置all_squash)
否则任何一个用户都可以删除存储服务器里面的数据
但同时也不能添加数据
root_squash也需要配置,默认将root用户转为nfsnobody。但是存储目录权限已经改为www,这样就算客户端是root用户,要存删数据也不可以。www是虚拟用户不可以登录
#只想让www用户可以添加数据存储服务器和客户端都要有www用户,同时他们的uid要是一样的#查看客户端www的uid id www uid:1002#查看服务端uid是否存在 grep 1002 /etc/passwd grep 1002 /etc/group#删除存在uid为1002的用户 userdel -r rsync#添加www用户并且uid为1002 useradd -u 1002 -M -s /sbin/nologin id wwwchown -R www.www /datawww用户就可以存储数据了
以上配置就是默认配置
如何查看默认配置
#记录nfs的默认配置,不是配置文件。修改了没有任何影响 cat /var/lib/nfs/etab
如何让客户端 root用户可以操作管理www用户管理的data目录
grep anonuid /var/lib/nfs/etab anonuid=65534,anongid=65534grep 65534 /etc/passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologinanonuid可以指定的映射用户#将之前默认修改客户端的用户nfsnobody为www vim /etx/exports /data 172.16.1.0/24(rw,sync,anonuid=1002,anongid=1002)systemctl restart nfs
企业中如何编辑nfs配置文件
通用方法
/data 172.16.1.0/24(rw,sync)默认是 no_all_squash root_squash
特殊情况(部分人员不能操作存储目录,可以看目录中的数据)
/data 10.0.0.0/24(ro,sync)
修改默认的匿名用户
/data 10.0.0.0/24(ro,sync,anonuid=xxx,anongid=xxx)
nfs服务问题:nfs服务重启挂载后创建数据比较慢
- 服务重启方式不正确
- 服务重启的两种方式:
- systemctl restart nfs
- 不管有没有其他的客户端数据传输直接全部断开连接
- 然后全部重新连接重新传,用户感受不好
- systemctl reload nfs这个更好一点,平滑重启
- 有数据连接的有数据传输接着传,等传完了再断开重新连接
- 没有数据连接的强制断开
- systemctl restart nfs
如何实现自动挂载
利用
rc.local
,这个文件要有执行权限echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
利用
/etc/fstab
172.16.1.31:/data /mnt nfs defaults 0 0
实现fstab文件自动挂载的特殊服务
- centos6:根据系统服务启动顺序
- 按照顺序依次启动(所有服务时间累加)
- 先加载
/etc/fstab
,如果是挂载的外网目录。如果网络服务没有开启就不能实现自动挂载 - autofs服务程序:开机自动启动,服务器启动好后,再重新加载fstab文件
- centos7:根据系统服务启动顺序
- 服务并行启动(取决于最慢的服务)
- 但也先加载
/etc/fstab
,在加载network
服务 - remote-fs.target服务需要开启,开启后就可以自动挂载
- centos6:根据系统服务启动顺序
如何看开机已经自启的服务
ll /etc/systemd/system/multi-user.target.wants
客户端mount命令参数-o 后面指定
参数 | 解释 |
---|---|
rw | 实现挂载后挂载点目录可读可写 |
ro | 实现挂载后挂载点目录只可读 |
suid |
在共享目录中可以让setuid权限位生效(默认) chmod u+s 文件,这个文件所有用户身份都可以有全部的权限。 |
nosuid | 在共享目录中可以让setuid权限位不生效,建议设置这个,提高共享目录的安全性 |
exec | 共享目录中的执行文件可以直接执行(默认) |
noexec | 共享目录中的执行文件不可以直接执行,提高共享目录的安全性 |
auto |
可以实现自动挂载, 172.16.1.31:/data /mnt nfs auto 0 0 mount -a 可以实现fstab批量挂载 |
noauto | 不可以实现自动挂载 |
nouser | 禁止普通用户可以卸载挂载点 |
user | 允许普通用户可以卸载挂载点 |
客户端如何卸载
强制卸载挂载点
umount -lf /mntl:不退出挂载点目录也可以进行卸载 f:强制进行卸载操作
总结
- NFS存储服务器概念
- NFS存储工作原理
- NFS存储服务部署
- NFS服务端详细配置说明
- 服务端配置参数 xxx_squash
- NFS客户端详细配置说明
- 如何实现自动挂载
- 客户端挂载参数说明 man mount
- 如何强制卸载共享目录
NFS服务挂载不上排查方法
服务端
检查nfs进程信息是否注册
rpcinfo -p localhost
- 服务启动顺序不对,没有启动nfs服务
检查有没有可用的存储目录
showmount -e 172.16.1.41
- 配置文件编写有问题,重启nfs服务
在服务端进行挂载测试
mount -t nfs localhost:/data /mnt
- 是否能够在存储目录中创建或删除 数据
客户端
检查nfs进程信息是否注册
rpcinfo -p localhost
- 服务启动顺序不对,没有启动nfs服务
检查有没有可用的存储目录
showmount -e 172.16.1.41
配置文件编写有问题,重启nfs服务
网络是否正常
ping 172.16.1.41 talnet 172.16.1.41 111
查看rpc启动开启的端口
[root@pert data]# rpcinfo -p | awk 'NR>1{print $4}' | uniq | xargs | sed 's# #,#g'
111,20048,39700,20048,48387,20048,2049,53531,43121
Linux NFS存储服务详解相关推荐
- linux开机启动服务详解
http://blog.163.com/sjt_linux/blog/static/19931031920126295452884/ linux开机启动服务详解(转) 2012-07-29 17:45 ...
- Linux开源存储网络详解
这本<Linux开源网络全栈详解:从DPDK到OpenFlow>是那本<Linux开源存储全栈详解>的姊妹篇,把Linux开源网络相关的项目做了个梳理,对于想了解或参与网络相关 ...
- Linux NFS存储服务部署
什么是NFS 中文意思是网络文件系统,主要功能是通过网络(一般是局域网)让不同主机之间可以共享文件或目录 NFS属于本地文件存储服务 缺点1: 1 2 3 4 5 6 7 windows上无法使用 如 ...
- Linux NetworkManager网络服务详解
一.网络配置文件 Linux 为 配 置 网 络 提 供 了 许 多 工 具 , 其 中 有 图 形 界 面 的 ( 如:NetworkManager).也有伪图形界面(如:system-config ...
- Linux服务详解(主要基于RedHat系的及Centos默认服务详解)(综合整理)
转自:http://blog.csdn.net/jj198981/article/details/7605558 acpid ACPI(全称 Advanced Configuration and Po ...
- NFS 服务详解及实现方式
NFS 服务详解 NFS 介绍 1.NFS 服务 2.NFS 文件系统 3.NFS 工作原理 4.NFS 各个版本的对比 NFS 程序环境 1.环境介绍 2.NFS 服务主要进程 3.配置防火墙(NF ...
- linux系统设置服务开机启动3种方法,Linux开机启动程序详解
linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明一下ch ...
- centos终止linux程序,CentOS启动和停止服务详解
CAMS 在安装过程中, 1. 添加服务 添加服务的步骤为: (1) 将该服务的脚本文件拷入/etc/rc.d/init.d 文件夹下,例如: service camsd stop 停止 camsd ...
- linux网络服务详解,Linux网络服务器配置基础详解 (3)
Linux网络服务器配置基础详解 (3) Linux网络服务器配置基础详解 (3) 第三步:编辑"inetd.conf"文件(vi /etc/inetd.conf),禁止所有不需要 ...
最新文章
- box_sizing
- 计算机组成原理——概述
- CTFshow 信息收集 web11
- 爬虫实现csdn文章一键(批量)更换阅读类型(全部可见、粉丝可见、vip可见)
- 2ab对应的c语言表达式是,编译原理 作业标准答案
- shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向
- 10.1综合强化刷题 Day1 morning
- 论EFMS模拟量部分采集电路的修改
- Nginx工作原理和优化、漏洞
- matlab改进中值滤波,求助中值滤波和自适应中值滤波算法错误修改
- 阿蛮歌霸未能成功访问服务器,阿蛮歌霸KTV点歌软件提示“歌库数据库连接不正常”的解决方法...
- 用matlab实现“太阳-地球-月亮运行示意图”动画
- html中switch的控件,自己实现简单的switch开关插件
- 9 * 9 数独求解
- oracle热备份全过程,oracle数据库热备份的简单实现过程
- Python财务分析
- 更改电脑软件默认安装位置
- IT十年人生过客-十六-再见雍和宫
- uniapp小程序获取手机号、获取用户信息
- STM32选型手册 2021