本文主要是在梳理cephfs内核方式挂载的内核代码逻辑所做的准备
环境:Centos 7.5
内核源码版本:3.10.0-862.el7.x86_64
ceph在内核的通用模块主要有三个:
ceph.ko
模块路径:/usr/src/kernels/3.10.0-862.el7.x86_64/fs/ceph
rbd.ko
模块路径:/usr/src/kernels/3.10.0-862.el7.x86_64/drivers/block
libceph.ko
模块路径:/usr/src/kernels/3.10.0-862.el7.x86_64/net/ceph
编译libceph.ko
如下,编译其他的模块类似
make CONFIG_BLK_DEV_LIBCEPH=m -C /usr/src/kernels/3.10.0-862.el7.x86_64 M=/kernel/linux-3.10.0-862.11.6.el7
其中路径/usr/src/kernels/3.10.0-862.el7.x86_64
是指取出该目录下的makefile来编译/kernel/linux-3.10.0-862.11.6.el7
目录下的源码
编出来的ko文件即在对应目录/kernel/linux-3.10.0-862.11.6.el7/net/ceph
之下
此时需要将.ko文件放置在/usr/lib/modules/3.10.0-862.el7.x86_64/kernel/net/ceph/
目录下,并更新依赖depmod -a
,这个时候系统加载就可以从该目录下加载需要的驱动文件
deubg
系统调试模块sudo cat /boot/config-'uname -r' | grep DYNAMIC_DEBUG
,显示如下则表明系统调试功能可用:[root@node1 ~]# sudo cat /boot/config-3.10.0-123.el7.x86_64 | grep DYNAMIC_DEBUG
CONFIG_DYNAMIC_DEBUG=y
echo "module libceph +p" >/sys/kernel/debug/dynamic_debug/control
开启libceph模块的调试echo "module libceph -p" >/sys/kernel/debug/dynamic_debug/control
关闭libceph模块的调试echo "module ceph +p" >/sys/kernel/debug/dynamic_debug/control
开启ceph模块的调试echo "module ceph -p" >/sys/kernel/debug/dynamic_debug/control
关闭ceph模块的调试echo "7 7 7 7" > /proc/sys/kernel/printk
设置内核打印日志级别 0~7, 默认 4 4 1 7。其级别消息如下所示:#define KERN_EMERG 0 /*紧急事件消息,系统崩溃之前提示,表示系统不可用*/
#define KERN_ALERT 1 /*报告消息,表示必须立即采取措施*/
#define KERN_CRIT 2 /*临界条件,通常涉及严重的硬件或软件操作失败*/
#define KERN_ERR 3 /*错误条件,驱动程序常用KERN_ERR来报告硬件的错误*/
#define KERN_WARNING 4 /*警告条件,对可能出现问题的情况进行警告*/
#define KERN_NOTICE 5 /*正常但又重要的条件,用于提醒。常用于与安全相关的消息*/
#define KERN_INFO 6 /*提示信息,如驱动程序启动时,打印硬件信息*/
#define KERN_DEBUG" 7 /*调试级别的消息*/
以上四个数分别对应如下:
- 控制台日志级别:优先级高于该值的消息将被打印至控制台
- 默认的消息日志级别:将用该优先级来打印没有优先级的消息
- 最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)
- 默认的控制台日志级别:控制台日志级别的缺省值
dmesg -wT
来实时查看内核挂载cephfs的日志打印,同样该方法可以适用于内核各个日志模块。关于内核方式挂载cephfs详细可以查看内核方式挂载cephfs调整内核的日志打印之后,dmesg中的日志如下:
[Tue May 7 21:53:40 2019] ceph: do_getattr inode ffff8b8813848330 mask As mode 040777
[Tue May 7 21:53:40 2019] ceph: __ceph_caps_issued_mask ffff8b8813848330 cap ffff8b9ea6d8a078 issued pAsLsXs (mask As)
[Tue May 7 21:53:40 2019] ceph: __touch_cap ffff8b8813848330 cap ffff8b9ea6d8a078 mds0
[Tue May 7 21:53:40 2019] ceph: do_getattr inode ffff8b8813848330 mask pAsLsXsFs mode 040777
[Tue May 7 21:53:40 2019] ceph: do_request on ffff8ba49a7c6c00
[Tue May 7 21:53:40 2019] ceph: reserve caps ctx=ffff8ba49a7c6f50 need=1
[Tue May 7 21:53:40 2019] ceph: reserve caps ctx=ffff8ba49a7c6f50 1025 = 2 used + 1 resv + 1022 avail
[Tue May 7 21:53:40 2019] ceph: __register_request ffff8ba49a7c6c00 tid 48775
[Tue May 7 21:53:40 2019] ceph: __choose_mds ffff8b8813848330 is_hash=0 (0) mode 0
[Tue May 7 21:53:40 2019] ceph: choose_mds ffff8b8813848330 1.fffffffffffffffe mds0 (auth cap ffff8b9ea6d8a078)
[Tue May 7 21:53:40 2019] ceph: lookup_mds_session ffff8ba5857da800 8
[Tue May 7 21:53:40 2019] ceph: mdsc get_session ffff8ba5857da800 8 -> 9
[Tue May 7 21:53:40 2019] ceph: mdsc get_session ffff8ba5857da800 9 -> 10
[Tue May 7 21:53:40 2019] ceph: do_request mds0 session ffff8ba5857da800 state open
[Tue May 7 21:53:40 2019] ceph: prepare_send_request ffff8ba49a7c6c00 tid 48775 getattr (attempt 1)
[Tue May 7 21:53:40 2019] ceph: inode ffff8b8813848330 1.fffffffffffffffe
[Tue May 7 21:53:40 2019] ceph: r_parent = (null)
[Tue May 7 21:53:40 2019] ceph: mdsc get_session ffff8ba5857da800 10 -> 11
[Tue May 7 21:53:40 2019] ceph: mdsc con_get ffff8ba5857da800 ok (11)
[Tue May 7 21:53:40 2019] ceph: mdsc get_session ffff8ba5857da800 11 -> 12
[Tue May 7 21:53:40 2019] ceph: mdsc con_get ffff8ba5857da800 ok (12)
[Tue May 7 21:53:40 2019] ceph: mdsc put_session ffff8ba5857da800 12 -> 11
[Tue May 7 21:53:40 2019] ceph: do_request waiting
[Tue May 7 21:53:40 2019] ceph: mdsc con_put ffff8ba5857da800 (10)
[Tue May 7 21:53:40 2019] ceph: mdsc put_session ffff8ba5857da800 11 -> 10
[Tue May 7 21:53:40 2019] ceph: mdsc get_session ffff8ba5857da800 10 -> 11
[Tue May 7 21:53:40 2019] ceph: mdsc con_get ffff8ba5857da800 ok (11)
[Tue May 7 21:53:40 2019] ceph: mdsc con_put ffff8ba5857da800 (10)
[Tue May 7 21:53:40 2019] ceph: mdsc put_session ffff8ba5857da800 11 -> 10
[Tue May 7 21:53:40 2019] ceph: mdsc get_session ffff8ba5857da800 10 -> 11
[Tue May 7 21:53:40 2019] ceph: mdsc con_get ffff8ba5857da800 ok (11)
[Tue May 7 21:53:40 2019] ceph: mdsc get_session ffff8ba5857da800 11 -> 12
[Tue May 7 21:53:40 2019] ceph: mdsc con_get ffff8ba5857da800 ok (12)
[Tue May 7 21:53:40 2019] ceph: handle_caps from mds0
文章目录安装使用使用`ceph tell`产生堆栈信息文使用`pprof`工具分析内存及`ceph tell`释放内存火焰图`FlameGraph`可视化进程堆栈信息 pprof是一个google开发的支持可视化、且可分析profile文件而达到对内存的分析。并且能够输出文本和图像来支持分析过程,pprof源码 安装...
目前有两种动态修改的方式来让ceph中各个组件的配置生效,所以介绍如下两种方式方便我们进行功能或者代码的调试 使用ceph daemon方式修改 ceph daemon osd.0 help用于osd的daemon服务ceph daemon mon.ceph-node1 help用于mon的admin socket命令、ceph...
我们内核挂载的前提是:看到centos7.5 中默认内核3.10.0-862.11.6.el7.x86_64的挂载fs执行文件读写性能更优良,所以尝试将3.10.0-862.11.6.el7.x86_64模块中与ceph fs挂载相关的ceph.ko,libceph.ko,dns_resolver.ko,libcrc32c.ko拷贝...
1.生成指定时间段内的日期: =TEXT("2019/8/9 00:00"+RAND()*54,"yyyy/mm/hh HH:MM") 注意:RAND()*54,54指从2019/8/9日起的54天,有时会有2019/8/00的错误格式 2.生成类似于“第一级”,“第二级”类似的带中文的随机数: =CONCATENATE...