Припустимо, у вас є три жорсткі диски - на 80, 40 і 60 гігабайт. І 150 гігабайт музики, яку треба на цих дисках зберігати. Як найкраще вчинити в такому випадку?
Два шляхи, які були мені до недавнього часу відомі, це:
або розкласти музику по трьом дискам вручну, створивши по одному каталогу "Music" на кожному диску;
або створити з цих дисків який-небудь RAID-маса.
Однак, перший метод досить обтяжливий, так як кожен раз при додаванні нових файлів потрібно вирішувати, куди саме їх покласти, а потім пам'ятати, де що зберігається. Для спрощення останнього завдання, можна ділити музику по дискам згідно будь-якою ознакою, наприклад за її жанру - а потім, зіткнувшись з нестачею місця на диску з класичною музикою, переміщати частина її на диск з рок-музикою, і розставляти навколо підпірки з симлінк .
RAID ж, хоча і вирішує цю проблему, завжди пов'язаний зі значною втратою або надійності зберігання, або корисного дискового простору.
Але недавно, я випадково знайшов набагато більш зручне і гнучке рішення описаної проблеми: mhddfs. Це модуль файлової системи для FUSE, що дозволяє об'єднати кілька звичайних файлових систем в одну велику "віртуальну", яка буде містити в собі не тільки всі файли об'єднаних ФС, але і все їхнє вільне місце. Крім того, на відміну від інших подібних модулів, цей не обмежує можливість запису на віртуальну об'єднану ФС, а автоматично розподіляє нові файли з тих фізичним дискам, де ще є вільне місце.
Пакет під назвою mhddfs доступний в Debian і в багатьох інших дистрибутивах.
Отже, припустимо, три ваших жорстких диска примонтировать в каталоги / mnt / hdd1 / mnt / hdd2 and / mnt / hdd3. Це може виглядати приблизно так:
Після установки mhddfs. можна створити нову точку монтування - назвемо її / mnt / virtual - і підключити в неї все три попередні. Користуватися FUSE можна і не маючи прав root. але для спрощення прикладів припустимо, що у нас вони все-таки є.
Ключ «-o allow_other» тут означає, що нова файлова система повинна бути видна всім користувачам, а не тільки тому, хто її створив.
Результат буде виглядати ось так:
Як бачимо, віртуальна файлова система успішно створена. Вона підсумувала загальний обсяг всіх трьох дисків (180G), об'єднала їх використане (95G) і вільне (85G) простір. Якщо подивитися список файлів і каталогів, що знаходяться в / mnt / virtual. можна побачити, що там знаходяться всі файли з усіх трьох дисків - іншими словами, всі три дерева каталогів там присутні у вигляді "накладення" один на одного.
Але це ще не все. Якщо якийсь із дисків вичерпає свій вільний простір в процесі запису файлу, запис не «обвалиться"; mhddfs обійде цю неприємність абсолютно прозоро, перемістивши вже записані дані файлу на інший диск (де місця побільше) і продовживши дописувати наступні дані вже туди. Додаток, записуючий файл, нічого і не помітить (крім, може бути, невеликої затримки при запису чергової порції даних).
Таким чином, з файлами в / mnt / virtual тепер можна працювати абсолютно так само, як і з дуже великим реальним диском - не думаючи, що де зберігається, що звідки читається, і т.д. Крім того, завдяки тому, що все вільне місце всіх дисків також об'єднано, можна не думати, на який з дисків записати нові файли - поки хоча б на одному з них є місце, mhddfs сама оптимально розкладе файли, абсолютно без вашого втручання.
Якщо ви вирішите зробити, щоб віртуальна об'єднана ФС підключалася при кожному завантаженні комп'ютера, можна додати наступне в / etc / fstab.
Подробиці див. В man mhddfs.
І останнє, але дуже важливе, про що варто згадати. При впровадженні будь-якого настільки ж "глобального" рішення слід обов'язково подумати про те, наскільки проблематично буде, при необхідності, відмовитися від його використання.
На щастя, в разі mhddfs. це дуже просто. Якщо в якийсь момент, наприклад, купивши новий жорсткий диск на 500 гігабайт, ви вирішите більше не використовувати віртуальну ФС, можна просто скопіювати всі файли і каталоги з неї на новий диск, і демонтувати mhddfs. Дані, які раніше були об'єднані віртуально, тепер будуть об'єднані реально, на одному диску.
А завдяки тому, що самі файли не розділяються на шматочки, збережені на різних дисках (як у випадку з RAID), навіть в разі, якщо mhddfs чомусь раптом перестане працювати (або несподівано ізчезнет з лиця землі), можна буде просто скопіювати вміст всіх підключених раніше через неї дисків в один реальний каталог і отримати те ж саме їх об'єднання, що і було видно через mhddfs.