смонтировать два разных раздела в один каталог/директорию - mhddfs

Довольно давно я сталкивался с этой утилитой, и у меня она работала.
Но наткнувшись на статью в rss парсера хабра решил проверить, упоминалась ли она...
Поиск утверждает - что нет...
ссылко на оригинал mhddfs — Монтирование нескольких разделов в одну директорию
собственно, текст НЕ МОЙ

---------------------------------------------------------------------------------------------------
Хочу рассказать о том, как смонтироват в одну директорию два раздела.
Честно говоря, никогда не задумывался о такой возможности, пока не попался клиент с подобным пожеланием. Поначалу мне показалось что это невозможно, но покопавшись в интернете нашел пару интересных статей. За основу в работе была взята статья с сайта hotbits.ru. Но в статье монтировали разделы одного и того же диска, мне же предстояло смонтировать разделы с разных дисков. Как оказалось, нет никакой разницы.
В качестве операционной системы использовалась Ubuntu 14.04.

Первое что необходимо сделать, это создать сами разделы.
В моём случае это был раздел /dev/sda3 находящийся на системном диске и раздел /dev/sdb1, который занимал весь второй диск.

Монтируем оба раздела. Для этого в /mnt создадим точки монтирования.

~# mkdir /mnt/sda3
~# mkdir /mnt/sdb1
~# mount /dev/sda3 /mnt/sda3
~# mount /dev/sdb1 /mnt/sdb1

Смотрим что получилось

~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 85G 1.1G 79G 2% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 3.9G 4.0K 3.9G 1% /dev
tmpfs 796M 412K 796M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 0 3.9G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/sda3 826G 73M 784G 1% /mnt/sda3
/dev/sdb1 917G 72M 871G 1% /mnt/sdb1

Далее устанавливаем специальную утилиту mhddfs, которая и позволит нам объеденить оба эти раздела в один.

~# apt-get install mhddfs

Монтировать оба раздела будем в директорию в /home.
Для этого выполним:

~# mhddfs /mnt/sda3,/mnt/sdb1 /home

mhddfs: directory '/mnt/sda3' added to list
mhddfs: directory '/mnt/sdb1' added to list
mhddfs: mount to: /home
mhddfs: move size limit 4294967296 bytes

Проверим

~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 85G 1.2G 79G 2% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 3.9G 4.0K 3.9G 1% /dev
tmpfs 796M 412K 796M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 0 3.9G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/sda3 826G 73M 784G 1% /mnt/sda3
/dev/sdb1 917G 72M 871G 1% /mnt/sdb1
/mnt/sda3;/mnt/sdb1 1.8T 144M 1.7T 1% /home

Всё смонтировалось и в итоге мы имеем вместо двух раздельных точек монтирования размером 826Гб и 917Гб, одну объёмом 1.8Tб.

В оригинальной статье использовалась опция монтирования -o allow_other, которая позволяет иметь доступ к разделу другим пользователям, но мне она не нужна, потому что пользователь в системе один.

А теперь отмонтируем (или размонтируем) /home и сделаем так, чтобы разделы монтировались при загрузке системы. Это естественно, никто не будет каждый раз монтировать разделы вручную, но для монтирования во время загрузки нужно добавить модуль fuse.

~# echo "fuse" >> /etc/modules

И теперь подправим /etc/fstab добавив в него следующие строки:

/dev/sda3 /mnt/sda3 ext4 defaults 0 2
/dev/sdb1 /mnt/sdb1 ext4 defaults 0 2
mhddfs#/mnt/sda3,/mnt/sdb1 /home fuse defaults,mlimit=10G 0 0

mlimit=10G показывает, что на любом из разделов должно оставаться не менее 10 гигабайт свободного места. Это значит, что если свободного места останется 10 гигабайт, то на этот раздел больше не будет производиться запись.

И теперь осталось проверить всё ли мы правильно прописали в fstab. Делаем:

~# mount -a
mhddfs: directory '/mnt/sda3' added to list
mhddfs: directory '/mnt/sdb1' added to list
mhddfs: mount to: /home
mhddfs: move size limit 10737418240 bytes

Ошибок нет, следовательно всё в порядке. Проверяем:

~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 85G 1.2G 79G 2% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 3.9G 4.0K 3.9G 1% /dev
tmpfs 796M 412K 796M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 0 3.9G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/sda3 826G 73M 784G 1% /mnt/sda3
/dev/sdb1 917G 72M 871G 1% /mnt/sdb1
/mnt/sda3;/mnt/sdb1 1.8T 144M 1.7T 1% /home

Всё на месте, задача выполнена. Для уверенности можете перезагрузить систему.

И кстати, копировать файлы можно как в объединённую директорию /home, так и в директории /mnt/sda3 или /mnt/sdb1. Файлы всё равно появляются в /home как будто они лежат на одном разделе. Причём подмечено, что если копировать в /home, то файлы копируются на раздел, который находится первым в порядке монтирования, то есть на sda3. Предполагаю, что это будет происходить до тех пор, пока не будет достигнут лимит в 10 Гб, и только затем файлы начнут копироваться на sdb1.

На этом всё.

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

---------------------------------------------------------------------------
Конец текста с парсера хабра. :-)

От себя: я ее пробовал довольно давно, и она тогда работала, и я не думаю, что она сломалась :-)
Нет, я не пробовал разные файловые системы, если не считать ext3 и ext2 разными. :-)

Комментарии (23)

0
kot040188 - 17 Август, 2015 - 16:59
Изображение пользователя kot040188.

Добавил в закладки. Авось пригодится.

+2
lord_i - 17 Август, 2015 - 17:34
Изображение пользователя lord_i.

Спасибо. Интересная штука. Еще раз доказывает невероятную гибкость линукса.

0
rosenrot - 22 Август, 2015 - 14:17
Изображение пользователя rosenrot.

Прямо телепатия. Буквально на днях думал, как бы смонтировать 2 или более диска в одну директорию. Надо будет попробовать :) Спасибо за подсказку!

UPD

Хм. Попробовал и получилось. Но есть немного не понятный момент.
Предположим на момент загрузки системы, не подключены /dev/sda3 и /dev/sdb1. А в fstab прописано монтирование в общую папку SDX.
Получается вот что: после загрузки подключаю и монтирую /dev/sda3 и /dev/sdb1 но войти в SDX дельфином не могу.
НО если запустить дельфин под рутом, то спокойно захожу в SDX.
Еще такой момент. Папка SDX видна только под рутом, под обычнымпользователем ее не видно в дельфине.

+2
dyug - 25 Август, 2015 - 11:23

ибо монтировать нужно с учетом прав пользователя. :-)

0
rosenrot - 25 Август, 2015 - 13:12
Изображение пользователя rosenrot.

Так параметр users в fstab разве это не делает?

+5
dyug - 25 Август, 2015 - 13:30

из man fstab

user   allow a user to mount
owner  allow device owner to mount

рекомендую попробовать понять разницу.

0
rosenrot - 25 Август, 2015 - 19:55
Изображение пользователя rosenrot.

Спасибо! Разница и правда есть :)

0
nitrofox - 30 Август, 2015 - 09:09
Изображение пользователя nitrofox.

А что если на 2 разделах есть файлы с одинаковыми именами?

0
kot040188 - 30 Август, 2015 - 14:08
Изображение пользователя kot040188.

Ну скорее всего при монтировании они должны быть пустыми. А если файлы уже были, то отображаться будет файл с первого раздела. Я так думаю…

0
dyug - 31 Август, 2015 - 10:28

гмм, вопрос сложный, и кроме как эксперимент, никто не ответит.
В том числе и автор.

+1
inaugurator - 8 Сентябрь, 2015 - 14:32

