当前位置: 首页 > news >正文

NFS服务器搭建

NFS服务器搭建

    • 1. NFS简介
    • 2. NFS工作原理
    • 3. 配置NFS服务端
      • 3.1 启动服务
      • 3.2 修改配置文件
    • 4. 配置NFS客户端

1. NFS简介

NFS是Network File System的简写,即网络文件系统. 网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS。
NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
NFS必须和RPC共同使用,而且只兼容类UNIX系统。通过远程过程调用(Remote Procedure Call,RPC)协议来实现了RPC服务(portmap 或rpcbind服务)。RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的port上去

2. NFS工作原理

NFS服务端和客户端之间通过随机选择端口来传输数据,NFS服务端利用RPC协议与客户端进行沟通决定使用的随机端口,然后利用这个端口来传输数据,使用的随机端口通常小于1024。RPC协议用来统一管理NFS的随机端口,其使用的端口默认为111。

通信过程:

1.客户端向服务端的rpc服务请求服务端的NFS端口
2.服务端的rpc服务返回NFS端口信息给客户端
3.客户端通过获取到的NFS端口建立和服务端的连接
4.服务端获取本地共享文件的信息
5.服务端通过NFS端口建立和客户端的连接
6.开始进行文件传输

3. 配置NFS服务端

3.1 启动服务

[root@k8s-node-02 backup]# ps -ef|grep nfs
root     123018      2  0 11:18 ?        00:00:00 [nfsiod]
root     123110   2033  0 11:18 pts/0    00:00:00 grep --color=auto nfs
[root@k8s-node-02 backup]# systemctl status nfs
● nfs-server.service - NFS server and servicesLoaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)Active: inactive (dead)
[root@k8s-node-02 backup]# systemctl start nfs
[root@k8s-node-02 backup]# systemctl enable nfs
[root@k8s-node-02 backup]# systemctl status nfs
● nfs-server.service - NFS server and servicesLoaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)Active: active (exited) since Thu 2023-02-16 11:19:14 EST; 1s agoProcess: 123374 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)Process: 123357 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)Process: 123355 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)Main PID: 123357 (code=exited, status=0/SUCCESS)Tasks: 0Memory: 0BCGroup: /system.slice/nfs-server.serviceFeb 16 11:19:13 k8s-node-02 systemd[1]: Starting NFS server and services...
Feb 16 11:19:14 k8s-node-02 systemd[1]: Started NFS server and services.

不同版本的系统可能默认安装的软件不同,如果没有该软件,需要安装

[root@k8s-node-02 backup]# yum install -y nfs-utils

3.2 修改配置文件

NFS的配置文件/etc/exports

[root@k8s-node-02 backup]# cat /etc/exports
/share *(rw,sync,no_subtree_check,no_root_squash)
[root@k8s-node-02 backup]# mkdir /configs
[root@k8s-node-02 backup]# exportfs -r				#使配置文件生效

这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在。配置项:

配置项说明
rw可读写权限。
ro只读权限。
no_root_squash当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使用者,通常它的UID与GID都会变成nobody身份。
root_squash如果登录NFS主机使用共享目录的使用者是root,那么对于这个共享的目录来说,它具有root的权限。
all_squash忽略登录NFS使用者的身份,其身份都会被转换为匿名使用者,通常即nobody。
anonuid通常为nobody,也可以自行设定这个UID的值,UID必须存在于/etc/passwd中。
anongid同anonuid,但是变为Group ID。
sync同步写入资料到内存与硬盘中。
async资料会先暂存于内存中,而非直接写入硬盘。
subtree_check如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check和上面相对,不检查父目录权限
wdelay如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide在NFS共享目录中不共享其子目录
no_hide共享NFS目录的子目录
secureNFS通过1024以下的安全TCP/IP端口发送
insecureNFS通过1024以上的端口发送
hide在NFS共享目录中不共享其子目录

如:
/home/share 192.168.88.109(rw,sync) 192.168.88.102(ro) 配置说明:对192.168.88.109赋予读写权限,102机器仅有只读权限。

4. 配置NFS客户端

服务端

[root@k8s-node-02 backup]# echo 123>/share/123[root@k8s-node-02 backup]# ll /share/
total 0
-rw-r--r--. 1 root root 0 Feb 16 11:51 123
[root@k8s-node-02 backup]#

客户端

[root@k8s-node-02 backup]# mkdir /share
[root@k8s-node-02 backup]# mount 192.168.71.183:/share /share
[root@k8s-node-02 backup]# ll /share
total 0
[root@k8s-node-02 backup]# ll /share
total 0
-rw-r--r-- 1 root root 0 Feb 16 11:51 123
http://www.lryc.cn/news/8940.html

相关文章:

  • 【数据挖掘实战】——航空公司客户价值分析(K-Means聚类案例)
  • AnlogicFPGA-IO引脚约束设置
  • Java SSM 笔记(一)重置版
  • centos安装java,目录授权
  • 【大数据】HADOOP-YARN容量调度器多队列配置详解实战
  • 加密技术在android系统安全中的应用
  • KNN&K-means从入门到实战
  • SpringBoot整合RabbitMQ
  • Hive---安装教程
  • MySQL作业四
  • 云原生安全检测器 Narrows(CNSI)的部署和使用
  • 【并发编程】【3】Java线程 创建线程与线程运行
  • Ambire 最新消息——2023 年 1 月
  • 【kubeflow | 镜像源的解决方法——脚本】
  • function calling convention(函数调用约定)
  • errgroup 原理简析
  • Centos7.6 下 Docker 安装
  • C++11--lambda表达式
  • 四【Spring框架】
  • 树与二叉树 总复习
  • window10安装MySQL数据库
  • 羊了个羊游戏开发教程3:卡牌拾取和消除
  • SHA1详解
  • Go并发介绍及其使用
  • 小米手机屏幕解锁技巧精选
  • 「SDOI2009」HH去散步
  • 用上Visual Studio后,我的世界游戏的构建时间减少了一半
  • 34、基于51单片机锂电池电压电流容量检测仪表LCD液晶显示 原理图PCB程序设计
  • 【Java基础】泛型(一)-基础使用
  • 学Python不会不知道NumPy计算包吧,带你五分钟看懂NumPy计算包