网站底部模板,视频直播sdk,手机卡盟网站建设,目前常用的搜索引擎有哪些目标#xff1a; 了解#xff1a;NFS 工作原理 部署#xff1a;NFS 文件共享服务 配置#xff1a;NFS 访问控制 掌握#xff1a;NFS 客户端访问方法
4.1 nfs 概述
NFS 是 Network File System 网络文件系统 的缩写#xff0c;它最大的功能就是#xff1a;…目标 了解NFS 工作原理 部署NFS 文件共享服务 配置NFS 访问控制 掌握NFS 客户端访问方法
4.1 nfs 概述
NFS 是 Network File System 网络文件系统 的缩写它最大的功能就是可以通过网络让不同的机器、不同的操作系统可以共享彼此的文件。常用于挂载持久化数据使用
一般使用云上的 nas 卷代替
NFS 主要用于UNIX/Linux服务器之间的共享目录访问
当然Windows客户端也可以访问NFS共享目录。
通俗来讲就是将服务器创建一个目录挂载到客户端那里
相当于是共享该目录可以在里面做操作或者传输文件
当几百台机器一起更新一个网页或者别的时候可以放在服务端上然后全部挂载到客户端直接解决
nfs 是文件系统 rpc 是传输数据文件系统
nfs 优点 简单容易易于掌握 方便快速部署维护简单容易 可靠从软件层面上看数据可靠性高经久耐用
nfs 局限
存在单点故障如果NFS服务器宕机了则所有NFS客户端都不能访问NFS共享目录
可以通过rsync来进行数据同步或者采用负载均衡的高可用方案解决该问题 NFS服务端在高并发的场合下性能有限。 一般几千万以下pv网页浏览量的网站不是瓶颈除非网站架构太差 NFS服务端的客户端认证是基于IP和主机名的安全性一般。 但用于内网则问题不大 NFS数据是明文的不做数据完整性验证。 一般是存放于内网提供内网的服务器使用所以安全性相对不是一个问题 多个NFS客户端挂载同一个NFS服务端时维护管理比较麻烦。当NFS服务端出问题后所有NFS客户端都会挂掉。 可使用autofs自动挂载来解决否则需要手动重新挂载
4.2 工作原理和步骤
备注NFS服务需要在RPC服务中注册端口号 rpc服务相当于中介
(1) 客户端向NFS服务器发送资源请求时客户端RPC服务通过网络向NFS服务端的RPC(111端口口)发出资源请求
(2) NFS服务端的RPC服务获取NFS服务端的注册端口然后通知客户端RPC服务
(3) 客户端收取到正确的端口之后直接与NFS服务端建立通信。
(4) NFS服务端接受资源请求之后通过本地响应读取本地磁盘中的内容然后返回给客户端完成一次存取操作
客户端不需要下载 rpcbind 只需要下载 nfs-utilf 不过两个下载都可以
工作原理图如下 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
步骤
服务机创建 共享目录 给共享目录权限 在配置文件写入内容 允许 别人挂载
客户机 将共享目录 挂载在其新创建的目录下一个新目录挂载一个共享目录
4.3 安装 RPC 和 NFS
1 安装
yum install rpcbind nfs-utils -yrpcbind ## 这是RPC服务的主体程序它会被nfs-utils程序自动依赖安装。主要职能在客户端访问NFS共享的时侯客户端通过RPC服务来获知NFS服务的端口号可以理解rpc服务就是一个中介服务因此RPC服务要先于NFS服务启动nfs-utils ## 该nfs-utils为内核中的NFS服务器提供了一个daemon守护进程它是NFS服务的主程序,该nfs-utils也包含着NFS实用程序、NFS客户端## 注意安装后会有程序用户 nfsnobody 自动创建2 启动服务
启动顺序的问题
必须先启动rpcbind服务然后再启动nfs服务
因为NFS服务需要在RPC服务中注册端口号
针对CentOS 6init机制两个都要启动 了解
## 必须先启动rpcbind服务后启动nfs服务
chkconfig rpcbind on
chkconfig nfs on
service rpcbind start service nfs start
## 查看nfs和rpc的开机自启动设置
chkconfig --list | grep -E (rpc|nfs)针对CentOS 7systemd机制 启动nfs 会自动在此之前启动 RPC
安装rpcbind程序之后rpcbind.service是默认开机自启动
## 在启动nfs-server.service服务的过程中会自动为我们先启动rpcbind.service服务更加智能方便
systemctl enable nfs
systemctl start nfs
systemctl status nfs查看开机自启情况
systemctl list-unit-files ## 查看所有服务的开机自启动情况
systemctl list-unit-files | grep enabled |grep -E (rpc|nfs) ## 查看 rpc 和 nfs 的开机自启动情况3 查看依赖
systemctl list-dependencies rpcbind
systemctl list-dependencies nfs-server4 了解端口 NFS 端口
RPC的端口号:111NFS的端口号:2049 可查看
netstat -4 -tunlp | grep -P (111|2049) | sort -k4查看RPC服务中的端口注册信息
rpcinfo -p localhost5 配置 RPC 和 NFS 防火墙
firewall-cmd --permanent --zonepublic --add-servicenfs --add-servicerpc-bind
firewall-cmd --reload## 我们在测试时候可以关闭防火墙4.4 创建 NFS 共享目录(服务端)
以 ip 为 192.168.58.100 为服务机
1 本机创建共享目录
mkdir -p /{nfstest1,nfstest2} ## 根目录下创建两个目录创几个都可以当作共享目录chmod -R orwx /{nfstest1,nfstest2} ## 共享目录给 其他人 设置权限
setfacl -R -m u:nfsnobody:rwx /{nfstest1,nfstest2} ## 设置 NFS匿名用户 的ACL权限这样客户端可以访问和操作该文件## 注意NFS客户端默认采用nfsnobody匿名用户来访问NFS共享目录2 共享导出共享目录
在 CentOS 6 中
NFS服务端通过/etc/exports配置文件来共享导出共享目录
在 CentOS 7 中
NFS服务端通过/etc/exports配置文件或者/etc/exports.d/xxx.exports配置文件来共享导出共享目录
测试最好是 创建 /etc/exports.d/xxx.exports 文件在里面写入允许别人共享内容
echo /nfstest1 192.168.58.0/24(rw) /etc/exports.d/dir01.exports ## 仅允许192.168.58.0/24网络中主机的读写访问
echo /nfstest2 192.168.58.130/24(rw) /etc/exports.d/dir02.exports ## 仅允许192.168.58.130/24网络中主机的读写访问
echo /nfstest3 *(rw) /etc/exports.d/dir03.exports ## 允许任何主机进行读写访问任何服务器都可以将它挂载到自己主机上或者 vim /etc/exports.d/test.exports
/nfstest1 192.168.58.0/24(rw)
或者
/nfstest1 192.168.58.0/24(rw,sync)保存后
exportfs -ra # 刷新配置文件
或者
systemctl restart nfs-server # 重启服务
showmount -e # 查看验证配置文件是否写错
showmount -e 192.168.58.100 # 查看指定ip 的共享目录服务端共享参数
参数作用ro只读 表示文件系统是只读的客户端不能修改数据只能读取rw读写 表示文件系统是读写的客户端可以读取和写入数据。sync同步写入所有数据都会立即同步到磁盘确保数据一致性但会降低性能async异步写入数据会先缓存在内存中再按一定时间间隔写入硬盘这样可以提升性能但可能会丢失部分数据root_squash客户端使用root用户访问共享时映射为普通用户如 nfsnobody的权限**默认**no_root_squash客户端使用root用户访问共享时直接将其映射为 NFS 服务器上的root用户权限all_squash不管客户端使用的是哪个用户都会映射成nfsnobody用户的权限通常用于限制客户端的访问权限no_all_squash无论什么普通用户访问都不会映射成nfsnobody用户的权限保持客户端原有的 UID 和 GID**默认** 建议客户端和挂载的用户名称和uid一致如 www-data 33anonuid配置all_squash使用指定 NFS 服务器上使用的匿名用户 UID匿名用户必须在服务器系统中存在anongid配置all_squash使用指定 NFS 服务器上使用的匿名用户 GID匿名用户必须在服务器系统中存在
一般给权限都会给挺多的
vim /etc/exports 4.5 挂载共享目录 (客户端)
客户端 ip 为 192.168.58.132
记得安装 和 重启服务
yum install nfs-utils -y
systemctl list-unit-files| grep enable | grep -E (rpc|nfs)创建新目录将服务端的共享目录挂载到这里
mkdir -p /mnt/{test1test2}
mount -t nfs 192.168.58.100:/nfstest1 /mnt/test1
mount -t nfs 192.168.58.100:/nfstest2 /mnt/test2
df -h ## 到此结束已经完成将 服务端共享目录挂载到客户端
## 无论在服务端或者客户端的目录下执行操作另外一方也会跟着改变4.6 自动挂载
NFS共享文件夹autofs自动挂载
客户端进行操作
autofs自动挂载服务是一种Linux系统守护进程当检测到用户视图访问一个尚未挂载的文件系统时会自动挂载该文件系统。简单来说将挂载信息写入/etc/fstab文件中系统在每次开机时都会自动挂载而autofs服务则是在用户需要使用该文件系统时才去动态挂载从而节约了网络资源和服务器硬件资源的开销。
简单来说就是你用我就挂载你不用我就卸载 本人觉得没必要使用
1、配置文件详解
autofs服务要实现自动挂载涉及到两个文件主配置文件auto.master和次配置文件auto.misc
主配置文件写挂载的 大目录路径 和 要挂载的服务端共享目录 次配置文件写挂载的小目录名 挂载类型和权限 还有服务端共享目录
/etc/auto.master
这个文件是统一唯一的。系统配置文件里面注明了自动挂载的根目录和应用的配置文件
/mnt /etc/auto.test1 --timeout 300/mnt代表了挂载的根目录所在
auto.test1代表所应用的配置文件
--timeout300代表系统超时单位s 默认就是 300秒可不写5分钟不用会自动取消挂载用的时候自动挂载######################################/etc/auto.media 这个文件是自定义的对应master中的配置文件,里面写明了实际挂载目录挂载参数和挂载项所在位置
testdj -fstypeiso9660,loop,ro 192.168.58.100:/iso/Rhel6p4.isotestdj代表挂载位于/mnt/testdj-fstypeiso9660文件类型为光盘loop将文件模拟块设备挂载在本地roreadonly :/iso/Rhel6p4.iso镜像所在位置为/iso挂载NFS网络文件系统2、配置NFS自动挂载
客户端操作
假如服务端 ip 是 192.168.58.100 共享目录是 /cl
将该目录挂载到客户端的 /mnt/aa 目录下
1安装服务安装autofs老三样
yum install autofs -y
systemctl enable autofs systemctl start autofs2配置主配置文件
vim /etc/auto.master
添加配置内容
/mnt /etc/auto.test1 3配置次要文件 (主配置文件定义后然后新创建的)
vim /etc/auto.test1
aa -fstypenfs 192.168.58.100:/cl## 另外 aa目录不能提前创建自动挂载时系统自动创建aa目录4启动/重启/开机自启autofs服务
systemctl start/restart/enable autofs注 只有cd /mnt/aa 进去 触发一下才能自动挂载。
[root192 mnt]# ls[root192 mnt]# cd aa
[root192 aa]# cd -
/mnt
[root192 mnt]# ls
aa## 什么都没有cd进去使用的时候自动挂载4.7 实战配置nfs服务(重要)
服务端100创建共享目录 /dj 挂载到 客户端132 的 /mnt/test 下 并允许共享目录被挂载到同一网段下的机器
注意以下是已经安装 RPC 和 NFS 服务且开启服务的情况下的操作
1 服务机器
mkdir -p /dj
chmod -R orwx /dj
setfacl -R -m u:nfsnobody:rwx /dj
echo /dj 192.168.58.0/24(rw) /etc/exports.d/test.exports
exports -ra
systemctl restart nfs
showmount -e ## 验证
## vim 写入 /dj 192.168.58.0/24(rw) 也可以2 客户端机器 192.168.58.132
mkdir -p /mnt/test
showmount -e 192.168.58.100 ## 查看该ip的机器 是否有nfs共享目录
mount -t nfs 192.168.58.100:/dj /mnt/test ## 挂载 共享目录dj 到创建的 test 目录下
df -h ## 查看是否挂载成功成功则完成4.8 脚本配置nfs服务
自己做的有点小问题 有兴趣自取然后修改一下测试看看
#!bin/bash
while true
doecho ---------------------echo 1 您是服务端echo 2 您是客户端echo 3 取消返回echo ---------------------read -ep 请输入您的选择 acase $a in1) echo 正在为您安装服务和启动服务请稍后yum -y install rpcbind nfs-utils /dev/nullsystemctl start nfs /dev/nullsystemctl enable nfs /dev/nullecho 安装成功服务已启动echo 您可以一次创建一个或多个共享目录用空格隔开read -ep 创建的共享目录名是(如test1): -a gxfor b in ${gx[*]}domkdir -p /$bdoneecho 创建成功共享目录已经创建在根目录下for((i0;i${#gx[*]};i))doecho /${gx[i]} *(rw) /etc/exports.d/test${i}.exportsdoneexportfs -ar /dev/bullsystemctl restart nfs /dev/null;;2)echo 正在为您安装服务和启动服务请稍后yum -y install rpcbind nfs-utils /dev/nullsystemctl start nfs /dev/nullsystemctl enable nfs /dev/null echo 安装成功服务已启动read -ep 请创建要挂载到的目标目录(如dj1) -a gzfor((c0;c${#gz[*]};c))domkdir /mnt/${gz[c]} /dev/nulldoneecho 创建目录成功##注意这里和上面创建的目录其实方法是一样的可以互通read -ep 请输入服务端的ip地址(如 192.168.58.100) becho 您可以一次挂载一个或多个共享目录用空格隔开read -ep 输入你想挂载的共享目录(如test1) -a gxread -ep 输入你想挂载到的目录(如dj1) -a xgzfor((i0;i${#gx[*]};i))domount -t nfs $b:/${gx[i]} /mnt/${xgz[i]} /dev/nulldoneecho 挂载成功;;3)break;;*)echo echo 输入错误请按照格式输入谢谢!! ;;esacdone4.9 exportfs 和 showmount 命令
1 exportfs
exportfs -ar ## 重新共享导出所有的共享目录## 注意清空内核中老数据重新建立新数据
exportfs -s 或 exportfs -v ## 查看NFS服务端共享导出的共享目录和导出参数
exportfs -u 192.168.58.0/24:/dir01 ## 禁止共享导出指定的共享目录
exportfs -a ## 共享导出所有的共享目录**2 shoumount ** 当服务端 ip 是192.168.58.100 时候
showmount -e 或者 showmount -exports ## 查看本机器可共享导出的共享目录 ## 在服务端操作则是查看NFS服务端共享导出的共享目录
showmount -e 192.168.58.100 ## 查看指定机器可共享导出的共享目录 ## 在客户端操作则是查看NFS服务端共享导出的共享目录