问题处理
未读背景最近有碰到扇区的错误,引起osd的无法启动,经过处理,系统可以恢复了,但是扇区的错误为什么导致了osd down,怎么去模拟这个删除的问题,就需要做一些定位的工作了
我们需要模拟扇区的问题,就需要去精确的模拟到损坏的扇区,也就是比如我需要模拟某个文件的扇区损坏,那么就需要定位到这个文件属于哪些扇区
方法定位扇区通过blktrace进行模拟,这个操作是去读取文件就行,”C”是完成的请求,下面是过滤的,避免太多其它信息干扰
对磁盘的文件进行读取的请求
1blktrace -d /dev/sdb -o - | blkparse -i - | awk '$6 == "C" {print $1, $2, $6, $7, $8, $9, $10}'
输出类似下面的信息
123456788,80 8 C R 17152 + 5128,80 8 C R 17664 + 5128,80 8 C R 18176 + 5128,80 8 C R 18688 + 5128,80 8 C R 19200 + 5128,80 8 C R 19712 ...
系统服务
未读需求背景线上的项目有使用lvs作为端口转发,使用的是udp的端口转发服务,想在测试环境下面模拟一个高并发的udp的服务器和客户端的环境,现成的没有相关的软件,那么就用两个脚本进行实现
要实现这个服务,需要准备一个服务端的脚本,和客户端的脚本,服务端使用用本地文件对外提供服务,客户端请求数据流并保存到本地
需求分析考虑高并发,所以需要对软件进行一下限速,然后尽量高的并发的,一个端口响应一个请求,并发的取读取udp的请求
需求实现python实现这个实现是最开始实现的一个版本,服务端和客户端都采用的python的,一个python进程启动20个端口,然后并发启动进程,这个发现一个问题,因为python的进程占用cpu很容易100%,这个对系统的资源有点大,造成无法处理很大的并发,客户端也是,这个如果小批量的测试还是可以的,也记录下
服务端实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676 ...
需求rbd是ceph的块接口,我们可以把设备map到服务器上面,然后当磁盘进行访问,有的软件能够基于块设备再做上层的高可用的写入的,所以,从软件来说,同一个设备在两台机器同时挂载,没有什么问题,但是如果应用层不加锁,随意的写入就可能破坏了数据,造成磁盘无法访问,那么这里就是利用ceph本身的功能来实现排它的挂载
也就是同一时刻,同一个rbd,只能被一个设备挂载
配置查看rbd的属性
123456789[root@lab101 ~]# rbd info gamebaserbd image 'gamebase': size 30 GiB in 7680 objects order 22 (4 MiB objects) snapshot_count: 1 id: 5e6552f9f0e2 block_name_prefix: rbd_data.5e6552f9f0e2 format: 2 features: layering, exclusive-lock, object-map, fast-diff
我们进行挂载测试
123456789101112[root@l ...
需求之前利用傲梅轻松备份这个软件做过系统复制,这个是需要运行在windows下面的,可以利用winpe运行,然后进行系统复制,需要手动点击操作,而在需要自动化的场景,这个就不太适合了,那么有一款软件Clonezilla,这个复制的系统启动正常
使用方式官方提供了iso的和zip文件的两种方式的,iso的可以直接启动的,然后进行系统的复制,而zip里面包括一个完整的系统,可以在ipxe环境下使用,本篇就记录这个ipxe下的使用
配置方法下载解压得到启动文件
12345[root@pxe101 nbi_img]# unzip -j clonezilla-live-3.1.2-22-amd64.zip live/vmlinuz live/initrd.img live/filesystem.squashfs -d ./Archive: clonezilla-live-3.1.2-22-amd64.zip inflating: ./initrd.img inflating: ./filesystem.squashfs inflating: ./vmlinuz
完整的系统已经在里面了 ...
背景rbd的做快照,然后克隆,原始设备可以变成两个设备供客户端使用,占用的空间为1份,这个是在没有新写入情况下的容量占用情况那么如果有新写入的的数据之后,这个地方容量是怎么去看的,以及在出现写入又删除的情况下,rbd的实际占用空间又是如何释放的
相关测试操作快照后的容量占用我们先准备一个rbd的设备,并且格式化为ntfs的文件系统,然后写入一个大文件为2.4G的我们看下容量占用情况
12345678[root@lab101 ~]# rbd du gamebaseNAME PROVISIONED USEDgamebase 30 GiB 2.4 GiB[root@lab101 ~]# ceph df--- POOLS ---POOL ID PGS STORED OBJECTS USED %USED MAX AVAILrbd 9 32 2.4 GiB 631 2.4 GiB 3.22 73 GiB
占用就是这么多,我们再做一个快照
12[root@lab101 ~]# rbd snap create --im ...
背景网上有很多的winpe,有的时候确实方便,但是又怕里面放入了一些第三方的软件什么的,想要一个自定使用的纯净版的iso,本篇就是自己打的iso
方法12下载地址https://learn.microsoft.com/zh-cn/windows-hardware/get-started/adk-install
选择版本2004
下载链接
12https://go.microsoft.com/fwlink/?linkid=2120254https://go.microsoft.com/fwlink/?linkid=2120253
安装的是ADK2004 版本
这个版本的winpe 在vmware下面进行安装的时候驱动会正常一些注意如果需要安装的系统是中文版本的,那么winpe一定要是中文版本的,否则会提示驱动无法安装
定制winpe
运行这个部署和映像工具环境,就会打开一个终端主要操作目录在这个下面
1C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation ...
问题背景lvmetad是操作系统上面的lvm的缓存服务,基本上所有的操作系统上面都有,我们使用的操作系统版本为
12345678[root@node232 ~]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarchDistributor ID: CentOSDescription: CentOS Linux release 7.6.1810 (Core) Release: 7.6.1810Codename: Core[root@node232 ~]# uname -aLinux node232 4.14.113-1.el7.x86_64 #1 SMP Wed Sep 9 17:22:41 CST 2020 x86_64 x86_64 x86_64 GNU/Linux
lvm版本为
123[root@node232 ~]# rpm -qa|grep lvmlvm2-libs-2.02.180-8.el7.x86_64lvm2-2.02.180-8.el7.x86_64
如果环境为上面 ...
问题现象ceph -s命令无返回了,查看mon的日志输出内容如下
看到的现象是 failed to assign global_id
然后尝试预分配更多的 global_id
mon_globalid_prealloc=1111110000
这个地方调整后,只是延缓了id的无法分配,没有解决问题,这个地方并不是消息id的问题,而是mon此时出现了问题,无法去正常的回收和响应消息,从而耗尽了id,出现了上面的现象,出现问题以后,mon实际无法响应请求了
把mon的进程直接放到前台运行
12345/usr/bin/ceph-mon -f --cluster ceph --id MYMON1 --setuser ceph --setgroup cephtcmalloc: large alloc 1073741824 bytes == 0x5568d6ac6000 @ 0x7fb651ad24ef 0x7fb651af1bd6 0x556892b6c049 0x556892b6c08b 0x556892b6c940 0x7fb64f4e36f6 0x7fb64f4e7e66 ...
坏快的模拟操作1234[root@lab102 ~]# hdparm --yes-i-know-what-i-am-doing --make-bad-sector 5555 /dev/sdb/dev/sdb:Corrupting sector 5555 (WRITE_UNC_EXT as pseudo): succeeded
注意这个操作如果操作了后面记得恢复,不然留在磁盘上面忘记处理,后面就是坏快在那里的,这个是人为的注入一个坏块的操作的
检查坏快的情况(我的环境一个block = 2个sector)
12345678[root@lab102 ~]# badblocks -v -s /dev/sdb 3333Checking blocks 0 to 3333Checking for bad blocks (read-only test): 277629% done, 0:06 elapsed. (0/0/0 errors)277732% done, 0:08 elapsed. (1/0/0 errors)277835% done, 0:10 elapsed. (2/0/0 ...
问题描述在内网部署的https的时候,我们采用的是自签名的ssl证书,内网的这个证书是无法被客户端认证通过的,这个地方主要体现在下面几个现象可以看到
chrome下的表现
s3cmd下面的表现
s3browser下的表现
这些共同的表现就是无法建立信任的关系
这里我们实际要解决的问题就是,内网是可以绕过这个证书的检测的
不同客户端的处理s3cmd的处理1[root@lab103 ~]# s3cmd ls --no-check-certificate s3://mybucket/
s3browser的处理
可以看到官方在11.5.7版本开始考虑到这个问题了,可以忽略证书的认证,我们只是用到https传输即可
把这个选项勾选,也就是信任所有的证书,重启客户端
可以看到启用https,并且使用了最新的客户端,也是可以正常运行了,也就是证书的问题
通过自颁发证书来解决证书验证问题自颁发证书1yum install openssl openssl-devel -y
step1: 生成证书请求文件新建openssl.cnf,内容如下:
1234567891011121314151617 ...