NFS的安装配置
网络文件系统(NFS)
NFS的全称是Network FileSystem,即网络文件系统
NFS主要实现的功能是让网络上的不同操作系统之间共享数据。
NFS首先在远程服务端(共享数据的操作系统)共享出文件或者目录,然后远端共享出来的文件或者目录就可以通过挂载(mount)的方式挂接到本地的不同操作系统上,最后,本地系统就可以很方便的使用远端提供的文件服务,操作起来像在本地操作一样。从而实现了数据的共享。
NFS Server端的配置
NFS的主要配置文件只有一个/etc/exports,配置非常简单,设置格式为:
共享资源路径 [主机地址] [选项]
例如:下面是某系统/etc/exports的设置:
/webdata *(sync,rw,all_squash)
/tmp *(rw,no_root_squash)
/home/share 192.168.1.*(rw,root_squash) *(ro)
/opt/data 192.168.1.18(rw)
-
共享资源路径:就是要共享出来的目录或者磁盘分区。例如上面的/tmp、/home/share目录等,这些目录存在于NFS Server端,以供NFS Client挂载使用。
-
主机地址:设定允许使用NFS Server共享资源的客户端主机地址,主机地址可以是主机名、域名、IP地址等,支持匹配。
-
选项:下面是可用的各个选项含义:
默认选项:(ro,sync,root_squash,no_all_squash)
- ro: 即为:read only,也就是客户端主机对共享资源仅仅有读权限。
- rw: 即为:read write,也就是客户端主机对共享资源有读、写权限。
- no_root_squash: 信任客户端,根据用户UID进行判断,如果登入到NFS主机的用户是ROOT,那么此用户就拥有对共享资源的最高权限。此参数很不安全,建议不要使用。
- root_squash:系统预设值,当登入NFS主机的用户root 时,那么这个使用者的权限将被縮成为匿名使用者,也就是它的UID与GID都会变成nobody身份;只有可读权限,系统以此为预设值,显然是为了安全考虑。
- all_squash:不管登陆NFS主机的是什么用户,都会将共享文件的UID和GID映射为匿名用户nobody。
- no_all_squash:系统预设值,保留共享文件的UID和GID默认权限。也就是客户端用户的UID以及GID和服务端共享文件UID和GID相同时,才有对共享文件的读写权限。这种选项保证了共享文件的用户和组权限不会改变。
- sync:资料同步写入磁盘中。默认选择。
- async:资料会先暂时存放在内存中,不会直接写入硬盘。
利用exportfs命令即可让修改生效
重新mount 文件/etc/exports中分享出来的目录,显示mount过程,操作如下:
exportfs -rv
- -r :重新mount /etc/exports中分享出来的目录。
- -v :在 export 的時候,将详细的信息输出到屏幕上。
- –a 输出本机所有共享
- –au 停止本机所有共享
实操配置NFSserver
安装
ubuntu
apt install nfs-kernel-server
redhat系
yum install nfs-utils -y
检查软件是否安装
$ rpm -qa | grep nfs
libnfsidmap-0.25-19.el7.x86_64
nfs-utils-1.3.0-0.68.el7.x86_64
$ rpm -qa | grep rpcbind
rpcbind-0.2.0-49.el7.x86_64
配置server配置文件
$ cat /etc/exports
/data *(rw,root_squash)
/tmp 10.1.2.*(rw,no_root_squash)
生效配置
$ exportfs -rv
exporting 10.1.2.*:/tmp
exporting *:/data
启动服务
nfs
rpcbind
nfslock
# 启动三个服务
$ systemctl start nfs rpcbind nfslock
# 查看这三个服务的状态
$ systemctl status nfs rpcbind nfslock
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: active (exited) since 日 2022-04-10 03:09:34 CST; 7s ago
Process: 2051 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
Process: 2034 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 2033 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 2034 (code=exited, status=0/SUCCESS)
Tasks: 0
CGroup: /system.slice/nfs-server.service
4月 10 03:09:34 hexug systemd[1]: Starting NFS server and services...
4月 10 03:09:34 hexug systemd[1]: Started NFS server and services.
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
Active: active (running) since 日 2022-04-10 02:13:46 CST; 55min ago
Process: 580 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
Main PID: 588 (rpcbind)
Tasks: 1
CGroup: /system.slice/rpcbind.service
└─588 /sbin/rpcbind -w
4月 10 02:13:46 hexug systemd[1]: Starting RPC bind service...
4月 10 02:13:46 hexug systemd[1]: Started RPC bind service.
● rpc-statd.service - NFS status monitor for NFSv2/3 locking.
Loaded: loaded (/usr/lib/systemd/system/rpc-statd.service; static; vendor preset: disabled)
Active: active (running) since 日 2022-04-10 03:09:34 CST; 7s ago
Process: 2019 ExecStart=/usr/sbin/rpc.statd $STATDARGS (code=exited, status=0/SUCCESS)
Main PID: 2022 (rpc.statd)
Tasks: 1
CGroup: /system.slice/rpc-statd.service
└─2022 /usr/sbin/rpc.statd
4月 10 03:09:34 hexug systemd[1]: Starting NFS status monitor for NFSv2/.....
4月 10 03:09:34 hexug rpc.statd[2022]: Version 1.3.0 starting
4月 10 03:09:34 hexug rpc.statd[2022]: Flags: TI-RPC
4月 10 03:09:34 hexug rpc.statd[2022]: Initializing NSM state
4月 10 03:09:34 hexug systemd[1]: Started NFS status monitor for NFSv2/3.....
Hint: Some lines were ellipsized, use -l to show in full.
ubuntu
systemctl restart nfs-server rpcbind
关闭防护墙
关闭selinux
sed -ri.bak 's/^(SELINUX=).*$/\1disabled/' /etc/selinux/config
关闭iptables
iptables -F
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
生效配置
setenforce 0
NFS客户端的设定
客户端系统也是linux,首先需要在客户端安装nfs-utils和rpcbind两个服务
$ rpm -qa | grep nfs
libnfsidmap-0.25-19.el7.x86_64
nfs-utils-1.3.0-0.68.el7.x86_64
$ rpm -qa | grep rpcbind
rpcbind-0.2.0-49.el7.x86_64
查看server端的共享
showmount -e 10.1.2.3
客户端要使用NFS Server提供的共享资源,使用mount命令挂载就可以了:
挂载的格式:
mount -t nfs Hostname(or IP):/directory /mountpoint
- Hostname:用来指定NFS Server的地址,可以是IP地址或主机名。
- /directory:表示NFS Server共享出来的目录资源。
- /mountpoint:表示客户端主机指定的挂载点。通常是一个空目录。
开机挂载:/etc/fstab
172.16.0.1:/public /mnt/nfs nfs defaults 0 0
例如:
mount -t nfs 192.168.60.133:/mydata /data/nfs
客户端实操
查看共享
$ showmount -e 10.1.2.3
Export list for 10.1.2.3:
/data *
/tmp 10.1.2.*
挂载
$ mount -t nfs 10.1.2.3:/data data1/
$ df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 985M 0 985M 0% /dev
tmpfs 1000M 0 1000M 0% /dev/shm
tmpfs 1000M 9.0M 991M 1% /run
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/sda2 50G 4.4G 46G 9% /
/dev/sda5 45G 33M 45G 1% /data
/dev/sda1 1014M 170M 845M 17% /boot
tmpfs 200M 0 200M 0% /run/user/0
10.1.2.3:/data 45G 33M 45G 1% /data/data1
本文来自博客园,作者:厚礼蝎,转载请注明原文链接:https://www.cnblogs.com/guangdelw/p/17125684.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类