Мне нужно хранить 100+ ТБ данных на нескольких серверах, поэтому я понимаю, что это возможно с распределенными файловыми системами. Мне также нужно, чтобы система была терпимой к сбоям.
Поэтому, если один сервер не работает, я не хочу, чтобы из-за этого умирали данные. Также я хочу сделать это наиболее эффективным способом [пробел].
Мне, например, нравится, как работает RAID5. Могу ли я создать систему типа RAID5 между несколькими серверами, или существуют ли файловые системы, которые делают то же самое, что и RAID5, между несколькими серверами?
Похоже, ваши требования в высшей степени нереалистичны.
Во-первых, 100 ТБ данных - это много. Вам действительно нужно, чтобы все это было доступно одновременно? Если это так, вам нужно искать гораздо больше, чем просто распределить его по нескольким серверам. Следует учитывать особенности сети и доступа, а также ограничения производительности. Если у вас действительно есть законная потребность в таком большом количестве онлайн-данных, у вас будет много одновременного доступа к ним. Готовы ли ваши серверы справляться со всеми этими IOPS? Кроме того, возникает проблема резервного копирования ... для резервного копирования 100+ ТБ данных вам понадобится адская чудовищная система резервного копирования, требующая нескольких ленточных библиотек и / или систем резервного копирования D2D. То, как вы задали этот вопрос, вселяет в меня полную уверенность, что вы ничего из этого не рассматривали и вам нужно это сделать.
Настройка такого объема данных - это несколько проектов в одном (или один очень большой проект, в зависимости от того, как работает ваша компания). И, пожалуйста, не поймите это неправильно, но вы явно не справляетесь с этой задачей. По правде говоря, очень немногие люди в мире справятся с этой задачей самостоятельно, и никто из них не стал бы прокомментировать, что нравится RAID5 и не хочет знать, как распределить это по нескольким серверам или файловой системе, которая делает то же самое. вещь.
Что еще более важно, нет эффективного отказоустойчивого способа распределения больших наборов данных. На фундаментальном уровне вы жертвуете эффективностью использования пространства ради отказоустойчивости, потому что, если один из ваших распределенных узлов выходит из строя, единственный способ продолжить предоставлять доступ к данным, которые он хранит, - это иметь другую копию или копии этих данных в той или иной форме. Таким образом, вы можете либо иметь отказоустойчивый доступ к своим данным, либо эффективно использовать доступное дисковое пространство, но не то и другое одновременно. Чтобы иметь базовое отказоустойчивое хранилище данных объемом 100+ ТБ, вам потребуется как минимум вдвое больше (200+ ТБ) дискового пространства, точка.
В некотором роде примечание / касательно вышеизложенного, RAID5 не волшебство. Резервирование достигается за счет вычисления битов четности. Это позволяет сэкономить место за счет времени вычислений. В качестве метода обеспечения отказоустойчивости он также не является хорошей идеей для больших наборов данных, потому что в какой-то момент вы почти наверняка столкнетесь с ошибкой на уровне битов, что снизит вашу отказоустойчивость и требует больших вычислительных ресурсов. Это может занять ДНЕЙ для восстановления одного отказавшего диска в большом массиве RADI5. Как вы думаете, сколько времени потребуется для выполнения более сложных вычислений четности, скажем, для 20 ТБ данных с отказавшего узла?
Например GlusterFS может это сделать.
Но вы можете найти здесь много других файловых систем: http://en.wikipedia.org/wiki/List_of_file_systems#Distributed_fault-tolerant_file_systems
Взгляни на MooseFS, мы используем его здесь с 105 ТБ уже 3 года, и он отлично работает.