Объединение нескольких файловых систем без создания массива

Предположим, у вас есть 40 гигабайт данных и три диска по 20 гигабайт, на которые эти данные нужно разместить.
Вариантов для размещения данных не так много. Либо создавать RAID-массив (LVM), либо распределять данные по отдельным файловым системам. Но это неудобно. В первом случае мы часть пространства потеряем при создании массива под служебную информацию, во втором как-то надо распределять данные, и при этом помнить, что куда положил.

Существует программа mhddfs, работающая как модуль для FUSE, позволяющий объединить несколько смонтированных файловых систем в одну. Предположим, мы примонтировали наши три диска в соответствующие поддиректории в директории /mnt:

Установим mhddfs. Например, для Debian и Ubuntu это будет такая команда:

После установки FUSE можно создать новую точку монтирования и подключить туда эти файловые системы. Это можно сделать и без прав рута. Для того, чтобы файловая система была доступна другим пользователям, а не только тому, который ее смонтировал, используется ключ «allow_others»:

Результат работы команды «df -h» будет такой:

Виртуальная файловая система создана. Она имеет объем, составляющий сумму объемов отдельных файловых систем. Если войти в папку /mnt/user/big_drive, то можно увидеть, что там находятся файлы, расположенные во всех трех файловых системах, которые скомбинированы в папке /mnt/user/big_drive.

При создании файлов и директорий внутри «большой» директории реальный диск будет выбран для записи автоматически, в зависимости от свободного места на нем и порядка перечисления при монтировании. Если на первом диске свободного места больше, чем «move size limit» (параметр mlimit, по умолчанию 4 гигабайта), то файл будет создан на нем. Если меньше, то на втором. Если на втором тоже места меньше, чем mlimit, то файл будет создан на третьем. Если же свободного места на каждом из дисков осталось меньше, чем mlimit, то запись будет производиться на диск, на котором просто больше свободного места. Если место закончится прямо во время записи файла, то ошибки записи не возникнет, а уже записанная часть файла будет перемещена на другой диск, и файл будет дописываться уже туда.

Для автоматического монтирования виртуальной объединенной файловой системы можно записать в /etc/fstab следующую строчку:

При покупке одного большого диска вы сможете просто скопировать содержимое большой файловой системы (или содержимое каждой из «маленьких» по отдельности, если большая файловая система не смонтирована), поскольку, в отличие от обычного RAID-массива, файлы не разделяются между дисками, а каждый отдельный файл хранится полностью на каком-то одном диске.

Автор этой замечательной программы — Дмитрий Обухов.
Домашняя страница — http://mhddfs.uvw.ru/


Понравилась статья?

Подпишитесь на новости сайта и получайте новые статьи на свой почтовый ящик (один раз в неделю).


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *