У меня есть базовое облако, работающее на Ubuntu Server (9.04) и Eucalyptus. Walrus (реализация S3, совместимая с API Eucalyptus) хранит файлы на облачном контроллере. Однако каждый из остальных 4 серверов имеет хранилище объемом 1 ТБ, которое в основном не используется. Я ищу способ объединить все хранилища вместе, чтобы использовать все доступные ресурсы. Я искал различные варианты, включая PVFS, Lustre, HDFS (Hadoop).
Единственное, что мне нужно, это то, что он должен быть масштабируемым и хорошо работает на Ubuntu. Буду признателен любому, кто имеет опыт работы с такими технологиями, и с нетерпением жду ваших предложений.
Хотя я лично не реализовал его нигде в наших системах, я довольно подробно изучил Gluster. Я знаю нескольких человек на некоторых крупных сайтах, которые используют это, и, по-видимому, он работает очень хорошо. Они используют его в производстве для некоторых тяжелых приложений HPC.
GlusterFS мне показалась идеальным решением. Парню, который утверждает, что Gluster требует много усилий для настройки, я должен сказать, что он, вероятно, никогда не пробовал. Начиная с Gluster 3.2, утилиты настройки довольно хороши, и требуется 2 или 3 команды для увеличения громкости и совместного использования в сети. Монтаж томов Gluster не менее прост.
С другой стороны, это дает гораздо большую гибкость, чем NFS. Он выполняет чередование, рликацию, георепликацию, конечно, совместим с POSIX и так далее. Существует расширение под названием HekaFS, которое также добавляет SSL и более продвинутые механизмы аутентификации, что, вероятно, интересно для облачных вычислений. Также масштабируется! Это F / OSS, он разрабатывается RedHat, недавно купившим Gluster.
Вы когда-нибудь смотрели на mogileFS? http://danga.com/mogilefs/
Это не файловая система в традиционном понимании, но она хороша для распределения файловых данных по кластеру (с учетом репликации и избыточности).
Если вы обслуживаете файлы для веб-приложения, вам понадобится что-то для обслуживания файлов. Я бы предложил сценарий PHP, который использует HTTP-запрос в качестве ключа поиска для поиска нужного файла в mogile FS. Затем вы можете прочитать содержимое файла в буфер и вывести его / распечатать.
MogileFS уже работает довольно быстро, но вы можете комбинировать mogileFS с memcache, чтобы ускорить доступ к наиболее часто используемым файлам.
С Lustre у вас должно быть специальное ядро на серверах, и я бы только серверы были серверами и ничего больше.
Как ни странно, наиболее разумным ответом будет NFS. Мы использовали NFS в облаке Amazon. Он может не масштабироваться так хорошо, как некоторые файловые системы, но я не должен упускать из виду простоту. Единое пространство имен, вероятно, не стоит усилий, которые потребуются для его реализации.
Вы все еще изучаете HDFS? Один из парней из Cloudera в этом году рассказал на VelocityConf о Hadoop и HDFS, ориентированных на управление кластерами больших данных, поэтому он немного рассказал о HDFS. Слайды довольно информативны. Я лично не работал с HDFS, но я разговаривал с некоторыми случайными людьми из Velocity, которые используют его в Ubuntu для анализа различных данных.
Размещение какой-то общей файловой системы за средой виртуализации довольно распространено. У вас есть много вариантов, в зависимости от того, чего вы хотите достичь.
Самым простым решением, вероятно, является NFS, потому что он будет изначально поддерживаться любым дистрибутивом, который вы используете. NFS может достаточно хорошо работать в качестве серверной файловой системы виртуализации, хотя это не будет самым быстрым из существующих.
Если вы используете кластер RedHat (или производный), у вас будет хорошая готовая поддержка GFS2, файловой системы кластера RedHat. Это не масштабируется до сотен узлов, но подходит для небольших кластеров.
Помимо этого, вы начинаете входить в диапазон таких вещей, как Lustre, Glusterfs, GPFS и так далее. Все это высокопроизводительные параллельные файловые системы, но для их настройки требуется значительно больше работы, чем для других вариантов здесь. Если у вас большая среда, на них стоит обратить внимание.
Я согласен с @larsks в том, что NFS - лучший вариант; настроить несколько целей iSCSI, NFS, готово. это будет масштабироваться примерно до 5-10 узлов; YMMV на основе ввода-вывода, возможностей сети и т. Д. (В качестве альтернативы можно настроить iSCSI с поддержкой многопутевого ввода-вывода).
Если вам нужно что-то около 20+ узлов, вы можете исследовать Ceph. Lustre многообещающий и стабильный, но он (F / OSS) продукт Oracle, и я лично не люблю Oracle. :)
Ceph также довольно активен; последний выпуск был 5 дней назад.
XtreemFS может быть решением для вас. Его довольно просто установить и настроить, есть также пакеты для Ubuntu.
MooseFS (Распределенная файловая система) соответствует вашим требованиям. Он масштабируемый и хорошо работает в Ubuntu. Вам также может быть полезно увидеть как установить установить / обновить MooseFS из официально поддерживаемого репозитория на Ubuntu.
Не уверен, что вы делаете, но это звучит как потенциально интересное приложение для CouchDB.
Вы могли бы попробовать PVFS2. Его гораздо проще настроить, чем Lustre, и, как правило, быстрее, чем Gluster.