当前位置: 首页 > news >正文

rook-ceph的osd块存储权重数据迁移脚本

osd脚本

osd属于osd的存储池pool概念管理下,储存池默认三副本对应三个osd

要将osd不存储数据需要先把新的osd加入集群,有四块osd之后就可以进行旧osd下线操作,这个脚本只处理权重以及数据迁移的监控,下线以防万一还是手动执行避免误操作

进入到ceph-tools的pod中操作,将脚本放到/tmp下执行。

#!/bin/bash# 提示用户输入要操作的OSD盘号
read -p "请输入要调整的osd盘号(仅输入数字部分,例如0):" osd_num# 构建完整的OSD名称
osd_name="osd.$osd_num"echo "===== 调整前查看$osd_name的PG数量 ====="
initial_pg_count=$(ceph pg ls-by-osd $osd_name | grep -v ^PG | sed -e '/^$/d' -e '/^\*$/d' | awk '{print $1}' | grep '^[0-9]\+\.[0-9a-fA-F]\+$' | sort -u | wc -l)
echo "调整前$osd_name的PG数量:$initial_pg_count"echo -e "\n===== 设置$osd_name的权重为0 ====="
ceph osd crush reweight $osd_name 0echo -e "\n===== 验证$osd_name权重是否已设置为0 ====="
ceph osd tree | grep $osd_nameecho -e "\n===== 开始监控$osd_name的PG迁移进度(每10秒刷新一次,直到PG数量为0) ====="
current_pg_count=$initial_pg_count
interval=10  # 检查间隔时间(秒),可根据需要调整# 循环监控PG数量,直到为0
while [ $current_pg_count -gt 0 ]; do# 获取当前PG数量current_pg_count=$(ceph pg ls-by-osd $osd_name | grep -v ^PG | sed -e '/^$/d' -e '/^\*$/d' | awk '{print $1}' | grep '^[0-9]\+\.[0-9a-fA-F]\+$' | sort -u | wc -l)echo "$(date +'%Y-%m-%d %H:%M:%S') - 当前$osd_name的PG数量:$current_pg_count(剩余比例:$((current_pg_count * 100 / initial_pg_count))%)"# 如果PG数量不为0,等待指定间隔后再次检查if [ $current_pg_count -gt 0 ]; thensleep $intervalfi
doneecho -e "\n===== $osd_name的PG数量已降至0,数据迁移完成 ====="echo -e "\n===== 查看集群整体状态 ====="
ceph -s

执行案例

例如想把osd.0的盘下线,在有4块osd的基础上执行结果

在开始前查看osd的某个pg所在存储osd,执行脚本之后重新查看验证结果。

ceph pg dump | grep -E '^[0-9]+\.' | grep -v 'dumped all' | awk '{print "PG号:", $1, " 主存储OSD(ACTING_PRIMARY):", $20, " 所有存储OSD(ACTING):", $19}'  |  grep 9.6

在这里插入图片描述
具体执行时只需要输入osd的ID号即可
在这里插入图片描述
最后也可以通过命令看看osd下是否真的没有pg了,例如查看osd.0

ceph pg ls-by-osd osd.0 | grep -v ^PG | sed -e '/^$/d' -e '/^\*$/d' | awk '{print $1}' | grep '^[0-9]\+\.[0-9a-fA-F]\+$' | sort -u 

文章转载自:

http://J54WzbQI.Lxfyn.cn
http://Uja6UnXW.Lxfyn.cn
http://dQd67Ulz.Lxfyn.cn
http://De9aWOif.Lxfyn.cn
http://OmbW8HL9.Lxfyn.cn
http://zXszbSrO.Lxfyn.cn
http://wzaUz3q5.Lxfyn.cn
http://HX4Bw9k6.Lxfyn.cn
http://LQ76RGB5.Lxfyn.cn
http://OiSs6Yxw.Lxfyn.cn
http://FVkG1xiA.Lxfyn.cn
http://WuvKdLKw.Lxfyn.cn
http://j9WfWuBb.Lxfyn.cn
http://YaQe5BC4.Lxfyn.cn
http://TUaevkmm.Lxfyn.cn
http://0kYRILEh.Lxfyn.cn
http://7ZosWzVy.Lxfyn.cn
http://D61eXCxH.Lxfyn.cn
http://77OYiBUB.Lxfyn.cn
http://WWfKc105.Lxfyn.cn
http://JWp3lqYC.Lxfyn.cn
http://Lc63iV6F.Lxfyn.cn
http://AuVDxxeq.Lxfyn.cn
http://yoRzFpLx.Lxfyn.cn
http://GBwy8oAY.Lxfyn.cn
http://5eO4j4IV.Lxfyn.cn
http://AwglQjUK.Lxfyn.cn
http://GuXZIhLL.Lxfyn.cn
http://eUEBw1wV.Lxfyn.cn
http://hgHPxWcc.Lxfyn.cn
http://www.dtcms.com/a/375154.html

相关文章:

  • 少儿编程C++快速教程之——3. 数组和矩阵操作
  • 【Kubernetes知识点】CRD客户资源定义及Gateway
  • 移动开发 - Uni-app跨端跨平台开发 - 学习/实践
  • 物联网时序数据管理的利器:为何IoTDB备受青睐?
  • 意识智能体:大模型的下一个进化方向?
  • 探索大模型的前沿:从GPT到LLAMA,看看AI如何改变世界
  • 西门子 S7-200 SMART 核心指令(布尔指令、传送指令、数学运算指令和比较指令)详解
  • llama-stack实战:Python构建Llama应用的可组合开发框架(8k星)
  • App Store 软件上架全流程详解,iOS 应用发布步骤、uni-app 打包上传与审核要点完整指南
  • Linux系统命令行git的使用
  • Ubuntu服务器安装fish-speech本地语音部署教程
  • Tomcat的基础使用
  • 无人机电压模块技术剖析
  • 无人机图传通信模组——16公里抗干扰稳定传输的高性能解决方案
  • 高效 P2P 文件传输工具:FileSync 利用 WebRTC 技术实现极速安全传输
  • UOS20系统安装与 SSH/XRDP 远程访问功能配置指南
  • Spark学习(python版本)
  • 【XR行业应用】XR+工业,从远程协助到数字孪生,如何颠覆制造业?
  • 将Varjo XR技术融入飞行模拟器,有效降低成本提升训练效果
  • 深入了解linux系统—— POSIX信号量
  • K8S集群管理(2)
  • 安装JUPYTERHUB - 不使用LINUX本地用户
  • 如何实现 Vuex 中的 Store 插件
  • 少儿舞蹈小程序(11)作品与活动展示
  • crew AI笔记[6] - tools特性示例
  • 英一2009年真题学习笔记
  • 【mq】rabbit-mq学习笔记
  • 《数据库系统概论》第一章 初识数据库
  • 如何在Ubuntu 22.04系统上安装CUDA 12.9
  • 深入剖析LLM:从原理到应用与挑战