Pull to refresh

Объединение нескольких разделов в один без потери информации

Reading time2 min
Views45K

Задача


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

Решения


Решений существует как минимум два.

aufs2


aufs2 — файловая система, реализующая каскадно-объединённое монтирование для файловых систем Linux. Помимо унаследованного от UnionFS функционала здесь реализованы RW-ветки и балансировка записи, что идеально подходит для решения поставленной задачи.

Следует заметить, что aufs2 не включена в mainline-ядро. Но она есть:
  • в Debian Lenny (в Testing и Sid уже, к сожалению, нет);
  • в Ubuntu (так как LiveCD Ubuntu построен с применением этой ФС);
  • в Zen-kernel и Liquorix.

Также можно самостоятельно пропатчить и собрать ядро, используя standalone-версию aufs2. Для дебиановцев рекомендую, если нет желания возиться с компиляцией ядра, воспользоваться готовыми пакетами Liquorix, подключив репозиторий так, как указано на странице проекта.

Если с ядром разобрались, то необходимо позаботиться о userspace-утилитах. В Debian'е есть готовые пакеты (несмотря на отсутствие поддержки со стороны ядра), поэтому их можно поставить одной командой:

sudo aptitude install aufs-tools

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

Теперь к делу. Допустим, есть два смонтированных раздела:
  • старый с кучей торрентов: /media/torrents;
  • и новый на только-что купленном винчестере: /media/new_storage.

Для того, чтобы эти два раздела были видимы как один, необходимо выполнить следующую команду:

sudo mount -t aufs none /media/storage -o br:/media/torrents=rw:/media/new_storage=rw,create=mfs,sum

Здесь:
  • br: ветка1=rw: ветка2=rw:… — список т. н. веток, т. е. смонтированных разделов, которые будут объединены в один;
  • create=mfs — главный параметр, указывающий на то, что для записи будет выбираться та ветка, которая имеет больше свободного места. Без указания этого параметра «слойка» из разделов не будет работать так, как задумано;
  • sum — указывает, что в утилитах типа df или pydf будет выводиться суммарный размер разделов и свободного места на них для объединённого раздела.

В /etc/fstab такая запись должна иметь вид:

none /media/storage aufs br:/media/torrents=rw:/media/new_storage=rw,create=mfs,sum 0 0

mhddfs


В отличие от aufs, mhddfs — ФС пространства пользователя, работающая через fuse. В Debian'е есть готовый пакет, который устанавливается командой:

sudo aptitude install mhddfs

Монтирование производится командой:

sudo mhddfs /media/torrents,/media/new_storage /media/storage -o default_permissions,allow_other

В /etc/fstab соответствующая запись имеет вид:

mhddfs#/media/torrents,/media/new_storage /media/storage fuse default_permissions,allow_other 0 0

Стоит заметить, что ни aufs2, ни mhddfs не позволяют одному файлу находится частично на одном, частично — на другом разделе. Также отмечу, что после размонтирования слойки ко всем файлам будет доступ через исходные точки монтирования. Часть файлов окажется на одном разделе, часть — на другом.

Выводы



Если необходимо быстрое и простое решение, то большинству пользователей будет достаточно mhddfs. Но стоит помнить, что aufs2 работает на уровне ядра, поэтому производительность в этом случае выше. К тому же, mhddfs в значительно большей степени нагружает процессор, а скорость записи/считывания несколько ниже, чем в aufs2.

Спасибо за внимание. Комментарии, замечания и пожелания приветствуются.
Tags:
Hubs:
Total votes 59: ↑52 and ↓7+45
Comments30

Articles