背景cephfs的df看到的是真实的容量的占用的,ll是看到文件的元数据大小的,du一般是统计文件的真实占用的大小的,但是cephfs并没有记录文件内的占用的情况,所以du无法统计到真实占用
方法我们先拿到全部的inode编号
1ls -i -R /mnt > inode.list
拿到全部的对象名称
1rados -p rbd ls > object.list
写一个脚本
12345678910111213141516171819202122#! /bin/bashcat inode.list|while read -r line;doif [[ $line == *:* ]];then echo $lineelif [[ -z $line ]];then echo " "else inode=`echo $line|awk '{print $1}'` filename=`echo $line|awk '{print $2} ...
背景配置iis的数据目录为samba的共享目录,目录可以访问,文件不能访问
处理方法iis在访问samba的文件的时候,默认把文件全部转换成大写的路径去发送的请求,而linux是区分大小写的,访问的时候就无法访问到这个小写的文件
所以需要配置samba忽略大小写
1case sensitive = yes
改成
1case sensitive = no
然后重启samba即可
总结大小写是否需要设置忽略我们可以根据实际场景进行配置,不同场景的需求不一样
存储相关
未读需求修改mon的ip
操作步骤卸载客户端挂载的服务1[root@lab103 ~]# umount /mnt
停掉mds的服务1[root@lab103 ~]# systemctl stop ceph-mds@lab103
停掉osd的服务1[root@lab103 ~]# systemctl stop ceph-osd.target
停掉管理服务12[root@lab103 ~]# systemctl stop ceph-mgr@lab103[root@lab103 ~]# systemctl stop ceph-mon@lab103
备份mon的数据1# cp -ra /var/lib/ceph/mon/ceph-lab103/ /opt/ceph-lab103bk
编辑monmap获取monmap
123456789[root@lab103 mon]# ceph-mon -i lab103 --extract-monmap ./monmap2024-11-04 11:11:11.046678 7f5f75107000 -1 wrote monmap to ./monmap[ ...
系统管理
未读背景内网测试环境出现一台机器上面的systemd返回值异常,其它都正常,具体的现象如下
1systemctl restart smb;echo $?
这个返回的是1,正常执行完毕应该是0
问题定位开始的时候以为是网络的问题,通过执行本地的命令发现,任何systemd的执行命令返回的都是1,但是实际成功了开始并没有往病毒方面想,系统没有定时任务,没有异常的cpu负载
1[root@lab103 ~]# strace systemctl restart rsyslogd
后面是通过这个命令定位到出现异常了,我们复现下病毒的操作
通过把systemctl拷贝一份到本地的另外一个路径
1[root@lab103 ~]# cp -ra /usr/bin/systemctl /usr/bin/sys
使用一个新的脚本替换,这里我用的脚本,实际是二进制,看不到内容,效果差不多
12345[root@lab103 ~]# cat /usr/bin/systemctl#! /bin/bashecho a > /tmp/test/usr/bin/sys $1 $2 $3 $4 $5 $6 $7ex ...
系统管理
未读背景需要下载一个mysql的docker的镜像,但是遇到了问题,这里把相关的方法记录下
问题123[root@lab103 data]# docker pull mysql:8.0Trying to pull repository docker.io/library/mysql ...Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
直接下载的时候无法下载,这个需要给这个做个代理,但是机器可能是内网的机器,那么我们可以下载下来
处理方法我的mac本身可以直接联通上面的外网地址,那么可以通过下载一个docker客户端,然后给客户端设置代理,然后下载,把镜像保存好即可
具体操作
下载docker桌面1https://www.docker.com/products/docker-desktop/
在官方下载即可
配置代理
这个填写自己本地的代理地址即可
上面配 ...
背景国产化的平台目前主要用到的有飞腾和龙芯,飞腾的是arm64架构,这个使用的比较多,龙芯的架构之前是mips架构,最新的硬件的架构已经发生了改变,现在是loongarch64架构,这个算比较新的架构,所以硬件就比较难获得,如果又有适配的需求,这个时候通过虚拟机启动环境是一个比较好的方式
虚拟机有两种方式:
一种是在相同架构下开虚拟机,这个比较简单,一般的操作系统内都带了kvm的相关的软件,直接使用qemu-kvm启动虚拟机就可以了,这个方式的前提是你得有一台这个架构的物理机器,才能在上面启动kvm虚拟机,还存在资源共用的问题了
另外一种方式就是通过qemu完全软件来进行启动这个虚拟机,qemu是在软件内实现了硬件的模拟,一般硬件厂商会给这个做一些适配工作,然后就支持虚拟厂商的硬件了,这个对宿主机环境没有要求
上面的方式二在之前尝试过,可能当时厂商对qemu还没开发完整,所以整个软件链路我自己当时是没有跑起来的,最近因为软件适配的问题,再次尝试,能够启动成功了,本篇就是把这个过程记录下来
准备的资源
准备一个x86的主机,性能尽量好点,这样虚拟机也能快一点
准备一个操作系统,这个操 ...
背景ceph通过radosgw对外提供了s3功能,这个能够提供一个s3接口供外部使用,s3的功能选项很多,本篇记录的是policy的功能配置
配置方法配置policy可以通过s3cmd,或者windows的s3客户端都可以,这里我们使用s3cmd进行配置
安装配置s3cmd下载客户端
1[root@lab101 ceph]# yum install s3cmd
配置s3cmd
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152[root@lab101 ceph]# s3cmd --configureEnter new values or accept defaults in brackets with Enter.Refer to user manual for detailed description of all options.Access key and Secret key are your identifiers for Amazon ...
背景最近看到opencloudos社区有一些公开的任务可以做,尝试了做其中的一个打包的任务,整个任务的执行周期超过预期,但是中间还是掌握了一些新的东西本篇文章就是总结这些新的知识点
具体过程打包环境问题以前的打包经验是从官网找到source的rpm包,然后本地解压,然后对着spec文件进行rpmbuild -bb即可生成当前系统的包但是这个环境是需要使用mock跑一遍的,这个之前确实没接触过,只是在centos下包的时候,某些包的下载链接有koji这个地址的这个是一套完整的环境
我们看下这个地方是怎么运行的
12345678910111213141516171819202122232425262728293031[root@myserver ~]# cat mock.cfg# Auto-generated by the Koji build systemconfig_opts['basedir'] = '/var/lib/mock'config_opts['chroot_setup_cmd'] = 'groupins ...
存储相关
未读背景如果一个环境需要对文件系统进行系统备份,文件系统内的文件数目是10亿级别的,那么直接通过一个rsync进行同步肯定是不太好的,如果出现中断,那么再次启动后的遍历的时间成本太高了
分析rsync的同步原理是,启动同步的时候,会对源端进行一个全量的扫描,构建一个incremental file list,然后开始同步,如果是系统本地的目录进行同步我们可以看到三个进程一个是生成器,一个是发送方,一个是接收方,因为是在一台机器上面运行,所以可以看到这三个进程的,这个之前还误以为是并发三,实际还是单进程模式的
我们很多情况下,存储环境都是集群模式的,集群模式就是文件系统有多个入口,可以多个并发同时去操作,比如我们原始集群有2个网关,我们新集群有6个网关,那么我们实际上是可以1个原始网关对3个新网关的方式去处理数据的
由于我们无法去判断原始的目录结构,并且即使能够获取到,也不太好去做均分,比如有6亿文件,根目录下面一个目录5亿,其它5个目录1亿,这种情况就不好去分平分目录了,还有个情况是如果按容量区分,也是不太好取到怎么去区分目录的,所以这个地方想到的一个方案是获取到所有的文件的列表,然后对列 ...
问题处理
未读背景最近有碰到扇区的错误,引起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 ...