如何使用源码编译BeeGFS搭建开发环境
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章给大家分享的是有关如何使用源码编译BeeGFS搭建开发环境的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如果我们需要动态调试和开发BeeGFS,那么就需要自己手动编
千家信息网最后更新 2025年12月03日如何使用源码编译BeeGFS搭建开发环境
这篇文章给大家分享的是有关如何使用源码编译BeeGFS搭建开发环境的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
如果我们需要动态调试和开发BeeGFS,那么就需要自己手动编译了,而且能够用最简单的方式运行起来,下面就讲解自己探索和分析的过程。
初始化环境
安装依赖的软件包:
$ yum install -y libuuid-devel libibverbs-devel librdmacm-devel libattr-devel redhat-rpm-config rpm-build xfsprogs-devel cppunit cppunit-devel zlib-devel openssl-devel sqlite sqlite-devel ant gcc-c++ gcc redhat-lsb-core java-devel
获取官方源码
获取指定版本的源码:
$ git clone https://git.beegfs.io/pub/v6.git beegfs-v6$ cd beegfs-v6$ git tag -l6.16.106.116.126.136.146.156.166.176.186.196.26.36.46.56.66.76.86.9$ git checkout -b v6.18 6.18
进行简单的查看和验证:
$ git show 6.18 | head -n12tag 6.18Tagger: Bernd LietzowDate: Mon Mar 12 16:09:35 2018 +0100created tag 6.18commit aee03250ea19502952d2f187e73134996abaec5bAuthor: Bernd Lietzow Date: Mon Mar 12 16:09:13 2018 +0100 updated to release 6.18$ git branch -av master 4a69532 updated to release 6.19* v6.18 aee0325 updated to release 6.18 remotes/origin/HEAD -> origin/master remotes/origin/master 4a69532 updated to release 6.19
分析Makefile
查看他的Makefile,BeeGFS自己实现了一个简单的Makefile工程模板,所有的子模块都使用这一套模板来变异,十分简单高效:
$ make -j$(nproc) -C beegfs_meta/build help[VER] BEEGFS_VERSION="19.5-git8" BEEGFS_VERSION_CODE=18023688make: Entering directory `/root/beegfs-v6/fhgfs_meta/build'Optional arguments: BEEGFS_DEBUG=1 Enables debug information and symbols BEEGFS_DEBUG_OPT=1 Enables internal debug code, but compiled with optimizations CXX=Specifies a c++ compiler DISTCC=distcc Enables the usage of distcc V=1 Print command lines of tool invocations BEEGFS_COMMON_PATH= Path to the beegfs_common directory BEEGFS_OPENTK_PATH= Path to the beegfs_opentk_lib directory BEEGFS_THIRDPARTY_PATH= Path to the beegfs_thirdparty directoryTargets: all (default) build only clean delete compiled files help print this help message rpm create an rpm package deb create debian package filemake: Leaving directory `/root/beegfs-v6/fhgfs_meta/build'$ cat beegfs_meta/build/Makefile# This is the beegfs_meta makefile.# It creates an ELF executable.# # Use "make help" to find out about configuration options.CAN_PACKAGE := yesinclude $(or $(root-dir),../..)/build/Makefile$(call build-executable,\ beegfs-meta,\ $(shell find ../source -iname '*.cpp'),\ opentk common cppunit dl)# enable special reference DirInode debug codeifneq ($(BEEGFS_DEBUG_RELEASE_DIR),) # extra release dir debugging CXXFLAGS += -DBEEGFS_DEBUG_RELEASE_DIRendif$ cat build/Makefile...override V := $(if $V,,@)all:...rpm: ./make-rpm...# build-executable## define a new executable for the build# arguments:# #1: name of the executable# #2: sources# #3: required librariesbuild-executable = $(eval $(call -build-executable-fragment,$(strip $1),$2,$3))define -build-executable-fragmentall: $1CLEANUP_FILES += $1 $(addsuffix .o,$2) $(addsuffix .d,$2)$(addsuffix .o,$2): CXXFLAGS += \ $(foreach lib,$3,$(call resolve-dep-cflags,$(lib)))$1: LDFLAGS += \ -Wl,--start-group $(foreach lib,$3,$(call resolve-dep-ldflags,$(lib))) -Wl,--end-group$1: $(addsuffix .o,$2) $(foreach lib,$3,$(call resolve-dep-deps,$(lib))) @echo "[LD] $$@" $$V$$(CXX) -o $$@ $(addsuffix .o,$2) $$(LDFLAGS)-include $(addsuffix .d,$2)endef
分析RPM脚本
查看他构建
RPM包的方法,直接打包源码目录,并使用一个RPMSPEC文件模板,使用sed动态生成一个SPEC文来进行构建:
$ cat beegfs_meta/build/make-rpm #!/bin/bash NAME=beegfs-metaSPEC_FILE=${NAME}.specsource ../../beegfs-versionarch=`uname -m`if [[ "$arch" == "x86_64" ]]; then BUILDARCH="$arch"elif [[ "$arch" =~ 86 ]]; then BUILDARCH="i686"else BUILDARCH=$archfiCONCURRENCY=${MAKE_CONCURRENCY:-4}export BEEGFS_VERSION_PATH=`pwd`/../../beegfs-versionset -epushd ../ TOOLS_ROOT=`pwd`popd BUILD="${TOOLS_ROOT}/build"mkdir -p $BUILD/buildroot/{BUILD,RPMS,S{RPMS,PECS,OURCES}}rm -f $BUILD/buildroot/SOURCES/*.tgzROOT_DIR=${ROOT_DIR:-`(cd ../..; pwd)`}BEEGFS_COMMON_PACKAGE_PATH=${BEEGFS_COMMON_PACKAGE_PATH:-`readlink -f ../../beegfs_common_package`}set +e # test if redhat-rpm-config is installed. If so, we must not specify# %debug_package in the spec file, if not installed we need to define it# in order to strip binaries and to build a debug packagerpm -qa redhat-rpm-config | grep redhat-rpm-configNEED_DEBUG_DEFINE=$?set -epushd $TOOLS_ROOTtar czf $BUILD/buildroot/SOURCES/${NAME}-${BEEGFS_VERSION}.tgz --exclude=buildroot/* *cd $BUILDsed -e "s#%BEEGFS_COMMON_PACKAGE_PATH%#$BEEGFS_COMMON_PACKAGE_PATH#g" \ -e "s/%NAME%/$NAME/g" \ -e "s/%BEEGFS_VERSION%/$BEEGFS_VERSION/g" \ -e "s/%BUILDARCH%/$BUILDARCH/g" \ -e "s/%MAKE_CONCURRENCY%/$CONCURRENCY/g" \ -e "s/%NEED_DEBUG_DEFINE%/$NEED_DEBUG_DEFINE/g" \ ${SPEC_FILE}.in > ${SPEC_FILE}rpmbuild --clean -bb ${SPEC_FILE} --define "_topdir $BUILD/buildroot/" -D "ROOT_DIR $ROOT_DIR"popdrm -fr /var/tmp/${NAME}-root/rm -f /var/tmp/rpm-tmp.*分析RPM配置
查看
SPEC中引用的参数,正式上面的脚本替换后的结果:
$ cat beegfs_meta/build/beegfs-meta.spec%define buildarch x86_64%define BEEGFS_COMMON_PACKAGE_PATH /root/beegfs-v6/fhgfs_common_package%define BEEGFS_VERSION %VER%-%RELEASE_STR%%define MAKE_CONCURRENCY 4%define NEED_DEBUG_DEFINE 0%define BEEGFS_VERSION 19.4-git17%define VER %(echo '%{BEEGFS_VERSION}' | cut -d - -f 1)%define BEEGFS_RELEASE_STR %(echo '%{BEEGFS_VERSION}-' | cut -d - -f 2)%define EPOCH %(echo '%{VER}' | cut -d . -f 1)...%buildcd buildmake \ root-dir=%{ROOT_DIR} \ BEEGFS_VERSION=%{BEEGFS_VERSION} \ -j %{MAKE_CONCURRENCY}...$ grep -rHn root-dir beegfs_meta beegfs_meta/build/Makefile:8:include $(or $(root-dir),../..)/build/Makefilebeegfs_meta/build/beegfs-meta.spec.in:74: root-dir=%{ROOT_DIR} \beegfs_meta/build/beegfs-meta.spec:74: root-dir=%{ROOT_DIR} \正式开始编译
先编译依赖的函数库:
$ make -j$(nproc) -C beegfs_thirdparty/build$ make -j$(nproc) -C beegfs_opentk_lib/build$ make -j$(nproc) -C beegfs_common/build
根据需要编译所需的模块:
$ make -j$(nproc) -C beegfs_meta/build clean# make -j$(nproc) -C beegfs_meta/build BEEGFS_DEBUG=1$ make -j$(nproc) -C beegfs_meta/build[VER] BEEGFS_VERSION="19.5-git9" BEEGFS_VERSION_CODE=18023689make: Entering directory `/root/beegfs-v6/fhgfs_meta/build'[CXX] ../source/app/App.cpp.o[CXX] ../source/components/DatagramListener.cpp.o[CXX] ../source/app/config/Config.cpp.o...[CXX] ../source/toolkit/BuddyCommTk.cpp.o[CXX] ../source/toolkit/StorageTkEx.cpp.o[CXX] ../source/toolkit/XAttrTk.cpp.o[LD] beegfs-metamake: Leaving directory `/root/beegfs-v6/fhgfs_meta/build'$ file /root/beegfs-v6/beegfs_meta/build/beegfs-meta/root/beegfs-v6/beegfs_meta/build/beegfs-meta: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=be90bbf04db11b7dcf46d29240b7cb20ab676cf5, not stripped
也可以编译Debug版本,但是要注意,此时前面依赖的函数库也得编译成Debug版本,否则运行时会直接崩溃:
$ make -j$(nproc) -C beegfs_meta/build BEEGFS_DEBUG=1[VER] BEEGFS_VERSION="19.5-git9" BEEGFS_VERSION_CODE=18023689make: Entering directory `/root/beegfs-v6/fhgfs_meta/build'make: Nothing to be done for `all'.make: Leaving directory `/root/beegfs-v6/fhgfs_meta/build'[root@sacd02 beegfs-v6]# make -j$(nproc) -C beegfs_meta/build rpm[VER] BEEGFS_VERSION="19.5-git9" BEEGFS_VERSION_CODE=18023689make: Entering directory `/root/beegfs-v6/fhgfs_meta/build'./make-rpm~/beegfs-v6/fhgfs_meta ~/beegfs-v6/fhgfs_meta/build~/beegfs-v6/fhgfs_meta/buildredhat-rpm-config-9.1.0-87.el7.centos.noarch~/beegfs-v6/fhgfs_meta ~/beegfs-v6/fhgfs_meta/buildExecuting(%prep): /bin/sh -e /var/tmp/rpm-tmp.0aowao+ umask 022+ cd /root/beegfs-v6/fhgfs_meta/build/buildroot//BUILD+ cd /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILD+ rm -rf beegfs-meta-19.5+ /usr/bin/mkdir -p beegfs-meta-19.5+ cd beegfs-meta-19.5+ /usr/bin/gzip -dc /root/beegfs-v6/fhgfs_meta/build/buildroot/SOURCES/beegfs-meta-19.5-git9.tgz+ /usr/bin/tar -xvvf -drwxr-xr-x root/root 0 2019-05-09 10:32 build/-rw-r--r-- root/root 482 2019-05-08 17:43 build/Makefile-rw-r--r-- root/root 3994 2019-05-08 17:43 build/beegfs-meta.spec.in-rw-r--r-- root/root 199 2019-05-08 17:43 build/config.cpackdrwxr-xr-x root/root 0 2019-05-08 17:43 build/debian/-rw-r--r-- root/root 176 2019-05-08 17:43 build/debian/changelog.in-rw-r--r-- root/root 2 2019-05-08 17:43 build/debian/compat...-rw-r--r-- root/root 27079 2019-05-08 22:43 source/toolkit/BuddyCommTk.cpp.d-rw-r--r-- root/root 26516 2019-05-08 22:43 source/toolkit/XAttrTk.cpp.d-rw-r--r-- root/root 2571472 2019-05-08 22:43 source/toolkit/StorageTkEx.cpp.o-rw-r--r-- root/root 2405768 2019-05-08 22:43 source/toolkit/XAttrTk.cpp.o-rw-r--r-- root/root 3042288 2019-05-08 22:43 source/toolkit/BuddyCommTk.cpp.o+ STATUS=0+ '[' 0 -ne 0 ']'+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .+ exit 0Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.FjeeXr+ umask 022+ cd /root/beegfs-v6/fhgfs_meta/build/buildroot//BUILD+ cd beegfs-meta-19.5+ cd build+ make root-dir=/root/beegfs-v6 BEEGFS_VERSION=19.5-git9 -j 4[VER] BEEGFS_VERSION="19.5-git9" BEEGFS_VERSION_CODE=18023689make[1]: Entering directory `/root/beegfs-v6/fhgfs_meta/build/buildroot/BUILD/beegfs-meta-19.5/build'make[1]: warning: -jN forced in submake: disabling jobserver mode.make[1]: Nothing to be done for `all'.make[1]: Leaving directory `/root/beegfs-v6/fhgfs_meta/build/buildroot/BUILD/beegfs-meta-19.5/build'+ exit 0Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.OeYWrw+ umask 022+ cd /root/beegfs-v6/fhgfs_meta/build/buildroot//BUILD+ '[' /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64 '!=' / ']'+ rm -rf /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64++ dirname /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64+ mkdir -p /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT+ mkdir /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64+ cd beegfs-meta-19.5+ cd build+ echo 'mkdir RPM_BUILD_ROOT (/root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64)'mkdir RPM_BUILD_ROOT (/root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64)+ mkdir -p /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64/etc/beegfs/+ cp -a dist/etc/beegfs-meta.conf /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64/etc/beegfs/+ mkdir -p /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64/etc/init.d/+ INITSCRIPT=dist/etc/init.d/beegfs-meta.init+ install -D dist/etc/init.d/beegfs-meta.init /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64/etc/init.d/beegfs-meta+ install -D -m644 dist/usr/lib/systemd/system/beegfs-meta.service /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64/usr/lib/systemd/system/beegfs-meta.service+ GENERIC_INITSCRIPT=/root/beegfs-v6/fhgfs_common_package/build/dist/etc/init.d/beegfs-service.init+ cat /root/beegfs-v6/fhgfs_common_package/build/dist/etc/init.d/beegfs-service.init+ install -D beegfs-meta /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64/opt/beegfs/sbin/beegfs-meta+ install -D dist/sbin/beegfs-setup-meta /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64/opt/beegfs/sbin/beegfs-setup-meta+ install -D dist/etc/default/beegfs-meta /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64/etc/default/beegfs-meta+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /root/beegfs-v6/fhgfs_meta/build/buildroot//BUILD/beegfs-meta-19.5extracting debug info from /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64/opt/beegfs/sbin/beegfs-metadwz: Too few files for multifile optimization/usr/lib/rpm/sepdebugcrcfix: Updated 1 CRC32s, 0 CRC32s did match.+ /usr/lib/rpm/check-buildroot+ /usr/lib/rpm/redhat/brp-compress+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1+ /usr/lib/rpm/redhat/brp-python-hardlink+ /usr/lib/rpm/redhat/brp-java-repack-jarsProcessing files: beegfs-meta-19.5-git9el7.x86_64Provides: beegfs-meta = 19:19.5-git9el7 beegfs-meta(x86-64) = 19:19.5-git9el7 config(beegfs-meta) = 19:19.5-git9el7Requires(interp): /bin/sh /bin/shRequires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1Requires(post): /bin/shRequires(preun): /bin/shRequires: /bin/bash libbeegfs-opentk.so()(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.2)(64bit) libc.so.6(GLIBC_2.3.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libcppunit-1.12.so.1()(64bit) libdl.so.2()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) libpthread.so.0(GLIBC_2.3.2)(64bit) libpthread.so.0(GLIBC_2.3.3)(64bit) libpthread.so.0(GLIBC_2.3.4)(64bit) librt.so.1()(64bit) librt.so.1(GLIBC_2.2.5)(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.5)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit) libstdc++.so.6(GLIBCXX_3.4.11)(64bit) libstdc++.so.6(GLIBCXX_3.4.15)(64bit) libstdc++.so.6(GLIBCXX_3.4.19)(64bit) libstdc++.so.6(GLIBCXX_3.4.9)(64bit) rtld(GNU_HASH)Processing files: beegfs-meta-debuginfo-19.5-git9el7.x86_64Provides: beegfs-meta-debuginfo = 19:19.5-git9el7 beegfs-meta-debuginfo(x86-64) = 19:19.5-git9el7Requires(rpmlib): rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64Wrote: /root/beegfs-v6/fhgfs_meta/build/buildroot/RPMS/x86_64/beegfs-meta-19.5-git9el7.x86_64.rpmWrote: /root/beegfs-v6/fhgfs_meta/build/buildroot/RPMS/x86_64/beegfs-meta-debuginfo-19.5-git9el7.x86_64.rpmExecuting(%clean): /bin/sh -e /var/tmp/rpm-tmp.jbV8Ew+ umask 022+ cd /root/beegfs-v6/fhgfs_meta/build/buildroot//BUILD+ cd beegfs-meta-19.5+ rm -rf /root/beegfs-v6/fhgfs_meta/build/buildroot/BUILDROOT/beegfs-meta-19.5-git9el7.x86_64+ exit 0Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.IPpOum+ umask 022+ cd /root/beegfs-v6/fhgfs_meta/build/buildroot//BUILD+ rm -rf beegfs-meta-19.5+ exit 0~/beegfs-v6/fhgfs_meta/buildmake: Leaving directory `/root/beegfs-v6/fhgfs_meta/build'$ ll beegfs_meta/build/buildroot/RPMS/x86_64/total 18036-rw-r--r-- 1 root root 1165336 May 9 10:33 beegfs-meta-19.5-git9el7.x86_64.rpm-rw-r--r-- 1 root root 17300984 May 9 10:33 beegfs-meta-debuginfo-19.5-git9el7.x86_64.rpm
分析启动脚本
BeeGFS使用Systemd进行管理,其配置文件中直接指定运行程序的路径和参数:
$ systemctl status beegfs-meta.service ● beegfs-meta.service - Start BeeGFS Metadata Server Loaded: loaded (/usr/lib/systemd/system/beegfs-meta.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-05-08 22:33:19 CST; 10min ago Process: 48475 ExecStop=/etc/init.d/beegfs-meta stop (code=exited, status=0/SUCCESS) Process: 48685 ExecStart=/etc/init.d/beegfs-meta start (code=exited, status=0/SUCCESS) Main PID: 48691 (beegfs-meta/Mai) Tasks: 442 Memory: 363.9M CGroup: /system.slice/beegfs-meta.service └─48691 /opt/beegfs/sbin/beegfs-meta cfgFile=/etc/beegfs/beegfs-meta.conf pidFile=/var/run/beegfs-meta.pidMay 08 22:33:19 sacd02 systemd[1]: Starting Start BeeGFS Metadata Server...May 08 22:33:19 sacd02 beegfs-meta[48685]: Starting BeeGFS Meta Server: [ OK ]May 08 22:33:19 sacd02 systemd[1]: Started Start BeeGFS Metadata Server.$ cat /usr/lib/systemd/system/beegfs-meta.service[Unit]Description=Start BeeGFS Metadata ServerRequires=network-online.target# We disable the wants service, because it spams the log files#Wants=beegfs-mgmtd.service beegfs-storage.service openibd.service openib.service rdma.service opensmd.service opensm.serviceAfter=network-online.target beegfs-mgmtd.service beegfs-storage.service openibd.service openib.service rdma.service opensmd.service opensm.service zfs.target[Service]ExecStart=/etc/init.d/beegfs-meta startExecStop=/etc/init.d/beegfs-meta stopType=forking# We disable PIDFile= because it doesn't work with multi-mode configurations#PIDFile=/var/run/beegfs-meta.pid[Install]WantedBy=multi-user.target
为了保持跟早期的SysInitV保持兼容,整整的程序执行脚本在
init.d目录中:
$ cat /etc/init.d/beegfs-meta#!/bin/bash#### BEGIN INIT INFO# Provides: beegfs-meta# Required-Start:# Should-Start: $network beegfs-mgmtd beegfs-storage openibd openib rdma opensmd opensm# Required-Stop:# Should-Stop: $network beegfs-mgmtd beegfs-storage openibd openib rdma opensmd opensm# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# chkconfig: 35 95 9# Short-Description: BeeGFS Meta# Description: Start BeeGFS Meta### END INIT INFOAPP_NAME="BeeGFS Meta Server"SERVICE_NAME=beegfs-meta# source function library. /etc/beegfs/lib/start-stop-functions. /etc/beegfs/lib/init-multi-modeSYSCONFIG_FILE=/etc/default/${SERVICE_NAME}# Check for missing binaries (stale symlinks should not happen)# Note: Special treatment of stop for LSB conformanceAPP_BIN=/opt/beegfs/sbin/${SERVICE_NAME}test -x $APP_BIN || { echo "$APP_BIN not installed"; if [ "$1" = "stop" ]; then exit 0; else exit 5; fi; }source ${SYSCONFIG_FILE}if [ "${MULTI_MODE}" = "YES" -o "${MULTI_MODE}" = "yes" ]; then init_multi_mode $1 $2 exit $?fi# Check for existence of needed config file and read itAPP_CONFIG=/etc/beegfs/${SERVICE_NAME}.conftest -r $APP_CONFIG || { echo "$APP_CONFIG not existing"; if [ "$1" = "stop" ]; then exit 0; else exit 6; fi; }PIDFILE=/var/run/${SERVICE_NAME}.pidDAEMON_ARGS="cfgFile=${APP_CONFIG} pidFile=$PIDFILE"RETVAL=0# Return values acc. to LSB for all commands but status:# 0 - success# 1 - generic or unspecified error# 2 - invalid or excess argument(s)# 3 - unimplemented feature (e.g. "reload")# 4 - user had insufficient privileges# 5 - program is not installed# 6 - program is not configured# 7 - program is not running# 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl)# # Note that starting an already running service, stopping# or restarting a not-running service as well as the restart# with force-reload (in case signaling is not supported) are# considered a success.case "$1" in start) if [ -f "${SYSCONFIG_FILE}" ]; then if [ "${START_SERVICE}" = "NO" -o "${START_SERVICE}" = "no" ]; then echo "${APP_NAME} not set to be started" exit 0 fi fi echo -n "Starting ${APP_NAME}: " ## create subfolder for lock files, on Debian systems needed mkdir -p /var/lock/subsys ## Start daemon with startproc(8). If this fails ## the return value is set appropriately by startproc. daemon --pidfile $PIDFILE $APP_BIN $DAEMON_ARGS \ && touch /var/lock/subsys/${SERVICE_NAME} RETVAL=$? echo ;; stop) echo -n "Shutting down ${APP_NAME}: " ## Stop daemon with killproc(8) and if this fails ## killproc sets the return value according to LSB. killproc -p $PIDFILE $APP_BIN && rm -f /var/lock/subsys/${SERVICE_NAME} RETVAL=$? echo ;; restart) ## Stop the service and regardless of whether it was ## running or not, start it again. $0 stop $0 start RETVAL=$? ;; status) echo -n "Checking for service ${APP_NAME}: " ## Check status with checkproc(8), if process is running ## checkproc will return with exit status 0. # Return value is slightly different for the status command: # 0 - service up and running # 1 - service dead, but /var/run/ pid file exists # 2 - service dead, but /var/lock/ lock file exists # 3 - service not running (unused) # 4 - service status unknown :-( # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.) status -p $PIDFILE $APP_BIN RETVAL=$? echo ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 3 ;; esacexit $RETVAL运行编译程序
我们只需要把
BeeGFS的SysInitV的启动脚本中改成自己编译的程序,就可以直接无缝运行了:
$ ps -aux | grep beegfs-metaroot 48691 36.7 0.0 33435824 338600 ? Ssl 22:33 4:09 /opt/beegfs/sbin/beegfs-meta cfgFile=/etc/beegfs/beegfs-meta.conf pidFile=/var/run/beegfs-meta.pidroot 51229 0.0 0.0 112712 980 pts/1 R+ 22:44 0:00 grep --color=auto beegfs-meta$ vi /etc/init.d/beegfs-meta#APP_BIN=/opt/beegfs/sbin/${SERVICE_NAME}APP_BIN=/root/beegfs-v6/beegfs_meta/build/${SERVICE_NAME}# /root/beegfs-v6/beegfs_meta/build/beegfs-meta cfgFile=/etc/beegfs/beegfs-meta.conf pidFile=/var/run/beegfs-meta.pid$ systemctl stop beegfs-meta.service$ beegfs-ctl --listtargets --state --nodetype=metaTargetID Reachability Consistency NodeID======== ============ =========== ====== 2 Online Good 2 3 Offline Needs-resync 3$ systemctl start beegfs-meta.service$ beegfs-ctl --listtargets --state --nodetype=metaTargetID Reachability Consistency NodeID======== ============ =========== ====== 2 Online Good 2 3 Online resyncing 3$ systemctl status beegfs-meta.service● beegfs-meta.service - Start BeeGFS Metadata Server Loaded: loaded (/usr/lib/systemd/system/beegfs-meta.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2019-05-09 11:01:41 CST; 21s ago Process: 60986 ExecStop=/etc/init.d/beegfs-meta stop (code=exited, status=0/SUCCESS) Process: 62824 ExecStart=/etc/init.d/beegfs-meta start (code=exited, status=0/SUCCESS) Main PID: 62834 (beegfs-meta/Mai) Tasks: 441 Memory: 53.4M CGroup: /system.slice/beegfs-meta.service └─62834 /root/beegfs-v6/beegfs_meta/build/beegfs-meta cfgFile=/etc/beegfs/beegfs-meta.conf pidFile=/var/run/beegfs-meta.pidMay 09 11:01:40 sacd02 systemd[1]: Starting Start BeeGFS Metadata Server...May 09 11:01:41 sacd02 beegfs-meta[62824]: Starting BeeGFS Meta Server: [ OK ]May 09 11:01:41 sacd02 systemd[1]: Started Start BeeGFS Metadata Server.$ ps -aux | grep beegfs-metaroot 62834 146 0.0 33364184 52596 ? Ssl 11:01 6:34 /root/beegfs-v6/beegfs_meta/build/beegfs-meta cfgFile=/etc/beegfs/beegfs-meta.conf pidFile=/var/run/beegfs-meta.pidroot 63289 0.0 0.0 112708 980 pts/2 S+ 11:06 0:00 grep --color=auto beegfs-meta感谢各位的阅读!关于"如何使用源码编译BeeGFS搭建开发环境"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
编译
源码
脚本
分析
运行
程序
环境
开发
模板
版本
内容
函数
动态
参数
文件
更多
模块
目录
篇文章
配置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
sql数据库 实例
软件开发成本度量功能点技巧
2017年网络安全考试答案
数据库可以查出登陆ip吗
我的世界服务器睡觉
下载方舟怎么可以搜索服务器
网络安全漏洞挖掘产品认证
js取model数据库
江苏北斗校时服务器虚拟主机
冲爆服务器
idrac固件升级影响服务器吗
熊片迅雷数据库
软件开发合同软件源代码
山东服务器机柜哪个好
网络安全与管理答案
船舶软件开发
服务器安全应急预案
博易大师服务器地址
网络安全策略系统
服务器组装费用
灰度服务器
计算机软件开发php
匹配网络技术有限公司
宿迁软件开发管理方法
数据库取出的时间
江西企业软件开发服务号选择
数据库原理与应用课后答案熊婷
中小学网络安全普法课
学习网络安全法第一章
服务器管理口是哪个