首页 > 其他分享 >NFS Server 和 Client 的配置

NFS Server 和 Client 的配置

时间:2024-02-22 15:44:43浏览次数:32  
标签:www mount 192.168 Server Client NFS 挂载 目录

NFS Server 和 Client 的配置

NFS Server 的安装

Linux 上 NFS Server 的安装及配置

在 Linux 上安装 NFS 共享服务:

yum install -y nfs-server

启动 NFS 服务:

systemctl start rpcbind
systemctl start nfs

加入开机自启动:

systemctl enable rpcbind
systemctl enable nfs

共享目录权限对应的配置文件 /etc/exports

配置参数:

  • /path/to/share/ 设置 /path/to/share 是要共享的目录
  • * 表示允许任何地址连接;可以指定IP,指定域名;
  • rw 表示允许写入;ro 表示只能读取;
  • root_squash 表示将 root 用户及所属组都映射为匿名用户或用户组(默认设置)
  • no_root_squash 与 root_squash 相反;
  • all_squash 表示将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
  • no_all_squash 与 all_squash 相反;(默认设置)
  • secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
  • insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
  • sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
  • async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

修改配置后,可以通过执行命令使配置立即生效:

exportfs -arv

生产环境中,需要通过 IP地址,读写权限,用户映射等配置进行合理配置,避免因权限问题出现安全漏洞。

配置示例

查看几个共享目录的用户和用户组

# ll /home/www/

# /home/www/root 目录的用户和用户组为 root
drwxr-xr-x  5 root      root       61 Jan  9 10:56 share
# /home/www/nfsnobody 目录的用户和用户组为 nfsnobody
drwxr-xr-x  2 nfsnobody nfsnobody   6 Jan 28 09:51 nfsnobody
# /home/www/www 目录的用户和用户组为 www
drwxr-xr-x  2 www       www         6 Jan 28 10:12 test

设置 /etc/exports 中的共享目录权限

# cat /etc/exports

# 设置 /home/www/share/ 为共享目录,将 root 用户实际映射为 root 用户及用户组
/home/www/share/ *(rw,no_root_squash,sync)
# 设置 /home/www/nfsnobody/ 为共享目录,并将所有的用户和用户组都映射为 nfsnobody
/home/www/nfsnobody/ *(rw,all_squash,sync)
# 设置 /home/www/test/ 为共享目录,并将所有的用户和用户组都映射为 www(在本机上:997 是 www 的用户ID,995 是 www 用户的组ID)
/home/www/test/ *(rw,sync,anonuid=997,anongid=995)

Linux 上通过 id username 查看对应的用户ID,用户组ID。

共享目录的权限,要与配置文件中指定的相一致,否则目录被挂载之后会出现无法创建文件的错误。

Windows Server 上 NFS Server 的安装及配置

在 Windows Server 2019 上进行安装,打开 【服务器管理器】,选择【添加角色和功能】,在弹出的窗口中一路下一步到【服务器角色】,在【角色】列表中勾选【NFS服务器】,如图所示:

image

勾选之后,再下一步,最后安装即可,安装完成后,服务器管理器的仪表板左侧的菜单中会有【文件和存储服务】这一项:

image

在【文件和存储服务】中添加 NFS 共享目录:

image

选择【NFS共享 - 快速】

image

填写【共享名称】

image

设置身份验证:

image

根据实际情况设置共享权限

image

共享权限可以设置多组:

image

NTFS 的权限

image
​​

需要通过 Web 程序访问 NFS 共享目录时,这里需要添加上一个 everyone 的权限

image

点击完检查名称后,再确认,然后设置权限为:完全控制

image
image

最后确认创建:

image
​​

NFS Client 的安装

Windows 上 NFS Client 的安装

可以参考腾讯去文档:在Windows客户端上使用CFS文件系统

