CentOS NFS共享目录

最近遇到一个问题,一台CentOS7应用服务器上的服务需要访问另外一台CentOS7应用服务器上的文件,然后传输文件给第三方。想到windows系统之间有文件共享的功能,Linux系统之间是否也有类似的文件共享功能呢?

NFS

NFS 代表Network File System,即网络文件系统。它是一种分布式文件系统协议,允许一个系统在网络上与他人共享目录和文件。通过NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,这极大地促进了文件共享和协作。

NFS最初由Sun Microsystems开发,并迅速成为了Unix系统间实现文件共享的标准。随着时间的发展,它也被移植到了其他操作系统上,包括Windows、Linux以及各种版本的Unix。

使用NFS有几个主要优点:

易于文件共享:用户可以通过网络轻松访问和使用存储在不同计算机上的文件。

简化存储管理:通过集中存储数据,NFS减少了对多个副本的需求,从而简化了存储管理。

提高效率:NFS允许用户同时从多个客户端访问相同的文件,提高了工作效率。

NFS的工作原理涉及服务器和客户端之间的交互。服务器端设置并导出文件系统供网络中的其他机器访问,而客户端则挂载这些远程文件系统到本地文件树中,使得它们看起来就像本地文件一样。

NFS经历了几个版本的发展,目前最常见的是NFSv3和NFSv4,后者提供了改进的安全性和性能。

服务端

检查是否安装nfs-utils、rpcbind

复制代码
rpm -qa|grep nfs-utils

root@app-0002 temp# rpm -qa|grep nfs-utils

nfs-utils-1.3.0-0.54.el7.x86_64

复制代码
rpm -qa | grep rpcbind

root@app-0002 temp# rpm -qa | grep rpcbind

rpcbind-0.2.0-44.el7.x86_64

没有,则手动安装

复制代码
sudo yum install -y nfs-utils rpcbind

启动rpcbind

复制代码
sudo systemctl start rpcbind#开机自启sudo systemctl enable rpcbind

启动nfs-server​​​​​​​

复制代码
sudo systemctl start nfs-server#开机自启sudo systemctl enable nfs-server

创建目录/disk01/temp(如果已有目录,则不需要创建)

复制代码
sudo mkdir -p /disk01/temp

设置目录权限​​​​​​​

复制代码
#至少644 所有用户可读sudo chmod 755 /disk01/temp #可选sudo chown nobody:nobody /disk01/temp

编辑/etc/exports文件,添加共享配置​​​​​​​

复制代码
vi /etc/exports#文件最下面添加/disk01/temp 10.96.41.0/24(rw,sync,no_root_squash,no_subtree_check)

10.96.41.0/24:允许访问的客户端ip(10.96.41.1~254)

(rw,sync,no_root_squash,no_subtree_check):挂在选项(读写、同步写入、允许客户端以root用户身份访问共享目录、禁用子树选项等)

或者指定具体的ip,多个ip之间空格隔开

复制代码
/disk01/temp 10.96.41.98(rw,sync,no_root_squash,no_subtree_check) 10.96.41.99(rw,sync,no_root_squash,no_subtree_check)

应用NFS配置

复制代码
sudo exportfs -ra

验证共享是否生效

复制代码
sudo exportfs -v

客户端

检查是否安装nfs-utils

复制代码
rpm -qa|grep nfs-utils

root@app-0002 temp# rpm -qa|grep nfs-utils

nfs-utils-1.3.0-0.54.el7.x86_64

没有,则手动安装

复制代码
sudo yum install -y nfs-utils

创建目录/disk01/temp

复制代码
sudo mkdir -p /disk01/temp

挂载共享目录

复制代码
sudo mount 10.96.41.62:/disk01/temp  /disk01/temp

mount会根据设备的文件系统类型(如ext4、xfs、nfs)自动挂载,也可以使用-t <文件系统类型>

复制代码
sudo mount -t nfs 10.96.41.62:/disk01/temp  /disk01/temp

将10.96.41.62:/disk01/temp目录挂载在本机的/disk01/temp目录

验证挂载

复制代码
df -h

设置开机自动挂载

注意:不设置的话,服务器重启后,会发现挂载目录没有了,需要重新挂载。

复制代码
vim /etc/fstab

最后一行下面加入

复制代码
10.96.41.62:/disk01/temp  /disk01/temp  nfs defaults 0 0

测试写的配置是否有问题

复制代码
mount -a

最后,在客户端或者服务端目录下创建一个测试文件,看对方是否能看到,然后删除测试文件。

问题

1、检查客户端

rpm -qa|grep nfs

mount | grep /disk01/temp

2、卸载客户端挂载,重新挂载

sudo umount /disk01/temp

sudo mount -t nfs 10.96.41.62:/disk01/temp /disk01/temp

3、设置服务端共享目录权限

sudo chmod 755 /disk01/temp (至少644 所有用户可读)

相关推荐
SkyWalking中文站1 小时前
认识 Horizon UI · 11/17:运行时规则与实时调试
运维·监控·自动化运维
阿里云大数据AI技术21 小时前
阿里云 EMR AI 助手正式发布:从问答工具到全栈智能运维助手
运维·人工智能
orion572 天前
Missing Semester Class1:course overview and introduction of shell
linux
SkyWalking中文站2 天前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
用户120487221612 天前
Linux驱动编译与加载
linux·嵌入式
火车叼位2 天前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
用户805533698032 天前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式
用户805533698032 天前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式
小猿姐2 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
七歌杜金房3 天前
我终于又有了自己的 Linux 电脑
linux·debian·mac