如何调试ceph-fuse

先说一下环境,本文采用的是Ubuntu16.04操作系统,Ceph版本12.2.7。

创建一个开发者集群

1.把Ceph源码git clone下来,git clone https://github.com/ceph/ceph.git

2.这时候当前文件夹下面会有ceph子文件夹,进入ceph子文件夹,cd ceph

3.切换到稳定版12.2.7, git checkout v12.2.7

4. 安装依赖: ./install-deps.sh 

5. 修改脚本: ./do_cmake.sh

mkdir build
cd build
cmake -DWITH_TESTS=OFF-DBOOST_J=$(nproc) $ARGS "$@" ..

# minimal config to find plugins
cat < ceph.conf
plugin dir = lib
erasure code dir = lib
EOF

注意,只修改了第3行,其他未变。

6.修改 CMakeLists.txt

cmake_minimum_required(VERSION 2.8.11)

project(ceph)
set(VERSION 12.2.7)
SET(CMAKE_BUILD_TYPE "Debug")

SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -Wall -g ")

message ("CXXFLAGS$ENV{CXXFLAGS}")

SET(CMAKE_CXX_FLAGS "-O0 -Wall -g")

SET(CMAKE_C_FLAGS "-O0 -Wall -g ")

if(POLICY CMP0046)
  # Tweak policies (this one disables "missing" dependency warning)
  cmake_policy(SET CMP0046 OLD)
endif()

注意比对需要修改的地方,其他地方不需要改动。

7. 执行脚本:./do_cmake.sh

8. 进入 build文件夹:cd build

9. 执行make: make

10. 执行: make vstart

10. 运行vstart脚本, ../src/vstart.sh -d -n -x

完成之后,虚拟的集群就搭建好了。 执行 bin/./ceph -s 查看集群概览

 

第二步,gdb调试fuse

1. 查出mon的IP+端口,bin/./ceph mon stat 可以看到三个mon的IP: port 选择第一个即可

2.  gdb bin/./ceph-fuse 进入gdb调试

3. set args -m IP:port dir(挂载点)

4. start

 

感谢阅读。

 

 

你可能感兴趣的:(如何调试ceph-fuse)