NFS文件服务器的搭建教程

作者: 倔强的运维者 分类: Linux,环境搭建 发布时间: 2018-09-15 23:39 阅读: 274次 百度已收录

NFS使用场景

企业文件共享

CFS 提供的存储服务适合员工众多且需要访问和共享相同数据集的组织。管理员可以使用 CFS 来创建文件系统并使其可以供组织中的个人访问,还可以在文件或目录级别为用户和组设置权限。

大数据及分析

CFS 提供了大数据应用程序所需的规模和性能、计算节点高吞吐量、写后读一致性以及低延迟文件操作,特别适合服务器日志集中处理和分析。

流媒体处理

视频编辑、影音制作、广播处理、声音设计和渲染等媒体工作流程通常依赖于共享存储来操作大型文件。强大的数据一致性模型加上高吞吐量和共享文件访问,可以缩短完成上述工作所需的时间。

内容管理和 Web 服务

CFS 可以作为一种持久性强、吞吐量高的文件系统,用于各种内容管理系统,为网站、在线发行、存档等各种应用存储和提供信息。

专用软件环境

CFS 提供了政府、教育、医疗等行业传统服务架构迁移上云的基础,通常专用软件需要共享同一个文件存储系统,且仅支持 POSIX 标准协议操作。

NFS (Network FileSystem)最初是由SUN公司搞出来的一个产品,日常应用中也经常使用。这里有两台主机,一台提供NFS服务,一台client ,具体信息如下:

一、NFS 服务端配置

1、安装软件包

2、启动服务

nfs-server服务依赖rpcbind服务,如果不启动rpcbind服务时,直接启动nfs-server服务会出现报错

3、配置idmapd.conf

配置该处是为了解决指定uid和gid后,挂载显示为nobody的问题 ,详细可以查看我之前写的 --- nfs只能挂载为nobody的解决方法 。

4、exports 配置

编辑/etc/exports 增加需要共享的目录:

括号内可以不加任何参数,默认是读的权限。需要注意的是IP地址和括号之间不能留有空格

5、重启服务

6、防火墙配置

二、NFS客户端配置

1、安装软件包

客户端也必须安装该包,不然在mount时会提示找不到nfs参数。如下:

2、idmapd.conf配置

配置成和服务端的相同值,如下:

3、启动rpcbind服务

4、开机挂载设置

编辑/etc/fstab 可以设置nfs-client主机开机后自动挂载服务端的目录,在/etc/fstab中增加如下行:

除了这种挂载之外,还有autofs按需挂载,这个在后面讲autofs服务时会提到。

三、权限与参数

1、权限相关

按照上面的配置给rw权限,理论上来讲我们可以写入文件---nfs目录的为root默认创建,但实际上呢?

可以ls 读取,无法写入。由于nfs为root用户创建,我们在nfs服务端(1.200)主机上先给nfs目录赋予777的权限:

细心的你不知道有没有发现,默认在不指定映射的用户时,系统指定的是nfsnobody用户和组。所以针对不能写入的问题,我们除了可以将nfs目录的权限设置为777外,还可以在不改变nfs目录的默认权限外,通过将nfs用户和属主更改为nfsnobody用户,使客户端挂载后可以写入,两种方法任选其一。

2、参数相关

这里的参数有两部分---服务端参数、客户端参数。

先来看服务端在/etc/exports 括号中可以指定的参数:

选项 描述
rw 允许读写权限
ro 只读权限
sync 同步模式(Default),所有数据在写入后可以请求
async 异步模式,数据在写入过程中可以写入
secure NFS通过1024以下的安全TCP/IP端口发送(Default)
insecure NFS可以通过所有端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入 (Default)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限 (Default)
no_subtree_check 与subtree_check对应
root_squash Map requests from uid/gid 0 to the anonymous uid/gid.
no_root_squash root用户具有根目录的完全管理访问权限。
all_squash Map all uids and gids to the anonymous user. 对公共目录访问时较有用。
no_all_squash 保留共享文件的UID和GID (Default)
anonuid=UID 指定匿名用户访问时映射机的用户uid
anongid=GID 指定匿名用户访问时映射机的用户gid

常用配置示例如下:

客户端mount时的相关参数:

参数 描述 默认值
suid
nosuid
如果挂载点上面有任何 SUID(粘滞位) 的 binary 程序时,
你只要使用 nosuid 就可以取消 SUID 的功能!
suid
rw
ro
如在服务允许写的权限,但为了安全起见,可以挂载时指定仅使用读取权限挂载 rw
dev
nodev
一般只有 /dev 这个目录挂载时才会用到 dev
exec
noexec
是否具有执行 binary file 的权限?
如果掛载的只是资料区 (例如 /home),那么可以选择 noexec
exec
user
nouser
是否允许使用者进行挂载与卸载功能?
如果要保护系統,最好不要提供使用者進行掛载与卸载
nouser
auto
noauto
这个 auto 指的是『mount -a』时,是否自动挂载该挂载点。
如果你不需要这个 partition 随时被挂载,可以设为 noauto。
auto

上面是 mount 自带的参数,除此之外,nfs 还支持指定以下参数:

参数 参数功能 默认值
fg
bg
这两参数有点类似于进程中的fg、bg,指定fg mount时,会一直等到挂载成功或超时。指定bg时,挂载会在后台进行。 fg
soft
hard
为hard时,当C/S其中一台离线,则RPC 会持续的呼叫,直到对方恢复连线为止。如果是 soft ,那 RPC 会在 time out 后『重复』呼叫,而非『持续』呼叫,
因此系統的延迟会比较不明显。
hard
intr 当使用hard 方式時,若加上 intr 参数, 则当 RPC 持续呼叫中,该次的呼叫是可以被中断的 (interrupted)。 沒有
rsize
wsize
读(rsize)和写(wsize)的block块大小 (block size)。 这个设定值可以影响用户端与服务器端传送缓存区的大小。一来说,在LAN网络内,有足够内存时,这个值可以设的大一些。比如 32768 (bytes) ,用于提升数据传送速度。但也不能超过网络能够传送的最大值。 rsize=1024
wsize=1024

如,在挂载时可以按如下参数mount:

四、nfs服务相关

老发行版中的nfs中我们经常将服务分为如下几个:

rcp.nfsd  --- nfs服务提供者,主服务;

rpc.mountd --- 验证nfs客户端挂载相关程序;

rpc.lockd (非必须) --- 解决多个客户端同时挂载一个nfs服务端时,多个客户端同时写入一文件的问题,开启该服务可以避免该问题的发生,需客户端也同时开启该服务

rpc.statd(非必须)--- 与rpc.lockd相关,避免多个客户端同时访问同一文件时可能造成文件损坏的问题,该服务会进行文件检测。使用时也需服务端和客户端同时开启

rpc.idmapd ---解决nfs挂载时的nobody问题。

在查看新版本之前,我们先看下rhel7/centos7下的nfs服务相关的rpc服务和nfs文件,如下:

rpc相关服务:

nfs相关服务有:

在新版本中默认情况下nfs-server和rpcbind服务开启后,nfs-mountd、nfs-lock、nfs-idmapd几个服务都默认会开启。而且从上面也可以看出nfs-lock 和 nfs-statd 两个对应的是同一个文件,可见在新版本中两个服务已进行了合并。

五、挂载时用户权限对应

还按上面的示例,不过我们将exports的配置更改为如下:

服务端共享了/nfs 目录

服务端有一个用户zhangshan,对应的用户uid和gid 都是1000 ,zhangshan用户创建一个文件server-zhangshan

客户端主机上uid和gid为1000对应的用户是lishi ,lishi 用户挂载后创建一个文件client-lishi

服务端还有一个用户wangwu ,uid和gid为5000 ,客户端上该uid 和 gid没有对应用户,wangwu创建了一个文件server-wangwu

当在客户端挂载后,在客户端上看到的文件server-zhangshan 、client-lishi 对应的用属主和属组,都是lishi ;而在服务端上看到的这两个文件的属主都是zhangshan ;在客户端上看到的server-wangwu看到的对应属主和属组是5000:5000 。所以客户端和服务器端都是以/etc/passwd、/etc/group中的uid和gid 对应相应的文件属主和属组的,如果两边的uid和gid不一致,就会出现上面描述的情况。在实际中应用中应尽量让目录对应的属主和属组的uid和gid 一致。

如果觉得我的文章对您有用,请随意打赏,感谢您的支持将鼓励我继续创作!

           

说点什么

avatar
  Subscribe  
提醒