实战项目-NFS存储共享服务
目录
3.如何让root用户可以操作管理www用户管理的data目录
一、什么是NFS?
NFS是Network File System的缩写,中文意思是网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。
NFS网络文件系统很像Windows系统的网络共享,安全功能,网络驱动器映射,这也和Linux系统里的samba服务类似。只不过一般情况下,Windows网络共享服务或samba服务用于办公室局域网共享,而互联网中小型网站集群机构后端常用NFS进行数据共享,如果大型网站,那么有可能还会用到更复杂的分布式文件系统,例如:Moosefs(mfs)、GlusterFS、FastDFS等。
中小型公司:
samba windows--linux之间数据传输 Linux部署samba
NFS linux--linux之间数据传输
门户网站:
一个用户 -- 存储服务器
上万个用户 -- 存储服务器
利用分布式存储
Moosefs(mfs) 比较落伍,初学学习比较简单
GlusterFS
FastDFS 企业应用较多
二、NFS存储服务的作用
1) 实现数据的共享存储
2) 编写数据操作管理
3) 节省购买服务器磁盘开销 淘宝--上万 用电开销
三、NFS服务部署流程
RPC: 远程过程调用服务程序--- 相当于租房的中介(网络编程支持)
1)服务端部署
第一步:下载安装软件
[code]rpm -qa|grep -E "nfs|rpc" yum install -y nfs-utils rpcbind
第二步:编写nfs服务配置文件
[code]vim /etc/exports (man exports)
01 02(03)
01: 设置数据存储的目录 /data
02: 设置网络一个白名单 (允许哪些主机连接到存储服务器进行数据存储)
03: 配置存储目录的权限信息 存储目录一些功能
/data 172.16.1.0/24(rw,sync)
第三步:创建一个存储目录
[code]mkdir /data chown nfsnobody.nfsnobody /data --nfsnobody用户在安装nfs-utils软件后自动创建
第四步:启动服务程序
先启动 rpc服务
[code]systemctl start rpcbind.service systemctl enable rpcbind.service
再启动 nfs服务
[code]systemctl start nfs systemctl enable nfs
2)部署客户端
第一步:安装nfs服务软件 --用于挂载识别nfs文件系统
[code]yum install -y nfs-utils
第二步:实现远程挂载共享目录
[code]mount -t nfs 172.16.1.31:/data /mnt
四、NFS服务工作原理
1)NFS服务端
1. 启动rpc服务,开启111端口
2. 启动nfs服务
3. 实现nfs服务进程和端口号的注册
补充: 检查nfs服务进程与端口注册信息
没有注册时候:
[code][root@nfs01 ~]# rpcinfo -p 172.16.1.31 --查看nfs服务注册信息
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
nfs服务注册之后信息:
[code][root@nfs01 ~]# rpcinfo -p 172.16.1.31
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 53997 status
100024 1 tcp 49863 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
2)客户端
1. 建立TCP网络连接
2. 客户端执行挂载命令,进行远程挂载
3. 可以实现数据远程传输存储
五、nfs服务端详细配置说明
1)实现多个网段主机可以进行挂载
第一种方法:
[code]vim /etc/exports
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(rw,sync)
第二种方法:
/data 172.16.1.0/24(rw,sync)
/data 10.0.0.0/24(rw,sync)
总结:共享目录的权限和哪些因素有关:
1)和存储目录的本身权限有关 (755 属主:nfsnobody)
2)和配置文件中的权限配置有关 rw/ro xxx_squash anonuid/anongid
3)和客户端挂载命令的参数有关 ro
2)NFS配置参数权限
rw | 存储目录是否有读写权限 |
ro | 存储目录是否时只读权限 |
sync | 同步方式存储数据 直接将数据保存到磁盘(数据存储安全) |
async | 异步方式存储数据 直接将数据保存到内存(提高数据存储效率) |
no_root_squash | 不要将root用户身份进行转换 |
root_squash | 将root用户身份进行转换 |
all_squash | 将所有用户身份都进行转换 |
no_all_squash | 不要将普通用户身份进行转换 |
操作演示all_squash参数功能:
[code][yaobin@backup mnt]$vim /etc/exports /data 172.16.1.0/24(ro,sync,all_squash) [yaobin@backup mnt]$ touch yaobin_data.txt [yaobin@backup mnt]$ ll total 4 -rw-rw-r-- 1 nfsnobody nfsnobody 0 May 9 12:11 yaobin_data.txt
操作演示no_all_squash参数功能:
[code][root@nfs01 ~]# vim /etc/exports /data 172.16.1.0/24(rw,sync,no_all_squash) [yaobin@backup mnt]$ touch yaobin_data02.txt touch: cannot touch ‘yaobin_data02.txt’: Permission denied 解决权限问题: [root@nfs01 ~]# chmod o+w /data/ [root@nfs01 ~]# ll /data/ -d drwxr-xrwx. 2 nfsnobody nfsnobody 52 May 9 12:11 /data/ [yaobin@backup mnt]$ touch yaobin_data02.txt [yaobin@backup mnt]$ ll total 4 -rw-r--r-- 1 nfsnobody nfsnobody 7 May 9 10:57 backup_data.txt -rw-rw-r-- 1 yaobin yaobin 0 May 9 12:17 yaobin_data02.txt -rw-rw-r-- 1 nfsnobody nfsnobody 0 May 9 12:11 yaobin_data.txt
操作演示root_squash参数功能:
[code][root@backup mnt]# vim /etc/exports /data 172.16.1.0/24(rw,sync,root_squash) [root@backup mnt]# touch root_data.txt [root@backup mnt]# ll -rw-r--r-- 1 nfsnobody nfsnobody 0 May 9 12:20 root_data.txt
操作演示no_root_squash参数功能
[code][root@backup mnt]# ll total 4 -rw-r--r-- 1 root root 0 May 9 12:23 root_data02.txt
3)企业互联网公司如何配置NFS 各种squash参数
1.保证网站存储服务器用户数据安全性:
no_all_squash 需要进行配置 共享目录权限为www(确保客户端用户 服务端用户 uid数值一致)
root_squash 需要进行配置 root---nfsnobody data目录---www
以上默认配置(很多服务默认配置都是从安全角度出发)
2.如何查看nfs默认配置
[code]cat /var/lib/nfs/etab --- 记录nfs服务的默认配置记录信息 /data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,n o_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
3.如何让root用户可以操作管理www用户管理的data目录
root --- root_squash --- www ---操作--- data目录
anonuid=65534,anongid=65534 --- 可以指定映射的用户信息
修改映射用户:www=1002
/data 172.16.1.0/24(rw,sync,anonuid=1002,anongid=1002)
4.企业中如何编辑nfs配置文件
01. 通用方法
/data 172.16.1.0/24(rw,sync)
02. 特殊情况 (让部分人员不能操作存储目录 可以看目录中的数据)
/data 10.0.0.0/24(ro,sync)
03. 修改默认的匿名用户 --映射用户
/data 10.0.0.0/24(ro,sync,anonuid=xxx,anongid=xxx)
5.nfs服务问题
01. nfs服务重启,挂载后创建数据比较慢
服务器重启方式不正确
服务重启:
01. restart 重启服务 强制断开所有连接 用户感受不好
02. reload 重启服务(平滑重启) 强制断开没有数据传输的连接 提升用户感受
六、nfs客户端详细配置说明
mount -t nfs 172.16.1.31:/data /mnt
1)如何实现自动挂载
01. 利用rc.local
[code] echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
02. 利用fstab文件
[code]vim /etc/fstab 172.16.1.31:/data /mnt nfs defaults 0 0
特殊的服务已经开启了
2)centos6:无法实现网路存储服务自动挂载原因
根据系统服务启动顺序
按照顺序依次启动 network服务--- sshd服务--- crond服务--- rsync服务--- rpcbind服务--- nfs服务
先加载/etc/fstab --- network服务 --- autofs服务
autofs服务程序:开机自动启动
服务启动好之后,重新加载fstab
3)centos7:无法实现网路存储服务自动挂载原因
根据系统服务启动顺序
network服务
sshd服务
crond服务
rsync服务
先加载/etc/fstab network服务
autofs==centos7??
实现开机自动挂载
/etc/rc.local 文件要有执行权限
/etc/fstab 实现fstab文件挂载自动加载nfs存储目录 必须让remote-fs.target服务开机自启
centos7 必须启动 remote-fs.target
centos6 必须启动 netfs
需求问题:如何找到一台服务器开机运行了哪些服务
[code]ll /etc/systemd/system/multi-user.target.wants/
NFS服务挂载不上排查方法:
服务端进行排查:
1. 检查nfs进程信息是否注册
[code]rpcinfo -p localhost/172.16.1.31
问题原因:
服务启动顺序不对,没有启动nfs服务
2. 检查有没有可用存储目录
[code]showmount -e 172.16.1.31
问题原因:
配置文件编写有问题,重启nfs服务
3. 在服务端进行挂载测试
是否能够在存储目录中创建或删除数据
客户端测试:
1. 检查nfs进程信息是否注册
[code]rpcinfo -p localhost/172.16.1.31
问题原因:
服务启动顺序不对,没有启动nfs服务
2. 检查有没有可用存储目录
[code]showmount -e 172.16.1.31
问题原因:
配置文件编写有问题,重启nfs服务
网络问题
[code]ping 172.16.1.31 telnet 172.16.1.31 111
4)客户端mount命令参数
rw | 实现挂载后挂载点目录可读可写 (默认) |
ro | 实现挂载后挂载点目录可读可写 |
suid | 在共享目录中可以让setuid权限位生效 (默认) |
nosuid | 在共享目录中可以让setuid权限位失效 提高共享目录的安全性 |
exec | 共享目录中的执行文件可以直接执行 |
noexec | 共享目录中的执行文件可以无法直接执行 提供共享目录的安全性 |
auto | 可以实现自动挂载 mount -a 实现加载fstab文件自动挂载 |
noauto | 不可以实现自动挂载 |
nouser | 禁止普通用户可以卸载挂载点 |
user | 允许普通用户可以卸载挂载点 |
5)客户端如何卸载
[code]umount -lf /mnt --- 强制卸载挂载点
-l 不退出挂载点目录进行卸载
-f 强制进行卸载操作
- 【我的Linux,我做主!】常用共享存储--NFS服务配置应用与实战
- 【NFS项目实战二】NFS共享数据的时时同步推送备份
- 构建DNS分离解析域名服务器、 实现NFS共享存储服务
- 实战部署ISCSI共享存储服务
- NFS共享存储服务
- Linux服务-nginx+nfs实现共享存储
- 搭建nfs共享存储服务之一nfs服务端搭建
- Linux的NFS共享存储服务
- NFS共享存储服务
- 实战NFS文件共享存储详解 推荐
- NFS共享存储服务
- 搭建nfs共享存储服务之三客户端配置
- YUM远程仓库以和NFS共享存储服务
- NFS共享存储服务
- NFS共享存储服务
- 生产场景NFS共享存储优化及实战
- LINUX服务器配置NFS服务,挂载外部存储实现目录共享
- LAMP集群项目五 部署NFS存储服务并设置WEB服务挂载
- Linux实战教学笔记22:企业级NFS网络文件共享服务