NFS网络文件系统实战
=================================
/*
* @系统:CEntOS8 | Ubuntu 20.04.4 LTS
* @描述:NFS是当前主流异构平台共享文件系统之一。
*/
=================================
一、介绍
网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
基于RPC(Remote Procedure Call Protocol 远程过程调用)实现。RPC采用C/S模式。
NFS工作原理简图
二、安装NFS
# yum install -y nfs-utils
三、说明
-
软件包:nfs-utils(包含服务端和客户端的相关工具)
-
相关软件包:rpcbind(必须)
-
kernel支持:nfs.ko
-
端口:2049(nfsd),其它端口由rpcbind(111)分配
-
进程:自CentOS 6开始,portmap进程由rpcbind代替
-
rpc.nfsd:最主要的NFS进程,管理客户端是否可登录
-
rpc.mountd:挂载和卸载NFS文件系统,包括权限管理
-
rpc.lockd:非必要,管理文件锁,避免同时写错
-
rpc.statd:非必要,检查文件一致性,可修复文件
-
日志:/var/lib/nfs/
-
配置文件:/etc/exports #相当于总配置文件 | /etc/exports.d/*.exports #自定义配置文件存放位置
四、参数说明
ro:只读访问
rw:读写访问
sync:同步,所有数据在请求时立即写入共享存储磁盘
async:异步,数据变化后不立即写入磁盘,先写入缓冲区,过一段时间再写入磁盘,性能高
all_squash:共享文件的UID和GID映射用户nobody,适合公用目录。
no_all_squash:保留共享文件的UID和GID(默认)
root_squash:root用户的所有请求映射成如nobody用户一样的权限(默认)
no_root_squash:root用户具有根目录的完全管理访问权限
anonuid=xxx:指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx:指定nfs服务器/etc/passwd文件中匿名用户的GID
五、实战
1. 实验环境
机器准备
服务端:CentOS 8
客户端:Ubuntu 20.04
客户端:Windows 10 企业版(注意系统版本,有些系统不支持NFS)
# 服务端防火墙操作
# firewall-cmd --zone=public --add-service=nfs-server --permanent
# firewall-cmd --zone=public --add-port=111/tcp --permanent
# firewall-cmd --zone=public --add-port=2049/tcp --permanent
# firewall-cmd --reload
# Ubuntu客户端防火墙操作
$ sudo ufw allow nfs-server
$ sudo ufw allow 2049
$ sudo ufw allow 111
2. 实验步骤
① Linux系统安装NFS服务端和客户端
# yum install -y nfs-utils rpcbind # 服务端安装,rpcbind默认CentOS7以下版本不安装
$ sudo apt-get install -y nfs-kernel-server # 客户端Ubuntu
② windows10安装NFS客户端
在电脑桌面左下角(开始按钮)右键单击,选择“设置->应用选项->右侧“程序和功能”->启用或关闭windows功能->NFS服务->NFS客户端(这个是最小化安装,而管理工具是图形化界面),完成后立即重启”。
③ 创建和共享目录
# mkdir -p /home/share # 位置自定义
# vim /etc/exports # 编辑NFS主配置文件(格式:共享目录 主机1[权限,权限...] 主机2[权限,权限...])
====content====
/home/share 192.168.11.0/24(rw,all_squash)
====end====
# 注:192.168.11.0/24 :这里指的是共享给192.168.11整个网段
# all_squash : 将所有用户都映射为NFS系统用户(nfsnobody or nobody)
④ 启动服务
# systemctl start nfs-server # 启动服务
# systemctl restart nfs-server # 重启服务
# systemctl stop nfs-server # 停止服务
# systemctl status nfs-server # 查看状态
⑤ 挂载
# Linux客户端创建挂载点
$ sudo apt-get install -y nfs-kernel-server # 安装NFS服务
$ mkdir /mnt/nfsshare
$ sudo mount -t nfs 192.168.11.31:/home/share /mnt/nfsshare/
# 自动挂载
# yum install -y autofs
# cd /net/192.168.11.31/home/share
# df
192.168.11.31:/home/share 33321088 265344 33055744 1% /net/192.168.11.31/home/share
# 设置开机自动挂载
# CentOS7
# vim /etc/fstab
====content====
192.168.11.31:/home/share /mnt/nfsshare nfs _netdev 0 0
====end====
$ sudo mount -a
# 注:_netdev : 无网络不挂载
# Ubuntu
$ sudo vim /etc/fstab
====content====
192.168.11.31:/home/share /mnt/nfsshare nfs _netdev 0 0
====end====
$ sudo mount -a
# windows10挂载(CMD/命令行界面)
>showmount -e 192.168.11.31
导出列表在 192.168.11.31:
/home/share 192.168.11.0/24
>mount \\192.168.11.31\home/share X: # 映射到某个具体的磁盘(盘符未使用)
X: 现已成功连接到 \\192.168.11.31\home/share
命令已成功完成。
# 效果如下图
⑥ 授权
# setfacl -m u:nobody:rwx /home/share #给nobody用户赋权
# 注:给nobody用户授权时,注意系统版本,CentOS8是nobody,其它系统可能是nfsnobody
⑦ 重载配置文件(推荐使用)
# exportfs -r #在服务启动后,可以不需重启服务来完成配置文件重载
3. 测试
# ubuntu 系统测试
$ cd /mnt/nfsshare/
$ touch nfstest.txt
$ ls
nfstest.txt
# windows10 测试
略...
-本篇完-
=推荐阅读=
=================================
=================================
- 点赞
- 收藏
- 关注作者
评论(0)