1.NFS介绍

NFS(Network File System)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件。简单的讲就是可以挂载远程主机的共享目录到本地,就像操作本地磁盘一样,非常方便的操作远程文件。

2.Samba介绍

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

3.搭建NFS文件服务器

1)环境准备 两台CentOS7主机,彼此可以相互通信
Ip:192.168.12.128 (用户) Ip:192.168.12.129 (服务端nfs)

2)添加本地hosts解析
因为这里没有DNS服务因此直接在两台机器上添加本地hosts

[root@nfs ~]# vim /etc/hosts [可选]
192.168.12.128 zhangsan
192.168.12.129 nfs

3)安装NFS服务

[root@nfs ~]# yum install -y nfs-utils

4)创建需要共享的NFS目录

[root@nfs ~]# mkdir /data

5)配置NFS主配置文件

[root@nfs ~]# vim /etc/exports /data
192.168.12.0/24(rw,sync,no_root_squash)

说明:192.168.12.0/24 一个网络号的主机可以挂载 NFS服务器上的 /data 目录到自己的文件系统中

6)NFS定制参数说明
ro:目录只读
rw: 这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的。
secure: 这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。指定 insecure 可以禁用这个选项。

async: 这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务 器,这也可能会造成数据丢失。

no_wdelay: 这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。

nohide: 如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来 像空的一样。要禁用这种行为,需启用 hide 选项。

no_subtree_check: 这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省 选项是启用子树检查。

no_auth_nlm: 这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加锁请求 进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是 auth_nlm 或 secure_locks。

mp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录。 fsid=num: 这个选项通常都在 NFS 故障恢复的情况中使用。

如果希望实现 NFS 的故障恢复,请 参考 NFS 文档。

NFS 用户映射的选项:
在使用 NFS 挂载的文件系统上的文件时,用户的访问通常都会受到限制,这就是说用户都是以匿
名用户的身份来对文件进行访问的,这些用户缺省情况下对这些文件只有只读权限。如果用户希望
以 root 用户或锁定义的其他用户身份访问远程文件系统上的文件,NFS 允许指定访问远程文件的
用户——通过用户标识号(UID)和组标识号(GID)进行用户映射。

root_squash: 这个选项不允许 root 用户访问挂载上来的 NFS 卷。

no_root_squash: 这个选项允许 root 用户访问挂载上来的 NFS 卷。

all_squash: 这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的 UID 和 GID,只使
用匿名用户。缺省设置是 no_all_squash。

anonuid 和 anongid: 这两个选项将匿名 UID 和 GID 修改成特定用户和组帐号。

7)设置NFS服务开机启动

1、先启动 rpcbind 服务

[root@nfs ~]# systemctl enable rpcbind.service
[root@nfs ~]# systemctl enable nfs-server.service

2、启动 NFS 服务

[root@nfs ~]# systemctl start rpcbind.service
[root@nfs ~]# systemctl start nfs-server.service

  1. 确认NFS服务器启动

[root@nfs ~]# exportfs -v /data
192.168.12.0/24(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

rpcinfo -p:检查 NFS 服务器是否挂载我们想共享的目录 /data:

exportfs -r: 使配置生效

4.挂载NFS

1)手动挂载:

[root@zhangsan ~]# mkdir /data #创建挂载目录
[root@zhangsan ~]# mount -t nfs nas:/data /data #挂载/data下
[root@zhangsan ~]# umount /data #卸载目录

2)开机自动挂载

[root@zhangsan ~]# vim /etc/fstab
nas:/data /data nfs defaults 0 0
[root@zhangsan ~]# mount –a

3)查看挂载结果

[root@zhangsan ~]# df
nas:/data 7923136 692416 6821568 10% /data

注:
如果服务器端修改了 NFS 的配置,而又不想重启 NFS 服务(因为有客户端正在使用)可以使用
exportfs 命令重新载入 NFS 配置。
export -ar: 重新导出所有的文件系统
export -au: 关闭导出的所有文件系统
export -u FS: 关闭指定的导出的文件系