Skip to content
This repository

LVM Tiered Storage - HSM on Linux

branch: master
Octocat-spinner-32 doc sample file for my config August 02, 2012
Octocat-spinner-32 .gitignore few file types to .gitignore July 18, 2012
Octocat-spinner-32 Makefile Make lvmtscd read config file (use its parameters only as a fallback) August 22, 2012
Octocat-spinner-32 README libconfuse dependency August 03, 2012
Octocat-spinner-32 activity_stats.c first stage of pushing score decay parameters up in stack August 23, 2012
Octocat-spinner-32 activity_stats.h first stage of pushing score decay parameters up in stack August 23, 2012
Octocat-spinner-32 activity_stats_test.c tests for replacing blocks in struct block_scores July 18, 2012
Octocat-spinner-32 config.c Make lvmtscd read config file (use its parameters only as a fallback) August 22, 2012
Octocat-spinner-32 config.h Make lvmtscd read config file (use its parameters only as a fallback) August 22, 2012
Octocat-spinner-32 extents.c call with e->length == len is valid but causes assertion fail August 02, 2012
Octocat-spinner-32 extents.h implement function to return avaiable space in tier (maxUsed - used) August 02, 2012
Octocat-spinner-32 lvmdefrag.c simple LVM defragment tool August 05, 2012
Octocat-spinner-32 lvmls.c push pv_segments and pv_segments_num to global variables August 05, 2012
Octocat-spinner-32 lvmls.h push pv_segments and pv_segments_num to global variables August 05, 2012
Octocat-spinner-32 lvmtscat.c first stage of pushing score decay parameters up in stack August 23, 2012
Octocat-spinner-32 lvmtscd.c first stage of pushing score decay parameters up in stack August 23, 2012
Octocat-spinner-32 lvmtsd.c Make lvmtscd read config file (use its parameters only as a fallback) August 22, 2012
Octocat-spinner-32 volumes.c first stage of pushing score decay parameters up in stack August 23, 2012
Octocat-spinner-32 volumes.h logical volume name shouldn't be modifiable anywhere August 02, 2012
README
Application for monitoring LVM volumes and moving blocks based on usage to 
faster and slower storage. In other words, Hierarchical Storage Manager
utilizing LVM on Linux.

Dependencies:
=============
lvm
blktrace
confuse
debugfs (mounted in /sys/kernel/debug/)

Compiling:
==========
make

Usage:
======
Run collector daemon:

MAKE SURE YOU HAVE debugfs MOUNTED!

./lvmtscd -f lvm-volume.lvmts -l /dev/lvm-group/lvm-volume

After some time you can output the stats using cat (by default it will output
100 most active blocks with blocks being logical extents):

./lvmtscat --LE lvm-volume.lvmts

To get 25 most active physical extents formatted as a parameter to pvmove, use following
command:

./lvmtscat -b 25 --pvmove --VG VolumeGroupName --LV LogicalVolumeName lvm-volume.lvmts

Using lvmtsd
============

While collecting stats and using lvmtscat for looking at most active blocks
gives much information, it doesn't do anything.

(it's a hack now, it will be made more user-friendly later)

First, edit doc/sample.conf file, the title of the volume section should have
the same name as file created by lvmtscd, sans .lvmts extension, rest of the
options is explained there.

Currently only one volume is supported, additional "volume" sections will be
ignored.

First, run lvmtscd in the same dir as is doc/. Wait for it to write some
statistics (if your system isn't active, wait at least half an hour, with
busy system, 10min should suffice). If the file has gotten big, just run

./lvmtsd

It will move most active extents to fastest storage and then keep it updated
according to rules in sample.conf

Now you may enjoy your hybrid storage!
Something went wrong with that request. Please try again.