NFS搭建

NFS搭建

  • 单节点安装配置
    • 服务器
    • 安装
    • 配置
    • 启动并使NFS服务开机自启
    • 客户端挂载
      • 查看是否能发现服务器的共享文件夹
      • 创建挂载目录
      • 临时挂载
      • 自动挂载
  • 双节点安装配置
    • 服务器
    • 安装
    • 配置
      • 服务端
        • 配置NFS服务端
        • 配置Keepalived
        • 编辑nfs_check.sh监控脚本
        • 安装部署Rsync+Inofity
      • 客户端

单节点安装配置

服务器

操作系统IP地址子网掩码角色
alma linux9.310.168.31.18016server
alma linux9.310.168.31.18116client
alma linux9.310.168.31.18216client
alma linux9.310.168.31.18316client

安装

在每台机器上执行下列的命令

dnf install -y nfs-utils rpcbind

配置

NFS配置文件 /etc/exports

  1. 挂载目录
    一般来说,会挂载一块高性能磁盘,作为NFS的目录使用。本文未挂载额外磁盘,磁盘挂载请参考此文章,其余相同。
    这里使用数据目录为/nfs,如果没有需要自行创建。
mkdir /nfs
  1. 访问的主机
IP允许范围
10.168.31.180单个主机
10.168.0.0/1610.168.31.181
10.168.0.*10.168.31.182
主机名DNS A解析 轮询
  1. 权限
权限作用
rw可读可写
ro只读
sync写到磁盘才算完成,安全,慢
async异步写到远程缓冲区,快,不安全
no_root_squash‌允许NFS客户端上的root用户对NFS共享目录拥有至高权限
no_all_squash‌客户端所有用户拥有服务端匿名用户权限
echo '/nfs 10.168.0.0/16(rw,sync,no_root_squash,no_all_squash)' >> /etc/exports

启动并使NFS服务开机自启

systemctl start nfs-server.service
systemctl enable nfs-server.service

客户端挂载

查看是否能发现服务器的共享文件夹

showmount  -e IP

服务器的共享文件夹

创建挂载目录

mkdir /nfs

临时挂载

NFS客户端挂载的命令格式

# 挂载命令   挂载的格式类型  NFS服务器提供的共享目录          NFS客户端要挂载的目录(必须存在)
# mount 	 -t nfs        <server-ip>:/<shared-directory>  /nfs
# 示例:
mount -t nfs 10.168.31.180:/nfs /nfs

自动挂载

# NFS服务器提供的共享目录  		   NFS客户端要挂载的目录(必须存在)  挂载的格式类型   挂载时使用的参数  是否进行备份  fsck检查文件系统的优先级	 
# <server-ip>:/<shared-directory>  /nfs                            nfs             defaults         0            0
# 示例:
echo '10.168.31.180:/nfs /nfs nfs defaults 0 0' >> /etc/fstab

双节点安装配置

服务器

操作系统IP地址子网掩码角色
alma linux9.310.168.31.18016server
alma linux9.310.168.31.18116server
alma linux9.310.168.31.18216client
alma linux9.310.168.31.18316client
alma linux9.310.168.31.17116vip

安装

在每台机器上执行下列的命令

dnf install -y nfs-utils rpcbind

同时,对10.168.31.180和10.168.31.181两个服务端做Keepalived负载均衡。具体配置参考Keepalived部署。

配置

服务端

配置NFS服务端

参考单节点服务端配置

配置Keepalived

参考Keepalived部署

配置文件需要在参考文章基础上做修改

