1

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

Насколько я знаю, Amazon S3/CloudFront не имеет такого ограничения, однако для сайтов с высоким трафиком эти услуги стоят намного дороже, чем наша собственная стойка сервера. Есть ли лучший способ разделения загрузок на несколько дисков в нашей среде?

2 ответа2

3

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

  • Использование распределенных файловых систем, таких как glusterfs, позволит вам иметь несколько серверов, каждый с собственным ЦП, ОЗУ и хранилищем, а также иметь одну логическую файловую систему, общую для всех из них.

  • Вы также можете продвинуть эту распределенную концепцию на шаг вперед и кластеризовать всю систему, от супа до орехов, чтобы казалось, что вы работаете на одном логическом компьютере, хотя на самом деле это серия сетевых компьютеров, тесно связанных друг с другом (предпочтительно через некоторые очень высокоскоростные сети).

  • Вы можете сэкономить на покупке материнских плат, процессоров, процессоров, оперативной памяти и т.д., Приобретая "сервер хранения", который представляет собой умеренно мощный сервер корпоративного уровня, подключенный ко многим жестким дискам - либо непосредственно установленным в шасси, либо подключенным через оптоволоконный канал или SAS к внешней стойке хранения, иногда содержащей жесткие диски от 60 до более. В этих конфигурациях жесткие диски обычно объединяются в одно логическое устройство с использованием аппаратного контроллера RAID или объединительной платы. Конечно, этот метод в конечном итоге достигнет максимума. емкость, если у вас есть все диски, которые вы можете разместить в одной стойке с максимальной плотностью диска, и в этом случае вы можете увеличить масштаб, имея кластер файлового уровня или системного уровня этих серверов хранения.

В зависимости от точного размера хранилища, которое вы ожидаете в течение следующих N лет (где N - это количество лет, на которое вы готовы планировать заранее), некоторые из этих решений будут дороже или сложнее в администрировании, чем другие.

В экстремальном примере, когда требуется много тысяч терабайт избыточного хранилища в масштабах того, что Amazon S3 предоставляет своим нижестоящим клиентам, вам в значительной степени необходима кластерная система, обычно с централизованной инфраструктурой для управления ею. В этих случаях очень быстрая межузловая сеть имеет решающее значение для поддержания хорошей производительности. Определенно посмотрите на 10G Ethernet как минимум.

Судя по тому, что вы сказали, что в настоящее время работаете на одном жестком диске, наиболее экономичный способ увеличения масштаба без увеличения масштаба - это купить сервер 2U или 3U, который может вместить 4 до 8 жестких дисков, и вставьте туда кучу дисков в RAID. RAID10, RAID5 и RAID6 - довольно распространенные конфигурации для этого количества дисков, но если вы используете RAID5/RAID6, убедитесь, что вы используете аппаратный RAID-контроллер, чтобы избежать чрезмерной загрузки процессора.

Вероятно, вы можете масштабировать до 16 ТБ полезной памяти (с избыточностью), используя этот метод и доступные в настоящее время диски, но имейте в виду, что диски большей емкости также имеют тенденцию работать медленнее, с меньшей пропускной способностью и большим временем отклика, поэтому очень сайты с высоким трафиком , как правило, используют диски с меньшей емкостью .... что, конечно , означает , что вам нужно больше из них для достижения той же полезной мощности. :/

2

Это плохо - в серверной среде, где важно содержание данных, вы должны по крайней мере использовать RAID для снижения значительного риска сбоя диска - и RAID также является решением вашей проблемы с хранилищем. Вы можете использовать массив RAID для увеличения емкости вашего хранилища. (RAID используется для получения нескольких дисков для предоставления одного виртуального диска с различными характеристиками производительности и избыточности)

Есть и другие технологии, о которых вам действительно нужно знать и использовать - вы не указали свою ОС, но, надеюсь, это вариант Linux - в этом случае вам следует обратить внимание на LVM, который управляет управлением дисками и, среди прочего, имеет возможность объединить несколько дисков в один виртуальный диск - ниже уровня операционной системы.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .