Распределенная файловая система Google File System

Сетевые и распределенные базы данных – это те базы данных которые являются самыми современными конструкциями. Наиболее популярная и наиболее известная сетевая распределенная база данных – это сеть корпорации гугл, которая хранит внутри себя информацию, в том числе и кэш около 2 млрд сайтов, почти весь интернет. Это пожалуй самая известная сложная база данных.

Необходимо отметить что современные технологии гугловских сетей позволяют очень быстро производить поиск.

Распределенная файловая система Google File System (GFS) является закрытой разработкой компании Google, используемой для хранения больших массивов данных. Внутри Google функционирует более 200 GFS-кластеров, крупнейшие из которых насчитывают более 5 тысяч машин, хранящих около 5 петабайт данных и обслуживающих порядка 10 тысяч клиентов. Описание GFS было опубликовано в работе.

Как и любая распределенная файловая система, GFS ориентирована на обеспечение высокой производительности, масштабируемости, надежности и доступности. Отличия архитектуры GFS от других распределенных файловых систем, таких как AFS, xFS, Lustre, обусловлены спецификой приложений и вычислительной инфраструктуры Google. Данная инфраструктура построена из большого количества недорогих серверов массового производства, что приводит к постоянным отказам оборудования. Поэтому внутренние технологии Google в обязательном порядке предусматривают механизмы обнаружения и автоматического восстановления после отказов отдельных машин. Специфика приложений Google такова, что хранимые файлы обычно имеют большой размер (многие гигабайты) по сравнению с обычными файловыми системами. Как правило, содержимое файлов изменяется только за счет записи новых данных в конец файла. Запись может вестись одновременно несколькими клиентами, поэтому требуются гарантии атомарности отдельных операций. После окончания записи, файлы в основном только считываются, причем - последовательно.

Файлы в GFS организованы в иерархическую структуру директорий и идентифицируются при помощи полных путей.

Архитектура файловой системы GFS (рисунок взят из статьи Google Labs)

GFS предоставляет интерфейс с типичными для файловой системы операциями create, delete, open, close, read и write. Дополнительно поддерживаются операции snapshot и record append. Первая операция создает копию файла или директории. Вторая операция реализует атомарную запись в конец файла. В отличие от многих файловых систем, в целях упрощения реализации и повышения эффективности GFS не реализует стандартный POSIX-интерфейс.

GFS - распределенная система, организованная по схеме "главный- подчиненный" (master-slave). В системе есть один главный сервер (master) и несколько chunk-серверов. Файлы разбиваются на блоки (chunk) фиксированного размера (обычно 64 Мб), размещаемые на chunk-серверах. Для обеспечения надежности и распределения нагрузки каждый блок реплицируется на нескольких (по умолчанию, трех) серверах, размещенных в различных серверных стойках. Масштабируемость системы достигается за счет возможности "горячего" подключения новых chunk-серверов, а также описываемых ниже стратегий, позволяющих разгрузить главный сервер и, тем самым, избежать возникновения в системе узкого места.

Главный сервер хранит в памяти все метаданные файловой системы, включая пространства имен, права доступа, отображение файлов в блоки и текущие местоположения всех реплик блоков. Главный сервер также контролирует общесистемные процессы, такие как размещение и репликация блоков, назначение главной реплики, удаление неиспользуемых блоков и миграция блоков между серверами. Chunk-сервера периодически отправляют главному серверу сообщения с информацией о своем состоянии. Главный сервер использует ответы на эти сообщения для передачи инструкций chunk-серверам.

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

В заключении отметим главные особенности распределенной файловой системы GFS:

Высокая отказоустойчивость системы, автоматическое восстановление после отказов и поддержка кластеров из массовых серверов;

Ориентация на относительно небольшое число крупных файлов, которые записываются однократно;

Оптимизация под операции записи в конец файла, выполняемые одновременно многими клиентами;

Нестандартный интерфейс файловой системы и ослабленная модель целостности данных;

Эффективное использование сетевых ресурсов и оптимизация под высокую агрегированную пропускную способность.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: