Wiki

GFS - Файловая система Google

GFS (Google File System) - это файловая система, оптимизированная для нужд Google в хранении данных – web поиск, который может порождать огромное количество данных, которые нужно удерживать. GFS выросла из ранней разработки Google, “BigFiles”, созданной Larry Page и Sergey Brin в ранние дни Google, когда он еще располагался в Стенфорде. Данные постоянно хранились в очень больших, многогигабайтных файлах, которые очень редко удалялись, перезаписывались или уменьшались; файлы обычно дописывались или читались. Кроме того она оптимизирована для работы на кластерах Google, узлы которых состоят из дешевых, “обычных” компьютеров, что значит что должны быть приняты дополнительные предосторожности против высоких темпов отказа отдельных узлов и потери данных. Другие архитектурные решения выбраны для увеличения пропускной способности, даже если это приходится делать ценой задержек.

Узлы разделены на два типа: Мастер Узлы и Узлы Фрагментов (Chunkservers). Узлы Фрагментов хранят файлы данных, каждый файл разбит на куски фиксированного размера (фрагменты) примерно 64Mb каждый, подобно кластерам или секторам в обычных файловых системах. Каждому фрагменту поставлена в соответствие 64 битная метка и поддерживается логическая связь между файлами и фрагментами. Каждый фрагмент реплицирован фиксированное количество раз в сети (значение по умолчанию – три, но для часто запрашиваемых файлов это значение может быть больше).

Мастер сервер обычно не хранит конкретные фрагменты, вместо этого он хранит все метаданные связанные с фрагментами, такие как таблицы связей 64 битных меток и файлов, которые они связывают, местоположение копий фрагментов, какой процесс пишет или читает в конкретный фрагмент или делает его “снимок” для нужд репликации (обычно по побуждению Мастер сервера, когда в связи с отказом узлов, количество копий уменьшается ниже заданного значения). Все эти метаданные поддерживаются в актуальном состоянии периодически получаемыми обновлениями с Серверов Фрагментов ("Heart-beat messages").

Права доступа для операций регулируются системой временных, истекающих прав, когда Мастер сервер дает права процессу на конечный отрезок времени, во время которого никаким другим процессам не будет дан доступ на фрагмент. Модифицированный Сервер Фрагментов, который всегда является основным держателем фрагментов, пересылает изменения Серверам Фрагментов содержащим резервныи копии. Изменения не сохраняются, пока все сервера не пришлют подтверждение, это гарантирует полноту и атомарность операции.

Программа, затребовавшая доступ к фрагменту, вначале опрашивает Мастер сервер на предмет местоположения нужных фрагментов; если над фрагментами производится операция (если нет временно выделенный прав), Мастер присылает местоположения и затем программа соединяется и получает фрагменты непосредственно с Сервера Фрагментов (как с суперузлами в Kazaa).

По материалам Wikipedia: http://en.wikipedia.org/wiki/Google_File_System
Перевод: Andrew.Selivanov (at) gmail.com