система FreeBSD 6.1
Имеется файловый архив, размещенный на нескольких hdd. Каждый раздел смонтирован (в rw режиме) в "/data/hdd<номер>". Требуется сделать в "/filearchive" read-only представление данного архива со "слитыми" файловыми системами, т.е. например при наличии "/data/hdd1/Muzik/Soft Machine/1971 - Virtually" и "/data/hdd2/Muzik/Soft Machine/1969 - Volume Two"
ls "/filearchive/Muzik/Soft Machine" должа показать
1969 - Volume Two
1971 - VirtuallyКонтент достаточно статичен (музыка и фильмы на домашней файлопомойке), доступ в "слитом" виде нужен исключительно read-only, все манипуляции (удаление, добавление) с контентом производятся через /data/hdd<номер> и относительно редки. По идее содержимое дисков не перекрывается, в случае же [нештатного] наличия на разных дисках файла с одним и тем же путем совершенно безразлично как сия ситуация будет обработана.
известные мне (и не устраивающие меня) решения
1) RAID. Категорически не устраивает. Даже если забить на экономическую неоправданость в рамках данной задачи raid01/raid10/raid5 и гимор с восстановлением raid0/jbod (в случае падения одного винта бэкап разворачивать на все), то остается главный минус - невозможность легко наращивать по необходимости дисковую емкость добавлением новых винтов.
2) В силу относительной статичности содержимого - запускающийся [руками] после каждого изменения контента скрипт, создающий в /filearchive структуру директорий из /data/hdd<номер> и хардлинки на соотв. файлы. Вариант прямолинейный, надежный и не очень-то неудобный, но мое чувство прекрасного он нарушает :)
3) unionfs. Почти то что надо, однако во-первых настораживает секция BUGS из мана, во-вторых unionfs предназначен в первую очередь для обеспечения rw-доступа с помощью copy-on-write, что порождает разные заморочки типа [совершенно нежелательной в данном случае] дубликации на каждом слое структуры каталогов всех нижележащих слоев. Да и из пушки по воробьям это получается.
4) Попрактиковаться в kernel programming и руководствуясь nullfs/unionfs как экзамплом сваять то, что нужно. Но не займусь ли я изобретением велосипеда ?
Собственно вопросы:
1) существует ли более заточеный под описаную задачу аналог unionfs ?
2) насколько unionfs надежен (при условии read-only доступа к "разделу") ?
3) как в unionfs можно отключить автоматическое дублирование директорий нижних уровней на верхних ?
4) Какие еще варианты решения вы можете предложить ?
спасибо.