GrabDuck

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

:

Довольно давно я сталкивался с этой утилитой, и у меня она работала.
Но наткнувшись на статью в 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 разными. :-)