All Projects → ceph-dovecot → dovecot-ceph-plugin

ceph-dovecot / dovecot-ceph-plugin

Licence: Unknown and 2 other licenses found Licenses found Unknown LICENSE Unknown COPYING LGPL-2.1 COPYING-LGPL2.1
Dovecot plugin for storing mails in a Ceph cluster

Programming Languages

C++
36643 projects - #6 most used programming language
M4
1887 projects
shell
77523 projects
Roff
2310 projects
Makefile
30231 projects

Projects that are alternatives of or similar to dovecot-ceph-plugin

Ceph Container
Docker files and images to run Ceph in containers
Stars: ✭ 1,134 (+877.59%)
Mutual labels:  ceph
Deepsea
A collection of Salt files for deploying, managing and automating Ceph.
Stars: ✭ 140 (+20.69%)
Mutual labels:  ceph
Inkscope
inkScope is a ceph visualization and admin interface
Stars: ✭ 204 (+75.86%)
Mutual labels:  ceph
Rook
Storage Orchestration for Kubernetes
Stars: ✭ 9,369 (+7976.72%)
Mutual labels:  ceph
Backy2
backy2: Deduplicating block based backup software for ceph/rbd, image files and devices
Stars: ✭ 126 (+8.62%)
Mutual labels:  ceph
Pifpaf
Python fixtures and daemon managing tools for functional testing
Stars: ✭ 161 (+38.79%)
Mutual labels:  ceph
Learning Ceph
Tidy up Ceph tutorials.
Stars: ✭ 37 (-68.1%)
Mutual labels:  ceph
ceph-formula
docs.saltstack.com/en/latest/topics/development/conventions/formulas.html
Stars: ✭ 14 (-87.93%)
Mutual labels:  ceph
Ytdlrc
☁️ Downloads videos and metadata with youtube-dl and moves each file on completion to an rclone remote
Stars: ✭ 140 (+20.69%)
Mutual labels:  ceph
Drone Cache
A Drone plugin for caching current workspace files between builds to reduce your build times
Stars: ✭ 194 (+67.24%)
Mutual labels:  ceph
Akubra
Simple solution to keep a independent S3 storages in sync
Stars: ✭ 79 (-31.9%)
Mutual labels:  ceph
Zlog
A high-performance distributed shared-log for Ceph
Stars: ✭ 103 (-11.21%)
Mutual labels:  ceph
K8s1.13
微服务容器化持续交付总体流程:开发代码提交到Gitlab;Rahcher设置代码库为Gitlab;Rahcher流水线配置编译源码;Rahcher流水线Build Docker镜像;Rancher流水线Push Docker镜像到私有镜像库Harbor;Rancher流水线根据k8s yaml部署文件部署容器。
Stars: ✭ 166 (+43.1%)
Mutual labels:  ceph
Cv4pve Barc
Backup And Restore Ceph for Proxmox VE
Stars: ✭ 74 (-36.21%)
Mutual labels:  ceph
Chef Bcpc
Bloomberg Clustered Private Cloud distribution
Stars: ✭ 205 (+76.72%)
Mutual labels:  ceph
Radosgw Admin4j
A Ceph Object Storage Admin SDK / Client Library for Java ✨🍰✨
Stars: ✭ 50 (-56.9%)
Mutual labels:  ceph
Operos
Linux-based operating system that brings hyperscaler-grade infrastructure automation to organizations of all sizes
Stars: ✭ 144 (+24.14%)
Mutual labels:  ceph
crowbar-core
Core deployment for Crowbar
Stars: ✭ 16 (-86.21%)
Mutual labels:  ceph
Volplugin
**EXPERIMENTAL** Contiv Storage: Policy backed Clustered Storage (via Ceph or NFS) for Docker
Stars: ✭ 217 (+87.07%)
Mutual labels:  ceph
Cn
Ceph Nano - One step S3 in container with Ceph.
Stars: ✭ 169 (+45.69%)
Mutual labels:  ceph

Ceph Plugins for Dovecot Build Status

The goal of this project is the creation of a storage plugin for Dovecot, which enables the storage of emails in Ceph RADOS objects. The focus is currently on a hybrid model where the emails are stored in RADOS objects, while all other metadata (lists, index, cache) are stored in a file system that is located locally on the Dovecot server or on shared CephFS volumes. The latter allows the operation of Dovecot completely on Ceph.

As a bonus, a dictionary plugin is included, which allows the storage of Dovecot dictionaries in Ceph OMAPs.

Disclaimer

This project is under active development and not in any kind of release state. Be aware it is possible and very likely that APIs, interfaces and or the data format change at any time before a first release.

The code is in a tested state, but is NOT production ready. Although the code is still flagged as experimental, we encourage users to try it out for non-production clusters and non-critical data sets and report their experience, findings and issues.

It is planned to move all or parts of this code into other git repositories to move these parts later into other open source community projects like Ceph and Dovecot.

RADOS Storage Plugin

The Hybrid Storage Model

The mails are saved directly as RADOS objects. All other data are stored as before in the file system. This applies in particular to the data of the lib-index of Dovecot. We assume the file system is designed as shared storage based on CephFS.

Based on the code of the Dovecot storage format Cydir we developed a hybrid storage as Dovecot plugin. The hybrid storage directly uses the librados for storing mails in Ceph objects. The mail objects are immutable and get stored in one RADOS object. Immutable metadata is stored in omap KV and xattr. The index data is completely managed by Dovecot's lib-index and ends up in CephFS volumes.

Overview

Because of the way MUAs access mails, it may be necessary to provide a local cache for mails objects. The cache can be located in the main memory or on local (SSD) storage. However, this optimization is optional and will be implemented only if necessary.

Overview

The mail objects and CephFS should be placed in different RADOS pools. The mail objects are immutable and require a lot of storage. They would benefit a lot from erasure coded pools. The index data required a lot of writing and are placed on an SSD based CephFS pool.

A more detailed description of the mail storage format and the configuration of the rbox plugin can be found on the corresponding Wiki page.

RADOS Dictionary Plugin

The Dovecot dictionaries are a good candidate to be implemented using the Ceph omap key/value store. They are a building block to enable a Dovecot, which runs exclusively on Ceph. A dictionary implementation based on RADOS omap key/values is part of the project. A detailed description of the dictionary plugin can be found on the corresponding Wiki page.

Compile and install the Plugins

To compile the plugin you need a configured or installed Dovecot >= 2.2.21.

Checking out the source

You can clone from github with

git clone https://github.com/ceph-dovecot/dovecot-ceph-plugin.git

Ceph contains git submodules that need to be checked out with

git submodule update --init --recursive

The build requires that you have the following software/packages installed:

libjansson-devel version >= 2.9
librados2-devel (rados header) version >= 10.2.5
dovecot-devel (dovecot header)

If you are using CentOS make sure you also have the following package installed:

yum install redhat-rpm-config

Standard installation in /usr/local

./autogen.sh
./configure
make
sudo make install

User installation in ~/dovecot

./autogen.sh
./configure --prefix=/home/user/dovecot 
make install

Configured source tree in ~/workspace/core

./autogen.sh
./configure --with-dovecot=/home/user/workspace/core
make install

Thanks

The development of this software is sponsored by Deutsche Telekom. We would like to take this opportunity to thank Deutsche Telekom.
This plugin borrows heavily from Dovecot itself particularly for the automatic detection of dovecont-config (see m4/dovecot.m4). The lib-dict and lib-storage were also used as reference material for understanding the Dovecot dictionary and storage API.
Tallence carried out the initial development.
Wido den Hollander from 42on.com for all the help and ideas.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].