The driver combines a several mount points into the single one. Using ~~~~~ 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 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. 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 COPYRIGHT ~~~~~~~~~ Distributed under GPLv3 and higher Copyright (C) 2008 Dmitry E. Oboukhov