NFS文件服务器及客户端挂载(搞个网盘玩一下啦)

发布时间 2023-12-24 10:31:49作者: 糖~豆豆

NFS简介

什么是 NFS?

  • NFS(Network File System)网络文件系统
  • 目标:实现计算机之间通过网络共享资源
  • 将NFS主机分享的目录,挂载到自己电脑,我们就可以用自己电脑使用NFS的硬盘存储资源
  • 大白话说,就像百度云盘差不多哦~~

NFS实现原理是什么?

  • NFS每个功能会开启不同端口,使用RPC管理端口,RPC要先于NFS启动,RPC指定每个NFS功能所对应的端口,并返回给客户端
  • NFS是一个文件系统,RPC负责信息传输
  • RPC(远程过程调用 Remote Procedure Call)协议实现RPC服务(portmap 或rpcbind服务)
  • RPC,基于C/S模型,程序可以使用这个协议请求网络中另一台计算机上某程序的服务

服务器端(共享硬盘方)安装NFS

安装NFS 和 rpcbind

sudo yum install nfs-utils -y

通过systemctl 设置服务自启动(RPC要先于NFS启动)

sudo systemctl enable rpcbind
sudo systemctl enable nfs

查看应用进程(使用 linux 的 ps aux |grep 命令)

  • 直接用ps命令,会显示所有进程的状态
  • grep 表示正则化搜索搜索,它能使用正则表达式搜索文本,并把匹配的行打印出来
  • ps aux 是显示所有进程和其状态。
ps aux | grep nfs
ps aux | grep rpcbind

指令参考

ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。 
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 
ps -e 此参数的效果和指定"A"参数相同。 
ps e 列出程序时,显示每个程序所使用的环境变量。 
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。 
ps -H 显示树状结构,表示程序间的相互关系。 
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 
ps s 采用程序信号的格式显示程序状况。 
ps S 列出程序时,包括已中断的子程序资料。 
ps -t  指定终端机编号,并列出属于该终端机的程序的状况。 
ps u  以用户为主的格式来显示程序状况。 
ps x  显示所有程序,不以终端机来区分。

验证是否自启动

如果状态为inactive,需要重启服务,再次验证

systemctl is-active nfs-server
systemctl is-active rpcbind

NFS定义共享文件目录

通过/etc/exports文件定义共享目录,vi编辑exports文件,这个步骤一定要使用root权限,否则无法编辑

sudo vi /etc/exports
# 写入(IP为服务器IP)
/opt/resources 192.168.12.0/24(rw,sync,all_squash)

修改后重启或者 重新加载共享文件列表

RPC要先于NFS启动

sudo systemctl restart rpcbind
sudo systemctl restart nfs
或者
exportfs -r

查看共享目录

exports -v

其他命令

# 卸载所有共享
exportfs -au
# 重挂所有
exportfs -ar

文件编辑格式

共享目录绝对路径    授权访问的IP或网段(权限1,权限2)
权限说明
ro                      只读访问  
rw                      读写访问  
sync                    所有数据在请求时写入共享  
async                   NFS在写入数据前可以相应请求  
secure                  NFS通过1024以下的安全TCP/IP端口发送  
insecure                NFS通过1024以上的端口发送  
wdelay                  如果多个用户要写入NFS目录,则归组写入(默认)  
no_wdelay               如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。  
hide                    在NFS共享目录中不共享其子目录  
no_hide                 共享NFS目录的子目录  
subtree_check           如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)  
no_subtree_check        和上面相对,不检查父目录权限  
all_squash              共享文件的UID和GID映射匿名用户anonymous,适合公用目录。  
no_all_squash           保留共享文件的UID和GID(默认)  
root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认)  
no_root_squash          root用户具有根目录的完全管理访问权限  
anonuid=xxx          指定NFS服务器/etc/passwd文件中匿名用户的UID  
anongid=xxx          指定NFS服务器/etc/passwd文件中匿名用户的GID

查看NFS服务器共享目录,挂载情况

showmount ip -e

客户端挂载

客户端环境准备

客户端也要按照上述步骤先安装NFS 和 RPC

新建挂载点

mkdir -p /opt/resources

挂载

mount -t nfs ip:/opt/resources/ /opt/resources/

设置开机挂载

vi /etc/rc.local

将挂载命令加入文件即可

mount -t nfs ip:/opt/resources/ /opt/resources/

验证挂载

mount |grep "/opt/resources/"

常用命令

# 使用showmount命令查看远程NFS服务器共享目录
showmount ip -e
# 新建挂载点
mkdir -p /opt/resources
# 挂载
mount -t nfs ip:/opt/resources/ /opt/resources/
# 设置开机挂载
vi /etc/rc.local
# 将挂载命令加入文件即可
mount -t nfs ip:/opt/resources/ /opt/resources/
# 验证挂载
mount |grep "/opt/resources/"

今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~