NFS概述
NFS(Network File System)网络文件系统,主要用于Linux系统上实现文件共享的一种协议,其客户端主要是Linux。
没有用户认证机制,且数据在网络上传送的时候是明文传送,一般只能在局域网中使用支持多节点同时挂载及并发写入
企业应用:为集群中的webserver提供后端存储(做静态资源服务器)
环境准备
编号 | IP地址 | 作用 |
---|---|---|
1 | 192.168.66.143 | Web服务器 |
2 | 192.168.66.138 | NFS服务器 |
NFS组成
rpcbind:负责NFS的数据传输,远程过程调用tcp/udp协议端口 ==111==
nfs-utils:控制共享哪些文件,权限管理
RPC(Remote Procedure Call Protocol)是一种远程过程调用协议。
它允许一个程序通过网络从另一台计算机上的程序请求服务,而无需了解底层的网络技术细节。简单来说,RPC使得不同计算机之间的程序可以像在同一台计算机上一样互相调用和通信。
安装NFS软件
yum install rpcbind nfs-utils -yrpm -q rpcbind
NFS的配置文件
NFS 的配置文件为/etc/exports(服务端进行配置)
格式为: 共享的目录位置 客户机地址(权限选项)
/test888 192.168.78.0/24(rw,sync,no_root_squash)
将/text888目录共享给192.168.78.0网段的所有用户
# vim /etc/exports共享目录 共享选项
/share *(ro,sync)共享主机:
* 代表所有主机
192.168.0.0/24 代表共享给某个网段
192.168.0.0/24(rw) 192.168.1.0/24(ro) 代表共享给不同网段
192.168.0.254 共享给某个IP
*.zking.com 代表共享给某个域下的所有主机共享选项:
ro: 只读
rw: 读写
sync: 实时同步,直接写入磁盘
async: 异步,先缓存在内存再同步磁盘
anonuid: 设置访问nfs服务的用户的uid,uid需要在/etc/passwd中存在
anongid: 设置访问nfs服务的用户的gid
root_squash: 默认选项 root用户创建的文件的属主和属组都变成nobody,其他人nfs-server端是它自己, client端是nobody。
no_root_squash: root用户创建的文件属主和属组还是root, 其他人server端是它自己uid, client端是nobody。
all_squash: 不管是root还是其他普通用户创建的文件的属主和属组都是nobody
anonuid和anongid参数和all_squash一起使用。 all_squash表示不管是root还是其他普通用户从客户端所创建的文件在服务器端的拥有者和所属组都是nfsnobody;服务端为了对文件做相应管理,可以设置anonuid和anongid进而指定文件的拥有者和所属组。
NFS任务解决方案
创建一个共享目录,如/share
# mkdir /share
编写NFS主配置文件
# vim /etc/exports共享目录 共享选项
/share 192.168.66.1/24(rw,sync)
启动相关的NFS服务
手动加载NFS共享服务时,应该先启动rpcbind,再启动nfs
systemctl start rpcbind
systemctl start nfssystemctl enable rpcbind
systemctl enable nfs# ss -naltp | grep 111 # 111端口
查看本机发布的 NFS 共享目录
exportfs -rvexporting 192.168.66.1/24:/share
showmount -eExport list for localhost.localdomain:
/share 192.168.66.1/24
在客户机中访问 NFS 共享资源
安装 nfs-utils、rpcbind 软件包
rpm -q rpcbind nfs-utils
yum -y install nfs-utils rpcbindsystemctl start rpcbind
systemctl enable rpcbind
查看 NFS 服务器端共享了哪些目录
showmount -e 192.168.66.138Export list for 192.168.66.138:
/share 192.168.66.1/24
mkdir /nfsdata
mount 192.168.66.138:/share /nfsdata
df -Th文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 4.8G 13G 28% /
/dev/sda1 xfs 1014M 187M 828M 19% /boot
tmpfs tmpfs 378M 60K 378M 1% /run/user/0
/dev/sr0 iso9660 9.6G 9.6G 0 100% /run/media/root/CentOS 7 x86_64
192.168.66.138:/share nfs4 17G 4.8G 13G 28% /nfsdata
搭建Web服务器
# yum install httpd -y
# systemctl start httpd
当Apache软件启动完毕后,会自动占用计算机的80端口。
80端口指向web服务器的目录 => /var/www/html
所以项目源代码都可以直接存放于 /var/www/html 目录
记得关闭防火墙与SELinux
在Web服务器中挂载NFS
# mkdir /var/www/html/mediamount 192.168.66.138:/share /var/www/html/media
或
mount -t nfs 192.168.66.138:/share /var/www/html/media
或
mount.nfs 192.168.66.138:/share /var/www/html/media
上传到NFS服务器的/share
第一步:使用MX上传素材到/share目录(NFS服务器)
第二步:在Web服务器中,ll /var/www/html/media目录
第三步:通过浏览器访问该文件
设置自动挂载
vim /etc/fstab192.168.66.138:/share /var/www/html/media nfs defaults,_netdev 0 0
强制卸载 NFS
如果服务器端NFS服务突然间停掉了,而客户端正在挂载使用时,在客户端就会出现执行 df -h 命令卡死的现象。
这个时候直接使用 umount 命令是无法直接卸载的,需要加上 -lf 选项才能卸载。
umount -lf /var/www/html/media