6fd67f19e3
* refs/pull/30603/head: ceph-daemon: -n type.id instead of -i id ceph-daemon: drop unused VERSION ceph-daemon: clean up dir helpers, tighten up permissions ceph-daemon: fchmod before writing to keyring file test_ceph_daemon.sh: skip ssh until container image has remoto ceph-daemon: decode utf-8 in run() helper mgr/ssh: clean up debug cruft mgr/ssh: clean up bare except: block ceph-daemon: clean up bare except: blocks ceph-daemon: all imports to top ceph-volume: no_tmpfs -> tmpfs doc/bootstrap: add new bootstrap documentation ceph-daemon: add --output-pub-ssh-key for bootstrap ceph-daemon: make 'shell' easier to use ceph-daemon: support docker; prefer podman qa: add ceph-daemon debian: ceph-daemon package, required by ceph-mgr-ssh ceph.spec.in: ceph-daemon package, required by ceph-mgr common/options: cleanup whitespace mgr/ssh: simplify getting the cluster fsid mgr/ssh: pipe ceph-daemon script to stdin of python3 ceph-daemon: add support for args and/or stdin from top of script ceph-daemon: make ceph-volume use get_config_and_keyring ceph-daemon: ls: behave if /var/log/ceph doesn't exist ceph-daemon: implement 'adopt' for legacy style daemons ceph-daemon: fix fsid detection for legacy osds ceph-daemon: make rm-cluster clean up system-ceph*.slice too ceph-daemon: configure ssh orchestrator ceph-daemon: be more restrictive with file permissions mgr/ssh: create osd with ceph-daemon mgr/ssh: pass daemon id separately to _create_daemon ceph-daemon: add --config-and-keyring to ceph-volume command ceph-daemon: create log path for shell (if needed) mgr/ssh: use _run_ceph_daemon for _create_daemon mgr/ssh: factor _run_ceph_daemon out of _get_device_inventory mon/ConfigMonitor: allow entity type only for 'config get' ceph-daemon: add ceph-volume subcommand ceph-daemon: remove unused CephContainer dname property ceph-daemon: drop useless uid/gid checks mgr/ssh: deploy new mgrs with ceph-daemon mgr/ssh: factor _create_daemon out of create_mon mon/MonCap: allow mgr to create new auth keys mgr/ssh: run c-v with podman when getting inventory mgr/ssh: simplify ssh connection management mgr/ssh: use ceph-daemon for deploying mon ceph-daemon: allow --mon-network for deploying new mon (vs specifying IP) ceph-daemon: --config-and-keyring (not key) common/options: add 'image' config option test_ceph_daemon: specify image name vstart.sh: add --ssh to enable+configure ssh orchestrator mgr/ssh: use ssh identity from config-key, if present mgr/ssh: hardcode default ssh_config ceph-daemon: store ssh identity in mon config-key store ceph-daemon: --privileged arg for 'exec' ceph-daemon: make deploy work for osd (do a c-v prepare) ceph-daemon: make shell privileged ceph-daemon: move get_container_mounts to a helper ceph-daemon: pass full path for entrypoint ceph-daemon: make id portion of 'shell' optional ceph-volume: accept --no-tmpfs argument for bluestore ceph-daemon: 'unit' command ceph-daemon: fix run command to use call(), not check_output() src/ceph-daemon: whitespace ceph-daemon: add 'enter', 'exec' commands ceph-daemon: bind config to default location test_ceph_daemon.sh: test deploy mds too ceph-daemon: generate ssh keys ceph-daemon: --config, not --conf ceph-daemon: long lines ceph-daemon: add --config to bootstrap ceph-daemon: add 'shell' command ceph-daemon: do not import subprocess symbols directly ceph-daemon: add mons with 'deploy mon.x ...' ceph-daemon: add 'ls' ceph-daemon: simplify uid/gid a bit ceph-daemon: fix libudev ceph-daemon: autodetect uid/gid from container image ceph-daemon: default to empty log files, log to stderr (systemd journal) ceph-daemon: rm-{daemon,cluster} ceph-daemon: fix bootstrap config ceph-daemon: fix args.fsid usage ceph-daemon: be careful overwriting live files ceph-daemon: slurp some options over from the standard systemd unit ceph-daemon: add ceph.target and ceph-$fsid.target units test_ceph_daemon.sh: stupid test script ceph-daemon: bootstrap and deploy (mgr) work ceph-daemon: initial checkin ceph-mon: fix debug print of public_addr |
||
---|---|---|
.github | ||
admin | ||
alpine | ||
bin | ||
ceph-erasure-code-corpus@2d7d78b9cc | ||
ceph-menv | ||
ceph-object-corpus@e9bd1dbea0 | ||
cmake/modules | ||
debian | ||
doc | ||
etc | ||
examples | ||
fusetrace | ||
keys | ||
man | ||
mirroring | ||
monitoring | ||
qa | ||
selinux | ||
share | ||
src | ||
sudoers.d | ||
systemd | ||
udev | ||
.gitattributes | ||
.githubmap | ||
.gitignore | ||
.gitmodule_mirrors | ||
.gitmodules | ||
.mailmap | ||
.organizationmap | ||
.peoplemap | ||
AUTHORS | ||
ceph.spec.in | ||
CMakeLists.txt | ||
CodingStyle | ||
CONTRIBUTING.rst | ||
COPYING | ||
COPYING-GPL2 | ||
COPYING-LGPL2.1 | ||
COPYING-LGPL3 | ||
do_cmake.sh | ||
do_freebsd.sh | ||
doc_deps.deb.txt | ||
Doxyfile | ||
install-deps.sh | ||
make-apk.sh | ||
make-debs.sh | ||
make-dist | ||
make-srpm.sh | ||
PendingReleaseNotes | ||
pom.xml | ||
README.aix | ||
README.alpine.md | ||
README.FreeBSD | ||
README.md | ||
README.solaris | ||
run-make-check.sh | ||
SubmittingPatches.rst | ||
test_ceph_daemon.sh |
Ceph - a scalable distributed storage system
Please see http://ceph.com/ for current info.
Contributing Code
Most of Ceph is dual licensed under the LGPL version 2.1 or 3.0. Some miscellaneous code is under BSD-style license or is public domain. The documentation is licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0). There are a handful of headers included here that are licensed under the GPL. Please see the file COPYING for a full inventory of licenses by file.
Code contributions must include a valid "Signed-off-by" acknowledging the license for the modified or contributed file. Please see the file SubmittingPatches.rst for details on what that means and on how to generate and submit patches.
We do not require assignment of copyright to contribute code; code is contributed under the terms of the applicable license.
Checking out the source
You can clone from github with
git clone git@github.com:ceph/ceph
or, if you are not a github user,
git clone git://github.com/ceph/ceph
Ceph contains many git submodules that need to be checked out with
git submodule update --init --recursive
Build Prerequisites
The list of Debian or RPM packages dependencies can be installed with:
./install-deps.sh
Building Ceph
Note that these instructions are meant for developers who are
compiling the code for development and testing. To build binaries
suitable for installation we recommend you build deb or rpm packages,
or refer to the ceph.spec.in
or debian/rules
to see which
configuration options are specified for production builds.
Prerequisite: CMake 3.5.1
Build instructions:
./do_cmake.sh
cd build
make
(Note: do_cmake.sh now defaults to creating a debug build of ceph that can be up to 5x slower with some workloads. Please pass "-DCMAKE_BUILD_TYPE=RelWithDebInfo" to do_cmake.sh to create a non-debug release.)
This assumes you make your build dir a subdirectory of the ceph.git
checkout. If you put it elsewhere, just replace ..
in do_cmake.sh with a
correct path to the checkout. Any additional CMake args can be specified
setting ARGS before invoking do_cmake. See cmake options
for more details. Eg.
ARGS="-DCMAKE_C_COMPILER=gcc-7" ./do_cmake.sh
To build only certain targets use:
make [target name]
To install:
make install
CMake Options
If you run the cmake
command by hand, there are many options you can
set with "-D". For example the option to build the RADOS Gateway is
defaulted to ON. To build without the RADOS Gateway:
cmake -DWITH_RADOSGW=OFF [path to top level ceph directory]
Another example below is building with debugging and alternate locations for a couple of external dependencies:
cmake -DLEVELDB_PREFIX="/opt/hyperleveldb" -DOFED_PREFIX="/opt/ofed" \
-DCMAKE_INSTALL_PREFIX=/opt/accelio -DCMAKE_C_FLAGS="-O0 -g3 -gdwarf-4" \
..
To view an exhaustive list of -D options, you can invoke cmake
with:
cmake -LH
If you often pipe make
to less
and would like to maintain the
diagnostic colors for errors and warnings (and if your compiler
supports it), you can invoke cmake
with:
cmake -DDIAGNOSTICS_COLOR=always ..
Then you'll get the diagnostic colors when you execute:
make | less -R
Other available values for 'DIAGNOSTICS_COLOR' are 'auto' (default) and 'never'.
Building a source tarball
To build a complete source tarball with everything needed to build from source and/or build a (deb or rpm) package, run
./make-dist
This will create a tarball like ceph-$version.tar.bz2 from git. (Ensure that any changes you want to include in your working directory are committed to git.)
Running a test cluster
To run a functional test cluster,
cd build
make vstart # builds just enough to run vstart
../src/vstart.sh --debug --new -x --localhost --bluestore
./bin/ceph -s
Almost all of the usual commands are available in the bin/ directory. For example,
./bin/rados -p rbd bench 30 write
./bin/rbd create foo --size 1000
To shut down the test cluster,
../src/stop.sh
To start or stop individual daemons, the sysvinit script can be used:
./bin/init-ceph restart osd.0
./bin/init-ceph stop
Running unit tests
To build and run all tests (in parallel using all processors), use ctest
:
cd build
make
ctest -j$(nproc)
(Note: Many targets built from src/test are not run using ctest
.
Targets starting with "unittest" are run in make check
and thus can
be run with ctest
. Targets starting with "ceph_test" can not, and should
be run by hand.)
When failures occur, look in build/Testing/Temporary for logs.
To build and run all tests and their dependencies without other unnecessary targets in Ceph:
cd build
make check -j$(nproc)
To run an individual test manually, run ctest
with -R (regex matching):
ctest -R [regex matching test name(s)]
(Note: ctest
does not build the test it's running or the dependencies needed
to run it)
To run an individual test manually and see all the tests output, run
ctest
with the -V (verbose) flag:
ctest -V -R [regex matching test name(s)]
To run an tests manually and run the jobs in parallel, run ctest
with
the -j
flag:
ctest -j [number of jobs]
There are many other flags you can give ctest
for better control
over manual test execution. To view these options run:
man ctest
Building the Documentation
Prerequisites
The list of package dependencies for building the documentation can be
found in doc_deps.deb.txt
:
sudo apt-get install `cat doc_deps.deb.txt`
Building the Documentation
To build the documentation, ensure that you are in the top-level
/ceph
directory, and execute the build script. For example:
admin/build-doc