/robinhood

Robinhood Policy Engine

Primary LanguageCOtherNOASSERTION

I   - License
II  - Compiling
III - Install
IV  - Database configuration
V   - Enabling Lustre changelogs
VI  - RobinHood config file
VII - First run

I - License
===========

Copyright (C) 2004-2013 CEA/DAM

This program is free software; you can redistribute it and/or modify
it under the terms of the CeCILL-C License.

The fact that you are presently reading this means that you have had
knowledge of the CeCILL-C license (http://www.cecill.info) and that you
accept its terms.

II - Compiling
==============

2.1 - From source tarball
-------------------------

It is advised to build RobinHood on your target system, to ensure the best
compatibility with your Lustre and MySQL versions. 

Make sure you have the following products installed on your machine:
* bison
* flex
* mysql-devel
* liblustreapi (/usr/include/lustre/lustreapi.h and /usr/lib64/liblustreapi.so)
  It is usually provided by client lustre RPM.

Unzip and untar the source distribution:
> tar zxvf robinhood-2.x.x.tar.gz
> cd robinhood-2.x.x

Run the 'configure' script with the following options:
* For Lustre-HSM: --with-purpose=LUSTRE_HSM
* --prefix=<path> to set the prefix of installation path (default is /usr).
* --with-lustre=<lustre_src_tree> if you want to build using a specific Lustre
	version (not installed)

E.g.:
> ./configure --with-purpose=LUSTRE_HSM

Then, build the RPM:
> make rpm

A ready-to-install RPM is generated in the 'rpms/RPMS/<arch>' directory.

2.2 - From git repository
-------------------------

# make sure flex, bison, libtool, mysql-devel are installed:
# E.g.
yum install flex
yum install bison
yum install libtool
yum install mysql-devel

# retrieve robinhood sources

git clone git://robinhood.git.sourceforge.net/gitroot/robinhood/robinhood
cd robinhood
git checkout  master (or other branch)
sh autogen.sh

Then refer to section 2.1 for next compilation steps.


III - Install
=============

For installing robinhood on your target system, install the following RPM:
> robinhood-adm
	configuration helper for DB, changelogs, ...
> robinhood-lhsm
	include robinhood commands, config templates, init.d script

IV - Database Configuration
===========================

Robinhood needs a MySQL database for storing information about files.
This database can run on a different node from Robinhood daemon.

* Install MySQL server on the machine (mysql-server and mysql packages).
* Start the DB engine:
	service mysqld start
* Run the configuration helper script as root on the database host:
	1) check database requirement:
		> rbh-config precheck_db
	2) create robinhood's database:
		> rbh-config create_db

* Write the DB password to a file with read access for root only (600)
  e.g. to /etc/robinhood.d/lhsm/.dbpassword

Note: initially, the database schema is empty. Robinhood will create it the first time it is launched.

V - Enabling Lustre changelogs
==============================
For Lustre-HSM purpose, you must register robinhood as a MDT changelog consummer.

* Run the configuration helper script on Lustre MDT:
	> rbh-config enable_chglogs
  This registers a changelog consummer and activate required changelog records.

Note: by default, the script checks for a 'cl1' consummer.
If you need to register several changelog consummers on your file system,
refer to lustre documentation.

VI - Configuration file
=======================

You can use the '--template' option to generate a documented configuration file template:
> rbh-lhsm --template=<template_file>

Note: by default, "service robinhood-hsm start" looks for configuration files in "/etc/robinhood.d/hsm".

For more details, refer to Robinhood Admin Guide (in the doc/admin_guide directory).

VII - First run
===============

Even if your filesystem is empty, you need to perform an initial scan in order to initialize robinhood database.
This prevents from having entries in filesystem that it wouldn't know about.
rbh-lhsm --scan --once

VIII - Start the daemon
=======================
service robinhood-lhsm start
or run:
rbh-lhsm --detach

This starts reading changelogs + applying policies (archive, release)