1
0
mirror of https://github.com/Zygo/bees.git synced 2025-05-17 21:35:45 +02:00

markdown: add it and write some

This commit is contained in:
Zygo Blaxell 2016-11-16 15:28:09 -05:00
parent cca0ee26a8
commit d126ebf930
3 changed files with 94 additions and 1 deletions

1
.gitignore vendored
View File

@ -3,6 +3,7 @@
*.new *.new
*.so* *.so*
Doxyfile Doxyfile
README.html
depends.mk depends.mk
doxygen_* doxygen_*
html/ html/

View File

@ -1,4 +1,4 @@
default install all: lib src test default install all: lib src test README.html
clean: clean:
git clean -dfx git clean -dfx
@ -13,3 +13,7 @@ src: lib
test: lib src test: lib src
$(MAKE) -C test $(MAKE) -C test
README.html: README.md
markdown README.md > README.html.new
mv -f README.html.new README.html

88
README.md Normal file
View File

@ -0,0 +1,88 @@
BEES
====
Best-Effort Extent-Same, a btrfs deduplicator.
TODO
----
Write some docs here:
* copyright (Zygo Blaxell 2015-2016), license (GPL3+)
* what it is
* what it isn't
* building it
* what works
* what doesn't work
* a brief history of btrfs kernel bugs
* things that could have been, and why they aren't
* roadmap (and anti-roadmap)
* how to report bugs
* how to contribute
Build
-----
Requirements:
* C++11 compiler (I use GCC 4.9)
* btrfs-progs (I've used 4.1..4.7) for /usr/include/btrfs/*
* libuuid-dev (TODO: remove the one function we call from this library)
Build with `make`.
The build produces `bin/bees` and `lib/libcrucible.so`, which must be
copied to somewhere in `$PATH` and `$LD_LIBRARY_PATH` on the target
system respectively.
Setup
-----
Create a directory for bees state files:
export BEESHOME=/some/path
mkdir -p "$BEESHOME"
Create an empty hash table (your choice of size, but it must be a multiple
of 16M). This example creates a 1GB hash table:
truncate -s 1g "$BEESHOME/beeshash.dat"
chmod 700 "$BEESHOME/beeshash.dat"
Configuration
-------------
The only runtime configurable options are environment variables:
* BEESHOME: Directory containing Bees state files:
* beeshash.dat | persistent hash table (must be a multiple of 16M)
* beescrawl.`UUID`.dat | state of SEARCH_V2 crawlers
* beesstats.txt | statistics and performance counters
* BEESSTATS: File containing a snapshot of current Bees state (performance
counters and current status of each thread).
Other options (e.g. interval between filesystem crawls) can be configured
in src/bees.h.
Running
-------
We created this directory in the previous section.
export BEESHOME=/some/path
Use a tmpfs for BEESSTATUS, it updates once per second
export BEESSTATUS=/run/bees.status
bees can only process the root subvol of a btrfs.
Use a bind mount, and let only bees access it.
mount -osubvol=/ /dev/<your-filesystem> /var/lib/bees/root
Let the bees fly!
bees /var/lib/bees/root >> /var/log/bees.log 2>&1
You'll probably want to arrange for /var/log/bees.log to be rotated
periodically. You may also want to set umask to 077 to prevent disclosure
of information about the contents of the filesystem through the log file.