1 NFS 简介
NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
NFS一般用来存储共享视频,图片等静态数据;NFS 协议默认是不加密的,它不像 Samba,它不提供用户身份鉴别。服务端通过限定客户端的 IP 地址和端口来限制访问。
原理
NFS在文件传送或信息传送的过过程中,依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。
2 NFS 部署
在局域网(192.168.149.0/24)中搭建一个NFS服务(服务端IP:192.168.149.150),然后共享给其他客户端
2.1 服务端部署
服务端IP :192.168.149.150
2.1.1 安装 NFS和RPC
# 检查系统中是否安装了NFS和RPC
rpm -qa nfs-utils rpcbind
# 使用 yum 安装nfs 和 rpc
yum -y install nfs-utils rpcbind
2.1.2 创建共享目录 /data/nfs ,并且属主和属组都为:nfsnobody,其中nfsnobody是安装nfs服务时默认的用户
mkdir -p /data/nfs/
chown -R nfsnobody.nfsnobody /data/nfs/
chmod 666 /data/nfs/
2.1.3 配置NTS配置文件
vim /etc/exports:
/data/nfs 122.168.149.0/24(rw,sync,no_root_squash)
让配置文件生效,执行以下命令:
exportfs -r
注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行 systemctl reload nfs 或 exportfs –rv 即可使修改的 /etc/exports 生效
说明:
- /data/nfs 是服务器端共享的目录
- 192.168.149.0/24 共享目录的客户端ip地址(段)
- (rw,sync,no_root_squash) ,其中rw代表拥有读写的权限,sync代表数据同步写入NFS服务器端的硬盘中。 也可以用async,async是大数据时使用,是先写到缓存区,再写到磁盘里。no_root_squash表示支持客户端root用户具有完全的权限
其他权限说明:
权限 | 用途 |
---|---|
ro | 只读 |
rw | 读写访问 |
sync | 客户端写入数据同步到服务器后才会返回 |
no_root_squash | 客户端root用户具有完全的权限 |
root_squash | root用户权限被映射成服务端上的普通用户nobody |
anonuid | 指定匿名用户的UID |
anongid | 指定匿名用户的GID |
2.1.4 启动RPC和NFS服务
# 启动rpc
systemctl status rpcbind
# 启动nfs
systemctl start nfs
# 设置开机启动
systemctl enable nfs
查看rpc和nfs运行状态
2.1.5 查看NFS服务是否向rpc注册端口信息,主端口号是:111
选项与参数:
参数 | 说明 |
---|---|
-p | 针对某 IP (未写则预设为本机) 显示出所有的 port 与 porgram 的信息 |
-t | 针对某主机的某支程序检查其 TCP 封包所在的软件版本 |
-u | 针对某主机的某支程序检查其 UDP 封包所在的软件版本 |
2.1.6 在NFS设定妥当之后,可以先在服务端自我测试一下是否可以联机,利用 showmount 这个指令来查看
选项与参数:
参数 | 说明 |
---|---|
-a | 显示目前主机与客户端的 NFS 联机分享的状态 |
-e | 显示某部主机的 /etc/exports 所分享的目录数据 |
2.2 客户端配置
如在服务器 192.168.149.153上配置nfs客户端
2.2.1 安装 RPC和NFS 服务,并启动
步骤同 2.1.1 和 2.1.4
2.2.2 查看客户端是否可以收到服务端的共享信息
2.2.3 进行nfs共享目录的挂载
将192.168.149.150上的/data/nfs共享目录,挂载到本机的/mnt目录上
mount -t nfs 192.168.149.150:/data/nfs /mnt
2.2.4 验证
在服务端 /data/nfs 目录下创建一个 a.log的文件,在客户端可以查看到,并操作
2.2.5 设置系统启动自动挂载
echo "192.168.149.150:/data/nfs /mnt nfs defaults 0 0" >> /etc/fstab