mkdir -p  /etc/keepalived
cat <<EOF | tee /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LVS_DEVEL
}# 增加脚本
vrrp_script chk_nfs {script "/etc/keepalived/nfs_check.sh"   interval 2weight -20  
}
vrrp_instance VI_1 {state MASTER		 		 #主节点interface ens160virtual_router_id 51 #相同id管理同一个虚拟路由priority 100         #优先级advert_int 1authentication {auth_type PASSauth_pass 1111}# 引用脚本track_script {chk_nfs}virtual_ipaddress {10.168.31.171/16 dev ens160 label ens160:1}
}
EOF
编辑nfs_check.sh监控脚本
mkdir -p  /etc/keepalived
cat <<EOF | tee /etc/keepalived/nfs_check.sh
#!/bin/bash
A=\`ps -C nfsd --no-header | wc -l\`
if [ \$A -eq 0 ];thensystemctl restart nfs-server.servicesleep 2if [ \`ps -C nfsd --no-header| wc -l\` -eq 0 ];thenpkill keepalivedfi
fi
EOF
chmod +x /etc/keepalived/nfs_check.sh
安装部署Rsync+Inofity

两台master节点都要操作

  1. 安装软件
dnf install -y rsync inotify-tools

inotify-tools无法安装可以先换成阿里源

dnf install -y https://mirrors.aliyun.com/epel/epel-release-latest-9.noarch.rpm
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
dnf install -y inotify-tools
  1. 配置
    在第一个主节点
cat <<EOF | tee /etc/rsyncd.conf
uid = root
gid = root
# 如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。
# 这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。
# 默认情况下chroot值为true。
use chroot = yes
port = 873
#允许ip访问设置,可以指定ip或ip段
hosts allow = 10.168.0.0/16      
max connections = 0
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
transfer logging = yes
syslog facility = local3# 模块名称,和comment对应
[master]
# 要同步的目录
path = /nfs          
# 当前节点模块名称          
comment = master
# 是否允许客户端上传文件              
ignore errors
read only = no                    
list = no
# 指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块
auth users = rsync      
# 保存密码和用户名文件,需要自己生成          
secrets file = /etc/rsync/rsyncd.passwd
EOF# 创建自定义配置文件目录
mkdir /etc/rsync# 密码和用户文件(格式为"用户名:密码")
cat <<EOF | tee /etc/rsync/rsyncd.passwd
rsync:123456
EOF# 编辑同步密码(注意这个文件和上面的密码和用户文件路径不一样)
# 该文件内容只需要填写从服务器的密码,例如这里从服务器配的用户名密码都是rsync:123456,则主服务器则写123456一个就可以了
cat <<EOF | tee /etc/rsync/slave.passwd
123456
EOF# 设置文件执行权限
chmod 600  /etc/rsync/rsyncd.passwd
chmod 600  /etc/rsync/slave.passwd# 设置开机启动
echo "/usr/bin/rsync --daemon" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

另外一个节点的配置需要修改rsyncd.conf文件内模块的名称为slave,其余相同。

测试

rsync -avzP  --progress --delete  --timeout=100 /nfs/  rsync@10.168.31.181::slave  --password-file=/etc/rsync/slave.passwd 

rsync常用命令

# -v,--verbose  详细模式输出,传输是的进度信息
# -z,--compress  传输是进行压缩以提高传输效率,--comperess -level = NUM可以按级别压缩
# -a,--archive  归档模式,表示以递归方式传输文件,并保持所有文件属性(等于-rtopgDl)
# --port 指定端口
# -e 'ssh -p 2222' 指定使用ssh及其端口
# --timeout 超时时间
# --partial-dir 临时目录,传输完毕,移动到正式目录
# --password-file 指定存密码的文件
# --progress 打印进度
# --delete 删除目标目录中源目录没有的文件
# -P 支持断点,综合了--partial --progress两个参数
  1. 配置自动同步

在主节点

# 自动同步脚本
cat <<EOF | tee /etc/rsync/rsync_inotify.sh
#!/bin/bash
#配置另外一个节点的IP
host=10.168.31.181
#配置另外一个节点的名称
des=slave
src=/nfs/
password=/etc/rsync/slave.passwd
user=rsync
inotifywait=/usr/bin/inotifywait\$inotifywait -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib /nfs/ \\
| while read files ;dorsync -avzP  --progress --delete  --timeout=100 /nfs/  rsync@10.168.31.181::slave  --password-file=/etc/rsync/slave.passwd  done
EOF# VIP监控脚本
cat <<EOF | tee /etc/rsync/vip_monitor.sh
#!/bin/bash
VIP_NUM=\`ip addr|grep 31.171|wc -l\`
RSYNC_INOTIRY_NUM=\`ps -ef|grep /usr/bin/inotifywait|grep -v grep|wc -l\`
if [ \${VIP_NUM} -ne 0 ];thenecho "VIP在当前NFS节点服务器上" >/dev/null 2>&1if [ \${RSYNC_INOTIRY_NUM} -ne 0 ];thenecho "rsync_inotify.sh脚本已经在后台执行中" >/dev/null 2>&1elseecho "需要在后台执行rsync_inotify.sh脚本" >/dev/null 2>&1/bin/bash -x /etc/rsync/rsync_inotify.sh  >/dev/null 2>&1fi
elseecho "VIP不在当前NFS节点服务器上" >/dev/null 2>&1if [ \${RSYNC_INOTIRY_NUM} -ne 0 ];thenecho "需要关闭后台执行的rsync_inotify.sh脚本" >/dev/null 2>&1ps -ef|grep rsync_inotify.sh|grep -v grep|awk '{print \$2}'|xargs kill -9ps -ef|grep /usr/bin/inotifywait|grep -v grep|awk '{print \$2}'|xargs kill -9elseecho "rsync_inotify.sh脚本当前未执行" >/dev/null 2>&1fi
fi
EOF# 持续执行脚本
cat <<EOF | tee /etc/rsync/rsync_monit.sh
#!/bin/bash
while [ "1" = "1" ]
do/bin/bash -x /etc/rsync/vip_monitor.sh >/dev/null 2>&1
done
EOF# 设置rsync_monit.sh脚本的开机启动
chmod 755 /etc/rsync/rsync_inotify.sh
chmod 755 /etc/rsync/vip_monitor.sh
chmod 755 /etc/rsync/rsync_monit.sh
echo "nohup sh /etc/rsync/rsync_monit.sh > /tmp/rsync_monit.log 2>&1 & " >> /etc/rc.d/rc.local

在从节点

# 自动同步脚本
cat <<EOF | tee /etc/rsync/rsync_inotify.sh
#!/bin/bash
#配置另外一个节点的IP
host=10.168.31.180
#配置另外一个节点的名称
des=master
src=/nfs/
password=/etc/rsync/slave.passwd
user=rsync
inotifywait=/usr/bin/inotifywait\$inotifywait -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib /nfs/ \\
| while read files ;dorsync -avzP  --progress --delete  --timeout=100 /nfs/  rsync@10.168.31.180::master --password-file=/etc/rsync/slave.passwd  done
EOF# VIP监控脚本
cat <<EOF | tee /etc/rsync/vip_monitor.sh
#!/bin/bash
VIP_NUM=\`ip addr|grep 31.171|wc -l\`
RSYNC_INOTIRY_NUM=\`ps -ef|grep /usr/bin/inotifywait|grep -v grep|wc -l\`
if [ \${VIP_NUM} -ne 0 ];thenecho "VIP在当前NFS节点服务器上" >/dev/null 2>&1if [ \${RSYNC_INOTIRY_NUM} -ne 0 ];thenecho "rsync_inotify.sh脚本已经在后台执行中" >/dev/null 2>&1elseecho "需要在后台执行rsync_inotify.sh脚本" >/dev/null 2>&1/bin/bash -x /etc/rsync/rsync_inotify.sh  >/dev/null 2>&1fi
elseecho "VIP不在当前NFS节点服务器上" >/dev/null 2>&1if [ \${RSYNC_INOTIRY_NUM} -ne 0 ];thenecho "需要关闭后台执行的rsync_inotify.sh脚本" >/dev/null 2>&1ps -ef|grep rsync_inotify.sh|grep -v grep|awk '{print \$2}'|xargs kill -9ps -ef|grep /usr/bin/inotifywait|grep -v grep|awk '{print \$2}'|xargs kill -9elseecho "rsync_inotify.sh脚本当前未执行" >/dev/null 2>&1fi
fi
EOF# 持续执行脚本
cat <<EOF | tee /etc/rsync/rsync_monit.sh
#!/bin/bash
while [ "1" = "1" ]
do/bin/bash -x /etc/rsync/vip_monitor.sh >/dev/null 2>&1
done
EOF# 设置rsync_monit.sh脚本的开机启动
chmod 755 /etc/rsync/rsync_inotify.sh
chmod 755 /etc/rsync/vip_monitor.sh
chmod 755 /etc/rsync/rsync_monit.sh
echo "nohup sh /etc/rsync/rsync_monit.sh > /tmp/rsync_monit.log 2>&1 & " >> /etc/rc.d/rc.local

客户端

挂载同单节点挂在,但是挂载IP为配置的VIP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/477407.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于CNN+RNNs(LSTM, GRU)的红点位置检测(pytorch)

1 项目背景 需要在图片精确识别三跟红线所在的位置&#xff0c;并输出这三个像素的位置。 其中&#xff0c;每跟红线占据不止一个像素&#xff0c;并且像素颜色也并不是饱和度和亮度极高的红黑配色&#xff0c;每个红线放大后可能是这样的。 而我们的目标是精确输出每个红点的…

使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介

作者&#xff1a;来自 Elastic Chema Martinez 在安全领域&#xff0c;能够使用 Windows 主机的系统遥测数据为监控、故障排除和保护 IT 环境开辟了新的可能性。意识到这一点&#xff0c;Elastic 推出了专注于 Windows 事件跟踪 (ETW) 的新功能 - 这是一种强大的 Windows 原生机…

leetcode刷题记录(四十二)——101. 对称二叉树

&#xff08;一&#xff09;问题描述 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/symmetric-tree/description/给你…

LeetCode 力扣 热题 100道(九)反转链表(C++)

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 方法一&#xff1a;迭代法 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNod…

取电快充协议芯片,支持全协议、内部集成LDO支持从UART串口读取电压电流消息

H004D 是一款支持全协议的受电端诱骗取电协议芯片&#xff0c;支持宽电压输入 3.3V~30V&#xff0c;芯片内部集成LDO&#xff0c;可输出 3.3V电压, 支持 通过UART 串口读取电压电流&#xff0c;支持定制功能&#xff0c;芯片采用QFN_20封装&#xff0c;线路简单&#xff0c;芯片…

FreeRTOS——事件标志组

一、概念与应用 1.1概念 事件是实现任务与任务或任务与中断间 通信的机制&#xff0c;用于同步&#xff0c;无数据传输。&#xff08;注意与二值信号量区分&#xff09; 与信号量不同的是&#xff0c;事件可以实现一对多、多对多的同步&#xff0c;即一个任务可以等待多个事…

window11编译pycdc.exe

一、代码库和参考链接 在对python打包的exe文件进行反编译时&#xff0c;会使用到uncompyle6工具&#xff0c;但是这个工具只支持python3.8及以下&#xff0c;针对更高的版本的python则不能反编译。 关于反编译参考几个文章&#xff1a; Python3.9及以上Pyinstaller 反编译教…

【100ask】IMX6ULL开发板用SPI驱动RC522模块

目录 一、问题汇总&#xff1a; 1.无法寻卡 2.寻卡不稳定 二、修改设备树 三、驱动程序 四、测试程序 1.rc522_ap.c 2.rc522_app.h 3.rc522_test.c 4.Makefile 前言&#xff1a; CSDN上大部分对于RC522的文章都是正点的&#xff0c;虽然文章写的挺详细&#xff0c;两…

springboot购物推荐网站的设计与实现(代码+数据库+LW)

摘要 随着信息互联网购物的飞速发展&#xff0c;一般企业都去创建属于自己的电商平台以及购物管理系统。本文介绍了东大每日推购物推荐网站的开发全过程。通过分析企业对于东大每日推购物推荐网站的需求&#xff0c;创建了一个计算机管理东大每日推购物推荐网站的方案。文章介…

小R的二叉树探险 | 模拟

问题描述 在一个神奇的二叉树中&#xff0c;结构非常独特&#xff1a; 每层的节点值赋值方向是交替的&#xff0c;第一层从左到右&#xff0c;第二层从右到左&#xff0c;以此类推&#xff0c;且该二叉树有无穷多层。 小R对这个二叉树充满了好奇&#xff0c;她想知道&#xf…

高精度计算题目合集

高精度计算题目合集 1168&#xff1a;大整数加法 1168&#xff1a;大整数加法 1168&#xff1a;大整数加法 高精度加法原理&#xff1a; a&#xff0c;b&#xff0c;c 都可以用数组表示。这些都是基于c语言的算术运算符形成的运算。 c 3 ( c 1 c 2 ) % 10 c_3(c_1c_2)\%1…

【2024APMCM亚太赛A题】完整参考论文与代码分享

A题 一、问题重述二、问题分析问题一&#xff1a;水下图像分类问题二&#xff1a;退化原因建模问题三&#xff1a;针对单一退化的图像增强方法问题四&#xff1a;复杂场景的综合增强模型问题五&#xff1a;针对性增强与综合增强的比较 三、问题假设退化特征独立性假设物理模型普…

VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源

VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源 由于需要在 Linux 环境下进行一些测试工作&#xff0c;于是决定使用 VMware 虚拟化软件来安装 Ubuntu 24.04 .1操作系统。考虑到测试过程中需要访问 Github &#xff0c;要使用Docker拉去镜像等外部网络资源&#xff0c;因此产…

C0030.Clion中运行提示Process finished with exit code -1073741515 (0xC0000135)解决办法

1.错误提示 2.解决办法 添加环境变量完成之后&#xff0c;重启Clion软件&#xff0c;然后就可以正常调用由mingw编译的opencv库了。

每日计划-1123

1. 完成 15. 三数之和 class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(), nums.end());// 待返回的三元组vector<vector<int>> triples;for(int i 0; i < nums.size(); i){// 检测重复的 n…

汇编语言基础

目录 基本套路 头部&#xff1a; 段&#xff1a; 函数&#xff1a; 导入masm32库 输入输出 加法指令 常见数据类型 定义数据类型 数据传达指令&#xff08;mov&#xff09; 加减法 常用伪指令 间接寻址 JMP和LOOP 堆栈操作 定义函数(ret,call) 位运算 jcc(跳…

React (三)

文章目录 项目地址十二、性能优化12.1 使用useMemo避免不必要的计算12.2 使用memo缓存组件,防止过度渲染12.3 useCallBack缓存函数12.4 useCallBack里访问之前的状态(没懂)十三、Styled-Components13.1 安装13.2给普通html元素添加样式13.3 继承和覆盖样式13.4 给react组件添…

MD5算法的学习

MD5_百度百科 MD5信息摘要算法&#xff08;Message-Digest Algorithm&#xff09;,一种被广泛使用的密码散列函数&#xff0c;可以产生出一个128位的&#xff08;16字节&#xff09;的散列值&#xff08;hash value&#xff09;&#xff0c;用于确保信息传输完整一致。MD5由美…

【虚拟机】VMWare的CentOS虚拟机断电或强制关机出现问题

VMware 虚拟机因为笔记本突然断电故障了&#xff0c;开机提示“Entering emergency mode. Exit the shell to continue.”&#xff0c;如下图所示&#xff1a; 解决方法&#xff1a;输入命令&#xff1a; xfs_repair -v -L /dev/dm-0 注&#xff1a;报 no such file or direct…

【论文阅读】WGSR

0. 摘要 0.1. 问题提出 1.超分辨率(SR)是一个不适定逆问题&#xff0c;可行解众多。 2.超分辨率(SR)算法在可行解中寻找一个在保真度和感知质量之间取得平衡的“良好”解。 3.现有的方法重建高频细节时会产生伪影和幻觉&#xff0c;模型区分图像细节与伪影仍是难题。 0.2. …