调试时,通过 net use 的方式挂载共享目录,也需要在注册表中添加 AnonymousUid 和 AnonymousGid。
并且 AnonymousUid 和 AnonymousGid 的类型都是 【DWORD(32 位)值(D)】,使用【QWORD(64 位)值(Q)】的调试不通。

打开【NFS客户端】功能。(在家庭版的操作系统中,没有 NFS客户端功能,专业版和企业版中有)
以 Windows 11 为例,开始 -> 设置 -> 应用 -> 可选功能 -> 更多 Windows 功能,找到【NFS服务】,将【NFS客户端】前端勾选上。

开启【NFS客户端】功能后,需要重启电脑;
在终端(在运行窗口中执行 cmd 打开终端)中执行 mount -h 有输出 mount 的用法即为开启成功;

F:\zhpj\Desktop>mount -h
用法:  mount [-o options] [-u:username] [-p:<password | *>] <\\computername\sharename> <devicename | *>

-o rsize=size               设置读取缓冲区的大小(以 KB 为单位)。
-o wsize=size               设置写入缓冲区的大小(以 KB 为单位)。
-o timeout=time             设置 RPC 调用的超时值(以秒为单位)。
-o retry=number             设置软装载的重试次数。
-o mtype=soft|hard          设置装载类型。
-o lang=euc-jp|euc-tw|euc-kr|shift-jis|big5|ksc5601|gb2312-80|ansi
                            指定用于文件和目录名称的编码。
-o fileaccess=mode          指定文件的权限模式。
                            这些模式用于在 NFS 服务器上创建的
                            新文件。使用 UNIX 样式模式位指定。
-o anon                     作为匿名用户装载。
-o nolock                   禁用锁定。
-o casesensitive=yes|no     指定在服务器上执行区分大小写的文件查找。
-o sec=sys|krb5|krb5i|krb5p

F:\zhpj\Desktop>

Linux 上 NFS Client 的安装

如果没有 mount 命令,需要安装下 nfs 工具包:

yum install -y nfs-utils

客户端上挂载和卸载 NFS 目录

在 Windows 上挂载和卸载 NFS 目录

挂载 NFS 目录

Windows 上的 NFS Client 挂载共享目录后,默认写入文件时的用户和用户组为 -2;
Windows Server 上的 NFS Server 支持用户和用户组为 -2,所以不需要再做调整;
Linux 上的 NFS Server 写入文件时的用户和用户组必须是 root,对应的用户和用户组为 0,所以需要在注册表中配置 AnonymousUid 和 AnonymousGid

NFS Server 部署在 Linux 上

第一步:需要在注册表中添加匿名访问的用户和用户组:

在注册表(在运行窗口中执行 regedit 打开注册表)中找到路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
新建 【DWORD(32 位)值(D)】,数值名称 AnonymousUid,数值数据:0
新建 【DWORD(32 位)值(D)】,数值名称 AnonymousGid,数值数据:0

第二步:添加之后,通过在 CMD 中执行命令重启 NFS 服务,使注册表生效,或者通过重启电脑使注册表生效。
重启 NFS 服务的命令:

net stop nfsclnt
net stop nfsrdr
net start nfsrdr
net start nfsclnt

第三步:进行挂载(添加注册表只在第一次挂载的时候需要,之后再挂载时直接进行这一步即可)
命令:mount IP地址:/path/to/share 本地盘符
示例:将 192.168.131.66 上的 /home/www/test 挂载到本地的 G 盘上:

# 挂载的命令
C:\Users\zhpj>mount 192.168.131.66:/home/www/test G:
G: 现已成功连接到 192.168.131.66:/home/www/test

命令已成功完成。

C:\Users\zhpj>


# 查看已经挂载成功的目录
C:\Users\zhpj>mount

本地    远程                                 属性
-------------------------------------------------------------------------------
G:       \\192.168.131.66\home\www\test         UID=0, GID=0
                                                rsize=524288, wsize=524288
                                                mount=soft, timeout=0.8
                                                retry=1, locking=no
                                                fileaccess=755, lang=GB2312-80
                                                casesensitive=no
                                                sec=sys

C:\Users\zhpj>

NFS Server 在 Linux 上,挂载之后:UID=0, GID=0

NFS Server 部署在 Windows 上

此情况,不需要添加注册表,如果之前调试挂载 Linux 的 NFS 时,已经向注册表添加了 AnonymousUid 和 AnonymousGid,需要删除掉,并通过重启 NFS 服务 或者 重启电脑,使注册表的修改生效;

查看 NFS 服务器上可供挂载的共享目录,命令:showmount -e NFS服务器IP,
示例:

F:\zhpj\Desktop>showmount -e 192.168.131.131
导出列表在 192.168.131.131:
/nfs3                              所有计算机
/nfs2                              所有计算机
/nfs1                              所有计算机

F:\zhpj\Desktop>

将 nfs3 挂载到本地的 G 盘:
命令:mount + \\ + NFS服务器IP + \ + 共享目录 + 空格 + 本地盘符 + : + \
示例:mount \\192.168.131.131\nfs3 G:

F:\zhpj\Desktop>mount \\192.168.131.131\nfs3 G:
G: 现已成功连接到 \\192.168.131.131\nfs3

命令已成功完成。

F:\zhpj\Desktop>

挂载后,通过 mount 查看挂载情况:

F:\zhpj\Desktop>mount

本地    远程                                 属性
-------------------------------------------------------------------------------
G:       \\192.168.131.131\nfs3                 UID=-2, GID=-2
                                                rsize=32768, wsize=32768
                                                mount=soft, timeout=0.8
                                                retry=1, locking=no
                                                fileaccess=755, lang=GB2312-80
                                                casesensitive=no
                                                sec=sys

F:\zhpj\Desktop>

NFS Server 在 Windows 上,挂载之后:UID=-2 GID=-2

卸载挂载的目录

命令:umount + 挂载的盘符 + :

# 卸载共享目录的命令
C:\Users\zhpj>umount G:

正在断开连接            G:      \\192.168.131.66\home\www\nfsnobody
命令已成功完成。

C:\Users\zhpj>

在 Linux 上挂载和卸载 NFS 目录

挂载NFS目录

命令:mount -t nfs + NFS服务器IP + : + NFS服务器上共享目录的绝对路径 + 空格 + 本机挂载到的目录
示例:
将远程 192.168.29.192 上的 /www/share 挂载到本机的 /www/mnt/attach 目录

mount -t nfs 192.168.29.192:/www/share /www/mnt/attach

远程的 /www/share 和 本机的 /www/mnt/attach 这两个目录都需要已经存在。

卸载挂载的目录

命令:umount 本机挂载的目录
示例:将挂载到本机的 /www/mnt/attach 目录卸载掉:

umount /www/mnt/attach/

配置文件中的伪配置

Windows 环境下,在 config.ini 中远程附件目录的配置:

ATTACHMENT_DIR=\\192.168.131.66\home\www\test\

已将 192.168.131.66 上的 /home/www/test 挂载到本地的 G 盘上。

Linux 环境下,在 config.ini 中远程附件目录的配置:

ATTACHMENT_DIR=/www/mnt/attach

已将 192.168.29.192 上的 /www/share 挂载到本机的 /www/mnt/attach

注意:
在 Linux 环境下,不能配置成 \IP\path\to\share 的形式,此形式实际会将附件保存到本机的 server/public/\\IP/path/to/share 目录下,如在 192.168.29.115 上的测试,实际保存的路径是:

[root@localhost ~]# ll /www/wwwroot/project/server/public/\\\\192.168.30.192/
total 0
drwxr-xr-x 3 www www 19 Jan  9 14:58 www
[root@localhost ~]#

标签:www,mount,192.168,Server,Client,NFS,挂载,目录
From: https://www.cnblogs.com/zhpj/p/18027479/the-configuration-of-nfs-server-and-client-1xtjta

相关文章

  • SQL Server中文大写金额转化函数
    SQLServer中文金额、大写金额:CREATEFUNCTIONfn_GetChineseCost(@Costfloat)RETURNSvarchar(50)AS----大写金额----BEGINdeclare@returnStrvarchar(50)if(@Cost>=1000000000)Beginset@returnStr='##########'......
  • 为免费Hyper-V Server 2019打造本地图形管理界面
    Hyper-VServer是微软发布的免费虚拟化引擎,支持文本界面。本文通过在Hyper-VServer上本地安装chrome和windowsadmincenter,实现Hyper-VServer的本地图形管理界面。1、介绍Hyper-V是Microsoft的硬件虚拟化产品。它用于创建并运行计算机的软件版本,称为“虚拟机”。每......
  • KEPServerEX与数据库通讯选型大全
    数据库作为重要的基础软件,是很多软件运行的根基,在信息化时代的今天也是必不可少的基石。KEPServerEX针对不同的数据库有不同的连接方案。关系型数据库 1.DataLogger插件将OPC服务器的数据存储到任何兼容ODBC的关系型数据库支持灵活的设置触发条件,控制何时存储支持自动创......
  • sql server配置主从同步环境下的日志收缩
    两种方法:通过图形界面逐步操作:(1)打开数据库属性窗口。(2)更改数据库恢复模式,将其从“完整”改成“简单”。(3)收缩数据库日志,选择“任务”->“收缩”。(4)收缩完成后,将数据库的恢复模式修改回“完整”.使用命令:(1)将数据库的恢复模式设置为“简单”:SQLALT......
  • 分析kube-apiserver单次创建namespace耗时
    日志输出#业务日志I022022:12:39.14936440965multi_config_multi_clientset.go:63]begintowaitcachesyncI022022:12:39.25046140965multi_config_multi_clientset.go:67]waitcachesyncendI022022:12:39.25644040965multi_config_multi_clientset.go:......
  • Vue 学习笔记 3--live server
    liveserver插件在Vscode扩展插件中安装liveserver,启用扩展后展示如下所示: 单击GoLive,会运行启用网页,如下图所示: 注:使用http://127.0.0.1:5500/可查看网页下详细资源信息 ......
  • Rust 编译报 spurious network error (1 tries remaining): [7] Couldn't connect to
    现象:当执行 cargobuild时报类似错误:warning:spuriousnetworkerror(3triesremaining):[7]Couldn'tconnecttoserver(Failedtoconnectto127.0.0.1port8899after2040ms:Couldn'tconnecttoserver);class=Net(12)warning:spuriousnetworkerror......
  • 关于WebServer例程的使用
    关于WebServer例程,该例程主要实现通过网页对WCHNET网络参数的配置以及用户名密码的管理,关于该例程的使用,具体如下:首先,关于HTTPS.c文件中,以下几个数组数据需要注意一下,如下图:其中:01,02,03,04,05,06表示的是单片机网络通信的MAC地址,此处建议在使用例程时将第一个字节改为02......
  • 关于NFS 网络文件共享服务的安装、配置
    NFS中文意思是网络文件系统。它用于类linux系统之间的文件共享、类似windows系统的文件共享、磁盘映射。NFS是C/S架构,在server上设置共享目录、并设置哪些共享网段、文件查看方式等。在client上挂载server共享目录到本地就可以查看共享内容。cilent和server之间通过tcp协议进......
  • JeecgBoot集成宝兰德AppServer部署方案
    JeecgBootVersion:3.5+版本后台采用war包的打包方案。后台JeecgBoot项目打war包打war包前需要对项目进行微小改动:1、jeecg-system-start/pom.xml文件中1.1、项目格式设置为war<packaging>war</packaging>1.2、pom.xml文件删除插件spring-boot-maven-plugin下面配置......