NFS网络文件系统实战

举报
灰烬 发表于 2022/03/18 15:19:11 2022/03/18
【摘要】 网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

=================================

/*

* @系统:CEntOS8 | Ubuntu 20.04.4 LTS

* @描述:NFS是当前主流异构平台共享文件系统之一。

*/

=================================


一、介绍

    网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

    基于RPC(Remote Procedure Call Protocol 远程过程调用)实现。RPC采用C/S模式。

01.png

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客户端(这个是最小化安装,而管理工具是图形化界面),完成后立即重启”。

02.png

03.png

04.png

05.png

06.png

07.png

        ③ 创建和共享目录

# 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
命令已成功完成。
# 效果如下图

08.png

        ⑥ 授权

# 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 测试
略...

-本篇完-

=推荐阅读=

=================================

Linux防火墙操作

=================================

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。