Linux安装和配置NFS服务
0 条评论环境:
RedHat系:
RedHat 8;nfs-utils 2.3.3
同时兼容RedHat系列的系统如CentOS、Fedora等。
Debian系:
Deepin 20.2.2;nfs-kernel-server 1.3.4
同时兼容Debian系列的系统如Ubuntu、Chrome OS等。
使用Redhat8和Deepin20两种系统来配置,代表了RedHat系和Debian系的NFS服务配置,其实两类系统差别不大只是软件包不同,不同点都分开写了,那些没有分开写的配置就代表是一样的。
NFS服务器
Network File System 网络文件系统,基于内核的文件系统。Sun 公司开发,通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。主要用于Linux之间文件共享。
基于RPC(Remote Procedure Call Protocol 远程过程调用)实现,采用C/S模式,客户机发送一个请求信息给服务进程,然后等待访问端应答。服务端在收到信息之前会保持睡眠状态。
NFS文件系统常运用于内网,因为它部署方便、简单易用、稳定、可靠,如果是大型环境则会用到分布式文件系统比如FastDFS、HDFS、MFS。
安装软件
RedHat系安装:
需要的软件包nfs-utils和rpcbind
nfs-utils:是NFS服务器的主要软件包。
rpcbind:由于NFS基于RPC服务实现所以依赖此包,一般情况下安装了nfs-utils后会自动安装。
yum install nfs-utils rpcbind
Debian系安装:
需要的软件包nfs-kernel-server,这是Debian下NFS服务器的主要软件包;
rpcbind与RedHat一样是NFS服务的依赖包,一般情况下安装了nfs-kernel-server以后会自动安装。
apt install nfs-kernel-server rpcbind
配置
主配置文件:/etc/exports如果没有就创建即可。
共享目录 主机(权限) [主机2(权限)]
##例子:
/doc *(ro,sync)
/tool *(rw,sync,no_root_squash)
参数解释
**共享目录:**需要用NFS共享出去的目录
**主机:**指定哪些主机可以用此NFS
**权限:**此共享目录的权限
关于共享目录:
指定需要共享给其他主机的目录,格式为绝对路径
关于主机:
单个主机IP地址:192.168.0.200
一个子网:192.168.0.0/24
单个主机域名:www.htype.top
域下的所有子域名:.htype.top
所有主机:
关于权限:
权限里包括目录访问权限,用户映射权限等等,权限之间用,分隔
共享目录访问权限:
**只读:**ro
**读写:**rw
sync:同步,数据同时写入内存与磁盘中,效率低,但可以保证数据的一致性(1.0.0版本后为默认);
async:异步,数据先保存在内存中,必要时写入磁盘,可提高性能但服务器意外停止会丢失数据;
all_squash:不论登陆者以什么身份,都会被映射为匿名用户(nfsnobody);
no_all_squash:以登陆者的身份,不做映射,包括文件所属用户和组(默认);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认);
no_root_squash:开放客户端使用root的身份来操作服务器文件系统,命令文档写的“主要用于无盘客户端”;
anonuid=xxx:所以用户都映射为匿名账户,并指定UID(用户ID);
anongid=xxx:所有用户都映射为匿名账户,并指定GID(组ID);
只列举了一些常用的参数,如果需要查询详细参数可以执行命令man exports来查看配置手册。
生效配置:
exportfs -r #立即生效配置#
查看共享信息
exportfs -v #查看共享目录信息#
exportfs -r #立即生效配置#
防火墙配置:
需要放行的服务:rpc-bind,mountd,nfs
##放行服务:
firewall-cmd --add-service=rpc-bind --permanent
firewall-cmd --add-service=mountd --permanent
firewall-cmd --add-service=nfs --permanent
firewall-cmd --reload #重新加载防火墙配置#
开启/关闭/重启/自启
RedHat系命令:
systemctl enable nfs-server.service #开机自启#
systemctl start nfs-server.service #开启服务#
systemctl stop nfs-server.service #停止服务#
systemctl restart nfs-server.service #重启服务#
Debian系命令:
systemctl enable nfs-kernel-server.service #开机自启#
systemctl start nfs-kernel-server.service #开启服务#
systemctl stop nfs-kernel-server.service #停止服务#
systemctl restart nfs-kernel-server.service #重启服务#
客户端
查看服务器共享的目录
showmount -e IP地址 #查看服务器共享了哪些目录#
如果提示没有这个命令就需要安装:
yum install nfs-utils #RedHat系安装命令#
apt install nfs-common #Debian系安装命令#
挂载目录:
mount IP:目录 挂载点
mount 192.168.1.2:/mnt /mnt #将192.168.1.2的nfs共享目录/mnt 挂载到本地/mnt#
开机自动挂载:
nano /etc/fstab #编辑文件#
##添加下面行:
192.168.1.2:/mnt /mnt nfs defaults 0 0
与传统挂载磁盘不同的是,需挂载的设备改成了NFS地址的方式。挂载点还是那个熟悉的挂载点。
/etc/exports配置举例
例1
需求:以异步方式共享一个所有主机都可以登陆的目录,这个目录允许所有账户都以匿名用户方式创建/修改/运行文件(包括root用户)。
配置文件应该这样写:
/mnt/sangeng *(rw,sync,all_squash)
all_squash将所有用户都映射为匿名用户;root_squash将root用户也映射为匿名用户,因为是默认值所有没写。
例2
需求:以同步方式共享一个所有主机都可登陆的目录,这个目录允许客户端里所有用户都具有读写权限,且每个用户独立维护自己的内容,用户之间不能更改对方文件的权限,并且保留Root权限。
配置文件应该这样写:
/mnt/sangeng *(rw,sync,no_root_squash)