
The driver combines a several mount points into the single one.

Using
~~~~~
mhddfs /path/to/dir1,/path/to/dir2[,/path/to/dir3] /path/to/mount
fusermount -u /path/to/mount

with an "-o option" you can specify some additional options:

-o logfile=/path/to/file.log  
	specify a file that will contain debug information.

-o loglevel=x
  0 - debug messages
  1 - info messages
  2 - standart (default) messages

-o mlimit=size[m|k|g]

	a free space size threshold
	If a drive has the free space less than the threshold specifed
	then another drive will be choosen while creating a new file. 
	If all the drives have free space less than the threshold
	specified then a drive containing most free space will be
	choosen.

Default value is 4G, minimum value is 100M.
This option accepts suffixes:
[mM] - megabytes
[gG] - gigabytes
[kK] - kilobytes

For an information about the additional options see output of 'mhddfs -h'.

It's necessary to get installed fuse-utils, libfuse for driver working.

Working
~~~~~~~

Consider we have two hard drives with the content below:

/hdd1             /hdd2
|                 |
+-- /dir1         +-- /dir1
|   |             |   |
|   +- file2      |   +- file4
|                 |   +- file2
+-- file1         |
|                 +-- file5
+-- /dir2         |
    |             +-- /dir3
    +- file3          |
                      +- file6

mounting this tree with the command:

mhddfs /hdd1,/hdd2 /hdd_common

into the specified file system point we will see a combined tree.

In the united tree we can see all the directories and files. Note file2 of
2nd hdd is not visible (because 1st hdd has the file2 already).

/hdd_common
|
+-- /dir1
|   |
|   +-- file2  -> /hdd1/dir1/file2
|   +-- file4
|
|-- /dir2
|   |
|   + file3
|
+-- /dir3
|   |
|   +-- file6
|
+-- file1
+-- file5


While writing files they are written to a 1st hdd until the hdd has
the free space (see mlimit option), then they are written on a 2nd
hdd, then to 3rd etc.

df will show a total statistics of all filesystems like there is a
big one hdd.

If an overflow arises while writing to the hdd1 then a file content
already written will be transferred to a hdd containing enough of
free space for a file. The transferring is processed on-the-fly, fully
transparent for the application that is writing. So this behaviour
simulates a big file system.

WARNING: The filesystems are combined must provide a possibility to
get their parameters correctly (e.g. size of free space). Otherwise
the writing failure can occur (but data consistency will be ok
anyway). For example it is a bad idea to combine a several sshfs
systems together.

File system's functions
~~~~~~~~~~~~~~~~~~~~~~~

Most of the functions are supported.

Some are not (and it seems will not be supported):
- hardlinks (no reason use a hard links in a file system working
  on a many nodes)

Not implemented yet:
- extended file attributes (xattr).

Functions are supported:
- get/set attributes of file system objects;
- get/set file system information (total size, size of
  free space is calculated as summary size of file systems);
- read/remove/create directories;
- read/remove/create/write files;
- symbolic links;
- device files, sockets and fifo;
- file locks;

Install
~~~~~~~

It's neccessary for install to have:
1. FUSE header files
2. GCC  
3. libc6 header files

Run 'make' in the source directory produces mhddfs binary. 

Put the binary into /usr/bin or /usr/local/bin and now you
can use it.

Please read FUSE documentation for a further conception.


Get it
~~~~~~

Last version of the mhddfs drivers you can get at 
http://mhddfs.uvw.ru. SVN version is located at:
http://svn.uvw.ru/mhddfs/trunk
To checkout SVN files run:

svn co http://svn.uvw.ru/mhddfs/trunk mhddfs

BUGS
~~~~
Please use Debian-BTS as the bugtracking system.
Feel free to submit a bug information to the Debian bugtracker 
for mhddfs project. See the additional information here:
http://www.debian.org/Bugs

COPYRIGHT
~~~~~~~~~
Distributed under GPLv3 and higher
Copyright (C) 2008 Dmitry E. Oboukhov
