宅男做网站,网页游戏网站大全突袭,唯品会购物商城,手机验证登录网站开发目录 Linux之NFS服务器
简介
NFS背景介绍
生产应用场景
NFS工作原理
NFS工作流程图
流程
NFS的安装
安装nfs服务
安装rpc服务 启动rpcbind服务同时设置开机自启动
启动nfs服务同时设置开机自启动
NFS的配置文件
主配置文件分析 示例
案例 --- 建立NFS服务器#…目录 Linux之NFS服务器
简介
NFS背景介绍
生产应用场景
NFS工作原理
NFS工作流程图
流程
NFS的安装
安装nfs服务
安装rpc服务 启动rpcbind服务同时设置开机自启动
启动nfs服务同时设置开机自启动
NFS的配置文件
主配置文件分析 示例
案例 --- 建立NFS服务器使用客户端访问
第一步服务端及客户端进行预处理
第二步服务端server主机建立文件共享目录设置权限
第三步服务端server主机编辑配置文件
第四步服务端server必须先启动rpc服务在启动nfs服务
第五步客户端node1进行挂载远程目录
第六步客户端node1实现开机挂载永久挂载 Linux之NFS服务器
简介
NFS背景介绍 FS是一种古老的用于在UNIX/Linux主机之间进行文件共享的协议。它古老到你必须穿着白大褂才能接近一台计算机的年代。在那个年代所有的联网计算机都被认为是可信的而不像现今这样任何人都有多种多样方法能连接到你的计算机。因此NFS在开发的时候专注于快速及易用的文件共享而忽视了其安全性设计 NFSNetwork File System网络文件系统是FreeBSD支持的文件系统中的一种它允许网络中的计算机不同的计算机、不同的操作系统之间通过TCP/IP网络共享资源主要在unix系列操作系统上使用。 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中而在本地端的系统中看来那个远程主机的目录就好像是自己的一个磁盘分区一样。 由于NFS支持的功能比较多而不同的功能都会使用不同的程序来启动每启动一个功能就会启用一些端口来传输数据因此NFS的功能所对应的端口并不固定而是随机取用一些未被使用的小于1024的端口用于传输。但如此一来就会产生客户端连接服务器的问题因为客户端需要知道服务器端的相关端口才能够连接。此时就需要RPC RPCRemote Procedure Call远程过程调用由于服务器在启动NFS时会随机选取数个端口号并主动向RPC注册所以RPC知道每个NFS功能所对应的端口号RPC将端口号通知给客户端让客户端可以连接到正确的端口上去。RPC采用固定端口号port 111来监听客户端的需求并向客户端响应正确的端口号。 注 在启动NFS之前要先启动RPC否则NFS会无法向RPC注册。另外RPC若重新启动原来注册的数据会消失不见因此RPC重启后它管理的所有服务都需要重新启动以重新向RPC注册。 生产应用场景 NFS网络文件系统很像windows系统的网络共享、安全功能、网络驱动器映射这也和linux系统里的Samba服务器类似。只不过一般情况下windows网络共享服务或Samba服务用于办公局域网共享而互联网中小型网站集群架构后端常用NFS进行数据共享如果是大型网站那可能会用到更复杂的分布式文件系统。 在企业集群架构的工作场景中NFS作为所有前端web服务的共享存储存储的内容一般包括网站用户上传的图片、附件、头像等注意网站的程序代码就不要放在NFS共享里了因为网站程序是开发运维人员统一发布不存在发布延迟问题直接批量发布到web节点提供访问比共享到NFS里访问效率会更高些。 NFS是当前互联网系统架构中常用的数据存储服务之一中小型网站2000万pv(页面浏览量)以下公示应用频率居高大公司或门户除了使用NFS外还可能会使用更为复杂的分布式文件系统
NFS工作原理
NFS工作流程图 流程 首先服务器端启动RPC服务并开启111端口 服务器端启动NFS服务并向RPC注册端口信息 客户端启动RPCportmap服务向服务端的RPC(portmap)服务请求服务端的NFS端口 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。服务器搭建成功后可以使用下列命令查看,一般都是2049
NFS的安装
安装nfs服务
[rootlocalhost ~]# yum install nfs-utils -y 安装rpc服务
[rootlocalhost ~]# yum install -y rpcbind 启动rpcbind服务同时设置开机自启动
[rootlocalhost ~]# systemctl start rpcbind
[rootlocalhost ~]# systemctl enable rpcbind 启动nfs服务同时设置开机自启动
[rootlocalhost ~]# systemctl start nfs-server
[rootlocalhost ~]# systemctl enable nfs-server NFS的配置文件 主配置文件 --- /etc/exports , 文件不一定存在 /usr/sbin/exportfs --- 该文件是维护NFS共享目录资源的命令文件可以使用命令重新共享/etc/exports的目录资源、卸载共享目录 日志目录 --- /var/lib/nfs 权限设置文件 --- /var/lib/nfs/etab
主配置文件分析 etc/exports 文件默认为空文件需要输入nfs共享命令 格式 --- 共享目录的路径 允许访问的NFS客户端共享参数 分析 允许访问的NFS客户端可以写完整的IP地址或IP网段如 --- 192.168.149.128/24192.168.149.128/255.255.255.0*允许所有主机都可以访问 权限参数 --- 必须写在圆括号中且是紧挨着主机名全选的相关参数如下多个参数之间使用逗号隔开
权限参数作用ro只读rw读写最终还要看文件系统rwx权限root_squash当NFS客户端以root账户访问时映射为NFS服务器端的匿名账户nobodyno_root_squash当NFS客户端以root账户访问时映射为root账户不推荐、不安全all_squash无论NFS客户端使用什么账户访问均映射为NFS 服务器的匿名账户nobody,推荐no_all_squash客户端普通账户访问服务器的数据时实际的信息原样显示anonuid anongid将文件的用户和工作组映射为指定UID和GID若不指定则默认为65534nobodysync同步同时将数据写入内存与硬盘中保证数据不会丢失async异步优先将数据保存到内存然后在写入硬盘效率高但可能会数据丢失 示例
/home/public *(rw,sync) : 共享/home/public目录下的数据允许所有主机访问可读可写同步读写/home/public 192.168.48.13/24(ro,all_squash,sync) : 共享/home/public目录下的数据只对192.168.48.13/24主机开放账户映射为nobody 只读同步读写/home/public 192.168.48.0/24(ro,all_squash,sync,anonuid2000,anongid2000) :对192.168.48.0/24网段所有主机开放/home/public目录下数据只读方式账户映射为nobodyuid为2000gid2000
案例 --- 建立NFS服务器使用客户端访问
第一步服务端及客户端进行预处理
# 关闭selinux及防火墙软件
[rootlocalhost ~]# setenforce 0
[rootlocalhost ~]# systemctl stop firewalld
[rootlocalhost ~]# yum install nfs-utils -y # server及node1都执行 第二步服务端server主机建立文件共享目录设置权限
[rootlocalhost ~]# mkdir /nfsfile
[rootlocalhost ~]# chmod -Rf 777 /nfsfile/
[rootlocalhost ~]# echo Welcome wo www.joker14.com /nfsfile/readme 第三步服务端server主机编辑配置文件
[rootlocalhost ~]# vim /etc/exports# 输入以下内容
/nfsfile 192.168.149.137/24(rw,all_squash,sync) 第四步服务端server必须先启动rpc服务在启动nfs服务
[rootlocalhost ~]# systemctl start rpcbind
[rootlocalhost ~]# systemctl start nfs-server
[rootlocalhost ~]# systemctl enable nfs-server
[rootlocalhost ~]# systemctl enable rpcbind 注意 若启动rpcbind后报错则可以先停止服务在重新启动rpcbind [rootlocalhost ~]# systemctl stop rpcbind
[rootlocalhost ~]# systemctl start rpcbind 第五步客户端node1进行挂载远程目录
[rootlocalhost ~]# mkdir /nfs1 # 新建本地挂载目录
[rootlocalhost ~]# showmount -e 192.168.149.128 # 查看远程主机的共享数据信息
Export list for 192.168.149.128:
/nfsfile 192.168.149.137/24
[rootlocalhost ~]# mount -t nfs 192.168.149.128:/nfsfile /nfs1 # 远程挂载
[rootlocalhost ~]# cd /nfs1/ # 通过本地挂载目录访问远程共享数据
[rootlocalhost nfs1]# ls
[rootlocalhost nfs1]# cat readme 第六步客户端node1实现开机挂载永久挂载
[rootlocalhost nfs1]# vim /etc/fstab
# 输入以下内容
192.168.149.128:/nfsfile /nfs1 nfs defaults 0 0