MHDDFS, UnionFS, LVM, и зачем вообще все это надо


С приобретением второго веника к домашнему серверу понадобилось совместить старую и новую ФС. Попробовал разные варианты и остановился на MHDDFS.
Unionfs, mhddfs, lvm позволяют использовать несколько жестких дисков в Linux как одну файловую систему. UnionFS и MHDDFS «накладывают» файловые системы друг на друга, LVM же работает по принципам RAID.
При этом MHDDFS позволяет балансировать диски при записи, выбирая для новых файлов диск с наибольшим количеством свободного места. Если в процессе записи место на диске закончится, записанная часть файла будет перенесена на другой носитель без прерывания процесса записи, а перенос останется незаметным для приложения. А если один из дисков безвременно прекратит свое существование, данные не потеряются целиком, как с LVM или RAID.

Настройка mhddfs на Debian/Ubuntu


В моем случае имеются /dev/sdb1 и /dev/sdb2, которые нужно было объединить в один диск.

Устанавливаем, создаем точки монтирования и монтируем диски по одному:
Copy Source | Copy HTML
  1. root@punkoff-desktop:/# aptitude install mhddfs
  2. root@punkoff-desktop:/# cd /mnt
  3. root@punkoff-desktop:/mnt# mkdir a b c
  4. root@punkoff-desktop:/mnt# mount /dev/sdb1 a
  5. root@punkoff-desktop:/mnt# mount /dev/sdb2 b
  6.  

А теперь — самое интересное:
Copy Source | Copy HTML
  1. root@punkoff-desktop:/mnt# mhddfs a,b c


Теперь можно протестировать файловую систему. Размер sdb1 и sdb2 — по 400 Mb. Размер video.avi — около 320 Mb.
Copy Source | Copy HTML
  1. root@punkoff-desktop:/mnt/c# cp ~/video.avi video1.avi
  2. root@punkoff-desktop:/mnt/c# cp ~/video.avi video2.avi
  3. root@punkoff-desktop:/mnt/c# ls
  4. video1.avi
  5. video2.avi
  6. root@punkoff-desktop:/mnt/c# ls ../a/
  7. video1.avi
  8. root@punkoff-desktop:/mnt/c# ls ../b/
  9. video2.avi

Видно, что файлы записались по одному на диск.

Размонтировать ФС:
Copy Source | Copy HTML
  1. root@punkoff-desktop:/mnt# fusermount -u c


Строка fstab для mhddfs:
Copy Source | Copy HTML
  1. mhddfs#/mnt/a,/mnt/b /mnt/c fuse defaults 0 0
  2.  

Нужно отметить, что mhddfs объединяет не диски, а директории.