mhddfs: модуль FUSE для объединения нескольких файловых систем (В одну большую виртуальную)

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 29.04.2008 09:57

Недавно созданный нашим соотечественником Дмитрием Обуховым модуль файловой системы FUSE под названием mhddfs позволяет объединить несколько обычных файловых систем в одну большую «виртуальную», которая будет содержать в себе не только все файлы объединённых ФС, но и всё их свободное место. Кроме того, в отличии от других подобных модулей, этот не ограничивает возможность записи на виртуальную объединённую ФС, а автоматически распределяет новые файлы по тем физическим дискам, где ещё есть свободное место.
Спасибо сказали:

Аватара пользователя
(asper
Бывший модератор
Сообщения: 1661
Статус: nano vi sed awk !
ОС: Работает как часы !

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение (asper » 29.04.2008 10:49

Только почему-то в той статье ничего не сказано про lvm.
Сомнительно доброе привидение
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 29.04.2008 11:04

Вдогонку, ссылка на сайт автора - http://mhddfs.uvw.ru/ (только что её случайно обнаружил в copyright-файле).
Про LVM там упомянуто:
Данный драйвер представляет собой высокоуровневую надстройку над файловой системой (в отличие от скажем LVM, которая может предоставить эту же функциональность но на более низком уровне), поэтому при изменении количества участвующих в работе файловых систем Вам не требуется запускать средства вроде fsck/resize*fs для того чтобы восстановить работоспособность системы.
Спасибо сказали:

Аватара пользователя
AEK
Сообщения: 54
ОС: Solaris

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение AEK » 29.04.2008 13:35

Если мне не изменяет память, unionfs можно настроить точно так же. И благодаря kernel space потерь производительности из-за fuse не будет.
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 29.04.2008 15:16

Если мне не изменяет память, unionfs можно настроить точно так же. И благодаря kernel space потерь производительности из-за fuse не будет.

unionfs, если не ошибаюсь, умеет только одну writable branch, и неограниченное кол-во read-only. И никаких умностей по отслеживанию свободного места, и уж точно - по перемещению наполовину записанных файлов "налету". :) А благодаря kernel space, оно очень любило устраивать мне kernel oops при каких-то абсолютно тривиальнейших и безобидных, казалось бы, экспериментах (но несомненно, это руки).
Потеря производительности с mhddfs возникает в одном случае - как раз в том, когда нужно в процессе записи срочно переразместить файл. Тогда да, будет пауза в записи, пока это выполняется. Но случай этот нечастый. В повседневной же работе никаких замедлений не замечено (у меня через неё подключено около терабайта суммарно на четырёх дисках), при операциях с диском mhddfs грузит ЦПУ не более чем на 2-3%.
Спасибо сказали:

Аватара пользователя
AEK
Сообщения: 54
ОС: Solaris

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение AEK » 29.04.2008 20:41

rm_ писал(а):
29.04.2008 15:16
Потеря производительности с mhddfs возникает в одном случае - как раз в том, когда нужно в процессе записи срочно переразместить файл

Да ну? Можно подумать, fuse никак не влияет на производительность.
Спасибо сказали:

Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 7894
Статус: Маньяк
ОС: Android, GNU/Linux, Windows

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение serzh-z » 29.04.2008 22:49

AEK писал(а):
29.04.2008 20:41
Можно подумать, fuse никак не влияет на производительность.
Думается, что возможности предоставляемые подобным драйвером, вполне окупают затраты по производительности...
Scio me nihil scire.
Спасибо сказали:

Аватара пользователя
AEK
Сообщения: 54
ОС: Solaris

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение AEK » 30.04.2008 00:11

serzh-z писал(а):
29.04.2008 22:49
AEK писал(а):
29.04.2008 20:41
Можно подумать, fuse никак не влияет на производительность.
Думается, что возможности предоставляемые подобным драйвером, вполне окупают затраты по производительности...

Спорно (мягко говоря). Почему бы не сделать тогда RAID/LVM, который будет работать быстрее? Хотя, "если звёзды зажигают...".
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение t.t » 30.04.2008 00:40

AEK писал(а):
30.04.2008 00:11
Спорно (мягко говоря). Почему бы не сделать тогда RAID/LVM, который будет работать быстрее? Хотя, "если звёзды зажигают...".
Ради динамичности, думается.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 30.04.2008 00:42

fuse никак не влияет на производительность.

Сейчас специально измерил разницу в скорости диска напрямую, и скорости его же, через mhddfs.
Во втором случае оказалось медленнее на 2.6%. Так что Вы правы, некоторое влияние FUSE всё-таки имеется.

Почему бы не сделать тогда RAID/LVM

Это уже надо в FAQ куда-нибудь заносить :)
Главный хинт - удобство и гибкость при изменении конфигурации, как запланированном (добавление или удаление дисков), так и внезапном (отказ одного из дисков). Если Вам не кажется это значительным преимуществом, тогда да, видимо эти "звёзды" светят для других. )
Ну и по сравнению с аналогичными по полезному объёму вариантами RAID - гораздо большая надёжность. Ведь при отказе одного диска в RAID0 или в JBOD (не важно, организованы они средствами контроллера или LVM), на оставшихся получаем непригодный к использованию мусор из кусочков файлов и структур ФС. Другими словами, теряется всё содержимое массива. А при отказе одного диска в mhddfs, имеем целыми и невредимыми все те файлы, которые хранились (целиком, ведь сами файлы mhddfs на куски не дробятся) на оставшихся живыми дисках.
Спасибо сказали:

