前言服务器上面全天的负载可能存在不同,现在需要知道,之前环境上面负载的情况怎么样如果没做监控工具情况下,想看历史数据,这个就需要用到sar的历史记录了
方法通过对sar的历史数据的读取可以查看整个服务器上面的io之和,虽然不能精确到每个磁盘,但是也能够反应一定的磁盘的负载情况
1234567891011121314sar -b -f /var/log/sa/sa05[root@node101 zp]# sar -b -f /var/log/sa/sa0512:00:01 AM tps rtps wtps bread/s bwrtn/s12:10:01 AM 4578.54 3889.63 688.90 1153527.13 158204.9412:20:01 AM 4691.51 3983.55 707.96 1245905.96 149193.8812:30:02 AM 4408.08 3704.57 703.51 1180006.65 162309.0012:40:01 AM 9830.09 ...
暂未分类
未读说明本篇记录一些字符串的处理方法,这里不具体讲完整的方法,只记录遇到的需要处理的情况
用例用例一:解析ceph.log的ops由于ops的单位是有的带k的有的不带k的,那么需要匹配处理
字符串示例:
12021-01-13 11:09:55.664479 mgr.node103 client.994548 172.168.30.103:0/265828031 659839 : cluster [DBG] pgmap v218541: 6976 pgs: 6976 active+clean; 178TiB data, 358TiB used, 370TiB / 728TiB avail; 11.4MiB/s rd, 163MiB/s wr, 1.98kop/s
1234567891011cat ceph-20210113 |grep -v noout|awk '{gsub("op/s","",$28); print $1,$2,$28}'|awk '{if($3~/k/) {gs ...
需求由于迁移忽快忽慢,需要知道大概的迁移的时间,做了一个简单的统计脚本,可能不准,大概能够知道在什么范围内
脚本1234567891011121314151617181920#! /bin/shwhile ( 2>1 )do start=`ceph -s|grep pgs|grep mis|awk '{print $2}'|cut -d / -f 1`sleep 5end=`ceph -s|grep pgs|grep mis|awk '{print $2}'|cut -d / -f 1`speed=$((start-end))#echo $end#echo $speedsecond=$((end/speed*5))hour=$(( $second/3600 ))min=$(( ($second-${hour}*3600)/60 ))sec=$(( $second-${hour}*3600-${min}*60 ))echo 当前时间:`date ...
需求说明有的时候我们做测试,需要把当前的时间,精准的往前或者往后调整个几秒钟,这个我写成了一个脚本,方便调整思路是当前时间转换成unix时间,计算后,算到当前时间,然后设置
脚本1234567891011121314timenow=`date`unixtimenow=`date +%s`echo $timenowecho $unixtimenowunixtimenew=$(($unixtimenow-2000))echo $unixtimenewnewtime=`date -d @$unixtimenew "+%Y-%m-%d %H:%M:%S"`echo $newtimedate -s "$newtime"
上面的-2000就是往历史调整2000秒,需要往未来调整就改成+就行了,比较简单
总结留存备用
前言环境因为一些问题(网络,或者磁盘,或者其它各种异常),引起了集群的状态的一些变化,变化之后,集群的某些虚拟机正常某些虚拟机出现异常,异常现象就是无法启动特别是win server2008 ,会一直卡在滚动条这里
这个问题很久前碰到过一个哥们出现过,他问我是否遇到过,这个之前遇到过一次无法启动的,通过导出导入的方式解决了,当时一直也没找到原因这个哥们告诉我,通过关闭rbd的属性后,就可以正常启动了,当时就记了下,也没分析更深层次的原因最近有一个环境因为时间过快,往回调整了十几分钟,集群出现mon选举,osd出现闪断以后,部分虚拟机出现无法启动的情况
问题分析导入导出或者克隆基本可以判断数据是没有问题的,那么应该就是其它问题通过关闭属性可以解决,那么大概能够定位到这几个属性相关的
1features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
而锁文件是最大的怀疑,之前处理ctdb的时候,就有过锁没有加上超时时间,然后ctdb挂掉以后,锁不会自动释放的问题,怀疑这个地方类似
我们的rbd的镜像如下
123 ...
暂未分类
未读前言有的时候需要做个单页的网页显示,这个直接用python启动即可,但是存在一个问题,停止进程以后,如果网页正在被访问,socket会不释放,然后再启动就会提示端口占用,实际上是没有端口占用的
这个增加一个配置项就行
相关代码12345678910111213141516171819202122232425262728293031323334353637383940#!/usr/bin/python3from __future__ import print_functionimport SimpleHTTPServerimport SocketServerimport osimport sysimport signaldef quit(signal_num,frame): print("you stop the threading") sys.exit()path = os.path.dirname(sys.argv[0])os.chdir('/home/cephuse/output/')class ReusingTCPServer( ...
前言随机端口可能会占用后面准备使用的端口,然后在后面进程启动的时候,无法绑定端口引起服务异常
处理方法通过内核参数控制,在/etc/sysctl.conf添加
1net.ipv4.ip_local_reserved_ports=8000,8080
这个容易被冲掉,可以修改下默认的内核参数,通过tune实现
修改配置文件 /usr/lib/tuned/balanced/tuned.conf添加
12[sysctl]net.ipv4.ip_local_reserved_ports=8000,8080
然后执行
1tuned-adm profile balanced
这个相当于修改了内核的默认参数,清空 /etc/sysctl.conf也不影响执行完可以通过
1sysctl -a|grep net.ipv4.ip_local_reserved_ports
检查一下是否生效
前言有的时候为了提供一个完整的包,需要把一些零散的文件或者脚本汇总在一起提供,rpm包就是一个很好的方法,这里我们不需要复杂的写法,就纯粹打包的,复杂的可以参考内核或者其它软件包的打包方法
spec文件信息12345678910111213141516171819202122232425262728293031Name: cephuseVersion: 1.0Release: 1%{?dist}Summary: monitor ceph use spaceGroup: Development/ToolsLicense: GPLURL: http://www.zphj1987.comBuildRequires: pythonSource: cephuse-1.0.tar.gz%descriptionuse to monitor ceph%prep%setup -q%installinstall -D -m 644 cephuse.service %{buildroot}/usr/lib/s ...
前言内核模块的更新一般需要卸载模块再加载,但是很多时候使用场景决定了无法做卸载的操作,而linux支持了热更新内核模块的功能,这个已经支持了有一段时间了,一直没有拿ceph的相关模块进行验证
注意模块的某些函数是不支持的,init的部分是不支持的,补丁弄完验证一下就可以知道支不支持,不支持的部分会提示
准备工作先检查当前的版本支持不
12345[root@lab101 kpatch]# cat /boot/config-3.10.0-1062.el7.x86_64 |grep PATCHCONFIG_HAVE_LIVEPATCH=yCONFIG_LIVEPATCH=yCONFIG_DVB_BUDGET_PATCH=mCONFIG_SND_HDA_PATCH_LOADER=y
可以看到默认内核是支持的,这个是红帽维护的一个体系,自己的内核,肯定会很快集成进去的
安装依赖包
12[root@lab102 ~]# yum install elfutils-devel rpm-build[root@lab102 ~]# rpm -ivh kernel-debuginfo-common-x8 ...
##前言如果想访问一个ceph里面的s3地址,但是又不想直接提供secrect key的时候,可以通过预签名的方式生成url
生成方法下载boto3
脚本如下
123456789101112131415161718192021cat s3.pyimport boto3from botocore.client import Configs3_host="http://192.168.0.201:7481"# Get the service client with sigv4 configureds3 = boto3.client('s3', aws_access_key_id = "test",aws_secret_access_key = "test",endpoint_url = s3_host, config=Config(signature_version='s3v4'))# Generate the URL to get 'key-name' from ...