LINUX.ORG.RU
ФорумTalks

[ext3] Какой конь педальный придумал ограничение на 32000 директории?

 


0

0

И главное зачем?

В проекте, который сейчас разрабатывается группой товарищей, используется хранение большого объема данных в простых файлах. Организация этих данных соответственно производится по каталогам (кто не в теме - папкам). Сегодня модуль упаковки (моя быдлокода) наебW^упал, вошел в фальш-цикл с ошибкой: «Too many links». Занявшись самообразованием нашли это ограничение файловой системы. Пока я пребывал в состоянии ступора (шок, знаете ли, даже счас еще не отошел), мои сотоварищи по разработке (двое из них матерые виндузятники) чуть не сожрали меня без соли.

Сам факт канибаллизма меня не сильно смущает, только теперь ой как стыдно!!! Как мне объяснили все те же коллеги, NTFS по сравнению с EXT3 идеальная FS!

Теперь вот дадут новый десктоп с VS на семерочке, и прощайте братья-товарищи!..

★★★
Ответ на: комментарий от valich

Наблюдал такие эффекты. Согласен. Ну как бы по ходу работы программы человеку туда не надо будет смотреть.

Ты попробуй netstat -an посмотреть когда на сервере висит под 50к соединений (из который большая часть в TIME_WAIT). До утра будешь ждать, пока выведется. Что, впрочем, не мешает серверу работать.

bibi
()
Ответ на: комментарий от valich

оставил 200к файлов
ls выполнился за 2 минуты 38 секунд. Т.е. в принципе работать можно. Попытка зайти в каталог с 200к файлами в венде превысила мое терпение :)

nu11 ★★★★★
()

> используется хранение большого объема данных в простых файлах.

«Простота - хуже воровства» (с)

Hibernate + Oracle нужно однозначно.

Как мне объяснили все те же коллеги, NTFS по сравнению с EXT3 идеальная FS!

Надо же! ВАши коллеги занимаются троллином на рабочем месте.

Bioreactor ★★★★★
()

ограничение на 32000 директории?

А я думал, что это только у UFS такое ограничение...

iZEN ★★★★★
()
Ответ на: комментарий от nu11

зашел через mc. На глаз каталог открывался минуты 3, т.е. не многим дольше ls. Венда таки сосет :)

nu11 ★★★★★
()
Ответ на: ограничение на 32000 директории? от iZEN

А я думал, что это только у UFS такое ограничение...

Да конечно же нет. Ты ж знаешь, линукса почти все свои лучшие вещи нагло сперла из бсд. Включая фс. Ну не досмотрели ребята. Или квалификации не хватило чтобы отделить жемчуг от мусора. С кем не бывает.

bibi
()
Ответ на: комментарий от Bioreactor

> Hibernate + Oracle нужно однозначно

Оракел - больно уж Ынтырпрайзно, у нас пока желающих с ним поработать не наблюдал.

Но есть у нас один фанат Linux, но он прям влюблен в Java. И меня чуть не уговорил на нее перейти. Красноречивый черт :)

Надо же! ВАши коллеги занимаются троллином на рабочем месте.


Они ж виндузятники! Я привык...

valich ★★★
() автор топика
Ответ на: комментарий от valich

>Прога проверяет наличие файлов контейнеров.
open, fcntl, F_NOTIFY?

dimon555 ★★★★★
()
Ответ на: комментарий от se

а ты кстати в курсе почему? ; )

Cozza «640K ought to be enough for anybody.» (c) *

http://www.informit.com/articles/article.aspx?p=605371&seqNum=2

Что поделать, все делают ошибки. Не только Он.

*) Кстати, AFAIU сам Черный Властелин отпинывается от своего копирайта на эту фразу.

bibi
()
Ответ на: комментарий от valich

>Пробовал, MySQL конечно, не показатель. Но на FS я выигрываю до 40% скорости.

Попробуй BDB или аналог.

Davidov ★★★★
()
Ответ на: комментарий от valich

Цитируем valich

Размер колеблется от 500 байт до 5 килобайт.

Мелкие файлы. Надо рейзеры ставить, extX тебе не товарисч. Даже если решишь вопрос с глубиной вложенности, оверхед от ext3 будет очень высоким. Reiser4 с tail=smart и сжатием, такие файлы упаковал бы очень эффективно. Но как минус - фрагментация.

Из DB наверное можно бегло поглядеть на документарную couchDB, хотя она скорее всего тоже не подойдет для этой задачи.

shahid ★★★★★
()

>ставь уже оракл или постгрес

Если вам нужна база данных, значит у вас хреновая ФС (ц)
Дядя Ханс таки прав.

Deleted
()
Ответ на: комментарий от aix27249

Правда, хз какие у неё лимиты, никогда не интересовался.

aix27249
()

1. Ты тролль
2. Тупо, мягко говоря сравнивать ФС различающиеся по по возрасту. Новая версия ntfs которая это всё держит, лет на ~5 моложе ext3.
3. А кроме ext3 ваша корпорация&религия MS запрещает использовать другие ФС?
4. ограничение на 32000 директории существует только в старых версиях ядер, и есть патчи для преодоления этого косяка. Если ваша ЧП «Корпорация» не имеет людей которые не могут осилить поменять ядро в nix системе, то это только указывает что там работают полные лохи.

32000 директорий «В проекте, который сейчас разрабатывается группой товарищей,» - что за жуткий урод? Десятки лет линуксоиды пишут&запускают&собирают программы в ext3 и ни одна ни разу, ни однажды, даже в самых звериных моделях ядра (миня забанят за разглашение военной тайны), никакая прога не матюкнулась из-за того что ей не хватило места.

darkshvein ☆☆
()
Ответ на: Try Reiser4. от Camel

>>>ах да, try ext4.

Правильно говорить «try reiserfs».


Обы вы неправы, правильно говорить: «Try Reiser4.»


А вообще, конечно с архитектурой/алгоритмом хранения не всё хорошо придумано.

Такому автору-камикадзе можно посоветовать и btrfs, благо он FS в линуксе не различает по свежести.

darkshvein ☆☆
()
Ответ на: комментарий от valich

>> Ты что, пользуешь ядро редхатовской сборки???

Да. А что, его самому надо собрать?


Опять проблемы с религией?

darkshvein ☆☆
()
Ответ на: комментарий от darkshvein

> 1. Ты тролль

Это очевидно.

2. Тупо, мягко говоря сравнивать ФС различающиеся по по возрасту.


Я не сравнивал, сравнили те, кто у нас использует винду.

3. А кроме ext3 ваша корпорация&религия MS запрещает использовать другие ФС?


Никто нее запрещает. Я рассказываю о конкретной ситуации. Которая в ближайшее время будет пересмотрена. Очень надеюсь на то, что все пройдет гладко.

4. ограничение на 32000 директории существует только в старых версиях ядер, и есть патчи для преодоления этого косяка.

Я не поверил сначала, но оказывается с час назад был арендован сервер с Ubuntu. Для другого проекта, но подозреваю, что и тут произойдет то же. А патчить ядра никто не будет. Там где я работаю не заморачиваются, если Linux косячит (даже если это фантазии виндузятников), в течении суток сервер может быть заменен на виндовый.

что за жуткий урод?


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

P.S.: насчет ЧП вы правы. А зачем что-то еще? ЧСВ потешить?

valich ★★★
() автор топика

>Сам факт канибаллизма меня не сильно смущает, только теперь ой как стыдно!!! Как мне объяснили все те же коллеги, NTFS по сравнению с EXT3 идеальная FS!

Теперь вот дадут новый десктоп с VS на семерочке, и прощайте братья-товарищи!..

Спалился, толстый тролль.

dikiy ★★☆☆☆
()
Ответ на: комментарий от valich

>Ммм. Не получится... На сервере стоит CentOS 5.4 и админ костьми ляжет, если недайбох

да ради бога. Создай один здоровенный файл и форматни его в райзер, и монтируй потом.

dikiy ★★☆☆☆
()
Ответ на: комментарий от isden

> чето с трудом представляю себе зачем вообще нужно 32К поддиректорий. может быть вам таки найти уже нормального архитектора, который вам расскажет про иерархии?

Поддерживаю.

Топикстартеру: посмотри как хранятся данные у git'а, вполне себе решение.

AlexKiriukha ★★★★
()
Ответ на: комментарий от valich

Пробовал, MySQL конечно, не показатель. Но на FS я выигрываю до 40% скорости.


в таких «задачах» чет типо Btrieve пошустрее нежели MySQL будет

anTaRes ★★★★
()
Ответ на: комментарий от dogbert

>производится по каталогам (кто не в теме - папкам) Директориям же!

