Довольно давно я сталкивался с этой утилитой, и у меня она работала.
Но наткнувшись на статью в 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)
Добавил в закладки. Авось пригодится.
Спасибо. Интересная штука. Еще раз доказывает невероятную гибкость линукса.
Прямо телепатия. Буквально на днях думал, как бы смонтировать 2 или более диска в одну директорию. Надо будет попробовать :) Спасибо за подсказку!
UPD
Хм. Попробовал и получилось. Но есть немного не понятный момент.
Предположим на момент загрузки системы, не подключены /dev/sda3 и /dev/sdb1. А в fstab прописано монтирование в общую папку SDX.
Получается вот что: после загрузки подключаю и монтирую /dev/sda3 и /dev/sdb1 но войти в SDX дельфином не могу.
НО если запустить дельфин под рутом, то спокойно захожу в SDX.
Еще такой момент. Папка SDX видна только под рутом, под обычнымпользователем ее не видно в дельфине.
ибо монтировать нужно с учетом прав пользователя. :-)
Так параметр users в fstab разве это не делает?
из man fstab
user allow a user to mount
owner allow device owner to mount
рекомендую попробовать понять разницу.
Спасибо! Разница и правда есть :)
А что если на 2 разделах есть файлы с одинаковыми именами?
Ну скорее всего при монтировании они должны быть пустыми. А если файлы уже были, то отображаться будет файл с первого раздела. Я так думаю…
гмм, вопрос сложный, и кроме как эксперимент, никто не ответит.
В том числе и автор.
А если файл бОльшего размера, чем свободное место на одном из разделов? Файл физически будет разбит на два куска?
как я помню, он будет положен на раздел где есть место.
Как оно себя поведет если нет места ни на одном разделе - не скажу, не знаю.
Что будет физически с данными - уж как-нибудь решит контроллер диска.
А какой смысл от такого монтирования двух дисков в один раздел? Может raid лучше сделать?
стандартные общепринятые решения - это не линукс-вей, красноглазия и шаманских плясок с бубном маловато! =)
Я уверен - купить новый HDD огромной емкости надежнее, чем "соединять несколько старых в один". Чтобы не было умножения вероятности потерять все данные на количество дисков.
Так это получается "программный raid". Как он в плане нагрузки на процессор, если сравнивать с аппаратным raid-контроллером?
Гммм.. Не очень уважаемый комментатор, совершенно очевидно, что Вы не прочитали/сумели/поняли назначения данного продукта.
Ибо Ваши высказывания говорят о том, что Вы:
1) Не смогли понять/прочитать принцип работы данного решения
2) Вам не совсем понятен принцип действия раида вообще (за исключением раид 0), но Вы безапеляционно заявляете о потере данных на любом типе раида, хотя, как показывает моя практика это действительно только в случае раид 0 но даже не раид 1.
Нагрузка на процессор? На какой?
В последений раз я видел mdadm в топе на пне266. После этого я его не видел в топ исполняемых/жрущих память жрущих винт - да вижу регулярно, но это как бы от него и требуется... :-)
Кто не согласен, тот не согласен с линуксвеем --- лохит не нужны, пущай обновляются в виндовс 10 Смысл не программный рейд, а объединение в один каталог, - нескольких каталогов при чём, любых... с точки зрения виндовса... любых устройств, с точи зрения линуксов - любых каталогов... Рейд это когда один лох решил что он важен и дублирует свою информацию... Это виндовсвей... Линукс вей это когда любая информация с носителей становится частью облака....(мну понесло, молчу )
)
И тут Остапа понесло…
остап не на столько дурной, пока пилите гирю, а вот монтирование в один каталог разных ресурсов - значимая весч
Всегда плюёшься на месте, всегда видишь и презираешь, а тут выдал: mhddfs - мне даже обидно после всех оскорблений.... так всё просто... нужно было только подождать?.... ТО что этот протокол известен и я онём пальцем тебе 2 года назад тыкала.... поспим....
Доброе Утро, Жюстина :-)
Я очень рад, что ты проснулась, и наконец решила заглянуть к нам на сайт.. :-)
ещё посплю и внезапно расскажешь нам про рейд, но для этого нужно наверное на пару лет уйти ))))
Эмм.. А зачем? Про рейд рассказывать?
Вроде тем довольно часто разжевывается... :-)
Отправить комментарий