我们内核挂载的前提是:看到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
拷贝到自己的设备。
同样要在自己的设备上执行成功加载该ko文件,需要操作系统内核小版本一致,3.10.0-862.11.6.el7.x86_64
将想要移植的内核中make modules_install通过的几个与ceph相关的模块取出
centos 7.5设备上执行如下命令,将每个编译好的ko文件拷贝到自己的设备,执行命令
locate ceph.ko
scp -P 55555 /xx/xx/ceph.ko 10.192.55.95:/root
在自己客户端设备执行
lsmod |grep ceph
显示如下
[root@localhost test_300k]# lsmod |grep ceph
ceph 345111 1
libceph 301687 1 ceph
dns_resolver 13140 1 libceph
libcrc32c 12644 3 libceph,nf_nat,nf_conntrack
如果没有任何一个模块,则根据四个模块中每个模块对应的依赖关系顺序加载
执行命令modinfo xxx.ko
可以查看模块依赖关系
[root@localhost test_300k]# modinfo /usr/lib/modules/3.10.0-862.11.6.el7.x86_64/kernel/net/ceph/libceph.ko.xz
filename: /usr/lib/modules/3.10.0-862.11.6.el7.x86_64/kernel/net/ceph/libceph.ko.xz
license: GPL
description: Ceph core library
author: Patience Warnick
author: Yehuda Sadeh
author: Sage Weil
retpoline: Y
rhelversion: 7.5
srcversion: 006A24C2C8F8D438A9A684B
depends: libcrc32c,dns_resolver
intree: Y
vermagic: 3.10.0-862.11.6.el7.x86_64 SMP mod_unload modversions
signer: CentOS Linux kernel signing key
sig_key: 9C:2C:74:1B:AC:8A:B0:1E:51:35:3B:00:85:4A:01:EB:BE:29:B9:95
sig_hashalgo: sha256
这个四个模块需要最先加载的是dns_resolver.ko
存储查看用户密钥
存储需用外网部署好ceph环境(为了让远端与moniter从外网建立连接),同时部署好cephfs
查看客户端密钥 cat /etc/ceph/ceph.client.admin.keyring
远端服务器执行
mount -t ceph 10.192.55.6:6789:/ /nas/cephfs -o name=admin,secret=AQBpbwpcAf2EBhAAq91MLchhQy3X26TufdL7RQ==
如果挂载遇到问题,无法挂载成功,使用命令‘dmesg’查看,缺少内核某属性的问题,尝试降低ceph版本,或者提升内核版本
- 降低Ceph版本
ceph osd crush tunables hammer 降低ceph 版本
ceph osd crush show-tunables 查看是否更改成功
执行df -h
查看挂载结果
[root@localhost test_300k]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 20027260 12536032 6467228 66% /
devtmpfs 8047256 0 8047256 0% /dev
tmpfs 8057956 0 8057956 0% /dev/shm
tmpfs 8057956 1116 8056840 1% /run
tmpfs 8057956 0 8057956 0% /sys/fs/cgroup
tmpfs 8057956 248 8057708 1% /tmp
tmpfs 204800 0 204800 0% /mnt/tmp
/dev/sda3 3966144 28424 3716536 1% /dom/storoswd/b_iscsi/log
/dev/sda2 5916420 84332 5508504 2% /dom/storoswd/b_iscsi/config
tmpfs 1611592 0 1611592 0% /run/user/010.192.54.156:6789:/ 924139520 115941376 808198144 13% /nas/cephfs_test
本文主要是在梳理cephfs内核方式挂载的内核代码逻辑所做的准备 环境:Centos 7.5 内核源码版本:3.10.0-862.el7.x86_64 打开ceph模块的debug信息 单独编译ceph模块的.ko文件 ceph在内核的通用模块主要有三个: ceph.ko 模块路径:/usr/src/kernels/3.10....
文章目录安装使用使用`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...
在某些情况下(例如通过网络访问数据),常常不希望程序卡住而占用太多时间以至于造成界面假死。在这时、我们可以通过Thread、Thread + Invoke(UI)或者是 delegate.BeginInvoke 来避免界面假死,但是这样做时,某些代码或者是某个方法的执行超时的时间还是无法操控的。那么我们又是否有一种比较通用的方法、来设...
传参 如果程序执行的时候需要加入参数,如 ./sample aa bb 使用 gdb 的时候可以使用如下方式 gdb --args ./sample aa bb 执行 启动 gdb 之后,直接使用 r,就是 run 的意思,或者可以使用 b 加一个断点进行调试。处理信号 如果在使用的时候,遇到类似下面的报错 Threa...
进程的图文形象表示 阮一峰–进程与线程的一个简单解释 多进程实质 现在,多核CPU已经非常普及了,但是,即使过去的单核CPU,也可以执行多任务。由于CPU执行代码都是顺序执行的,那么,单核CPU是怎么执行多任务的呢? 答案就是操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务...
redis 事物: Redis 事物的实现: 首先 wath监控键值 myKey开启批量执行 multi,执行命令入列,执行 exec 。如果监控的键值mykey 没有被修改过,则exec 中批量执行的命令成功,否则执行失败。无论执行成功与否,都会执行取消wath的执行 Redis multi 批量执行,是先把批量中的命令放入队列...
一、准备工作: 1.登录服务器,切换到root用户(su - root,然后输入密码,按enter),进入根目录:cd / 2.进入要安装jdk的目录,自己可以创建一个java目录,执行命令如下: cd /usr/local/ mkdir java 二、下载安装包 1.打开官网下载界面:https://www.oracle.com/...
1 模块简介在python中常见的模块有三种,在python解释器中的内置模块,第三方模块和自定义模块。模块的有使用python编写的文件,有已被编译为共享库或DLL的C或C++扩展,也有使用C编写连接到python解释器的内置模块和把一些列模块组织起来的文件(文件包)。python使用模块内置模块,第三方模块以及内置模块,是pyth...
简介 OpenCV是一个C++库,用于实时处理计算机视觉方面的问题,涵盖了很多计算机视觉领域的模块。 OpenCV有两个Python接口,老版本的cv模块使用OpenCV内置的数据类型,新版本的cv2模块使用NumPy数组。 对于新版本的模块,可以通过下面方式导入: import cv2 而老版本的模块则通过下面方式导入: i...
一. 背景 在 CMakeLists.txt 中,某模块 A 通过 add_subdirectory 引入模块 B ,模块 B 通过 add_subdirectory 引入模块 C。模块 C 里面本身就是一个开源的动态库,比如 libtask。目的想要将 C 模块打包成一个 Target ,以便在 A 模块中中使用方便。 二. 旧...
一、python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include
对于一些大型的项目来说,将项目的各个模块理清并进行管理,便于后续项目的维护,使用maven管理是很方便的,它可以很好的构建模块来设计项目的整体结构,对一些小型的项目不建议使用 1、新建父maven模块(idea版本为2017.2) 选择maven类型 点击next,填写GroupId和AtifactId 点击next 确认工...