(Подозрительно) Кто-то сказал «директория»?

Xenesz ★★★★
()
Ответ на: комментарий от dikiy

> Спалился, толстый тролль.

В чем палево :) Да они спят и видят как бы меня на C# посадить!

valich ★★★
() автор топика
Ответ на: комментарий от AlexKiriukha

Топикстартеру: посмотри как хранятся данные у git'а, вполне себе решение.

Уже! До обеда сегодня новая структура хранилища ляжет в коде на сервер.

Вопрос был в том, зачем такие милые ограничения?

valich ★★★
() автор топика
Ответ на: комментарий от valich

Вопрос был в том, зачем такие милые ограничения?

Разработчики ext* подумали и решили, что большее количество файлов в одной директории никто в здравом уме создавать не будет.

Deleted
()
Ответ на: комментарий от mutronix

> Какой-то просто грандиозный проект вы там разрабатываете. Не РусОС случаем?

А что тут грандиозного? Там и собственного кода-то относительно не много. Да пару сторонних библиотек. РусОС`ю настоящие мужики занимаются, а у нас подвязок нет до попилов добраться.

valich ★★★
() автор топика

Могу кстати открыть ещё одну страшную тайну о говнолялихе. Нет, даже целых две! Под питух-ос максимальная длинна имени файла в байтах - 255, а максимальная длинна пути - 4096 байт! Это при том, что в православной NTFS максимальная длинна пути - 32767 символов юникода!

О_о о_О!!!11

Deleted
()
Ответ на: комментарий от Deleted

> Разработчики ext* подумали и решили, что большее количество файлов в одной директории никто в здравом уме создавать не будет.

В общем-то я так и подумал. Что ж они тогда разрешили создавать больше 32К файлов в одной директории? Не понадеялись на здравомыслие?

Плохо другое. Теперь придется еще и систему на вшивость проверять, а то вдруг такие разработчики лучше меня знают, что на моем сервере нужно, а что избыточно!

valich ★★★
() автор топика

Счётчик ссылок в ext* как бы 16-битный (один студент в своё время решил, что этого хватит) :)

frame ★★★
()
Ответ на: комментарий от frame

На длину имени файла - это ограничение в том числе и ФС. А на путь - только ограничение в VFS ядра.

Deleted
()
Ответ на: комментарий от Deleted

>Это при том, что в православной NTFS максимальная длинна пути - 32767 символов юникода!

Исходников NTFS виндозникам не дают, для Linux же:

include/linux/limits.h

#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */

ef37 ★★
()

Не, ну толсто же. Здесь очевидно должна быть СУБД.

Evgueni ★★★★★
()

Вот это я понимаю, ССЗБ! Вам слово иерархия говорит о чем-нибудь?

unikoid ★★★
()
Ответ на: комментарий от aix27249

> А насколько важна инфа в этих файлах? Может, use-case позволит в tmpfs всё гонять?

Потеря или искажение информации ведут к отбраковке созданной в процессе информации. На отдельных файлах не особо важно, но если их будут сотни, то плохо. Получение исходной информации довольно затратная информация, впрочем как и конечно ее число.

valich ★★★
() автор топика
Ответ на: комментарий от dikiy

> да ради бога. Создай один здоровенный файл и форматни его в райзер, и монтируй потом.

Так и сделал сейчас на экспериментальной системе CentOS 5.4 (i386) в VirtualBox.
Создал файл на 512 метров утилитой dd.
Установил пакет e4fsprog из официального репа.
mount -t ext4dev -o loop /home/valich/largefile /home/valich/hostshare
По статистике раздела там 13% объема занято, служебная информация ФС.
Стал в цикле создавать директории (40000 штук заказал).
Он 32756 штук создал а потом сказал, что место кончилось (на ext3 говорил, что Too many links).
По статистике раздела 30% занято. Файлы могу создавать.

Вот такой Ынтырпрайз!

valich ★★★
() автор топика
Ответ на: комментарий от valich

Соврал.

cannot touch `/home/valich/hostshare/test.44444.txt': No space left on device

Все, раздел на 509 метров оказался забит под завязку 32756 пустыми директориями.

valich ★★★
() автор топика
Ответ на: комментарий от dikiy

> Создай один здоровенный файл и форматни его в райзер, и монтируй потом.

А reiserfs поддержки нет. Только если сервер в экспериментальное состояние загнать.

Так что иерархия спасла отца русской демократии.

valich ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.