A Распределенная файловая система для облаков - это файловая система, которая позволяет многим клиентам иметь доступ к данным и поддерживает операции (создание, удаление, изменение, чтение, запись) с данным данным. Каждый файл данных может быть разделен на несколько частей, называемых кусками. Каждый фрагмент может храниться на разных удаленных машинах, облегчая параллельное выполнение приложений. Обычно данные хранятся в файлах в иерархическом дереве , где узлы представляют каталоги. Существует несколько способов использования различных файлов в распределенной системе энергоснабжения: существует несколько способов использования различных типов приложений, в зависимости от того, насколько сложным является приложение. Между тем, безопасность системы должна быть обеспечена. Конфиденциальность, доступность и целостность используются ключи для безопасной системы.
Пользователи могут совместно использовать вычислительные ресурсы через Интернет благодаря облачным вычислениям, которые обычно характеризуются масштабируемостью и эластичностью ресурсы - такие как физические серверы, приложения и любые службы, которые виртуализированы и распределяются динамически. Синхронизация необходима, чтобы убедиться, что все устройства обновлены.
Распределенные файловые системы позволяют многим крупным, средним и малым предприятиям хранить и получать доступ к своим удаленным данным так же, как к локальным данным, облегчая использование ресурсов.
Сегодня, существует множество реализаций распределенных файловых систем. Первые файловые серверы были разработаны исследователями в 1970-х годах. Сетевая файловая система Sun Microsystem стала доступной в 1980-х годах. Эти люди, которые хотели обмениваться файлами, использовали метод sneakernet, физически перемещенные файлы на носителях с места в место. Как только компьютерные сети начали распространяться, стало очевидно, что удобные файловые системы имеют множество ограничений и не подходят для многопользовательских сред. Изначально использовали FTP для обмена сообщениями. FTP работал сначала на PDP-10 в конце 1973 года. Даже при использовании FTP файлы нужно было копировать с исходного компьютера на сервер, а затем с сервера на клиентском компьютере. От пользователей требовалось знать физические службы всех компьютеров, участвующих в обмене файлы.
Современные центры обработки данных должны поддерживать большие разнородные среды, состоящие из большого количества компьютеров различных мощностей. Облачные вычисления координируют работу всех таких систем с помощью таких методов, как сеть обработки данных (DCN), структура MapReduce, которая поддерживает приложения с интенсивными вычислениями. в параллельных и распределенных системах, а также методы виртуальных, которые обеспечивают динамическое распределение ресурсов, позволяя нескольким операционным системам сосуществовать на одном физическом сервере.
Облачные вычисления обеспечивают крупномасштабные ресурсы благодаря своим возможностям предоставить необходимые ресурсы ЦП и хранилища с полной прозрачностью. Это делает облачные вычисления особенно подходящими для различных типов приложений, требующих крупномасштабной распределенной обработки. Для интенсивных вычислений требуется высокопроизводительная файловая система, которая может обмениваться данными между виртуальными машинами (VM).
Облачные вычисления динамически выделяют необходимые ресурсы, высвобождая их после завершения задач, требуя, чтобы пользователи платили только за необходимые услуги, часто через соглашение об уровне обслуживания. Парадигмы вычислений и кластерных вычислений становятся все более важными для промышленной обработки данных и научных приложений, таких как астрономия и физика, которые часто требуют большого количества компьютеров для проведения экспериментов.
Большинство распределенных файловых систем построены на сервере клиент-сервер, но существуют и другие, децентрализованные решения.
Сетевая файловая система (NFS) использует серверуру клиент-сервер, которая позволяет обмениваться файлами между машинами в сети, как если бы они были защищены локально, применяется стандартный вид. Протокол NFS позволяет процессам разнородных клиентов, возможно, запущенных на разных машинах и под разными операционными системами, получить доступ к файлам на удаленном сервере, игнорировать фактическое расположение файлов. Использование одного сервера приводит к тому, что протокол NFS страдает от низкой доступности и плохой масштабируемости. Использование нескольких серверов не решает проблему, поскольку каждый сервер работает независимо. Модель NFS - это удаленная файловая служба. Эта модель также называется моделью удаленного доступа, которая отличается от модели удаленного доступа:
Файловая система, используемая NFS, почти такая же, как и система, используемая Unix систем. Файлы иерархически организованы в графах именования, в котором каталоги и файлы представлены узлами.
A архитектура на основе кластера устраняет некоторые проблемы архитектурного клиент-сервер, улучшая выполнение приложений параллельно. Используемая здесь техника - это чередование файлов: файл разбивается на несколько частей, которые «чередуются» по нескольким серверам хранения. Цель состоит в том, чтобы разрешить доступ к разным частям файла. Если приложение не использует этот метод, было бы удобнее хранить разные файлы на разных серверах. Когда дело доходит до распределенной файловой системы для крупных файлов обработки данных, таких как Amazon и Google, которые предоставляют веб-клиенты услуги, позволяющие выполнять несколько операций (чтение, удаление и т. Д.) распределить между большим количеством компьютеров, то кластерные решения становятся более выгодными. Обратите внимание, что наличие большого количества компьютеров может означать больше отказов оборудования. Две из наиболее широко используемых распределенных файловых систем (DFS) этого типа - это Google File System (GFS) и Распределенная файловая система Hadoop (HDFS). Обе файловые системы реализуются процессами пользовательского уровня, выполняемыми стандартной операционной системой (Linux в случае GFS).
Файловая система Google (GFS) и Распределенная файловая система Hadoop (HDFS) специально для обработки пакетной обработки очень больших наборов данных. Для этого необходимо принять во внимание следующие гипотезы:
Балансировка нагрузки необходима для эффективной работы в распределенных средах. Это означает справедливое распределение работы между разными серверами, чтобы выполнять больше работы за то же время и обслуживать клиентов. В системе, содержащей N серверов фрагментов в облаке (N равно 1000, 10000 или более), где хранится определенное количество файлов, каждый файл разбивается на несколько частей или фрагментов фиксированного (например, 64 мегабайта), загрузка каждого сервера фрагментов пропорциональна количества фрагментов, размещенных на сервере. В облаке с балансировкой нагрузки ресурсы могут быть эффективно использованы при максимальной производительности приложений на основе MapReduce.
В среде облачных вычислений сбой нормой, и серверы фрагментов можно обновить, заменить и добавить в систему. Файлы также можно динамически создавать, удалять и скачивать. Это приводит к дисбалансу нагрузки в распределенной файловой системе, а это означает, что фрагменты файлов не распределяются между серверами равномерно.
Распределенные файловые системы в облаках, такие как GFS и HDFS, полагаются на центральные или главные серверы или узлы (главный для GFS и NameNode для HDFS) для управления метаданными и балансировкой нагрузки. Мастер периодически выполняет обработку реплик: данные должны быть перемещены с одного DataNode / chunkserver на другой, если свободное пространство на первом сервере устанавливается ниже определенного порога. Однако этот централизованный подход может стать узким для этих главных серверов, если они не имеют большого размера обращений к файлам, поскольку это увеличивает и без большого нагрузки. Проблема перебалансировки нагрузки NP-hard.
Чтобы заставить большое количество серверов фрагментов работать совместно и решить проблему балансировки нагрузки в распределенных файловых системах, было предложено несколько подходов, таких как перераспределение файлов. фрагментов можно было распределить как можно более равномерно при максимально возможном сокращении на перемещение.
Google, одна из систем Интернет-компании создала свою собственную распределенную файловую систему, названную файловую систему Google (GFS), которая удовлетворяет быстро растущие Google в обработке данных, и она используется для всех облачных сервисов. GFS - это масштабируемая распределенная файловая система для приложений с интенсивным использованием данных. Он обеспечивает отказоустойчивое и высокопроизводительное хранилище данных для большого количества клиентов, обращающихся к нему одновременно.
GFS использует MapReduce, который позволяет пользователям создавать программы и запускать их на нескольких машинах, не задумываясь о проблемах распараллеливания и балансировки нагрузки. Архитектура GFS основано на наличии одного главного сервера для нескольких серверов фрагментов и нескольких клиентов.
Главный сервер, работающий на выделенном узле, отвечает за координацию ресурсов хранения и управления метаданными (эквивалент (например, inodes в классических файловых системах). Каждый файл разбивается на части по 64 мегабайта.. Каждый фрагмент хранится на сервере фрагментов. Блок идентифицируется дескриптором блока, который представляет собой глобально уникальный 64-битный номер, назначается мастером при первом создании блока.
Мастер поддерживает все метаданные файлы, включая имена файлов, каталоги и отображение. Эти данные хранятся в журнале работы на диске вместе с отображением файлов на диске. точка, и данные основной памяти сохраняются в структуре B-tree, чтобы облегчить отображение обратно в основную память.
Для обеспечения отказоустойчивости каждый фрагмент реплицируется на несколько (по умолчанию, три) сервера фрагментов. Фрагмент доступен как минимум на одном сервере фрагментов. Преимущество этой схемы - простота. Мастер отвечает за выделение серверов фрагментов для каждого фрагмента и связывается только для получения информации о метаданных. Для всех остальных данных клиент должен взаимодействовать с серверами фрагментов.
Мастер отслеживает, где находится блок. Однако он не поддерживает поддерживать местоположения фрагментов, а лишь изредка связывается с серверами фрагментов, чтобы узнать, какие фрагменты они сохранили. Это обеспечивает масштабируемость и помогает предотвратить узкие места из-за увеличения рабочей нагрузки.
В GFS большинство файлов модифицируются путем добавления новых данных, а не повторяются повторные данные. После записи файлов, обычно используемых последовательно, а не случайным образом, это делает эту DFS наиболее подходящей для среды, в которой много больших файлов создается один раз, но читается много раз.
Когда клиент хочет записать / обновить файл, мастер назначит реплику, которая будет первичной репликой, если это будет первая модификация. Процесс записи состоит из двух этапов:
Следовательно, мы можем различать два типа: поток данных и поток управления. Поток данных связан с фазой отправки, а поток управления связан с фазой записи. Это гарантирует, что первичный сервер фрагментов берет на себя управление порядком записи. Обратите внимание, что когда мастер назначает операцию записи реплике, увеличивает внимание номер версии блока и сообщает всем репликам, содержитим этот блок, новый номер версии. Номера версий фрагментов позволяют обнаруживать ошибки обновления, если реплика не была обновлена из-за того, что ее сервер фрагментов не работал.
Некоторые новые приложения Google плохо работали с размером фрагмента 64 мегабайта. Чтобы решить эту проблему, в 2004 году GFS начала внедрять подход Bigtable.
HDFS, подход Apache Software Foundation. - это распределенная файловая система, предназначенная для хранения очень больших объемов данных (терабайт или даже петабайт). Его архитектура аналогична GFS, то есть архитектура ведущий / ведомый. HDFS обычно устанавливается на кластере компьютеров. Концепция дизайна Hadoop основана на Google, с файловой системой Google, Google MapReduce и Bigtable, реализуемой распределенной файловой системой Hadoop (HDFS), Hadoop MapReduce и Hadoop Base (HBase) соответственно. Как и GFS, HDFS подходит для сценариев с доступом к файлам с однократной записью и многократным чтением и поддерживает добавление и усечение файлов вместо произвольных операций чтения и записи для упрощения проблем с согласованием данных.
Кластер HDFS состоит из одного NameNode и нескольких машин DataNode. NameNode, главный сервер, управляет и поддерживает метаданные хранилища DataNodes в своей RAM. Узлы данных управляют хранилищем, подключенным к узлам, на которых они работают. NameNode и DataNode - это программное обеспечение, предназначенное для работы на машинах повседневного использования, которые обычно работают под управлением ОС GNU / Linux. HDFS может быть запущен на любом компьютере, поддерживающем Java, и, следовательно, может запускать либо NameNode, либо программное обеспечение Datanode.
В кластере HDFS файл разбивается на один или несколько блоков равного размера, за исключением возможности последнего блока меньше. Каждый блок хранится на нескольких узлах данных, и каждый может быть реплицирован на несколько узлов данных, чтобы гарантировать доступность. По умолчанию каждый блок реплицируется трижды, этот процесс называется «Репликация на уровне блока».
NameNode управляет операциями пространства имен файловой системы, такими как открытие, закрытие и переименование файлов и каталогов, и регулирует доступ к файлам. Он также определяет отображение блоков на DataNodes. Узлы данных отвечают за обслуживание запросов чтения и записи от клиентов файловой системы, управление выделением или удалением блоков, а также репликацию блоков.
Когда клиент хочет прочитать или записать данные, он обращается к NameNode и NameNode проверяет, откуда данные должны быть прочитаны или записаны. После этого клиент получает местоположение DataNode и может отправлять ему запросы на чтение или запись.
HDFS обычно характеризуется совместимостью со схемами перебалансировки данных. В общем, управление свободным пространством на DataNode очень важно. Данные должны быть перемещены из одного DataNode в другой, если свободного места недостаточно; а в случае создания дополнительных реплик данные должны быть перемещены для обеспечения баланса системы.
Распределенные файловые системы можно оптимизировать для различных целей. Некоторые из них, например, предназначенные для интернет-сервисов, включая GFS, оптимизированы для масштабируемости. Другие проекты распределенных файловых систем поддерживают приложения, требующие высокой производительности, обычно выполняемые параллельно. Вот некоторые примеры: файловая система MapR (MapR-FS), Ceph-FS, файловая система Fraunhofer (BeeGFS), файловая система Lustre, IBM General Parallel File System (GPFS) и Parallel Virtual File System.
MapR-FS - это распределенная файловая система, которая является основой конвергентной платформы MapR, с возможностями для распределенной файловое хранилище, база данных NoSQL с несколькими API-интерфейсами и интегрированная система потоковой передачи сообщений. MapR-FS оптимизирован для масштабируемости, производительности, надежности и доступности. Его возможности хранения файлов совместимы с API распределенной файловой системы Apache Hadoop (HDFS), но с некоторыми конструктивными особенностями, которые отличают его от HDFS. Среди наиболее заметных отличий MapR-FS - это файловая система с полным доступом для чтения и записи с метаданными для файлов и каталогов, распределенных по пространству имен, поэтому нет NameNode.
Ceph-FS - это распределенная файловая система, которая предоставляет отличнаяпроизводительность и надежность. Он отвечает на задачи работы с огромными масштабами и каталогами, увеличивающим производительность дисков, с использованием параллельного доступа к метаданным в массовых измерениях, управления рабочими нагрузками как научного, так и общего назначения, аутентификации и шифрования в больших масштабах, а также увеличения или динамически из -за частого списания устройств, сбоев устройств и расширения кластеров.
BeeGFS - это высокопроизводительная параллельная файловая система от Центра компетенции Фраунгофера для высокопроизводительных вычислений. Распределенная архитектура метаданных BeeGFS была увеличена для масштабируемости и гибкости, необходимых для запуска HPC и подобных приложений с высокими требованиями к вводу-выводу.
Файловая система Lustre была и реализована для решения проблемы узких мест, традиционно встречающихся в распределенных системах. Блеск отличается эффективностью, масштабируемостью и избыточностью. GPFS также была предоставлена возможность с целью устранения таких узких мест.
Высокая производительность распределенных файловых систем требует эффективной связи между вычислительными узлами и быстрого доступа к системам хранения. Чтобы обеспечить такую производительность, такие операции, как открытие, закрытие, чтение, запись, отправка и получение, должны быть быстро. Например, каждый запрос на чтение или запись обращается к дисковой памяти, что приводит к задержкам поиска, вращения и сети.
Операции передачи данных (отправка / получение) передают данные из буфера приложения в ядро машины, TCP, контролируемый процесс и реализуемый в ядре. Однако в случае перегрузки сети или ошибок TCP может не отправлять данные напрямую. При передаче данных из буфера в ядре в приложении машина не считывает поток байтов с удаленной машины. Фактически, TCP отвечает за буферизацию данных для приложения.
Выбор размера буфера для чтения и записи или отправки и получения выполняется на уровне приложения. Буфер поддерживается с помощью кольцевого связанного списка. Он состоит из набора BufferNodes. Каждый BufferNode имеет DataField. DataField содержит данные и указатель NextBufferNode, который указывает на следующий BufferNode. Чтобы найти текущую позицию, используются два указателя : CurrentBufferNode и EndBufferNode, которые данной позиции в BufferNode для последней позиции записи и чтения. Если на BufferNode нет свободного места, он отправит клиенту сигнал ожидания, чтобы дождаться, пока не появится доступное пространство.
Все больше и больше пользователей имеют несколько устройств со специальной связью. Наборы данных, реплицируемые на этих устройствах, необходимо синхронизировать между произвольным серверами. Это полезно для резервного копирования, а также для автономной работы. Действительно, когда пользовательские сетевые условия плохие, тогда пользовательское устройство будет выборочно реплицировать часть данных, которые будут использоваться в автономном режиме. Как только условия сети станут хорошими, устройство синхронизируется. Существует два подхода к решению проблемы распределенной синхронизации: управляемая синхронизация синхронизация мастер-реплика.
В облачных вычислениях самое важное безопасность понятиями конфиденциальность, целостность и доступность («ЦРУ »). Конфиденциальность становится незаменимой для предотвращения разглашения личных данных. Целостность гарантирует, что данные не будут повреждены.
Конфиденциальность означает, что данные и вычислительные задачи являются конфиденциальными: ни поставщик облачных услуг, ни другие клиенты не могут получить доступ к данным клиента. В отношении конфиденциальности было проведено много исследований, поскольку это один из важнейших моментов. Недоверие к поставщику облачных услуг также является проблемой. Инфраструктура облака должна иметь, что данные клиентов не доступны неавторизованным лицам.
Среда становится небезопасной, если поставщик услуг может сделать все следующее потребителя:
Географическое расположение данных определяет конфиденциальность и конфиденциальность. Следует учитывать местонахождение клиентов. Например, клиенты в Европе не будут применяться в использовании центров обработки данных, используя в США, как это влияет на гарантию конфиденциальности данных. Чтобы некоторые поставщики облачных вычислений использовали географическое положение хоста в соглашении об обслуживании, заключенном с клиентом, что позволяет самим выбирать местоположение серверов, на которых будут размещаться их данные.
Другой подход к конфиденциальности включает шифрование данных. В случае возникновения серьезного риска несанкционированного использования. Существует множество решений, таких как шифрование только конфиденциальных данных и поддержка некоторых операций для упрощения вычислений. Кроме того, криптографические методы и инструменты, такие как FHE, сохранены данные в облаке.
Целостность в облачных вычислениях подразумевает целостность данных также как и. Такая целостность означает, что данные должны правильно храниться на облачных серверах и в случае сбоев или неправильных вычислений, должны быть обнаружены проблемы.
На целостность данных могут повлиять вредоносные события или ошибки администрирования (например, во время резервное копирование и восстановление, переноса данных или изменения членовства в P2P системы).
Целостности легко достичь с помощью криптографии (обычно с помощью кода аутентификации сообщения или MAC в блоках данных).
Существуют механизмы проверки, влияющие на целостность данных. Например:
Доступность обычно обеспечивается репликацией. Между тем должна быть гарантирована последовательность. Однако согласованность и доступность не могут быть достигнуты одновременно; каждому отдается предпочтение при некоторой жертве другого. Должен быть установлен баланс.
Чтобы данные были доступны, они должны иметь идентификатор. Например, Skute - это механизм, основанный на хранении ключей / значений, который позволяет эффективно динамически распределять данные. Каждый сервер должен быть обозначен меткой в формате континент-страна-центр обработки данных-комната-стойка-сервер. Сервер может ссылаться на несколько виртуальных узлов, каждый из которых имеет набор данных (или несколько разделов с предоставленными данными). Каждая часть криптографических идентифицирует измененное пространство, генерируется односторонней хеш-функцией (например, MD5 ) и локализует значение хеш-функции этого ключа. Ключевое пространство может быть разделено на несколько разделов, каждый из которых относится к фрагменту данных. Для выполнения репликации виртуальные узлы должны быть реплицированы и на них ссылаться другие серверы. Чтобы обеспечить максимальную надежность и доступность данных, реплики должны быть размещены на разных серверах, и каждый сервер должен находиться в другом географическом положении, поскольку доступность данных увеличивается с географическим разнообразием. Процесс репликации включает оценку доступности пространства, которая должна быть выше определенного минимального порога удержания на каждом сервере фрагментов. В противном случае реплицируются на другой фрагмент. Каждый раздел i имеет значение доступности, представленное следующей формулой:
где - это серверы, на которых реплики, и - это доверие серверов и (в зависимости от технических факторов, таких как компоненты оборудования и нетехнических факторов, таких как экономические и политические ситуации в стране), разнообразие - это географическое расстояние между и .
Репликация - это отличное решение для обеспечения доступности данных, но оно стоит слишком дорого с точки зрения объема памяти. DiskReduce - это модифицированная версия HDFS, основанная на технологии RAID (RAID-5 и RAID-6) и позволяющая асинхронное кодирование реплицированных данных. Действительно, существует фоновый процесс, который ищет широко реплицируемые данные и удаляет лишние копии после их кодирования. Другой подход - заменить репликацию кодированием с стиранием. Кроме того, для обеспечения доступности существует множество подходов, позволяющих восстановить данные. Фактически данные должны быть закодированы, и если они будут потеряны, их можно будет восстановить из фрагментов, которые были созданы на этапе кодирования. Вот некоторые другие подходы, в которых используются различные механизмы для гарантии доступности: код Рида-Соломона для Microsoft Azure и RaidNode для HDFS. Также Google все еще работает над новым подходом, основанным на механизме стирания-кодирования.
Не существует реализации RAID для облачного хранилища.
Экономика облачных вычислений быстро растет. Правительство США решило потратить 40% от своего совокупного годового темпа роста (CAGR), который, как ожидается, к 2015 году составит 7 миллиардов долларов.
Все больше и больше компаний используют облачные вычисления для управлять огромным объемом данных и преодолевать нехватку емкости хранилища, и поскольку это позволяет им использовать такие ресурсы в качестве услуги, обеспечивая удовлетворение их вычислительных потребностей без необходимости инвестировать в инфраструктуру (Pay-as-you-go модель).
Каждый поставщик приложений должен периодически оплачивать стоимость каждого сервера, на котором хранятся реплики данных. Стоимость сервера определяется качеством оборудования, емкостью хранилища, а также накладными расходами на обработку запросов и связь. Облачные вычисления позволяют поставщикам масштабировать свои услуги в соответствии с требованиями клиентов.
Модель оплаты по мере использования также снизила нагрузку на начинающие компании, которые хотят получить выгоду от бизнеса, требующего интенсивных вычислений. Облачные вычисления также открывают возможности для многих стран третьего мира, у которых иначе не было бы таких вычислительных ресурсов. Облачные вычисления могут снизить ИТ-барьеры для инноваций.
Несмотря на широкое использование облачных вычислений, эффективное совместное использование больших объемов данных в ненадежном облаке по-прежнему является проблемой.
| journal =
() CS1 maint: ref = harv (ссылка )| journal =
() CS1 maint: ref = harv (link )| journal =
() CS1 maint: ref = harv (link )| journal =
() CS1 maint: ref = harv (link )