Аватара пользователя
AEK
Сообщения: 54
ОС: Solaris

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение AEK » 30.04.2008 00:53

rm_ писал(а):
30.04.2008 00:42
Сейчас специально измерил разницу в скорости диска напрямую, и скорости его же, через mhddfs.
Во втором случае оказалось медленнее на 2.6%.

Как меряли-то?
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 30.04.2008 01:16

Как меряли-то?

С помощью dd (с ключом conv=fsync).
Спасибо сказали:

Аватара пользователя
kma21
Сообщения: 874
Статус: Странный экспериментатор...

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение kma21 » 08.11.2010 22:08

А если у меня есть 2-а HDD по 10 ГБ, но свободно на каждом по 2 ГБ. Надо записать файл в 3 ГБ. Насколько я понял информацию с сайта ТС, программа сама выбирает диск, на котором свободного места больше. Но если ни на одном диске не хватает места, а в виртуальной ФС хватает места, то будет ли записан файл, и если да, то как?
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4722
ОС: Gentoo

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение /dev/random » 08.11.2010 22:11

kma21 писал(а):
08.11.2010 22:08
А если у меня есть 2-а HDD по 10 ГБ, но свободно на каждом по 2 ГБ. Надо записать файл в 3 ГБ. Насколько я понял информацию с сайта ТС, программа сама выбирает диск, на котором свободного места больше. Но если ни на одном диске не хватает места, а в виртуальной ФС хватает места, то будет ли записан файл, и если да, то как?

Если я пробовал именно эту, а не какой-то аналог, то не влезет.
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 08.11.2010 22:20

kma21 писал(а):
08.11.2010 22:08
А если у меня есть 2-а HDD по 10 ГБ, но свободно на каждом по 2 ГБ. Надо записать файл в 3 ГБ. Насколько я понял информацию с сайта ТС, программа сама выбирает диск, на котором свободного места больше. Но если ни на одном диске не хватает места, а в виртуальной ФС хватает места, то будет ли записан файл, и если да, то как?

Начнёт писать на тот, где места больше, а когда место кончится - напишет "звиняйте не влезло".
Решение:
- выставляйте mlimit значительно выше среднего размера используемых файлов;
- не эксплуатируйте диски на пределе ёмкости (это плохая идея и по причине быстрее растущей в процессе этого фрагментации).
Спасибо сказали:

Аватара пользователя
kma21
Сообщения: 874
Статус: Странный экспериментатор...

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение kma21 » 08.11.2010 23:06

Т.е. представленная выше программа это лишь возможность примонтировать разные блочные устройства к одной папке и распределения между ними файлов. Тогда это немного не то, что мне требуется. Хотя тоже полезно.
Спасибо сказали:

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение sash-kan » 08.11.2010 23:53

kma21
то, что вам требуется, видимо, lvm. или что-то подобное.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:

Аватара пользователя
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение frp » 09.11.2010 16:38

rm_ писал(а):
29.04.2008 09:57
Недавно созданный нашим соотечественником Дмитрием Обуховым модуль файловой системы FUSE под названием mhddfs позволяет объединить несколько обычных файловых систем в одну большую «виртуальную», которая будет содержать в себе не только все файлы объединённых ФС, но и всё их свободное место. Кроме того, в отличии от других подобных модулей, этот не ограничивает возможность записи на виртуальную объединённую ФС, а автоматически распределяет новые файлы по тем физическим дискам, где ещё есть свободное место.

