Драйвер для объединения нескольких точек монтирования в одну. Использование ~~~~~~~~~~~~~ mhddfs /path/to/dir1,/path/to/dir2[,/path/to/dir3] /path/to/mount fusermount -u /path/to/mount используя опцию -o можно задать некоторые дополнительные опции: -o logfile=/path/to/file.log - имя файла куда будет сохраняться отладочная информация о процессе работы. -o loglevel=x - уровень сообщений в log-файл 0 - debug messages 1 - info messages 2 - standart (default) messages -o mlimit=size[m|k|g] - пороговый размер свободного места. если на диске места меньше чем это значение, то для создания нового файла будет выбран другой диск. Если на всех дисках свободного места меньше чем это значение, то будет выбран диск на котором самое большое количество свободного места. Значение по умолчанию - 4G, минимальное значение - 100M. Данная опция понимает суффиксы [mM] - мегабайты [gG] - гигабайты [kK] - килобайты информацию о дополнительных опциях смотри в помощи 'mhddfs -h' для работы необходимо иметь установленные fuse-utils, libfuse Работа ~~~~~~ Допустим у нас есть два hdd со следующим содержимым. /hdd1 /hdd2 | | +-- /dir1 +-- /dir1 | | | | | +- file2 | +- file4 | | +- file2 +-- file1 | | +-- file5 +-- /dir2 | | +-- /dir3 +- file3 | +- file6 смонтировав это дерево командой mhddfs /hdd1,/hdd2 /hdd_common в определенную точку файловой системы мы будем видеть объединенное дерево. в суммарном дереве мы увидим все каталоги и файлы. Обратите внимание что file2 со второго винчестера виден не будет (так как уже есть такой файл на первом винчестере): /hdd_common | +-- /dir1 | | | +-- file2 -> /hdd1/dir1/file2 | +-- file4 | |-- /dir2 | | | + file3 | +-- /dir3 | | | +-- file6 | +-- file1 +-- file5 При записи файлов в файловую систему файлы пишутся на первый hdd до тех пор пока там есть место (см опцию mlimit), затем они пишутся на второй hdd, третий итп. df покажет суммарную статистику по всем файлсистемам как будто это один большой винчестер. если при записи файла на hdd1 получится переполнение винчестера, то уже записанное содержимое будет перенесено на винчестер на котором достаточно места для данного файла. Перенос осуществляется прозрачно для записывающего приложения, этим достигается иммитация файловой системы большого размера. Функциональность файловой системы ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Поддерживается большинство функций. Не поддерживается (и видимо не будет поддерживаться): * жесткие ссылки (hardlinks) в файловой системе работающей на многих узлах жесткие ссылки не имеют смысла. Пока не реализованы: * Расширенные атрибуты файлов (xattr). Поддерживаются функции: * Получение/установка атрибутов об объектах файловой системы; * Получение информации о файловой системе (общий объем, объем свободного места вычисляются как сумма объемов составляющих файловых систем); * Чтение/удаление/создание каталогов; * Чтение/удаление/создание/запись файлов; * Символьные ссылки (symlinks); * Файлы устройств, сокеты и fifo; * Блокировки файлов. Установка ~~~~~~~~~ Для сборки необходимо иметь 1. заголовочные файлы FUSE 2. компилятор gcc 3. заголовочные файлы libc6 введите в каталоге с исходными текстами команду make и будет собран модуль mhddfs. Поместите его в /usr/bin или /usr/local/bin и можете пользоваться. Для более подробного понимания работы читайте документацию на FUSE. Получение ~~~~~~~~~ Последнюю версию драйвера mhddfs Вы можете получить на страничке http://mhddfs.uvw.ru. SVN-версия находится по адресу: http://svn.uvw.ru/mhddfs/trunk. Для получения файлов из svn введите команду: svn co http://svn.uvw.ru/mhddfs/trunk mhddfs COPYRIGHT ~~~~~~~~~ Copyright (C) 2008, Dmitry E. Oboukhov распространяется под лицензией GPLv3 и выше.