Giter Club home page Giter Club logo

yzhan298 / kvceph Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openmpdk/kvceph

0.0 2.0 0.0 68.45 MB

Ceph object store designed for Samsung Key-Value SSD

License: Other

CMake 0.57% Roff 0.17% Shell 2.12% Python 4.17% Makefile 1.20% C 38.36% C++ 45.25% Batchfile 0.07% Lex 0.01% Yacc 0.01% HTML 4.37% CSS 0.59% JavaScript 2.38% Perl 0.56% DIGITAL Command Language 0.03% Dockerfile 0.01% XSLT 0.07% SAS 0.01% CLIPS 0.01% Pascal 0.07%

kvceph's Introduction

KVCeph - CEPH for Samsung Key-Value SSDs

KVCeph introduces a new CEPH object store, KvsStore, that is designed to support Samsung KV SSDs. The following three components are added to Ceph's Luminous release:

  • KvsStore - an object store for KV SSDs
  • Onode Prefetcher - a utility class that can prefetch Onodes (object metadata)
  • EventDriven Request Scheduler - a replacement for the existing sharded_opwq scheduler.

Checking out the source

You can clone from github with

git clone [email protected]/OpenMPDK/KVSSD.git

or, if you are not a github user,

git clone https://github.com/OpenMPDK/KVSSD.git

KVCeph is located at /KVSSD/application/KVCeph/.

Prerequisites

1. Install dependent packages

./install-deps.sh

2. Install a KV kernel driver

cd /KVSSD/PDK/driver/PCIe/kernel_driver/kernel_vX.X.X
make 
make install 
./re_insmod.sh

3. Format Samsung KV NVMe SSDs

sudo nvme format (device path) -s1 -n1

Building KVCeph

No extra steps are necessary to build KVCeph. The original Ceph build instructions can be used.

For example:

cd /KVSSD/application/KVCeph/
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./ceph-runtime ..
make
make install  (This will install the binaries under the ceph-runtime directory)

For a list of Ceph cmake options: https://github.com/ceph/ceph/

Configuring KVCeph

Prior to running KVCeph, the following two KvsStore configuration parameters need to be added to ceph.conf.

  • osd objectstore = kvsstore - sets the type of object store to use

  • kvsstore_dev_path = /dev/path - sets the path to a Samsung KV SSD

where osd objectstore needs to be defined in the [global] section in ceph.conf, and kvsstore_dev_path should be set in each OSD section. Please also see a sample configuration file, /KVCeph/build/sample.conf, which demonstrates the use of these parameters.

Running a test cluster

For convenience, the Ceph utility vstart.sh is modified to support KvsStore. To run a test cluster with a vstart.sh:

1. Set the device path in vstart.sh

By default, kvsstore_dev_path is set to /dev/nvme0n1 in vstart.sh. 
Please modify the line that defines kvsstore_dev_path in vstart.sh if needed.

2. Run a test cluster with KvsStore

cd build
make vstart        # builds just enough to run vstart
sudo CEPH_DEV=1 MON=1 MDS=0 OSD=1 ../src/vstart.sh -n -x --kvsstore 
./bin/ceph -s

Running a cluster in deploy mode

The instruction for setting up and deploying CEPH clusters can be found at Original Ceph Deploy Manual Page .

Additionally, KVCeph requires the parameter, kvsstore_dev_path, to be set per OSD in ceph.conf, and the KV SSD kernel driver needs to be loaded in each node. The ceph.conf for KVCeph would look like the following.

	[global]
		...
		osd_objectstore = kvsstore
		...
	[osd.0]
		# settings affect osd.0 only
		kvsstore_dev_path = (nvme device path 1)
		cluster addr = (cluster network IP of Node 0)
		public addr =  (public network IP of Node 0)
		host = (hostname)
		...
	[osd.1]
	    ... 
		kvsstore_dev_path = (nvme device path 2)
		...
	[osd.2]
		...
		kvsstore_dev_path = (nvme device path 3)
		...

Unit tests

The following command will run kvsstore unittests.

cd build
./unittest_f.sh

kvceph's People

Contributors

mishrap-ssi avatar ywkang-ssi avatar changhochoi avatar

Watchers

James Cloos avatar Yiming Zhang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.