Как разбить по папкам хранение файлов?

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Духовитин
мл. сержант
Сообщения: 125
Зарегистрирован: 2014-12-17 8:46:05

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Духовитин » 2016-03-17 13:08:04

Доброго дня Уважаемые!

У меня для моей информационной системы возникла задача организации хранения файлов.
Поясню:
Когда файл добавляется в ИС, то информация о нём заносится в БД. От самого файла вычисляется SHA-хеш и сам файл кладётся в папку по первым символам в хеше, т.е.

Код: Выделить всё

SHA2(file) = abcdef.....
значит лежать он будет в папке:
/var/storage/ab/cd/

Так вот вопрос в том, сколько делать уровней папок?
Для указанного варианта с двумя уровнями по два символа получается что всего вариантов подпапок будет на первом уровне 256 и на втором по 256 для каждой из папок первого уровня, и того всего 65536 подпапок.

В плане производительности доступа к файлам, оптимального хранения и других может каких-либо имеющихся заморочек стоит ли по другому организовать организацию хранилища?

Сама ФС хранилища - ZFS RaidZ, файлов подразумевается что может быть много.

Вобщем ваши мысли на этот счёт?
Кто не рискует - тот не пьёт шампанского.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Neus
майор
Сообщения: 2016
Зарегистрирован: 2008-09-08 21:59:56

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Neus » 2016-03-17 19:45:23

А если в каждую положить по 256 файлов, в сумме будет ~16 миллионов. Нормально придумал:)

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Bayerische » 2016-03-18 9:04:03


Аватара пользователя
Духовитин
мл. сержант
Сообщения: 125
Зарегистрирован: 2014-12-17 8:46:05

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Духовитин » 2016-03-18 9:21:39

Всем спасибо, теперь спокойно значит сделаю как задумал.
Кто не рискует - тот не пьёт шампанского.

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Как разбить по папкам хранение файлов?

Непрочитанное сообщение FiL » 2016-03-22 23:33:28

Духовитин писал(а):Всем спасибо, теперь спокойно значит сделаю как задумал.
коментарии не читал, видимо :)

Аватара пользователя
Духовитин
мл. сержант
Сообщения: 125
Зарегистрирован: 2014-12-17 8:46:05

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Духовитин » 2016-03-23 6:32:35

FiL писал(а): коментарии не читал, видимо :)
Имеешь в виду комменты к статье на хабре? Почитал. То что у меня велосипед, даже не сомневался изначально. Да я и не претендую на оригинальность предложенного подхода. Так как сама идея возникла на основе организации папок кэшей у squid'а. Когда ему говоришь кол-во папок и он формирует своё кэш-хранилище.
В комментах на хабре вроде как основные претензии были к стилю и качеству php кода предложенного в качестве реализации этой идеи.
Если я чего-то не увидел, то укажи пожалуйста что именно.:)
Кто не рискует - тот не пьёт шампанского.

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Как разбить по папкам хранение файлов?

Непрочитанное сообщение FiL » 2016-03-23 17:17:00

Основная мысль хоть как-то сформулированная в каментах там заключалась в том, что если есть возможность настроить современную файловую систему, то нужно это делать. И тогда нет вообще никакой необходимости делить файлы на каталоги.
Структура имеет смысл если по ней надо будет ручками шастать или если не известно на чем оно будет лежать и как файловая система относится к большому количеству файлов в каталоге.

Аватара пользователя
Духовитин
мл. сержант
Сообщения: 125
Зарегистрирован: 2014-12-17 8:46:05

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Духовитин » 2016-03-23 19:01:33

Там до чего договорились, так это что после тюнинга стало в 20 раз быстрей, а вот насчёт того что разницы между плоским размещением и многоуровневым нет, про это ничего не говорилось. Тут для выбора безуровневого способа хранения со сколь угодно большим количеством файлов в папке надо как минимум провести тесты самому.
Всё таки не зря разработчики squid'а , всяких ВК и ФБ выбрали способ хранения с разбиением по подпапкам. Да ещё и с гибко настраиваемыми параметрами этого разбития.

Я в данном случае если запарюсь, то может и запарюсь ради интереса с проверкой двух способов. Но сейчас делаю всё таки как изначально предположил.
Кто не рискует - тот не пьёт шампанского.

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Как разбить по папкам хранение файлов?

Непрочитанное сообщение FiL » 2016-03-23 19:23:47

у разработчиков сквида нет влияния на FS. Оно где поставилось - там поставилось. И они пытаются оптимизировать так, чтоб оно везде прилично работало. И это не говоря о том, что сквид писали во времена ext2, что не добавляло оптимизма.
а "всякие" VК и FB - это не совсем всякие. У них файлов в день новых больше, чем в твоем доморощенном проекте за 10 лет наберется, скорее всего. И при этом...
https://scontent-lga3-1.xx.fbcdn.net/hp ... lename.jpg> - то есть по сути только один уровень вложенности.

Еще раз, я не говорю, что разбиение по подпапкам плохо. Это хорошо. При прявильной реализации. Но плохая реализация может оказаться хуже, чем плоское хранилище с нормально настроенной FS. Ну, до определенного количества файлов.

Аватара пользователя
Духовитин
мл. сержант
Сообщения: 125
Зарегистрирован: 2014-12-17 8:46:05

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Духовитин » 2016-03-23 20:01:39

За дискуссию однозначно спасибо. Из неё в любом случае полезная информация в голове осела. Вопрос подняли, обсудили и для себя что-то из него вынесли :)
Кто не рискует - тот не пьёт шампанского.

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Bayerische » 2016-03-23 23:06:29

Погодите, это как — не влияет?
Вот к примеру, FTP. На любой ФС листинг забитой директории нудное дело.

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Как разбить по папкам хранение файлов?

Непрочитанное сообщение FiL » 2016-03-24 5:02:42

a зачем делать листинг забитой директории? Полные пути есть в базе. Делать полный листинг с тысячами файлов с названием вида 012345FED ни нафик не сдалось.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35476
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Alex Keda » 2016-03-24 8:24:37

Ручками никогда не приходилось рыться в хранилище организованном такими вот гениями - мильён файлов в директории одной?

Мне приходится, минимум раз в неделю.

Поверьте, никаких восторгов по поводу быстрой и хорошей файловой системы у меня давно уже нет ;)
Убей их всех! Бог потом рассортирует...

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

Как разбить по папкам хранение файлов?

Непрочитанное сообщение FiL » 2016-03-29 19:35:07

A что можно ручками найти в хранилище, где имена файлов - это MD5 от содержимого?
В том-то и дело, что если имена файлов хоть как-то осмысленны и в них надо лазить ручками, то тогда и структура каталогов имеет смысл. И смысл может быть очень разный. А если одни MD5, то и смысла нет.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35476
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Как разбить по папкам хранение файлов?

Непрочитанное сообщение Alex Keda » 2016-04-01 16:18:12

это потому что вам не надо было ручками достать такой вот файлик
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ADRE
майор
Сообщения: 2645
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Как разбить по папкам хранение файлов?

Непрочитанное сообщение ADRE » 2016-04-01 19:55:25

есть решение от солярки всем известное. засунул и забыл. zfs

Код: Выделить всё

2^56 — количество файлов в директории (реально ограничен 2^48 на количество файлов в файловой системе ZFS);
Отправлено спустя 2 минуты 39 секунд:
не 256, а 2 в 48 степени по факту. -

Код: Выделить всё

281474976710656 - файлов в одной папке
//del