linux下实现文件共享:搭建nfs服务器(网络共享文件系统)
Posted Tuki_a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下实现文件共享:搭建nfs服务器(网络共享文件系统)相关的知识,希望对你有一定的参考价值。
什么是NFS?工作原理
linux之间实现文件共享也可以用NFS。NFS比samba的数据优化做的更好。
NFS(Net File System)网络文件系统。
网络文件系统(NFS)是文件系统之上的一个网络抽象,
来允许远程客户端以与本地文件系统类似的方式,来通过网络进行访问。
虽然 NFS 不是第一个此类系统,但是它已经发展并演变成 UNIX系统中最强大最广泛使用的网络文件系统。
NFS 允许在多个用户之间共享公共文件系统,并提供数据集中的优势,来最小化所需的存储空间。
NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用(RPC)机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。
工作原理:
NFS的工作原理是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。
服务器程序向其他计算机提供对文件系统的访问,其过程称为输出。
NFS客户端程序对共享文件系统进行访问时,把它们从NFS服务器中“输送”出来。
文件通常以块为单位进行传输。其大小是8KB(虽然它可能会将操作分成更小尺寸的分片)。
NFS传输协议用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程地访问保存在存储设备上的数据。
其他博主总结的很好的共享原理。
NFS比samba更安全
samba的端口是固定的,139,445,易被攻击
#/etc/services有各种服务信息,可以看到端口,火墙服务文件也可以看到
nfs对外开放端口是2049(目前版本)
#在/lib/firewalld/services/nfs.xml可以看到端口信息
客户端在访问nfs服务器时,
首先访问的是rpc-bind服务,rpc-bind服务给客户端随机分配端口,
#rpc-bind服务:随机分配端口的一个程序
#随机分配端口保证了安全性
然后用这个端口去访问另外一个服务mounted,得知这台主机到底有没有共享
#mounted控管linux下所有关于挂载共享的程序
查到有共享后,告诉客户端去访问2049这个端口
如此才可访问成功!
NFS基本信息
nfs-server ##服务脚本
/etc/exports ##共享配置文件
NFS的安装与启用
安装并开启:
dnf install nfs-utils -y ##安装包,既是客户端也是服务端
systemctl start nfs-server
火墙设置:
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
测试:
showmount -e 192.168.187.129
如图访问成功!
NFS配置
vim /etc/exports ##编辑文件
写入:
共享目录 共享范围(共享参数)
/sharedir *(ro)
exportfs -rv #不重启只刷新!!!
测试:
mount 172.25.254.30:/sharedir /mnt/
NFS配置参数
vim /etc/exports ##编辑文件
rw ##读写
ro ##只读
anonuid=1000,anongid=1000 ##指定用户,用户组身份
#用的是服务端的身份,如果客户端没有,会显示id
sync ##更改生成后同步数据到服务器,只有客户端保存后才会移交给服务器
#好处是减缓负载,但突然断电什么的就客户端的数据没了
async ##实时同步数据到服务器,解决sync的问题
no_root_squash ##root用户挂载不转换身份,在当前主机用root身份挂载,那么服务器端也是root身份
#身份默认是nobody
exportfs -rv #不重启只刷新!!!
192.168.187.0/24网段的可以读写,剩下的只读
192.168.187.0/24网段的可以读写,且继承客户端的root身份,客户端服务端数据实时同步
刷新后设置生效
nfs+autofs实现自动挂载/卸载samba共享
操作类似于samba
autofs:
在客户端实现自动挂载卸载的软件
autofs的主策略文件/etc/auto.master,访问共享时的挂载策略
autofs的主配置文件/etc/autofs.conf
dnf install autofs -y #安装autofs
systemctl enable autofs.service #启用autofs
配置方式:
vim /etc/auto.master #编辑主策略文件
写入:
/test /etc/auto.nfs #名字随意,只要是xxx.nfs以nfs结尾就可以
最终挂载点的上层目录 自动以子策略文件进行挂载
!!!最终挂载点的上层目录不需要实际存在!!!
#如果上层目录是/(根)目录,那么最终挂载点的上层目录要写成/-,尽量不要以根目录作为上层目录
#如果上层目录是/(根)目录,下面的子策略文件就的最终挂载点就要写绝对路径
编辑子策略文件(要和上面写的一致/etc/auto.samba):
vim /etc/auto.nfs
最终挂载点 挂载参数 挂载资源
nfs -rw,vers=4 192.168.187.129:/sharedir
#vers是指定版本号,防止客户端服务器用的版本不一样挂载出现问题,此参数可以不写
#mount可以查看挂载信息,可以看到版本号
#这样自动挂载就会挂载在/test/nfs下,会自动产生这个目录,不需要我们手动创建,不用时自动卸载消失
vim /etc/autofs.conf
将15行的timeout=300改为3
##自动卸载时间默认300秒,我们改成3秒
重启使设置生效:
systemctl restart autofs
测试:
我们上面写的配置最终挂载点是/test/nfs
所以直接cd /test/nfs就是自动挂载了!!!
cd /root换到其他目录,过了我们设置的等待时间(上面设置了3秒)即等待资源闲置超时,挂载资源自动卸载
df可以查看挂载情况
编辑主策略文件
编辑子策略文件
挂载成功!
不想固定挂载/sharedir到/test/nfs下,想挂载/sharedir下的其他目录
mkdir /sharedir/dir{1..3}
可以在子策略文件中写入:
vim /etc/auto.nfs
* -rw,vers=4 192.168.187.129:/sharedir/&
重启使设置生效:
systemctl restart autofs
测试和上面一个道理
比如cd /test/dir1就是自动挂载
以上是关于linux下实现文件共享:搭建nfs服务器(网络共享文件系统)的主要内容,如果未能解决你的问题,请参考以下文章