Так есть ведь aufs, был еще unionfs.
QSQLiteBrowser - моя утилита для просмотра и изменения баз данных SQLite (пока 0.0.2-prealpha).
Блог
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 09.11.2010 17:15

Так есть ведь aufs, был еще unionfs.

И что дальше?
Спасибо сказали:

amikhail
Сообщения: 1
ОС: FreeBSD

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение amikhail » 08.01.2011 21:06

Отличная штука. Ровно то, что искал. Именно таким образом устроено хранение данных в Windows Home Server. Там винты не имеют mounting point, а некий драйвер конвертит это в представление, аналогичное MHDFS. Мне в MHDFS не хватает ровно одной вещи, которая есть в WHS - там можно сделать мирроринг выбранной папки. Т.е вот у нас фильмы, так и фиг с ними, с фильмами. Пропадут, да и плевать. А вот тут у нас /home/very_important_data. И WHS автоматически копирует данные из этой папки на два РАЗНЫХ диска.

В следующей версии WHS-а он собираются отказаться от такого подхода. Они с ума сошли. По мне так это мегафича.

А потери в 2 процента в домашней файлопомойке - фигня. Не о чем говорить.
Спасибо сказали:

Tmp001
Сообщения: 9
ОС: WinXP SP3, Ubuntu

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение Tmp001 » 26.01.2011 01:56

Такой вопрос:

Есть два совершенно пустых диска, 250Гб и 500Гб. Объединяем их и создаем кучу вложенных пустых каталогов. Затем в каком-нибудь последнем вложенном каталоге создаем файл на 400Гб, а потом еще один (в другом каталоге) - на 200Гб. После этого вынимаем эти диски и подключаем к другому компьютеру.
Вопрос - что будет с каталогами и файлами на первом и втором дисках?
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 26.01.2011 07:45

Tmp001 писал(а):
26.01.2011 01:56
Есть два совершенно пустых диска, 250Гб и 500Гб. Объединяем их и создаем кучу вложенных пустых каталогов. Затем в каком-нибудь последнем вложенном каталоге создаем файл на 400Гб, а потом еще один (в другом каталоге) - на 200Гб. После этого вынимаем эти диски и подключаем к другому компьютеру.
Вопрос - что будет с каталогами и файлами на первом и втором дисках?

Большие файлы - будут каждый на своём из дисков (200 на 250 ГБ, 400 на 500 ГБ), потому что иначе бы они не влезли.
Если там диски объединить в mhddfs, даже получите картину, идентичную наблюдаемой на первом компьютере.
Я не понимаю, к чему вопрос - ещё в статье из первого поста было ясно написано, что файлы не режутся, и по дискам раскладываются только целиком.

Неочевидный момент, который здесь есть - это то, что файл на 400 ГБ может не получиться записать вообще никуда, если:
- диск на 500 ГБ упомянут в точке монтирования первым
- первым начали писать файл на 200 ГБ
При таком сценарии 200-гиговый файл запишется на диск 500 ГБ, оставив на том 300 ГБ места.
В результате места, чтобы целиком разместить 400-гигабайтный файл, не останется ни на одном из дисков (свободно будет 250+300), и пишущая его программа выдаст ошибку о нехватке свободного места, записав 300 ГБ. Это можно решить, вручную перераспределив файлы между дисками.
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение t.t » 26.01.2011 09:58

rm_ писал(а):
26.01.2011 07:45
Неочевидный момент, который здесь есть - это то, что файл на 400 ГБ может не получиться записать вообще никуда, если:
- диск на 500 ГБ упомянут в точке монтирования первым
- первым начали писать файл на 200 ГБ
При таком сценарии 200-гиговый файл запишется на диск 500 ГБ, оставив на том 300 ГБ места.
В результате места, чтобы целиком разместить 400-гигабайтный файл, не останется ни на одном из дисков (свободно будет 250+300), и пишущая его программа выдаст ошибку о нехватке свободного места, записав 300 ГБ. Это можно решить, вручную перераспределив файлы между дисками.
А можно и предвосхитить проблему, перечисляя диски в порядке возрастания?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение t.t » 26.01.2011 10:18

t.t писал(а):
26.01.2011 09:58
А можно и предвосхитить проблему, перечисляя диски в порядке возрастания?
Впрочем, эта же проблема может снова возникнуть, если на диске, упомянутом позже, места останется меньше, чем на предыдущих…
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 26.01.2011 10:37

