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

У нас есть 3 папки на машине Ubuntu 14.04, с каждым содержащим 250K изображения с размером 2KB-30KB в каждой папке, ожидая расти до 1M файлы на каталог.

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

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

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

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

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

1
задан 24 August 2015 в 10:09
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 имеется достаточно свободных inode (опция mkfs )
  2. Диски на серверах хранения GlusterFS могут обрабатывать большое количество операций ввода-вывода в секунду.
  3. Вы используете подходящую файловую систему для задачи (ext4 или xfs).
  4. Ваше приложение / сотрудники не пытаются часто сканировать каталоги с множеством небольших файлов.

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

1
ответ дан 4 December 2019 в 00:01

Теги

Похожие вопросы