Mhddfs

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:44, 13 июня 2018.
mhddfs
Полное название MHDDFS - Multi HDD File System
Загрузочный Да
Features
Дедупликация данных (single_instance_storage)
Другие
Операционная система Linux
Веб-сайт http://mhddfs.uvw.ru/
mmhdfs — файловая система в Linux, работающая через FUSE, и позволяющая объединять несколько файловых систем в одну. Файловая система работает не только на чтение, но и на запись, при этом не размазывает файлы по разным файловым системам, а находит, где файл сейчас разместить было бы оптимальнее.

Пакет под названием mhddfs доступен в Debian и во многих других дистрибутивах.

Принцип работы

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

Если на каком-то из устройств заканчивается место, драйвер прозрачно для приложения перенесет файл с которым оно работает на другое устройство. Таким образом приложения оперируют объемами данных приблизительно равным суммарному объему всех смонтированных файловых систем.

В этом состоит основное отличие от аналогов (UnionFS, AuFS итп) - данный драйвер эмулирует файловую систему доступную для записи размером равным сумме всех слагаемых.

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

Драйвер написан с использованием библиотеки FUSE, поэтому для сборки и установки требует ее наличия на Вашем компьютере.

Примеры

Смонтировать три каталога в один:

%# mhddfs /mnt/diskA,/mnt/diskB,/mnt/diskC /mnt/diskABC -o allow_other

Размонтировать:

fusermount -u /mnt/diskABC

Приоритетность использования дисков определяется списком, заданным при монтировании. Первый диск приоритетнее второго, второй — третьего и так далее. До тех пор, пока есть свободное пространство (больше чем mlimit) на более приоритетном диске, запись происходит на него.

В будущем планируется, что будет возможность фонового переразмещения файлов между дисками, выполняемого демоном (но это в будущем).

Деревья каталогов, находящихся на разных дисках, объединяются. Причём одноименные каталоги на время монтирования сливаются воедино, а одноимённые файлы, находящиеся в одноимённых каталогах на разных дисках, перекрываются. Например:

diskA:   /a/{b/{b1,b2},c/c1,D,E}
diskB:   /a/{b/{b3,b4},c/c2,E,F}
mhddfs:  /a/{b/{b1,b2,b3,b4},c/{c1,c2},D,E,F}

Здесь каталоги называются малыми буквами (a, b и так далее), а файлы — большими. Файл a/E со второго диска будет не виден.[Источник 1]

Объединение дисков

Предположим, у вас есть три жёстких диска - на 80, 40 и 60 гигабайт. И 150 гигабайт музыки, которую надо на этих дисках хранить. Как лучше всего поступить в таком случае?

Два пути, которые были мне до недавнего времени известны, это:

  • или разложить музыку по трём дискам вручную, создав по одному каталогу «Music» на каждом диске;
  • или создать из этих дисков какой-нибудь RAID-массив.

Однако, первый метод довольно утомителен, так как каждый раз при добавлении новых файлов нужно решать, куда именно их положить, а потом помнить, где что хранится. Для упрощения последней задачи, можно делить музыку по дискам согласно какому-либо признаку, например по её жанру - а потом, столкнувшись с нехваткой места на диске с классической музыкой, перемещать часть её на диск с рок-музыкой, и расставлять вокруг подпорки из симлинков.

RAID же, хотя и решает эту проблему, всегда связан со значительной потерей либо надёжности хранения, либо полезного дискового пространства.

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

Пакет под названием mhddfs доступен в дистрибутивах Debian, Ubuntu, и, вероятно, во многих других.[Источник 2]

Ссылки

Источники

  1. Драйвер MHDDFS // mhddfs [2018]. Дата изменения: 17.06.2012. URL: http://mhddfs.uvw.ru (Дата обращения: 13.06.2018).
  2. mhddfs — Монтирование нескольких разделов в одну директорию // Habr [2006–2018]. Дата изменения: 16.08.2015. URL: https://habr.com/post/264853/ (Дата обращения: 13.06.2018).