t.t
А можно и предвосхитить проблему, перечисляя диски в порядке возрастания?

В чём именно проблема?

Есть параметр mlimit, который устанавливает минимальный объём свободного места, при котором уже "хватит" пытаться писать на этот диск новые файлы. Сделан он отчасти и для повышения шансов, что под "последний" из записываемых на этот диск файлов, места хватит. По умолчанию он равен 4 гигабайтам. При наличии у вас большого кол-ва более крупных файлов, можно выставить его в один-полтора-два размера такого файла. Самый большой файл у меня - гигабайт кажется восемь, и при терабайтных объёмах дисков, описанной выше ситуации не возникает в принципе.

А при использовании файлов, имеющих размер больший, чем некоторые из ваших дисков целиком, и при понимании принципа работы mhddfs, идеи использовать его для таких дисков/файлов не должно было возникнуть в принципе.

Но я подозреваю, вопрос был не в этом, судя по "что будет если подключить к другому компьютеру" автор ошибочно полагал, что его файлы неким образом побъются по дискам и при подключении к компьютеру без mhddfs, там вдруг окажется каша.
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение t.t » 26.01.2011 12:02

rm_ писал(а):
26.01.2011 10:37
t.t
А можно и предвосхитить проблему, перечисляя диски в порядке возрастания?
В чём именно проблема?
В возможности возникновения ситуации, когда суммарного свободного места на дисках с лихвой хватает для размещения файла, но файл тем не менее не влезает. Т.е. фактически частного случая той самой проблемы, для решения которой mhdd и существует. Чем тут может помочь mlimit, мне не очень понятно.

rm_ писал(а):
26.01.2011 10:37
Но я подозреваю, вопрос был не в этом, судя по "что будет если подключить к другому компьютеру" автор ошибочно полагал, что его файлы неким образом побъются по дискам и при подключении к компьютеру без mhddfs, там вдруг окажется каша.
Да, похоже на то. Я скорее для себя пытался понять, насколько критична та гипотетическая ситуация, на которую Вы обратили моё внимание.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Tmp001
Сообщения: 9
ОС: WinXP SP3, Ubuntu

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение Tmp001 » 26.01.2011 23:00

rm_ писал(а):
26.01.2011 10:37
Но я подозреваю, вопрос был не в этом, судя по "что будет если подключить к другому компьютеру" автор ошибочно полагал, что его файлы неким образом побъются по дискам и при подключении к компьютеру без mhddfs, там вдруг окажется каша.

Да, у меня есть подозрение, что будет каша, но не из файлов, а из каталогов. Мне не ясно, как программа сможет раскидать созданную на виртуальном носителе файловую систему по двум физическим. Я специально указал, что файлы лежат во вложенных каталогах.
Я ошибаюсь?
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 26.01.2011 23:03

Tmp001
Долго объяснять, просто поставьте и поэкспериментируйте.
Вкратце: с этим всё здорово, проблем не будет.
Спасибо сказали:

Tmp001
Сообщения: 9
ОС: WinXP SP3, Ubuntu

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение Tmp001 » 26.01.2011 23:16

rm_ писал(а):
26.01.2011 23:03
Вкратце: с этим всё здорово, проблем не будет.

Хорошо бы. Я так понимаю, что на двух физических носителях будут одинаковые структуры каталогов, но разные файлы в них?
Спасибо сказали:

Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: mhddfs: модуль FUSE для объединения нескольких файловых систем

Сообщение rm_ » 26.01.2011 23:25

Tmp001 писал(а):
26.01.2011 23:16
rm_ писал(а):
26.01.2011 23:03
Вкратце: с этим всё здорово, проблем не будет.

Хорошо бы. Я так понимаю, что на двух физических носителях будут одинаковые структуры каталогов, но разные файлы в них?

На каждом из них будут ровно те каталоги (и вложенные в них), которые нужны, чтобы разместить оказавшиеся по таким путям (и попавшие на этот диск) файлы. Полного дубляжа всего дерева не будет, зачем. Однако при перемещении файлов туда-сюда, на некоторых дисках могут остаться пустые каталоги - специально они не чистятся. Удалятся они при удалении соответствующих им каталогов с виртуальной ФС (удаляете с неё пустой каталог - он удаляется со всех дисков, где такой был). Ну либо вручную можно удалить.
И я опять же не понимаю, чего мы теоретизируем. Поставить софтину, смонтировать два каталога, накидать туда файлов - дело пяти минут.
Спасибо сказали: