目录
NFS(Network File System)是一种基于 TCP/IP 传输的网络文件系统协议,允许在网络上的不同计算机之间共享文件和目录。它最初由Sun Microsystems开发,现在已成为许多Unix和Linux操作系统的标准文件系统之一
NFS存储是一种通过NFS协议将存储设备共享给其他计算机使用的存储解决方案
NFS存储可以是任何支持NFS协议的存储设备,例如NAS(网络附加存储)设备、SAN(存储区域网络)设备或者直接连接到网络的硬盘驱动器
NFS存储通常用于以下场景:
NFS存储的优点是:
NFS存储缺点:
综上所述,NFS存储作为一种存储解决方案,具有许多优点和一些缺点,需要根据实际需求进行选择和配置
NFS通过将文件共享给其他计算机,使得不同计算机之间的文件共享变得更加容易。它使用RPC协议进行通信,使用缓存技术和文件锁定机制提高文件访问的效率和可靠性
①NFS服务器将共享的文件和目录挂载到其文件系统中的特定位置
②NFS客户端通过网络访问NFS服务器共享的文件和目录。客户端可以像访问本地文件系统一样访问这些共享文件和目录
③当NFS客户端需要访问共享的文件或目录时,它会向NFS服务器发送RPC调用请求,NFS服务器会响应这些请求并返回所请求的数据
NFS服务器软件:
NFS客户端软件:
mount.nfs
和umount.nfs
等rpcbind软件:
NFS服务主要进程:
rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
rpc.lockd 非必要,管理文件锁,避免同时写出错
rpc.statd 非必要,检查文件一致性,可修复文件
/etc/exports:一个用于配置NFS共享的文件,包含了要与其他计算机共享的目录以及相关的访问控制信息。在这个文件中,可以指定哪些目录应该被共享,以及允许哪些计算机访问这些共享目录以及以怎样的权限进行访问。每一行通常包含一个共享目录的信息,包括共享路径、允许访问的主机或子网、以及访问权限等
#/etc/exports文件格式:
#共享目录 可以访问的主机地址(权限)
/share *()
#共享目录 ? ? 网段 ? ? 读写,同步,无root权限
/share ?172.16.12.0/24(rw,sync,no_root_squash)
/etc/exports.d/*.exports:一个包含多个?.exports
?文件的目录。每个?.exports
?文件对应一个独立的NFS共享配置
/var/lib/nfs/:日志目录,用于存储NFS服务器的运行时数据和状态信息
exportfs:用于管理NFS导出的文件系统??
选项 | 说明 |
---|---|
-v | 查看本机所有NFS共享 |
-r | 重读配置文件,并共享目录 |
-a | 输出本机所有的共享 |
-au | 停止本机所有共享 |
选项 | 说明 |
---|---|
-e | 显示服务器上所有的共享目录 |
前提:关闭防火墙和临时防护
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭临时防护
要求:准备两个设备,服务端:172.16.12.10 和 客户端:172.16.12.12
#服务端和客户端都需要安装软件包
[root@localhost ~]# yum install nfs-utils.x86_64 rpcbind -y
*******************************************************************
#服务端操作
[root@localhost ~]# mkdir /share #新建共享目录
[root@localhost ~]# cd /share/ #切换到共享目录下
[root@localhost share]#echo "welcome to DNS">test #写入一些内容给供客户端读取
?#编辑配置文件
[root@localhost share]# vim /etc/exports
/share *
[root@localhost share]#showmount -e #查看本机发布的NFS共享目录
[root@localhost share]#exportfs -r #重读配置文件
[root@localhost share]#exportfs -v #查看详细的nfs信息
*******************************************************************
#客户端操作
#临时挂载,重启后实效
[root@localhost ~]#mount 172.16.12.10:/share /mnt #挂载服务器至本地文件夹
[root@localhost ~]#df -Th #查看是否挂载成功
#永久挂载,写入/etc/fstab配置文件
[root@localhost ~]#vim /etc/fstab
172.16.12.10: /share /mnt nfs defaults _netdev 0 0
#IP地址:/共享文件名 #挂载点 #文件类型 #权限 #无网不加载 #不备份 #不检查
#两种挂载方式选其中一种即可
?*******************************************************************
#测试
#客户端操作
[root@localhost ~]#cd /mnt
[root@localhost mnt]#cat test #读取共享文件
①服务端操作?
②客户端操作:
客户端默认权限为只读模式,也就是说不配置客户端的读写权限,客户端就无法创建、修改文件
?①需要配置dns软件的读取权限
?②文件系统需要读取权限
③现在客户端可以创建、修改文件
①默认情况下:
以客户端的管理员用户创建文件时,该文件的属主和属组都是nfsnobody
注:
这是因为配置文件里默认root_squash权限,客户端的管理员用户被压榨权限成为nfsnobody
以客户端的其他用户创建文件时,该文件的属主和属组都是该用户自己
②修改客户端管理员用户创建文件的权限,使之创建的文件属主和属组都是root
服务端修改配置文件
此时客户端创建文件的属主和属组都是root
如何将客户端新建文件都指定同一用户,需要设置anonuid 和 anongid
指明客户端用户映射为特定用户UID和组GID,而非其他用户,可配合all_squash使用
①服务端操作:首先创建一个新用户并指定uid号
②服务端操作:修改配置文件
③?验证,查看权限是否设置成功