首页 > 内核方式挂载cephfs

内核方式挂载cephfs

我们内核挂载的前提是:看到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 引入math.h这个头文件,否则是无法正常进行调用的。 那么在Python中,如果要引用一些其他的函数,该怎么处理呢? 在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Ja...

  •  对于一些大型的项目来说,将项目的各个模块理清并进行管理,便于后续项目的维护,使用maven管理是很方便的,它可以很好的构建模块来设计项目的整体结构,对一些小型的项目不建议使用 1、新建父maven模块(idea版本为2017.2) 选择maven类型 点击next,填写GroupId和AtifactId 点击next 确认工...