>всем привет,
>у меня возникла необходимость дать указания сотрудникам по созданию серверного Хранилища для
>музыки и видео, обьём 5-10 Тб.
>Для этого куплены несколько десятков серверов с RAID
>Покупать готовые решения сторонних разработчиков не планируется.
>
>Где можно почерпнуть информацию общего характера, напр. каким образом располагать файлы на
>серверах, как организовать службу индексации и БД с информацией по размещению
>файлов?
>В реальном времени файлы не будут забираться пользователями, их будет забирать управляющий
>сервер по внутреннему расписанию.
>
>я понимаю, что в общих словах тут сложно дать рекомендации - может
>быть есть ссылки на понятные описания таких систем почитать?
>
>сенкс
ИМХО такое 10Тб музыки (если 5-10Мб файл) = 1-2М файлов.
Самое простое, навскидку.
Делать все через БД.
1-2М записей для БД на нормальном сервере - не проблема (хотя укажите количество запросов/секунду, от этого и будет зависеть)
При занесении/аплоаде трека даете ему некое случайное цифробуквенное именование и заносите соответствие в базу, типа Super.mp3 -> fa32112332
Туда же заносите все инфу для поиска и отображения (альбом, песня, исполнитель, год итд).
файл переименовываете, и раскидываете по серверам, в подкаталоги по первым буквам, пары-тройки уровней будет достаточно (а-ля кеш у squid).
По серверам можно просто раскидывать по первому символу: сервер 1 - a-h, сервер 2 - i-p итд. Заодно можете дублировать на несколько серверов.
Как раскидывать - по вкусу - ftp,nfs, а в идеале люстру(clusterfs) навесить.
Поиск штатными сретствами БД, можно прикрутить полнотекстовый поиск если нужно, для постгри это TSearch2
Касательно оптимизации таблиц в БД не вдаюсь в подробности, думаю сами поймете.
Механизмы формирования нового имени, получения номера/ip сервера(ов) для аплоада, обратное преобразование стоит сделать встроенными процедурами.
Отдавать в обратном порядке - переименовывая все взад.
Сама техника переименования позволит избежать совпадения имен файлов + за счет рандома более плавно раскидает по серверам.
Далее - для ускорения поиска имеет смысл хранить данные в БД, а индексацию-поиск делать через специализированный движок, тот же Lucene. Тем более, если много запросов.
Вроде ничего страшного тут нет )