码迷,mamicode.com
首页 > 其他好文 > 详细

NFS共享存储

时间:2020-05-09 00:38:49      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:tool   客户端安装   关系   art   格式   syn   export   地方   containe   

环境准备

主机名 wanIP lanIP 角色
web01 10.0.0.7 172.16.1.7 nfs的客户端
web02 10.0.0.8 172.16.1.8 nfs的客户端
nfs 10.0.0.31 172.16.1.31 nfs的服务端

NFS服务端

NFS(Network File System)和RPC(Remote Procedure Call)

部署NFS服务端,需要安装软件包 nfs-toolsrpcbind,CentOS7中自带rpcbind软件包,NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到了这个RPC功能。可以说NFS服务是需要使用RPC的一个程序。或者说NFS也是一个RPC Server。所以只要用到NFS的地方都要启动RPC服务,不论是NFS Server 或者NFS Client。这样Server和Client 才能通过RPC来实现PROGRAM PORT 的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

技术图片

安装完成后,修改/etc/exports文件,语法格式如下

[共享的目录] IP网段(参数,参数)

其中参数可以用 man exports命令查到:

参数 参数作用
rw NFS客户端读写权限
ro NFS客户端只读权限
root_squash NFS客户端用root用户访问该共享文件目录时,会将root用户映射成匿名用户
no_root_squash NFS客户端用root访问该共享文件夹时,不映射root用户为匿名用户,但给予root用户的待遇
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用)
no_all_squash 无论NFS客户端使用什么账户访问,都不映射
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 资料会先暂存于内存中,而非直接写入硬盘,从内存中写入硬盘
anonuid 配合all_squash参数使用,将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户
anongid 配合all_squash参数使用,将远程访问的所有用户组都映射为匿名用户组,并指定该用户组为本地用户组
# CentOS 7,只需要安装nfs-utils
[root@nfs ~]# yum install -y nfs-utils

# CentOS 6,需要安装nfs和rpc
[root@nfs ~]# yum install -y nfs-utils rpcbind

# 编辑nfs的配置文件
[root@nfs ~]# vi /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

# 检查配置文件是否生效
[root@nfs ~]# cat /var/lib/nfs/etab

# 创建匿名用户对应的本地用户
[root@nfs ~]# useradd www -u 666 -r -s /sbin/nologin -M

# 创建 /data目录,并改变其 属主和属组
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R www.www /data

# 启动 nfs-server 和 rpcbind ,添加开机自启
[root@nfs ~]# systemctl restart nfs-server rpcbind
[root@nfs ~]# systemctl enable nfs-server rpcbind

NFS客户端

# 客户端安装 nfs-server 软件包(CentOS7)
[root@web01 ~]# yum install -y nfs-utils 

# 查看 NFS服务端 "房源"
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

# 将目录挂载到 NFS服务端,此时访问 /var/www/html目录时,实际上是 NFS服务端的 /data目录
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/

# 对应的卸载命令
[root@web01 ~]# umount /var/www/html/

httpd服务

# 上传的文件路径设置为 /var/www/html/,由 apache 用户上传,所以要修改 /var/www/html 的属主和属组,否则 apache 用户没有写入的权限
[root@web01 ~]# chown apache.apache /var/www/html/

# 或者不指定为 apache 用户,需要修改配置文件
[root@web01 ~]# vim /etc/httpd/conf/httpd.conf 
User www
Group www
[root@web01 ~]# chown www.www /var/www/html/

# 修改后,重启 httpd服务
[root@web01 ~]# systemctl restart httpd

######### 以上是单机架构服务器必须要做的操作 ,若是分布式服务器架构,使用了NFS共享存储服务器,NFS服务端的配置文件/etc/exports加入了`all_squash`,可以不改变属主及属组,任何用户都会以匿名用户身份访问 NFS服务端 ##########

# 补充1:NFS的客户端/var/www/html的属主和属组 和 NFS的服务端/data的属主和属组 尽量用同一个用户名,UID,GID
# 补充2:若不同,执行挂载后,NFS客户端会不识别 /data挂载目录(/var/www/html) 的属主和属组,只显示对应的 UID GID,若 NFS客户端有这个UID的用户,则显示客户端的用户名
# 补充3:在挂载后,对于 NFS服务端的操作,任何用户都可执行,因为 NFS服务端 `all_squash,anonuid=666,anongid=666` 参数会将远程访问的所有用户都映射为匿名用户,并指定为本地用户(UID=666,GID=666)

NFS客户端没有 NFS服务端匿名用户:
技术图片

NFS客户端 有和NFS服务端匿名用户相同 UID/GID的用户:
技术图片

NFS共享存储

标签:tool   客户端安装   关系   art   格式   syn   export   地方   containe   

原文地址:https://www.cnblogs.com/zzzwqh/p/12853976.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!