А если файл бОльшего размера, чем свободное место на одном из разделов? Файл физически будет разбит на два куска?

0
dyug - 8 Сентябрь, 2015 - 14:39

как я помню, он будет положен на раздел где есть место.
Как оно себя поведет если нет места ни на одном разделе - не скажу, не знаю.

0
k0ttee - 9 Сентябрь, 2015 - 06:05

Файл физически будет разбит на два куска?
Что будет физически с данными - уж как-нибудь решит контроллер диска.
А какой смысл от такого монтирования двух дисков в один раздел? Может raid лучше сделать?

+1
Mike - 9 Сентябрь, 2015 - 07:19
Изображение пользователя Mike.

стандартные общепринятые решения - это не линукс-вей, красноглазия и шаманских плясок с бубном маловато! =)

0
k0ttee - 6 Декабрь, 2015 - 12:56

Я уверен - купить новый HDD огромной емкости надежнее, чем "соединять несколько старых в один". Чтобы не было умножения вероятности потерять все данные на количество дисков.

Так это получается "программный raid". Как он в плане нагрузки на процессор, если сравнивать с аппаратным raid-контроллером?

0
dyug - 6 Декабрь, 2015 - 13:12

Гммм.. Не очень уважаемый комментатор, совершенно очевидно, что Вы не прочитали/сумели/поняли назначения данного продукта.
Ибо Ваши высказывания говорят о том, что Вы:
1) Не смогли понять/прочитать принцип работы данного решения
2) Вам не совсем понятен принцип действия раида вообще (за исключением раид 0), но Вы безапеляционно заявляете о потере данных на любом типе раида, хотя, как показывает моя практика это действительно только в случае раид 0 но даже не раид 1.
Нагрузка на процессор? На какой?
В последений раз я видел mdadm в топе на пне266. После этого я его не видел в топ исполняемых/жрущих память жрущих винт - да вижу регулярно, но это как бы от него и требуется... :-)

0
Жюстина - 3 Февраль, 2016 - 20:09
Изображение пользователя Жюстина.

Кто не согласен, тот не согласен с линуксвеем --- лохит не нужны, пущай обновляются в виндовс 10 Смысл не программный рейд, а объединение в один каталог, - нескольких каталогов при чём, любых... с точки зрения виндовса... любых устройств, с точи зрения линуксов - любых каталогов... Рейд это когда один лох решил что он важен и дублирует свою информацию... Это виндовсвей... Линукс вей это когда любая информация с носителей становится частью облака....(мну понесло, молчу )
)

0
kot040188 - 3 Февраль, 2016 - 21:27
Изображение пользователя kot040188.

И тут Остапа понесло…

0
Жюстина - 3 Февраль, 2016 - 21:33
Изображение пользователя Жюстина.

остап не на столько дурной, пока пилите гирю, а вот монтирование в один каталог разных ресурсов - значимая весч

0
Жюстина - 3 Февраль, 2016 - 18:11
Изображение пользователя Жюстина.

Всегда плюёшься на месте, всегда видишь и презираешь, а тут выдал: mhddfs - мне даже обидно после всех оскорблений.... так всё просто... нужно было только подождать?.... ТО что этот протокол известен и я онём пальцем тебе 2 года назад тыкала.... поспим....

0
dyug - 4 Февраль, 2016 - 11:22

Доброе Утро, Жюстина :-)
Я очень рад, что ты проснулась, и наконец решила заглянуть к нам на сайт.. :-)

0
Жюстина - 17 Март, 2016 - 23:51
Изображение пользователя Жюстина.

ещё посплю и внезапно расскажешь нам про рейд, но для этого нужно наверное на пару лет уйти ))))

0
dyug - 18 Март, 2016 - 12:29

Эмм.. А зачем? Про рейд рассказывать?
Вроде тем довольно часто разжевывается... :-)

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры