NFS的全称是Network FileSystem,即网络文件系统,NFS主要实现的功能是让网络上的不同操作系统之间共享数据。NFS首先在远程服务端(共享数据的操作系统)共享出文件或者目录,然后远端共享出来的文件或者目录就可以通过挂载(mount)的方式挂接到本地的不同操作系统上,最后,本地系统就可以很方便的使用远端提供的文件服务,操作起来像在本地操作一样。从而实现了数据的共享。

NFS的安装
(1)、安装NFS相关软件包
安装nfs-utils和rpcbind
[root@linuxserver ~]# yum install -y nfs-utils rpcbind
查看已安装版本(可选)
[root@linuxserver ~]# rpm -qa | grep nfs
(2)、配置NFS共享目录
编辑/etc/exports文件:
[root@linuxserver ~]# vim /etc/exports
添加以下内容(按需调整):
/data 172.16.213.0/24(ro,sync,no_root_squash)
执行如下命令,使配置生效:
[root@linuxserver ~]# exportfs -rv
NFS Server端的配置
NFS的主要配置文件只有一个/etc/exports,配置非常简单,设置格式为:
共享资源路径 [主机地址] [选项]
例如:下面是某系统/etc/exports的设置:
/webdata *(sync,rw,all_squash)
/tmp *(rw,no_root_squash)
/home/share 192.168.1.*(rw,root_squash) *(ro)
/opt/data 192.168.1.18(rw)
共享资源路径:就是要共享出来的目录或者磁盘分区。例如上面的/tmp、/home/share目录等,这些目录存在于NFS Server端,以供NFS Client挂载使用。
主机地址:设定允许使用NFS Server共享资源的客户端主机地址,主机地址可以是主机名、域名、IP地址等,支持匹配。
注意,新版本下(nfs-utils-2.5及以后),nfs不再支持192.168.1.*这种星号的匹配,此时可以指定IP段来替代星号,例如:
/home/share 192.168.1.0/24(rw,root_squash) *(ro)
此配置是允许192.168.1.0段的所有IP可访问此目录。
如果要配置单独的几个ip,可以这么写:
/data 172.16.213.33(rw,sync,no_root_squash) 172.16.213.159(ro,sync,root_squash)
选项:下面是可用的各个选项含义:
ro: 即为:read only,也就是客户端主机对共享资源仅仅有读权限。
rw: 即为:read write,也就是客户端主机对共享资源有读、写权限。
no_root_squash: 信任客户端,根据用户UID进行判断,如果登入到NFS主机的用户是ROOT,那么此用户就拥有对共享资源的最高权限。此参数很不安全,建议不要使用。
root_squash:系统预设值,当登入NFS主机的用户root 时,那么这个使用者的权限将被縮成为匿名使用者,也就是它的UID与GID都会变成nobody身份;只有可读权限,系统以此为预设值,显然是为了安全考虑。
all_squash:不管登陆NFS主机的是什么用户,都会将共享文件的UID和GID映射为匿名用户nobody。
no_all_squash:系统预设值,保留共享文件的UID和GID默认权限。也就是客户端用户的UID以及GID和服务端共享文件UID和GID相同时,才有对共享文件的读写权限。这种选项保证了共享文件的用户和组权限不会改变。
sync:资料同步写入磁盘中。默认选择。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
利用exportfs命令即可让修改生效
重新mount 文件/etc/exports中分享出来的目录,显示mount过程,操作如下:
[root@NFS Server ~]# exportfs -rv
-r :重新mount /etc/exports中分享出来的目录。
-v :在 export 的時候,将详细的信息输出到屏幕上。
/etc/exports 配置文件语法全解析
# NFS共享配置格式:
# <共享目录路径> <客户端1(选项1,选项2,...)> <客户端2(选项3,...)>
# └─共享资源路径 └─允许访问的主机 └─访问权限与特性选项
# 示例1:将 /webdata 目录共享给所有客户端
/webdata *(sync,rw,all_squash)
# │ │ └───────────────┴─ 选项组合
# │ │ sync : 同步写入,数据安全但性能稍差
# │ │ rw : 允许读写
# │ │ all_squash: 将所有客户端用户映射为匿名用户(nfsnobody)
# │ └─ 主机地址:* 表示允许所有IP地址访问(任何主机)
# └─ 共享目录:服务器上的 /webdata 目录
# 示例2:将 /tmp 目录共享给所有客户端
/tmp *(rw,no_root_squash)
# │ └─ 重要选项:不限制root用户(危险!)
# │ 客户端root在服务器端保持root权限
# └─ 允许读写
# 示例3:/home/share 目录的复杂权限设置
/home/share 192.168.1.0/24(rw,root_squash) *(ro)
# │ │ └─ 第二个客户端规则:其他所有主机只读
# │ └─ 第一个客户端规则:192.168.1.0网段
# │ rw : 读写权限
# │ root_squash: 客户端root映射为匿名用户(安全)
# └─ 共享目录
# 示例4:按IP精确控制
/opt/data 192.168.1.18(rw)
# └─ 仅允许IP为192.168.1.18的主机读写访问
发表回复