У меня есть 3 разных папки, содержащие конкретную информацию о заказах на продажу. Все работало нормально, но несколько дней назад у меня возникла проблема с количеством подкаталогов в каждой из этих основных папок (заказы выше 32 КБ).
Моим временным решением было переместить самые старые данные в резервную копию и удалить их из производственной среды, но я бы очень хотел, чтобы они были там, поэтому мой вопрос:
Какие варианты вы рекомендуете для хранения структуры, в которой я могу сохранять дополнительные подпапки, не достигая максимума? Я нахожусь на сервере Ubuntu с ext3
Это выглядит примерно так
-tmp /
--order_1 /
--order_2 /
...
--order_32000 /
...
-imgs /
--order_1 /
--order_2 /
...
--order_32000 /
...
-hd_imgs /
--order_1 /
--order_2 /
...
--order_32000 /
внутри каждой папки order_xx находится от 1 до 30 файлов.
Мне кажется, что вам нужна (настоящая) база данных (в отличие от файловой системы) и некоторое время на разработку, чтобы создать для нее интерфейс. Исследовать MongoDB или Postgres.
Если вам нужно более быстрое решение, попробуйте разбить заказы по времени: храните их в иерархии, например [year]/[month]/order_######
(вы можете продолжать использовать серийные номера заказов, если хотите, или составьте номер заказа как YYYYMM#####
так что позже будет легче найти в системе без необходимости выполнять поиск в иерархии каталогов).
Это будет работать, пока количество заказов в месяц составляет менее 30 000 или около того. Следующий предел, который вы достигнете, - это filesystem inode limit
тем не менее, и единственное решение - это новая файловая система (или разделение ваших данных на несколько файловых систем). Взгляни на df -i
в вашей системе сегодня, и помните, что каждый файл и каталог будет поглощать еще один индексный дескриптор. В конце концов ты выбежишь.
Вы можете перейти на ext4, чтобы обойти ограничение в 32 КБ.