mhddfs: модуль FUSE для объединения нескольких файловых систем (В одну большую виртуальную)
Модератор: Модераторы разделов
mhddfs: модуль FUSE для объединения нескольких файловых систем
Недавно созданный нашим соотечественником Дмитрием Обуховым модуль файловой системы FUSE под названием mhddfs позволяет объединить несколько обычных файловых систем в одну большую «виртуальную», которая будет содержать в себе не только все файлы объединённых ФС, но и всё их свободное место. Кроме того, в отличии от других подобных модулей, этот не ограничивает возможность записи на виртуальную объединённую ФС, а автоматически распределяет новые файлы по тем физическим дискам, где ещё есть свободное место.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Только почему-то в той статье ничего не сказано про lvm.
Сомнительно доброе привидение
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Вдогонку, ссылка на сайт автора - http://mhddfs.uvw.ru/ (только что её случайно обнаружил в copyright-файле).
Про LVM там упомянуто:
Про LVM там упомянуто:
Данный драйвер представляет собой высокоуровневую надстройку над файловой системой (в отличие от скажем LVM, которая может предоставить эту же функциональность но на более низком уровне), поэтому при изменении количества участвующих в работе файловых систем Вам не требуется запускать средства вроде fsck/resize*fs для того чтобы восстановить работоспособность системы.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Если мне не изменяет память, unionfs можно настроить точно так же. И благодаря kernel space потерь производительности из-за fuse не будет.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Если мне не изменяет память, unionfs можно настроить точно так же. И благодаря kernel space потерь производительности из-за fuse не будет.
unionfs, если не ошибаюсь, умеет только одну writable branch, и неограниченное кол-во read-only. И никаких умностей по отслеживанию свободного места, и уж точно - по перемещению наполовину записанных файлов "налету". А благодаря kernel space, оно очень любило устраивать мне kernel oops при каких-то абсолютно тривиальнейших и безобидных, казалось бы, экспериментах (но несомненно, это руки).
Потеря производительности с mhddfs возникает в одном случае - как раз в том, когда нужно в процессе записи срочно переразместить файл. Тогда да, будет пауза в записи, пока это выполняется. Но случай этот нечастый. В повседневной же работе никаких замедлений не замечено (у меня через неё подключено около терабайта суммарно на четырёх дисках), при операциях с диском mhddfs грузит ЦПУ не более чем на 2-3%.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Спорно (мягко говоря). Почему бы не сделать тогда RAID/LVM, который будет работать быстрее? Хотя, "если звёзды зажигают...".
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Ради динамичности, думается.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
fuse никак не влияет на производительность.
Сейчас специально измерил разницу в скорости диска напрямую, и скорости его же, через mhddfs.
Во втором случае оказалось медленнее на 2.6%. Так что Вы правы, некоторое влияние FUSE всё-таки имеется.
Почему бы не сделать тогда RAID/LVM
Это уже надо в FAQ куда-нибудь заносить
Главный хинт - удобство и гибкость при изменении конфигурации, как запланированном (добавление или удаление дисков), так и внезапном (отказ одного из дисков). Если Вам не кажется это значительным преимуществом, тогда да, видимо эти "звёзды" светят для других. )
Ну и по сравнению с аналогичными по полезному объёму вариантами RAID - гораздо большая надёжность. Ведь при отказе одного диска в RAID0 или в JBOD (не важно, организованы они средствами контроллера или LVM), на оставшихся получаем непригодный к использованию мусор из кусочков файлов и структур ФС. Другими словами, теряется всё содержимое массива. А при отказе одного диска в mhddfs, имеем целыми и невредимыми все те файлы, которые хранились (целиком, ведь сами файлы mhddfs на куски не дробятся) на оставшихся живыми дисках.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Как меряли-то?
С помощью dd (с ключом conv=fsync).
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
А если у меня есть 2-а HDD по 10 ГБ, но свободно на каждом по 2 ГБ. Надо записать файл в 3 ГБ. Насколько я понял информацию с сайта ТС, программа сама выбирает диск, на котором свободного места больше. Но если ни на одном диске не хватает места, а в виртуальной ФС хватает места, то будет ли записан файл, и если да, то как?
- /dev/random
- Администратор
- Сообщения: 5289
- ОС: Gentoo
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
kma21 писал(а): ↑08.11.2010 22:08А если у меня есть 2-а HDD по 10 ГБ, но свободно на каждом по 2 ГБ. Надо записать файл в 3 ГБ. Насколько я понял информацию с сайта ТС, программа сама выбирает диск, на котором свободного места больше. Но если ни на одном диске не хватает места, а в виртуальной ФС хватает места, то будет ли записан файл, и если да, то как?
Если я пробовал именно эту, а не какой-то аналог, то не влезет.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
kma21 писал(а): ↑08.11.2010 22:08А если у меня есть 2-а HDD по 10 ГБ, но свободно на каждом по 2 ГБ. Надо записать файл в 3 ГБ. Насколько я понял информацию с сайта ТС, программа сама выбирает диск, на котором свободного места больше. Но если ни на одном диске не хватает места, а в виртуальной ФС хватает места, то будет ли записан файл, и если да, то как?
Начнёт писать на тот, где места больше, а когда место кончится - напишет "звиняйте не влезло".
Решение:
- выставляйте mlimit значительно выше среднего размера используемых файлов;
- не эксплуатируйте диски на пределе ёмкости (это плохая идея и по причине быстрее растущей в процессе этого фрагментации).
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Т.е. представленная выше программа это лишь возможность примонтировать разные блочные устройства к одной папке и распределения между ними файлов. Тогда это немного не то, что мне требуется. Хотя тоже полезно.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
kma21
то, что вам требуется, видимо, lvm. или что-то подобное.
то, что вам требуется, видимо, lvm. или что-то подобное.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
rm_ писал(а): ↑29.04.2008 09:57Недавно созданный нашим соотечественником Дмитрием Обуховым модуль файловой системы FUSE под названием mhddfs позволяет объединить несколько обычных файловых систем в одну большую «виртуальную», которая будет содержать в себе не только все файлы объединённых ФС, но и всё их свободное место. Кроме того, в отличии от других подобных модулей, этот не ограничивает возможность записи на виртуальную объединённую ФС, а автоматически распределяет новые файлы по тем физическим дискам, где ещё есть свободное место.
Так есть ведь aufs, был еще unionfs.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Так есть ведь aufs, был еще unionfs.
И что дальше?
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Отличная штука. Ровно то, что искал. Именно таким образом устроено хранение данных в Windows Home Server. Там винты не имеют mounting point, а некий драйвер конвертит это в представление, аналогичное MHDFS. Мне в MHDFS не хватает ровно одной вещи, которая есть в WHS - там можно сделать мирроринг выбранной папки. Т.е вот у нас фильмы, так и фиг с ними, с фильмами. Пропадут, да и плевать. А вот тут у нас /home/very_important_data. И WHS автоматически копирует данные из этой папки на два РАЗНЫХ диска.
В следующей версии WHS-а он собираются отказаться от такого подхода. Они с ума сошли. По мне так это мегафича.
А потери в 2 процента в домашней файлопомойке - фигня. Не о чем говорить.
В следующей версии WHS-а он собираются отказаться от такого подхода. Они с ума сошли. По мне так это мегафича.
А потери в 2 процента в домашней файлопомойке - фигня. Не о чем говорить.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Такой вопрос:
Есть два совершенно пустых диска, 250Гб и 500Гб. Объединяем их и создаем кучу вложенных пустых каталогов. Затем в каком-нибудь последнем вложенном каталоге создаем файл на 400Гб, а потом еще один (в другом каталоге) - на 200Гб. После этого вынимаем эти диски и подключаем к другому компьютеру.
Вопрос - что будет с каталогами и файлами на первом и втором дисках?
Есть два совершенно пустых диска, 250Гб и 500Гб. Объединяем их и создаем кучу вложенных пустых каталогов. Затем в каком-нибудь последнем вложенном каталоге создаем файл на 400Гб, а потом еще один (в другом каталоге) - на 200Гб. После этого вынимаем эти диски и подключаем к другому компьютеру.
Вопрос - что будет с каталогами и файлами на первом и втором дисках?
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
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 ГБ. Это можно решить, вручную перераспределив файлы между дисками.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
А можно и предвосхитить проблему, перечисляя диски в порядке возрастания?rm_ писал(а): ↑26.01.2011 07:45Неочевидный момент, который здесь есть - это то, что файл на 400 ГБ может не получиться записать вообще никуда, если:
- диск на 500 ГБ упомянут в точке монтирования первым
- первым начали писать файл на 200 ГБ
При таком сценарии 200-гиговый файл запишется на диск 500 ГБ, оставив на том 300 ГБ места.
В результате места, чтобы целиком разместить 400-гигабайтный файл, не останется ни на одном из дисков (свободно будет 250+300), и пишущая его программа выдаст ошибку о нехватке свободного места, записав 300 ГБ. Это можно решить, вручную перераспределив файлы между дисками.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Впрочем, эта же проблема может снова возникнуть, если на диске, упомянутом позже, места останется меньше, чем на предыдущих…
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
t.t
В чём именно проблема?
Есть параметр mlimit, который устанавливает минимальный объём свободного места, при котором уже "хватит" пытаться писать на этот диск новые файлы. Сделан он отчасти и для повышения шансов, что под "последний" из записываемых на этот диск файлов, места хватит. По умолчанию он равен 4 гигабайтам. При наличии у вас большого кол-ва более крупных файлов, можно выставить его в один-полтора-два размера такого файла. Самый большой файл у меня - гигабайт кажется восемь, и при терабайтных объёмах дисков, описанной выше ситуации не возникает в принципе.
А при использовании файлов, имеющих размер больший, чем некоторые из ваших дисков целиком, и при понимании принципа работы mhddfs, идеи использовать его для таких дисков/файлов не должно было возникнуть в принципе.
Но я подозреваю, вопрос был не в этом, судя по "что будет если подключить к другому компьютеру" автор ошибочно полагал, что его файлы неким образом побъются по дискам и при подключении к компьютеру без mhddfs, там вдруг окажется каша.
А можно и предвосхитить проблему, перечисляя диски в порядке возрастания?
В чём именно проблема?
Есть параметр mlimit, который устанавливает минимальный объём свободного места, при котором уже "хватит" пытаться писать на этот диск новые файлы. Сделан он отчасти и для повышения шансов, что под "последний" из записываемых на этот диск файлов, места хватит. По умолчанию он равен 4 гигабайтам. При наличии у вас большого кол-ва более крупных файлов, можно выставить его в один-полтора-два размера такого файла. Самый большой файл у меня - гигабайт кажется восемь, и при терабайтных объёмах дисков, описанной выше ситуации не возникает в принципе.
А при использовании файлов, имеющих размер больший, чем некоторые из ваших дисков целиком, и при понимании принципа работы mhddfs, идеи использовать его для таких дисков/файлов не должно было возникнуть в принципе.
Но я подозреваю, вопрос был не в этом, судя по "что будет если подключить к другому компьютеру" автор ошибочно полагал, что его файлы неким образом побъются по дискам и при подключении к компьютеру без mhddfs, там вдруг окажется каша.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
В возможности возникновения ситуации, когда суммарного свободного места на дисках с лихвой хватает для размещения файла, но файл тем не менее не влезает. Т.е. фактически частного случая той самой проблемы, для решения которой mhdd и существует. Чем тут может помочь mlimit, мне не очень понятно.
Да, похоже на то. Я скорее для себя пытался понять, насколько критична та гипотетическая ситуация, на которую Вы обратили моё внимание.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Да, у меня есть подозрение, что будет каша, но не из файлов, а из каталогов. Мне не ясно, как программа сможет раскидать созданную на виртуальном носителе файловую систему по двум физическим. Я специально указал, что файлы лежат во вложенных каталогах.
Я ошибаюсь?
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
Tmp001
Долго объяснять, просто поставьте и поэкспериментируйте.
Вкратце: с этим всё здорово, проблем не будет.
Долго объяснять, просто поставьте и поэкспериментируйте.
Вкратце: с этим всё здорово, проблем не будет.
Re: mhddfs: модуль FUSE для объединения нескольких файловых систем
На каждом из них будут ровно те каталоги (и вложенные в них), которые нужны, чтобы разместить оказавшиеся по таким путям (и попавшие на этот диск) файлы. Полного дубляжа всего дерева не будет, зачем. Однако при перемещении файлов туда-сюда, на некоторых дисках могут остаться пустые каталоги - специально они не чистятся. Удалятся они при удалении соответствующих им каталогов с виртуальной ФС (удаляете с неё пустой каталог - он удаляется со всех дисков, где такой был). Ну либо вручную можно удалить.
И я опять же не понимаю, чего мы теоретизируем. Поставить софтину, смонтировать два каталога, накидать туда файлов - дело пяти минут.