前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >统信服务器操作系统V20 1070e【NFS服务部署】

统信服务器操作系统V20 1070e【NFS服务部署】

作者头像
Kevin song
发布2024-07-04 11:25:55
1050
发布2024-07-04 11:25:55
举报

NFS

网络文件系统(Network File System)是一种分布式文件系统,通过网络共享远程目录。使用NFS可以在系统上挂载远程目录,并像对待本地文件一样使用远程计算机上的文件。默认情况下,NFS协议未加密,并且与Samba不同,它不提供用户身份验证。客户端的IP地址或主机名限制了对服务器的访问。

NFS在文件传送或信息传送过程中依赖于RPC协议,RPC远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制,NFS本身是没有提供信息传输的协议和功能的。

NFS、RPC介绍

NFS是一个文件系统,负责管理分享的目录;rpc负责文件的传递;nfs启动时至少有rpc.nfsd和rpc.mountd 2个daemon;rpc.nfsd主要是管理客户机登陆nfs服务器时,判断客户机是否能登陆,和客户机ID信息;rpc.mountd主要是管理nfs的文件系统。当客户机顺利登陆nfs服务器时,会去读/etc/exports文件中的配置,然后去对比客户机的权限;

协议使用端口

  • RPC:111 tcp/udp
  • nfsd:2049 tcp/udp
  • mountd:RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768--65535)来进行通讯 注意:在/etc/nfsmount.conf文件中可指定mountd的端口

操作系统信息

代码语言:javascript
复制
[root@nfs-server ~]# cat /etc/os-release 
PRETTY_NAME="UOS Server 20"
NAME="UOS Server 20"
VERSION_ID="20"
VERSION="20"
ID=uos
HOME_URL="https://www.chinauos.com/"
BUG_REPORT_URL="https://bbs.chinauos.com/"
VERSION_CODENAME=fuyu
PLATFORM_ID="platform:uel20"
[root@nfs-server ~]# uosinfo 
#################################################
Release:  UOS Server release 20 (fuyu)
Kernel :  5.10.0-74.uel20.x86_64
Build  :  UOS Server 20 (1070e) 20240423 amd64
#################################################

nfs-server 部署

安装 nfs

代码语言:javascript
复制
[root@nfs-server ~]# dnf  install  rpcbind nfs-utils

查看 nfs 版本

代码语言:javascript
复制
[root@nfs-server ~]# rpm -qa | grep nfs-utils
nfs-utils-help-2.5.1-8.up3.uel20.05.x86_64
nfs-utils-idmap-2.5.1-8.up3.uel20.05.x86_64
nfs-utils-2.5.1-8.up3.uel20.05.x86_64

开启 nfs 服务

代码语言:javascript
复制
[root@nfs-server ~]# systemctl   start rpcbind.service
[root@nfs-server ~]# systemctl   status  nfs

查看 nfs 支持的版本信息

代码语言:javascript
复制
[root@nfs-server ~]#  cat   /proc/fs/nfsd/versions 
-2 +3 +4 +4.1 +4.2

创建 nfs 共享目录

代码语言:javascript
复制
mkdir -p /nfs/{public,app}

NFS共享目录配置

vim /etc/exports

代码语言:javascript
复制
/nfs/public 192.168.0.0/255.255.0.0(ro,sync,all_squash)
/nfs/app 192.168.0.0/255.255.0.0(rw,sync,all_squash)
  • /nfs/app 读写
  • /nfs/public 只读

/etc/exports 参数说明

代码语言:javascript
复制
rw:可读写
ro: 只读
no_root_squash:对root用户不压制,如果客户端以root用户写入,在服务端都映射为服务端的root用户
root_squash:默认情况使用的是相反参数root_squash,如果客户端是用户root操作,会被压制成nobody用户
all_squash: 不管客户端的使用nfs的用户是谁,都会压制成nobody用户
insecure: 允许从客户端过来的非授权访问
sync: 数据同步写入到内存和硬盘
async: 数据先写入内存,不直接写入到硬盘
anonuid: 指定uid的值,此uid必须存在于/etc/passwd中
anongid: 指定gid的值

nfs 共享目录

代码语言:javascript
复制
[root@nfs-server nfs]# exportfs   -v
/nfs/public     192.168.0.0/255.255.0.0(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,all_squash)
/nfs/app        192.168.0.0/255.255.0.0(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,all_squash)
[root@nfs-server nfs]# exportfs   -rv
exporting 192.168.0.0/255.255.0.0:/nfs/app
exporting 192.168.0.0/255.255.0.0:/nfs/public

exportfs 参数

  • -r: Reexport all directories,表示重新导出所有目录
  • -v: verbose 输出详情

设置文件夹的权限

代码语言:javascript
复制
[root@nfs-server /]# chown -R  nobody:nobody /nfs/{public,app}

重启服务

代码语言:javascript
复制
[root@nfs-server /]# systemctl  restart  rpcbind.service 
[root@nfs-server /]# systemctl  restart   nfs

防火墙配置

代码语言:javascript
复制
[root@nfs-server /]# firewall-cmd   --add-service={nfs,mountd,rpc-bind} --permanent
[root@nfs-server /]# firewall-cmd  --reload

Linux 客户端

安装nfs客户端

代码语言:javascript
复制
[root@nfs-server ~]# dnf install nfs-utils -y

Ubuntu系统下软件包名称为"nfs-common"

代码语言:javascript
复制
apt install nfs-common -y

重启rpcbind服务

代码语言:javascript
复制
[root@localhost /]# systemctl  restart  rpcbind.service

showmount 测试

使用showmount命令测试NFS服务器的输出目录状态,showmount命令的基本格式为:

showmount [选项] NFS服务器名称或地址

  • -a:显示指定的NFS服务器的所有客户端主机及其所连接的目录;
  • -d:显示指定的NFS服务器中已被客户端连接的所有输出目录;
  • -e:显示指定的NFS服务器上所有输出的共享目录。
代码语言:javascript
复制
[root@localhost ~]# showmount  -e 192.168.190.82
Export list for 192.168.190.82:
/nfs/app    192.168.0.0/255.255.0.0
/nfs/public 192.168.0.0/255.255.0.0

mount 挂载

mount 服务器名或IP地址:输出目录 本地挂载目录

创建挂载目录

代码语言:javascript
复制
mkdir  -p /data/{app,public}
chmod -R 777 /data/{app,public}

挂载目录

代码语言:javascript
复制
读写目录
[root@localhost /]# mount -t nfs  192.168.190.82:/nfs/app  /data/app
只读目录
[root@localhost /]# mount -t nfs  192.168.190.82:/nfs/public  /data/public

挂载目录写入文件测试

umount 卸载

代码语言:javascript
复制
[root@localhost /]# umount /data/public/

设置开机挂载

编辑/etc/fstab文件

vim /etc/fstab

代码语言:javascript
复制
192.168.190.82:/nfs/app /data/app       nfs     vers=4,nolock,proto=tcp,_netdev 0 0

检查fstab文件

代码语言:javascript
复制
mount -a

fstab 参数介绍

参数

说明

192.168.190.82:/nfs/app

nfs 共享目录

/data/app

挂载目录

nfs

挂载类型

vers=4

挂载NFSv4文件系统

nolock

禁用nfs locking,不启用lock,默认选项包括文件锁

noacl

设置是否在挂载时使用NFSACL协议

proto=tcp

在不稳定的复杂网络环境中建议使用tcp参数,在稳定的网络下可以使用udp参数。NFSv3/NFSv4支持tcp/udp,NFSv2只支持udp。

rsize=1048576

定义数据块的大小,用于客户端与文件系统之间读取数据。建议值:1048576。

wsize=1048576

定义数据块的大小,用于客户端与文件系统之间写入数据。建议值:1048576。

hard

在文件存储NAS暂时不可用的情况下,使用文件系统上某个文件的本地应用程序时会停止并等待至该文件系统恢复在线状态。建议启用该参数。

timeo=600

指定时长,单位为0.1秒,即NFS客户端在重试向文件系统发送请求之前等待响应的时间。建议值:600(60秒)。

retrans=2

NFS客户端重试请求的次数。建议值:2。

_netdev

防止客户端在网络就绪之前开始挂载文件系统。

noresvport

在网络重连时使用新的TCP端口,保障在网络发生故障恢复时不会中断连接。建议启用该参数。

0

非零值表示文件系统应由dump备份。对于NAS,此值为0。

0

该值表示fsck在启动时检查文件系统的顺序。对于NAS文件系统,此值应为0,表示fsck 不应在启动时运行。

Windows 客户端

安装 NFS 客户端

windows mount 帮助

挂载

代码语言:javascript
复制
mount \\192.168.190.82\nfs\app x:

卸载

代码语言:javascript
复制
umount x:

查看nfs目录

NFS 服务器 uid/gid 映射

在集群环境中,每台主机相同用户账号,但是分配的uid/gid是不同的。当多主机后端的存储为同一个共享存储,这时就会遇到一个问题,NFS协议是通过uid来控制文件读写权限的,主机中用户写入的文件uid与其他主机不同,就无法被其他主机读取或修改,出现权限错误的问题。

创建用户

代码语言:javascript
复制
useradd  -u 1234 -s /sbin/nologin  -M nfsuser
  • -u : 指定用户uid
  • -M: --no-create-home 不创建用户home目录
  • -s : --shell 指定用户的shell

修改用户id和组id

代码语言:javascript
复制
usermod  -u 1234 nfsuser
groupmod -g 1234 nfsuser

创建 nfs 共享目录

代码语言:javascript
复制
mkdir /data/nfs
chown -R nfsuser:nfsuser /data/nfs

编辑 nfs 配置文件

代码语言:javascript
复制
[root@nfs-server /]# vi /etc/exports
/data/nfs 192.168.0.0/255.225.0.0(rw,sync,all_squash,anonuid=1234,anongid=1234)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档