Как разбить систему каталогов для GlusterFS?

Как разбить систему каталогов для GlusterFS?

У нас есть 3 папки на компьютере с Ubuntu 14.04, каждая из которых содержит 250 тыс. изображений размером 2–30 КБ в каждой папке, и мы ожидаем, что количество файлов в каждой папке вырастет до 1 млн.

При попытке масштабировать приложение на несколько серверов мы рассматриваем Glusterfs для общего хранилища. Поскольку файлы размером 250К не являются проблемой для ext4, это, похоже, проблематично для glusterfs. Попытка скопировать файлы полностью рушит машину.

Я собираюсь разбить файлы на каталоги на двух уровнях:

mkdir -p {000..255}/{000..255}

/000/000/filename
/001/000/filename
/001/001/filename
...

Звучит ли это как хороший осуществимый способ? Вся структура будет содержать миллионы файлов позже. Позволит ли это glusterfs быть надежным в производстве с хорошей производительностью, размещая миллионы файлов?

решение1

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

Вы можете реализовать такое решение. Просто создайте кучу каталогов, выберите ограничение на количество файлов, которые могут находиться в каждом каталоге, и надейтесь, что у вас не закончится место для размещения файлов. В вашем примере вы создаете 65 тыс.+ каталогов, так что вряд ли это станет проблемой в ближайшее время.

Другой вариант — создать каталоги на основе даты создания файла. Например, если файл cust_logo_xad.pngбыл создан сегодня, он будет храниться здесь:

/gluster/files/2015/08/24/cust_logo_xad.png

Если вы размещаете данные для разных сущностей (клиентов, отделов и т. д.), вы можете разделить файлы по принадлежности, присвоив сущности уникальный идентификатор. Например:

/gluster/files/ry/ry7eg4k/cust_logo_xad.png

Кроме того, было бы неплохо взглянуть наДокументация GlusterFS по настройке кластера хранения для размещения небольших файлов. По крайней мере убедитесь, что:

  1. Файловые системы на серверах хранения GlusterFS имеют достаточно свободных инодов ( mkfsопция)
  2. Диски на серверах хранения GlusterFS могут обрабатывать большое количество операций ввода-вывода в секунду.
  3. Вы используете подходящую файловую систему для задачи (ext4 или xfs)
  4. Ваше приложение/сотрудники не пытаются часто сканировать каталоги с большим количеством мелких файлов.

Если вы можете (и если вы еще этого не сделали), хорошей идеей будет создать базу данных, которая будет служить индексом для файлов, вместо того, чтобы постоянно сканировать (например ls, ) или искать (например , ) файлы.find

Связанный контент